@node-projects/web-component-designer 0.0.125 → 0.0.127

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 (153) hide show
  1. package/ACKNOWLEDGMENTS +3 -1
  2. package/dist/elements/helper/contextMenu/ContextMenu.d.ts +29 -0
  3. package/dist/elements/helper/contextMenu/ContextMenu.js +304 -0
  4. package/dist/elements/helper/contextMenu/{IContextmenuItem.d.ts → IContextMenuItem.d.ts} +3 -2
  5. package/dist/elements/helper/contextMenu/{IContextmenuItem.js → IContextMenuItem.js} +1 -0
  6. package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -2
  7. package/dist/elements/widgets/designerView/designerCanvas.js +4 -3
  8. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.d.ts +1 -1
  9. package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.d.ts +1 -1
  10. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.d.ts +1 -1
  11. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js +1 -2
  12. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.d.ts +1 -1
  13. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.d.ts +1 -1
  14. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.d.ts +1 -1
  15. package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.d.ts +1 -1
  16. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.d.ts +1 -1
  17. package/dist/elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.d.ts +1 -1
  18. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.d.ts +1 -1
  19. package/dist/elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.d.ts +1 -1
  20. package/dist/elements/widgets/designerView/extensions/svg/PathExtension.js +2 -2
  21. package/dist/elements/widgets/designerView/tools/PointerTool.js +1 -1
  22. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +2 -2
  23. package/dist/elements/widgets/treeView/treeViewExtended.d.ts +2 -2
  24. package/dist/elements/widgets/treeView/treeViewExtended.js +3 -3
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.js +1 -1
  27. package/package.json +2 -2
  28. package/dist/elements/helper/KeyNameHelper.d.ts +0 -0
  29. package/dist/elements/helper/KeyNameHelper.js +0 -1
  30. package/dist/elements/helper/contextMenu/ContextMenuHelper.d.ts +0 -27
  31. package/dist/elements/helper/contextMenu/ContextMenuHelper.js +0 -216
  32. package/dist/elements/services/bindableObjectsService/IDragDropService.d.ts +0 -5
  33. package/dist/elements/services/bindableObjectsService/IDragDropService.js +0 -1
  34. package/dist/elements/services/elementsService/WebcomponentManifestParserService.d.ts +0 -25
  35. package/dist/elements/services/elementsService/WebcomponentManifestParserService.js +0 -94
  36. package/dist/elements/services/htmlParserService/NodeHtmlParserService copy.d.ts +0 -11
  37. package/dist/elements/services/htmlParserService/NodeHtmlParserService copy.js +0 -96
  38. package/dist/elements/services/initializationService/DefaultIntializationService.d.ts +0 -6
  39. package/dist/elements/services/initializationService/DefaultIntializationService.js +0 -22
  40. package/dist/elements/services/instanceService/IPrepareElementsForDesignerService.d.ts +0 -4
  41. package/dist/elements/services/instanceService/IPrepareElementsForDesignerService.js +0 -1
  42. package/dist/elements/services/instanceService/PrepareElementsForDesignerService.d.ts +0 -6
  43. package/dist/elements/services/instanceService/PrepareElementsForDesignerService.js +0 -32
  44. package/dist/elements/services/propertiesService/services/WebcomponentManifestParserService.d.ts +0 -25
  45. package/dist/elements/services/propertiesService/services/WebcomponentManifestParserService.js +0 -94
  46. package/dist/elements/services/undoService/transactionItems/MoveElementInDomAction.d.ts +0 -16
  47. package/dist/elements/services/undoService/transactionItems/MoveElementInDomAction.js +0 -31
  48. package/dist/elements/widgets/designerView/DesignerViewUseOverlayScollbars.d.ts +0 -7
  49. package/dist/elements/widgets/designerView/DesignerViewUseOverlayScollbars.js +0 -13
  50. package/dist/elements/widgets/designerView/designerCanvas.ts.BASE.d.ts +0 -92
  51. package/dist/elements/widgets/designerView/designerCanvas.ts.BASE.js +0 -734
  52. package/dist/elements/widgets/designerView/designerCanvas.ts.LOCAL.d.ts +0 -95
  53. package/dist/elements/widgets/designerView/designerCanvas.ts.LOCAL.js +0 -768
  54. package/dist/elements/widgets/designerView/designerCanvas.ts.REMOTE.d.ts +0 -94
  55. package/dist/elements/widgets/designerView/designerCanvas.ts.REMOTE.js +0 -745
  56. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension copy.d.ts +0 -12
  57. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension copy.js +0 -20
  58. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider copy.d.ts +0 -10
  59. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider copy.js +0 -14
  60. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension copy.d.ts +0 -17
  61. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension copy.js +0 -80
  62. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider copy.d.ts +0 -9
  63. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider copy.js +0 -11
  64. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverExtension.d.ts +0 -11
  65. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverExtension.js +0 -18
  66. package/dist/elements/widgets/designerView/extensions/IframeExtension.d.ts +0 -11
  67. package/dist/elements/widgets/designerView/extensions/IframeExtension.js +0 -46
  68. package/dist/elements/widgets/designerView/extensions/IframeExtensionProvider.d.ts +0 -9
  69. package/dist/elements/widgets/designerView/extensions/IframeExtensionProvider.js +0 -9
  70. package/dist/elements/widgets/designerView/extensions/PathExtension.d.ts +0 -23
  71. package/dist/elements/widgets/designerView/extensions/PathExtension.js +0 -251
  72. package/dist/elements/widgets/designerView/extensions/PathExtensionProvider.d.ts +0 -9
  73. package/dist/elements/widgets/designerView/extensions/PathExtensionProvider.js +0 -18
  74. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtension.d.ts +0 -13
  75. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtension.js +0 -21
  76. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider.d.ts +0 -10
  77. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider.js +0 -13
  78. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu copy.d.ts +0 -8
  79. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu copy.js +0 -15
  80. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu copy.d.ts +0 -8
  81. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu copy.js +0 -14
  82. package/dist/elements/widgets/designerView/toolBar/DrawElementTool.d.ts +0 -19
  83. package/dist/elements/widgets/designerView/toolBar/DrawElementTool.js +0 -79
  84. package/dist/elements/widgets/designerView/toolBar/DrawEllipsisTool.d.ts +0 -16
  85. package/dist/elements/widgets/designerView/toolBar/DrawEllipsisTool.js +0 -94
  86. package/dist/elements/widgets/designerView/toolBar/DrawLineTool.d.ts +0 -14
  87. package/dist/elements/widgets/designerView/toolBar/DrawLineTool.js +0 -79
  88. package/dist/elements/widgets/designerView/toolBar/DrawPathTool.d.ts +0 -20
  89. package/dist/elements/widgets/designerView/toolBar/DrawPathTool.js +0 -128
  90. package/dist/elements/widgets/designerView/toolBar/DrawRectTool.d.ts +0 -19
  91. package/dist/elements/widgets/designerView/toolBar/DrawRectTool.js +0 -109
  92. package/dist/elements/widgets/designerView/toolBar/ITool.d.ts +0 -9
  93. package/dist/elements/widgets/designerView/toolBar/ITool.js +0 -1
  94. package/dist/elements/widgets/designerView/toolBar/MagicWandSelectorTool.d.ts +0 -12
  95. package/dist/elements/widgets/designerView/toolBar/MagicWandSelectorTool.js +0 -64
  96. package/dist/elements/widgets/designerView/toolBar/NamedTools.d.ts +0 -15
  97. package/dist/elements/widgets/designerView/toolBar/NamedTools.js +0 -16
  98. package/dist/elements/widgets/designerView/toolBar/PanTool.d.ts +0 -10
  99. package/dist/elements/widgets/designerView/toolBar/PanTool.js +0 -26
  100. package/dist/elements/widgets/designerView/toolBar/PickColorTool.d.ts +0 -10
  101. package/dist/elements/widgets/designerView/toolBar/PickColorTool.js +0 -20
  102. package/dist/elements/widgets/designerView/toolBar/PointerTool.d.ts +0 -24
  103. package/dist/elements/widgets/designerView/toolBar/PointerTool.js +0 -283
  104. package/dist/elements/widgets/designerView/toolBar/RectangleSelectorTool.d.ts +0 -12
  105. package/dist/elements/widgets/designerView/toolBar/RectangleSelectorTool.js +0 -84
  106. package/dist/elements/widgets/designerView/toolBar/TextTool.d.ts +0 -11
  107. package/dist/elements/widgets/designerView/toolBar/TextTool.js +0 -33
  108. package/dist/elements/widgets/designerView/toolBar/ZoomTool.d.ts +0 -17
  109. package/dist/elements/widgets/designerView/toolBar/ZoomTool.js +0 -79
  110. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.d.ts +0 -5
  111. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolRenderer.js +0 -19
  112. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.d.ts +0 -8
  113. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopup.js +0 -41
  114. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopupToolSelect.d.ts +0 -9
  115. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolbarPopupToolSelect.js +0 -42
  116. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolsButtons.d.ts +0 -36
  117. package/dist/elements/widgets/designerView/toolBar/designerToolbarGenerics/designerToolsButtons.js +0 -96
  118. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/DrawToolPopup.d.ts +0 -5
  119. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/DrawToolPopup.js +0 -21
  120. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/SelectorToolsPopup.d.ts +0 -8
  121. package/dist/elements/widgets/designerView/toolBar/designerToolbarPopups/SelectorToolsPopup.js +0 -23
  122. package/dist/elements/widgets/designerView/toolBar/designerToolsDock.d.ts +0 -24
  123. package/dist/elements/widgets/designerView/toolBar/designerToolsDock.js +0 -115
  124. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolRenderer.d.ts +0 -5
  125. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolRenderer.js +0 -19
  126. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopup.d.ts +0 -8
  127. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopup.js +0 -41
  128. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopupToolSelect.d.ts +0 -9
  129. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolbarPopupToolSelect.js +0 -42
  130. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolsButtons.d.ts +0 -36
  131. package/dist/elements/widgets/designerView/tools/designerToolbarGenerics/designerToolsButtons.js +0 -87
  132. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup copy.d.ts +0 -8
  133. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup copy.js +0 -25
  134. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup.d.ts +0 -5
  135. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/DrawToolPopup.js +0 -21
  136. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/SelectorToolsPopup.d.ts +0 -8
  137. package/dist/elements/widgets/designerView/tools/designerToolbarPopups/SelectorToolsPopup.js +0 -23
  138. package/dist/elements/widgets/designerView/tools/designerToolsDock.d.ts +0 -24
  139. package/dist/elements/widgets/designerView/tools/designerToolsDock.js +0 -115
  140. package/dist/elements/widgets/designerView/tools/toolBar/AbstractDesignerToolbarButton.d.ts +0 -5
  141. package/dist/elements/widgets/designerView/tools/toolBar/AbstractDesignerToolbarButton.js +0 -5
  142. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewConfigButtonsProvider.d.ts +0 -5
  143. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewConfigButtonsProvider.js +0 -1
  144. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider copy.d.ts +0 -5
  145. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider copy.js +0 -7
  146. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider copy.d.ts +0 -5
  147. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider copy.js +0 -10
  148. package/dist/elements/widgets/designerView/tools/toolBar/designerToolsDock.d.ts +0 -24
  149. package/dist/elements/widgets/designerView/tools/toolBar/designerToolsDock.js +0 -115
  150. package/dist/elements/widgets/designerView/tools/toolBar/popups/SelectorToolsPopup.d.ts +0 -7
  151. package/dist/elements/widgets/designerView/tools/toolBar/popups/SelectorToolsPopup.js +0 -23
  152. package/dist/elements/widgets/designerView/tools/toolBar/popups/designerToolbarPopup.d.ts +0 -8
  153. package/dist/elements/widgets/designerView/tools/toolBar/popups/designerToolbarPopup.js +0 -41
@@ -1,768 +0,0 @@
1
- import { EventNames } from "../../../enums/EventNames";
2
- import { InstanceServiceContainer } from '../../services/InstanceServiceContainer';
3
- import { UndoService } from '../../services/undoService/UndoService';
4
- import { SelectionService } from '../../services/selectionService/SelectionService';
5
- import { DesignItem } from '../../item/DesignItem';
6
- import { BaseCustomWebComponentLazyAppend, css, html, TypedEvent } from '@node-projects/base-custom-webcomponent';
7
- import { dragDropFormatNameElementDefinition, dragDropFormatNameBindingObject } from '../../../Constants';
8
- import { ContentService } from '../../services/contentService/ContentService';
9
- import { InsertAction } from '../../services/undoService/transactionItems/InsertAction';
10
- import { Snaplines } from './Snaplines';
11
- import { ContextMenuHelper } from '../../helper/contextMenu/ContextMenuHelper';
12
- import { DeleteAction } from '../../services/undoService/transactionItems/DeleteAction';
13
- import { CommandType } from '../../../commandHandling/CommandType';
14
- import { DefaultHtmlParserService } from "../../services/htmlParserService/DefaultHtmlParserService";
15
- import { ExtensionType } from "./extensions/ExtensionType";
16
- import { ExtensionManager } from "./extensions/ExtensionManager";
17
- import { NamedTools } from "./tools/NamedTools";
18
- import { Screenshot } from '../../helper/Screenshot';
19
- import { dataURItoBlob, exportData } from "../../helper/Helper";
20
- import { DomHelper } from '@node-projects/base-custom-webcomponent/dist/DomHelper';
21
- import { OverlayLayer } from "./extensions/OverlayLayer";
22
- import { OverlayLayerView } from './overlayLayerView';
23
- export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
24
- // Public Properties
25
- serviceContainer;
26
- instanceServiceContainer;
27
- containerBoundingRect;
28
- outerRect;
29
- clickOverlay;
30
- // IPlacementView
31
- gridSize = 10;
32
- alignOnGrid = false;
33
- alignOnSnap = true;
34
- snapLines;
35
- overlayLayer;
36
- rootDesignItem;
37
- eatEvents;
38
- transformHelperElement;
39
- _zoomFactor = 1; //if scale or zoom css property is used this needs to be the value
40
- _scaleFactor = 1; //if scale css property is used this need to be the scale value
41
- _canvasOffset = { x: 0, y: 0 };
42
- _lastPointerDownHandler;
43
- get zoomFactor() {
44
- return this._zoomFactor;
45
- }
46
- set zoomFactor(value) {
47
- this._zoomFactor = value;
48
- this._zoomFactorChanged();
49
- }
50
- get scaleFactor() {
51
- return this._scaleFactor;
52
- }
53
- get canvasOffset() {
54
- return this._canvasOffset;
55
- }
56
- set canvasOffset(value) {
57
- this._canvasOffset = value;
58
- this._zoomFactorChanged();
59
- }
60
- onContentChanged = new TypedEvent();
61
- onZoomFactorChanged = new TypedEvent();
62
- // Private Variables
63
- _canvas;
64
- _canvasContainer;
65
- _outercanvas2;
66
- _lastHoverDesignItem;
67
- _onContextMenuBound;
68
- _pointerEventHandlerBound;
69
- _firstConnect;
70
- _onKeyDownBound;
71
- _onKeyUpBound;
72
- static style = css `
73
- :host {
74
- display: block;
75
- box-sizing: border-box;
76
- width: 100%;
77
- position: relative;
78
- transform: translateZ(0);
79
- overflow: hidden;
80
-
81
- font-family: initial;
82
- font-size: initial;
83
- font-weight: initial;
84
- font-style: initial;
85
- line-height: initial;
86
- }
87
- * {
88
- touch-action: none;
89
- }
90
- #node-projects-designer-canvas-canvas {
91
- background-color: var(--canvas-background, white);
92
- /* 10px grid, using http://www.patternify.com/ */
93
- background-image: url(data:image/png;base64,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);
94
- background-position: 0px 0px;
95
- box-sizing: border-box;
96
- width: 100%;
97
- height: 100%;
98
- transform-origin: 0 0;
99
- }
100
-
101
- #node-projects-designer-canvas-canvas.dragFileActive {
102
- outline: blue 4px solid;
103
- outline-offset: -4px;
104
- }
105
-
106
- node-projects-overlay-layer-view {
107
- box-sizing: border-box;
108
- width: 100%;
109
- height: 100%;
110
- position: absolute;
111
- top: 0;
112
- left: 0;
113
- pointer-events: none;
114
- overflow: visible;
115
- user-select: none;
116
- -webkit-user-select: none;
117
- z-index: 999999999999;
118
- }
119
-
120
- #node-projects-designer-canvas-canvas * {
121
- cursor: pointer;
122
- user-select: none;
123
- -webkit-user-select: none;
124
- }
125
-
126
- #node-projects-designer-canvas-clickOverlay {
127
- position: absolute;
128
- width: 100%;
129
- height: 100%;
130
- top: 0;
131
- }
132
-
133
- #node-projects-designer-canvas-transformHelper {
134
- height: 0;
135
- width: 0;
136
- }`;
137
- static template = html `
138
- <div style="display: flex;flex-direction: column;width: 100%;height: 100%;">
139
- <div style="width: 100%;height: 100%;">
140
- <div id="node-projects-designer-canvas-outercanvas2"
141
- style="width:100%;height:100%;position:relative;">
142
- <div id="node-projects-designer-canvas-canvasContainer"
143
- style="width: 100%;height: 100%;margin: auto;position: absolute;top: 0;left: 0;user-select: none;">
144
- <div id="node-projects-designer-canvas-canvas" part="canvas"></div>
145
- </div>
146
- </div>
147
- <div id="node-projects-designer-canvas-clickOverlay" tabindex="0" style="pointer-events: auto;"></div>
148
- </div>
149
- <div id="node-projects-designer-canvas-transformHelper"></div>
150
- </div>`;
151
- extensionManager;
152
- _pointerextensions;
153
- _onDblClickBound;
154
- constructor() {
155
- super();
156
- this._canvas = this._getDomElement('node-projects-designer-canvas-canvas');
157
- this._canvasContainer = this._getDomElement('node-projects-designer-canvas-canvasContainer');
158
- this._outercanvas2 = this._getDomElement('node-projects-designer-canvas-outercanvas2');
159
- this.clickOverlay = this._getDomElement('node-projects-designer-canvas-clickOverlay');
160
- this.transformHelperElement = this._getDomElement('node-projects-designer-canvas-transformHelper');
161
- this._onKeyDownBound = this.onKeyDown.bind(this);
162
- this._onKeyUpBound = this.onKeyUp.bind(this);
163
- this._onDblClickBound = this._onDblClick.bind(this);
164
- this._onContextMenuBound = this._onContextMenu.bind(this);
165
- this._pointerEventHandlerBound = this._pointerEventHandler.bind(this);
166
- this.clickOverlay.oncontextmenu = this._onContextMenuBound;
167
- }
168
- get designerWidth() {
169
- return this._canvasContainer.style.width;
170
- }
171
- set designerWidth(value) {
172
- this._canvasContainer.style.width = value;
173
- this._zoomFactorChanged();
174
- }
175
- get designerHeight() {
176
- return this._canvasContainer.style.height;
177
- }
178
- set designerHeight(value) {
179
- this._canvasContainer.style.height = value;
180
- this._zoomFactorChanged();
181
- }
182
- get designerOffsetWidth() {
183
- return this._canvasContainer.offsetWidth;
184
- }
185
- get designerOffsetHeight() {
186
- return this._canvasContainer.offsetHeight;
187
- }
188
- set additionalStyle(value) {
189
- if (value) {
190
- for (let r of value.rules) {
191
- if (r instanceof CSSStyleRule) {
192
- let parts = r.selectorText.split(',');
193
- let t = '';
194
- for (let p of parts) {
195
- if (r.selectorText)
196
- t += ',';
197
- t += '#canvas ' + p;
198
- }
199
- r.selectorText = t;
200
- }
201
- }
202
- this.shadowRoot.adoptedStyleSheets = [this.constructor.style, value];
203
- }
204
- else
205
- this.shadowRoot.adoptedStyleSheets = [this.constructor.style];
206
- }
207
- /* --- start IUiCommandHandler --- */
208
- async executeCommand(command) {
209
- const modelCommandService = this.serviceContainer.modelCommandService;
210
- if (modelCommandService) {
211
- let handeled = await modelCommandService.executeCommand(this, command);
212
- if (handeled != null)
213
- return;
214
- }
215
- switch (command.type) {
216
- case CommandType.screenshot:
217
- {
218
- if (!this.instanceServiceContainer.selectionService.primarySelection)
219
- alert("you need to select an element!");
220
- else {
221
- if (!Screenshot.screenshotsEnabled) {
222
- alert("you need to select current tab in next browser dialog, or screenshots will not work correctly");
223
- }
224
- const el = this.instanceServiceContainer.selectionService.primarySelection.element;
225
- const sel = this.instanceServiceContainer.selectionService.selectedElements;
226
- this.instanceServiceContainer.selectionService.setSelectedElements(null);
227
- const screenshot = await Screenshot.takeScreenshot(el, el.clientWidth, el.clientHeight);
228
- await exportData(dataURItoBlob(screenshot), "screenshot.png");
229
- this.instanceServiceContainer.selectionService.setSelectedElements(sel);
230
- }
231
- }
232
- break;
233
- case CommandType.setTool:
234
- {
235
- this.serviceContainer.globalContext.tool = this.serviceContainer.designerTools.get(command.parameter);
236
- }
237
- break;
238
- case CommandType.setStrokeColor:
239
- {
240
- this.serviceContainer.globalContext.strokeColor = command.parameter;
241
- }
242
- break;
243
- case CommandType.setFillBrush:
244
- {
245
- this.serviceContainer.globalContext.fillBrush = command.parameter;
246
- }
247
- break;
248
- case CommandType.setStrokeThickness:
249
- {
250
- this.serviceContainer.globalContext.strokeThickness = command.parameter;
251
- }
252
- break;
253
- case CommandType.delete:
254
- this.handleDeleteCommand();
255
- break;
256
- case CommandType.undo:
257
- this.instanceServiceContainer.undoService.undo();
258
- break;
259
- case CommandType.redo:
260
- this.instanceServiceContainer.undoService.redo();
261
- break;
262
- case CommandType.copy:
263
- this.handleCopyCommand();
264
- break;
265
- case CommandType.cut:
266
- this.handleCopyCommand();
267
- this.handleDeleteCommand();
268
- break;
269
- case CommandType.paste:
270
- this.handlePasteCommand();
271
- break;
272
- case CommandType.selectAll:
273
- this.handleSelectAll();
274
- break;
275
- }
276
- }
277
- canExecuteCommand(command) {
278
- const modelCommandService = this.serviceContainer.modelCommandService;
279
- if (modelCommandService) {
280
- let handeled = modelCommandService.canExecuteCommand(this, command);
281
- if (handeled !== null)
282
- return handeled;
283
- }
284
- if (command.type === CommandType.undo) {
285
- return this.instanceServiceContainer.undoService.canUndo();
286
- }
287
- if (command.type === CommandType.redo) {
288
- return this.instanceServiceContainer.undoService.canRedo();
289
- }
290
- if (command.type === CommandType.setTool) {
291
- return this.serviceContainer.designerTools.has(command.parameter);
292
- }
293
- return true;
294
- }
295
- /* --- end IUiCommandHandler --- */
296
- handleSelectAll() {
297
- this.instanceServiceContainer.selectionService.setSelectedElements(Array.from(this.rootDesignItem.children()));
298
- }
299
- async handleCopyCommand() {
300
- await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements);
301
- }
302
- async handlePasteCommand() {
303
- const designItems = await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer, this.instanceServiceContainer);
304
- let grp = this.rootDesignItem.openGroup("Insert");
305
- if (designItems) {
306
- for (let di of designItems) {
307
- this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
308
- }
309
- const intializationService = this.serviceContainer.intializationService;
310
- if (intializationService) {
311
- for (let di of designItems)
312
- intializationService.init(di);
313
- }
314
- this.instanceServiceContainer.selectionService.setSelectedElements(designItems);
315
- }
316
- grp.commit();
317
- this.snapLines.clearSnaplines();
318
- }
319
- handleDeleteCommand() {
320
- let items = this.instanceServiceContainer.selectionService.selectedElements;
321
- this.instanceServiceContainer.undoService.execute(new DeleteAction(items));
322
- this.instanceServiceContainer.selectionService.setSelectedElements(null);
323
- }
324
- initialize(serviceContainer) {
325
- this.serviceContainer = serviceContainer;
326
- this.instanceServiceContainer = new InstanceServiceContainer(this);
327
- this.instanceServiceContainer.register("undoService", new UndoService(this));
328
- this.instanceServiceContainer.register("selectionService", new SelectionService);
329
- this.rootDesignItem = DesignItem.GetOrCreateDesignItem(this._canvas, this.serviceContainer, this.instanceServiceContainer);
330
- this.instanceServiceContainer.register("contentService", new ContentService(this.rootDesignItem));
331
- this.extensionManager = new ExtensionManager(this);
332
- this.overlayLayer = new OverlayLayerView(serviceContainer);
333
- this.overlayLayer.style.pointerEvents = 'none';
334
- this._canvasContainer.appendChild(this.overlayLayer);
335
- this.snapLines = new Snaplines(this.overlayLayer);
336
- this.snapLines.initialize(this.rootDesignItem);
337
- if (this.serviceContainer.designerPointerExtensions)
338
- for (let pe of this.serviceContainer.designerPointerExtensions) {
339
- if (!this._pointerextensions)
340
- this._pointerextensions = [];
341
- this._pointerextensions.push(pe.getExtension(this));
342
- }
343
- if (this.children) {
344
- let children = this.children;
345
- if (this.children.length == 1 && this.children[0] instanceof HTMLSlotElement) {
346
- children = this.children[0].assignedElements();
347
- }
348
- const parser = this.serviceContainer.getLastServiceWhere('htmlParserService', x => x.constructor == DefaultHtmlParserService);
349
- this.addDesignItems(parser.createDesignItems(children, this.serviceContainer, this.instanceServiceContainer));
350
- }
351
- }
352
- elementFromPoint(x, y) {
353
- this.clickOverlay.style.pointerEvents = 'none';
354
- //@ts-ignore
355
- let element = this.shadowRoot.elementFromPoint(x, y);
356
- if (element === this.clickOverlay)
357
- element = this._canvas;
358
- this.clickOverlay.style.pointerEvents = 'auto';
359
- return element;
360
- }
361
- connectedCallback() {
362
- if (!this._firstConnect) {
363
- this._firstConnect = true;
364
- this.clickOverlay.addEventListener(EventNames.PointerDown, this._pointerEventHandlerBound);
365
- this.clickOverlay.addEventListener(EventNames.PointerMove, this._pointerEventHandlerBound);
366
- this.clickOverlay.addEventListener(EventNames.PointerUp, this._pointerEventHandlerBound);
367
- this.clickOverlay.addEventListener(EventNames.DragEnter, event => this._onDragEnter(event));
368
- this.clickOverlay.addEventListener(EventNames.DragLeave, event => this._onDragLeave(event));
369
- this.clickOverlay.addEventListener(EventNames.DragOver, event => this._onDragOver(event));
370
- this.clickOverlay.addEventListener(EventNames.Drop, event => this._onDrop(event));
371
- this.clickOverlay.addEventListener(EventNames.KeyDown, this._onKeyDownBound, true);
372
- this.clickOverlay.addEventListener(EventNames.KeyUp, this._onKeyUpBound, true);
373
- this.clickOverlay.addEventListener(EventNames.DblClick, this._onDblClickBound, true);
374
- }
375
- }
376
- _zoomFactorChanged() {
377
- //a@ts-ignore
378
- //this._canvasContainer.style.zoom = <any>this._zoomFactor;
379
- //this._canvasContainer.style.transform = 'scale(' + this._zoomFactor+') translate(' + this._translate.x + ', '+this._translate.y+')';
380
- //this._canvasContainer.style.transformOrigin = '0 0';
381
- this._canvasContainer.style.bottom = this._outercanvas2.offsetHeight >= this._canvasContainer.offsetHeight ? '0' : '';
382
- this._canvasContainer.style.right = this._outercanvas2.offsetWidth >= this._canvasContainer.offsetWidth ? '0' : '';
383
- this._updateTransform();
384
- this.onZoomFactorChanged.emit(this._zoomFactor);
385
- }
386
- _updateTransform() {
387
- this._scaleFactor = this._zoomFactor;
388
- this._canvasContainer.style.transform = 'scale(' + this._zoomFactor + ') translate(' + this._canvasOffset.x + 'px, ' + this._canvasOffset.y + 'px)';
389
- this._canvasContainer.style.transformOrigin = '0 0';
390
- this.snapLines.clearSnaplines();
391
- }
392
- setDesignItems(designItems) {
393
- this._fillCalculationrects();
394
- this.instanceServiceContainer.undoService.clear();
395
- this.overlayLayer.removeAllOverlays();
396
- DomHelper.removeAllChildnodes(this.overlayLayer);
397
- this.rootDesignItem.clearChildren();
398
- this.addDesignItems(designItems);
399
- this.instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'parsed' });
400
- }
401
- addDesignItems(designItems) {
402
- if (designItems) {
403
- for (let di of designItems) {
404
- this.rootDesignItem._insertChildInternal(di);
405
- }
406
- }
407
- const intializationService = this.serviceContainer.intializationService;
408
- if (intializationService) {
409
- for (let di of designItems)
410
- intializationService.init(di);
411
- }
412
- this.snapLines.clearSnaplines();
413
- }
414
- _onDragEnter(event) {
415
- this._fillCalculationrects();
416
- event.preventDefault();
417
- const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
418
- if (hasTransferDataBindingObject) {
419
- const ddService = this.serviceContainer.bindableObjectDragDropService;
420
- if (ddService) {
421
- const effect = ddService.dragEnter(this, event);
422
- event.dataTransfer.dropEffect = effect;
423
- }
424
- }
425
- }
426
- _onDragLeave(event) {
427
- this._fillCalculationrects();
428
- event.preventDefault();
429
- this._canvas.classList.remove('dragFileActive');
430
- const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
431
- if (hasTransferDataBindingObject) {
432
- const ddService = this.serviceContainer.bindableObjectDragDropService;
433
- if (ddService) {
434
- const effect = ddService.dragLeave(this, event);
435
- event.dataTransfer.dropEffect = effect;
436
- }
437
- }
438
- }
439
- _onDragOver(event) {
440
- event.preventDefault();
441
- /*if (this.alignOnSnap) {
442
- this.snapLines.calculateSnaplines(this.instanceServiceContainer.selectionService.selectedElements);
443
- //TODO: fix this following code...
444
- const currentPoint = this.getDesignerMousepoint(event);
445
- let containerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this.rootDesignItem))
446
- containerService.finishPlace(this, this.rootDesignItem, this._initialPoint, currentPoint, this.instanceServiceContainer.selectionService.selectedElements);
447
- }*/
448
- this._fillCalculationrects();
449
- if (event.dataTransfer.types.length > 0 && event.dataTransfer.types[0] == 'Files') {
450
- const ddService = this.serviceContainer.dragDropService;
451
- if (ddService) {
452
- const effect = ddService.dragOver(event);
453
- event.dataTransfer.dropEffect = effect;
454
- if (effect !== 'none')
455
- this._canvas.classList.add('dragFileActive');
456
- }
457
- }
458
- const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
459
- if (hasTransferDataBindingObject) {
460
- const ddService = this.serviceContainer.bindableObjectDragDropService;
461
- if (ddService) {
462
- const effect = ddService.dragOver(this, event);
463
- event.dataTransfer.dropEffect = effect;
464
- }
465
- }
466
- }
467
- async _onDrop(event) {
468
- event.preventDefault();
469
- this._canvas.classList.remove('dragFileActive');
470
- this._fillCalculationrects();
471
- if (event.dataTransfer.files?.length > 0) {
472
- const ddService = this.serviceContainer.dragDropService;
473
- if (ddService) {
474
- ddService.drop(this, event);
475
- }
476
- }
477
- else {
478
- const transferDataBindingObject = event.dataTransfer.getData(dragDropFormatNameBindingObject);
479
- if (transferDataBindingObject) {
480
- const bo = JSON.parse(transferDataBindingObject);
481
- const ddService = this.serviceContainer.bindableObjectDragDropService;
482
- if (ddService) {
483
- const effect = ddService.drop(this, event, bo);
484
- event.dataTransfer.dropEffect = effect;
485
- }
486
- }
487
- else {
488
- this._fillCalculationrects();
489
- const position = this.getNormalizedEventCoordinates(event);
490
- const transferData = event.dataTransfer.getData(dragDropFormatNameElementDefinition);
491
- const elementDefinition = JSON.parse(transferData);
492
- const di = await this.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(elementDefinition, this.serviceContainer, this.instanceServiceContainer));
493
- const grp = di.openGroup("Insert");
494
- di.setStyle('position', 'absolute');
495
- di.setStyle('left', position.x + 'px');
496
- di.setStyle('top', position.y + 'px');
497
- this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
498
- grp.commit();
499
- requestAnimationFrame(() => this.instanceServiceContainer.selectionService.setSelectedElements([di]));
500
- }
501
- }
502
- }
503
- _onContextMenu(event) {
504
- event.preventDefault();
505
- if (!event.shiftKey) {
506
- let items = this.getItemsBelowMouse(event);
507
- if (items.indexOf(this.instanceServiceContainer.selectionService.primarySelection.element) >= 0)
508
- this.showDesignItemContextMenu(this.instanceServiceContainer.selectionService.primarySelection, event);
509
- else {
510
- const designItem = DesignItem.GetOrCreateDesignItem(event.target, this.serviceContainer, this.instanceServiceContainer);
511
- if (!this.instanceServiceContainer.selectionService.isSelected(designItem)) {
512
- this.instanceServiceContainer.selectionService.setSelectedElements([designItem]);
513
- }
514
- this.showDesignItemContextMenu(designItem, event);
515
- }
516
- }
517
- }
518
- showDesignItemContextMenu(designItem, event) {
519
- const mnuItems = [];
520
- for (let cme of this.serviceContainer.designerContextMenuExtensions) {
521
- if (cme.shouldProvideContextmenu(event, this, designItem, 'designer')) {
522
- mnuItems.push(...cme.provideContextMenuItems(event, this, designItem));
523
- }
524
- }
525
- let ctxMnu = ContextMenuHelper.showContextMenu(null, event, null, mnuItems);
526
- return ctxMnu;
527
- }
528
- _onDblClick(event) {
529
- event.preventDefault();
530
- this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection, ExtensionType.Doubleclick);
531
- }
532
- onKeyUp(event) {
533
- if (event.composedPath().indexOf(this.eatEvents) >= 0)
534
- return;
535
- event.preventDefault();
536
- }
537
- onKeyDown(event) {
538
- if (event.composedPath().indexOf(this.eatEvents) >= 0)
539
- return;
540
- if ((event.ctrlKey || event.metaKey) && event.key === 'z' && !event.shiftKey)
541
- this.executeCommand({ type: CommandType.undo });
542
- else if ((event.ctrlKey || event.metaKey) && event.key === 'z' && event.shiftKey)
543
- this.executeCommand({ type: CommandType.redo });
544
- else if ((event.ctrlKey || event.metaKey) && event.key === 'y')
545
- this.executeCommand({ type: CommandType.redo });
546
- else if ((event.ctrlKey || event.metaKey) && event.key === 'a')
547
- this.executeCommand({ type: CommandType.selectAll });
548
- else if ((event.ctrlKey || event.metaKey) && event.key === 'c')
549
- this.executeCommand({ type: CommandType.copy });
550
- else if ((event.ctrlKey || event.metaKey) && event.key === 'v')
551
- this.executeCommand({ type: CommandType.paste });
552
- else if ((event.ctrlKey || event.metaKey) && event.key === 'x')
553
- this.executeCommand({ type: CommandType.cut });
554
- else {
555
- let primarySelection = this.instanceServiceContainer.selectionService.primarySelection;
556
- if (!primarySelection) {
557
- return;
558
- }
559
- let moveOffset = 1;
560
- if (event.shiftKey)
561
- moveOffset = 10;
562
- switch (event.key) {
563
- case 'Delete':
564
- case 'Backspace':
565
- this.executeCommand({ type: CommandType.delete });
566
- break;
567
- case 'ArrowUp':
568
- {
569
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('top', parseInt(x.element.style.top) - moveOffset + 'px'));
570
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
571
- }
572
- break;
573
- case 'ArrowDown':
574
- {
575
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('top', parseInt(x.element.style.top) + moveOffset + 'px'));
576
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
577
- }
578
- break;
579
- case 'ArrowLeft':
580
- {
581
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('left', parseInt(x.element.style.left) - moveOffset + 'px'));
582
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
583
- }
584
- break;
585
- case 'ArrowRight':
586
- {
587
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('left', parseInt(x.element.style.left) + moveOffset + 'px'));
588
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
589
- }
590
- break;
591
- }
592
- }
593
- event.preventDefault();
594
- }
595
- getNormalizedEventCoordinates(event) {
596
- const offsetOfOuterX = (event.clientX - this.outerRect.x) / this.zoomFactor;
597
- const offsetOfCanvasX = this.containerBoundingRect.x - this.outerRect.x / this.zoomFactor * this._scaleFactor;
598
- const offsetOfOuterY = (event.clientY - this.outerRect.y) / this.zoomFactor;
599
- const offsetOfCanvasY = this.containerBoundingRect.y - this.outerRect.y / this.zoomFactor * this._scaleFactor;
600
- return {
601
- x: offsetOfOuterX - offsetOfCanvasX / this.zoomFactor,
602
- y: offsetOfOuterY - offsetOfCanvasY / this.zoomFactor
603
- };
604
- }
605
- getNormalizedElementCoordinates(element) {
606
- const targetRect = element.getBoundingClientRect();
607
- return { x: (targetRect.x - this.containerBoundingRect.x) / this.scaleFactor, y: (targetRect.y - this.containerBoundingRect.y) / this.scaleFactor, width: targetRect.width / this.scaleFactor, height: targetRect.height / this.scaleFactor };
608
- }
609
- getNormalizedOffsetInElement(event, element) {
610
- const normEvt = this.getNormalizedEventCoordinates(event);
611
- const normEl = this.getNormalizedElementCoordinates(element);
612
- return { x: normEvt.x - normEl.x, y: normEvt.y - normEl.y };
613
- }
614
- getElementAtPoint(point, ignoreElementCallback) {
615
- let backupPEventsMap = new Map();
616
- let currentElement = this.elementFromPoint(point.x, point.y);
617
- this.clickOverlay.style.pointerEvents = 'none';
618
- let lastElement = null;
619
- try {
620
- while (currentElement != null) {
621
- if (currentElement == lastElement) {
622
- currentElement = null;
623
- break;
624
- }
625
- lastElement = currentElement;
626
- if (currentElement == this._canvas) {
627
- break;
628
- }
629
- if (currentElement === this.overlayLayer) {
630
- currentElement = this.overlayLayer.elementFromPoint(point.x, point.y);
631
- break;
632
- }
633
- if (!ignoreElementCallback || !ignoreElementCallback(currentElement)) {
634
- break;
635
- }
636
- backupPEventsMap.set(currentElement, currentElement.style.pointerEvents);
637
- currentElement.style.pointerEvents = 'none';
638
- if (currentElement.shadowRoot) {
639
- for (let e of currentElement.shadowRoot.querySelectorAll('*')) {
640
- if (!backupPEventsMap.has(e)) {
641
- if (e.style)
642
- backupPEventsMap.set(e, e.style.pointerEvents);
643
- e.style.pointerEvents = 'none';
644
- }
645
- }
646
- }
647
- currentElement = this.elementFromPoint(point.x, point.y);
648
- }
649
- }
650
- finally {
651
- for (let e of backupPEventsMap.entries()) {
652
- e[0].style.pointerEvents = e[1];
653
- }
654
- this.clickOverlay.style.pointerEvents = 'auto';
655
- }
656
- return currentElement;
657
- }
658
- _rect;
659
- _pointerEventHandler(event, forceElement = null) {
660
- this._fillCalculationrects();
661
- if (this._pointerextensions) {
662
- for (let pe of this._pointerextensions)
663
- pe.refresh(event);
664
- }
665
- if (event.composedPath().indexOf(this.eatEvents) >= 0)
666
- return;
667
- if (event.buttons == 2)
668
- return;
669
- let currentElement;
670
- if (forceElement)
671
- currentElement = forceElement;
672
- else {
673
- currentElement = this.serviceContainer.elementAtPointService.getElementAtPoint(this, { x: event.x, y: event.y });
674
- if (currentElement === this._outercanvas2 || currentElement === this.overlayLayer || !currentElement) {
675
- currentElement = this._canvas;
676
- }
677
- } /* else {
678
- if (!DesignerCanvas.hasOrIsParent(currentElement, this._canvas))
679
- return;
680
- }*/
681
- if (this._lastPointerDownHandler) {
682
- try {
683
- this._lastPointerDownHandler(event);
684
- }
685
- catch { }
686
- if (event.type == EventNames.PointerUp)
687
- this._lastPointerDownHandler = null;
688
- return;
689
- }
690
- if (currentElement instanceof SVGGraphicsElement && currentElement?.ownerSVGElement?.parentNode?.host == this.overlayLayer) {
691
- this.clickOverlay.style.cursor = getComputedStyle(currentElement).cursor;
692
- if (event.type == EventNames.PointerDown) {
693
- this._lastPointerDownHandler = (evt) => currentElement.dispatchEvent(new evt.constructor(evt.type, evt));
694
- }
695
- currentElement.dispatchEvent(new event.constructor(event.type, event));
696
- return;
697
- }
698
- this.clickOverlay.style.cursor = this._canvas.style.cursor;
699
- //TODO: remove duplication when tool refactoring starts
700
- //this._fillCalculationrects();
701
- const currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, this.serviceContainer, this.instanceServiceContainer);
702
- if (this._lastHoverDesignItem != currentDesignItem) {
703
- if (this._lastHoverDesignItem)
704
- this.extensionManager.removeExtension(this._lastHoverDesignItem, ExtensionType.MouseOver);
705
- if (currentDesignItem && currentDesignItem != this.rootDesignItem && DomHelper.getHost(currentElement.parentNode) !== this.overlayLayer)
706
- this.extensionManager.applyExtension(currentDesignItem, ExtensionType.MouseOver);
707
- this._lastHoverDesignItem = currentDesignItem;
708
- }
709
- if (currentElement && DomHelper.getHost(currentElement.parentNode) === this.overlayLayer) {
710
- if (this.eatEvents)
711
- return;
712
- currentElement = this.instanceServiceContainer.selectionService.primarySelection?.element ?? this._canvas;
713
- }
714
- this._fillCalculationrects();
715
- let tool = this.serviceContainer.globalContext.tool ?? this.serviceContainer.designerTools.get(NamedTools.Pointer);
716
- this._canvas.style.cursor = tool.cursor;
717
- tool.pointerEventHandler(this, event, currentElement);
718
- if (event.type == EventNames.PointerDown) {
719
- this._lastPointerDownHandler = (evt) => tool.pointerEventHandler(this, evt, currentElement);
720
- }
721
- tool.pointerEventHandler(this, event, currentElement);
722
- }
723
- _fillCalculationrects() {
724
- this.containerBoundingRect = this._canvasContainer.getBoundingClientRect();
725
- this.outerRect = this._outercanvas2.getBoundingClientRect();
726
- }
727
- addOverlay(element, overlayLayer = OverlayLayer.Normal) {
728
- this.overlayLayer.addOverlay(element, overlayLayer);
729
- }
730
- removeOverlay(element) {
731
- this.overlayLayer.removeOverlay(element);
732
- }
733
- getItemsBelowMouse(event) {
734
- const lstEl = [];
735
- //search for containers below mouse cursor.
736
- //to do this, we need to disable pointer events for each in a loop and search wich element is there
737
- let backupPEventsMap = new Map();
738
- this.clickOverlay.style.pointerEvents = 'none';
739
- try {
740
- let el = this.elementFromPoint(event.x, event.y);
741
- backupPEventsMap.set(el, el.style.pointerEvents);
742
- el.style.pointerEvents = 'none';
743
- if (el !== this.rootDesignItem.element) {
744
- while (el != null) {
745
- if (el === this.rootDesignItem.element)
746
- break;
747
- if (el !== this.overlayLayer && el.parentElement !== this.overlayLayer && el.getRootNode() === this.shadowRoot)
748
- lstEl.push(el);
749
- if (!backupPEventsMap.has(el))
750
- backupPEventsMap.set(el, el.style.pointerEvents);
751
- el.style.pointerEvents = 'none';
752
- const oldEl = el;
753
- el = this.elementFromPoint(event.x, event.y);
754
- if (oldEl === el)
755
- break;
756
- }
757
- }
758
- }
759
- finally {
760
- for (let e of backupPEventsMap.entries()) {
761
- e[0].style.pointerEvents = e[1];
762
- }
763
- this.clickOverlay.style.pointerEvents = 'auto';
764
- }
765
- return lstEl;
766
- }
767
- }
768
- customElements.define('node-projects-designer-canvas', DesignerCanvas);