@node-projects/web-component-designer 0.0.64 → 0.0.68

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 (500) hide show
  1. package/.vscode/settings.json +1 -1
  2. package/ACKNOWLEDGMENTS +3 -1
  3. package/dist/Constants.d.ts +3 -2
  4. package/dist/Constants.js +3 -2
  5. package/dist/commandHandling/CommandType.d.ts +28 -28
  6. package/dist/commandHandling/CommandType.js +29 -29
  7. package/dist/commandHandling/IUiCommand.d.ts +6 -6
  8. package/dist/commandHandling/IUiCommand.js +1 -1
  9. package/dist/commandHandling/IUiCommandHandler.d.ts +5 -5
  10. package/dist/commandHandling/IUiCommandHandler.js +1 -1
  11. package/dist/elements/controls/DesignerTabControl.d.ts +25 -25
  12. package/dist/elements/controls/DesignerTabControl.js +138 -136
  13. package/dist/elements/controls/ImageButtonListSelector.d.ts +17 -17
  14. package/dist/elements/controls/ImageButtonListSelector.js +50 -50
  15. package/dist/elements/controls/NumericPopup.d.ts +6 -6
  16. package/dist/elements/controls/NumericPopup.js +8 -8
  17. package/dist/elements/controls/NumericStyleInput.d.ts +16 -16
  18. package/dist/elements/controls/NumericStyleInput.js +42 -42
  19. package/dist/elements/controls/PlainScrollbar.d.ts +15 -0
  20. package/dist/elements/controls/PlainScrollbar.js +482 -0
  21. package/dist/elements/controls/SimpleSplitView.d.ts +11 -11
  22. package/dist/elements/controls/SimpleSplitView.js +40 -39
  23. package/dist/elements/controls/ThicknessEditor.d.ts +33 -33
  24. package/dist/elements/controls/ThicknessEditor.js +90 -90
  25. package/dist/elements/documentContainer.d.ts +38 -38
  26. package/dist/elements/documentContainer.js +185 -185
  27. package/dist/elements/helper/CssAttributeParser.d.ts +9 -9
  28. package/dist/elements/helper/CssAttributeParser.js +67 -67
  29. package/dist/elements/helper/CssCombiner.d.ts +11 -11
  30. package/dist/elements/helper/CssCombiner.js +288 -288
  31. package/dist/elements/helper/ElementHelper.d.ts +2 -2
  32. package/dist/elements/helper/ElementHelper.js +9 -9
  33. package/dist/elements/helper/GridHelper.d.ts +16 -16
  34. package/dist/elements/helper/GridHelper.js +111 -111
  35. package/dist/elements/helper/Helper.d.ts +6 -6
  36. package/dist/elements/helper/Helper.js +26 -26
  37. package/dist/elements/helper/IndentedTextWriter.d.ts +13 -13
  38. package/dist/elements/helper/IndentedTextWriter.js +31 -31
  39. package/dist/elements/helper/LayoutHelper.d.ts +4 -4
  40. package/dist/elements/helper/LayoutHelper.js +67 -67
  41. package/dist/elements/helper/PathDataPolyfill.d.ts +100 -96
  42. package/dist/elements/helper/PathDataPolyfill.js +943 -895
  43. package/dist/elements/helper/Screenshot.d.ts +11 -11
  44. package/dist/elements/helper/Screenshot.js +59 -59
  45. package/dist/elements/helper/TransformHelper.d.ts +1 -1
  46. package/dist/elements/helper/TransformHelper.js +12 -12
  47. package/dist/elements/helper/XmlHelper.d.ts +2 -2
  48. package/dist/elements/helper/XmlHelper.js +16 -16
  49. package/dist/elements/helper/contextMenu/ContextMenuHelper.d.ts +27 -27
  50. package/dist/elements/helper/contextMenu/ContextMenuHelper.js +163 -162
  51. package/dist/elements/helper/contextMenu/IContextmenuItem.d.ts +6 -6
  52. package/dist/elements/helper/contextMenu/IContextmenuItem.js +1 -1
  53. package/dist/elements/helper/w3color.d.ts +120 -120
  54. package/dist/elements/helper/w3color.js +801 -801
  55. package/dist/elements/item/BindingMode.d.ts +4 -4
  56. package/dist/elements/item/BindingMode.js +5 -5
  57. package/dist/elements/item/BindingTarget.d.ts +8 -8
  58. package/dist/elements/item/BindingTarget.js +9 -9
  59. package/dist/elements/item/DesignItem.d.ts +60 -60
  60. package/dist/elements/item/DesignItem.js +262 -262
  61. package/dist/elements/item/IBinding.d.ts +15 -15
  62. package/dist/elements/item/IBinding.js +1 -1
  63. package/dist/elements/item/IDesignItem.d.ts +45 -45
  64. package/dist/elements/item/IDesignItem.js +1 -1
  65. package/dist/elements/item/NodeType.d.ts +5 -5
  66. package/dist/elements/item/NodeType.js +6 -6
  67. package/dist/elements/loader/IOldCustomElementsManifest.d.ts +24 -24
  68. package/dist/elements/loader/IOldCustomElementsManifest.js +1 -1
  69. package/dist/elements/loader/OldCustomElementsManifestLoader.d.ts +8 -8
  70. package/dist/elements/loader/OldCustomElementsManifestLoader.js +45 -45
  71. package/dist/elements/services/BaseServiceContainer.d.ts +9 -9
  72. package/dist/elements/services/BaseServiceContainer.js +43 -43
  73. package/dist/elements/services/DefaultServiceBootstrap.d.ts +3 -3
  74. package/dist/elements/services/DefaultServiceBootstrap.js +132 -122
  75. package/dist/elements/services/GlobalContext.d.ts +24 -24
  76. package/dist/elements/services/GlobalContext.js +63 -63
  77. package/dist/elements/services/IService.d.ts +2 -2
  78. package/dist/elements/services/IService.js +1 -1
  79. package/dist/elements/services/IServiceContainer.d.ts +5 -5
  80. package/dist/elements/services/IServiceContainer.js +1 -1
  81. package/dist/elements/services/InstanceServiceContainer.d.ts +20 -20
  82. package/dist/elements/services/InstanceServiceContainer.js +19 -19
  83. package/dist/elements/services/ServiceContainer.d.ts +80 -74
  84. package/dist/elements/services/ServiceContainer.js +70 -64
  85. package/dist/elements/services/bindableObjectsService/BindableObjectType.d.ts +9 -8
  86. package/dist/elements/services/bindableObjectsService/BindableObjectType.js +10 -9
  87. package/dist/elements/services/bindableObjectsService/IBindableObject.d.ts +8 -7
  88. package/dist/elements/services/bindableObjectsService/IBindableObject.js +1 -1
  89. package/dist/elements/services/bindableObjectsService/IBindableObjectDragDropService.d.ts +8 -0
  90. package/dist/elements/{widgets/designerView/extensions/IExtensionConfiguration.js → services/bindableObjectsService/IBindableObjectDragDropService.js} +1 -1
  91. package/dist/elements/services/bindableObjectsService/IBindableObjectsService.d.ts +6 -5
  92. package/dist/elements/services/bindableObjectsService/IBindableObjectsService.js +1 -1
  93. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.d.ts +8 -8
  94. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js +69 -69
  95. package/dist/elements/services/bindingsService/IBindingService.d.ts +11 -11
  96. package/dist/elements/services/bindingsService/IBindingService.js +1 -1
  97. package/dist/elements/services/bindingsService/SpecialTagsBindingService.d.ts +14 -14
  98. package/dist/elements/services/bindingsService/SpecialTagsBindingService.js +40 -40
  99. package/dist/elements/services/bindingsService/VueBindingsService.js +7 -7
  100. package/dist/elements/services/contentService/ContentService.d.ts +9 -9
  101. package/dist/elements/services/contentService/ContentService.js +8 -8
  102. package/dist/elements/services/contentService/IContentChanged.d.ts +5 -5
  103. package/dist/elements/services/contentService/IContentChanged.js +1 -1
  104. package/dist/elements/services/contentService/IContentService.d.ts +7 -7
  105. package/dist/elements/services/contentService/IContentService.js +1 -1
  106. package/dist/elements/services/copyPasteService/CopyPasteService.d.ts +8 -8
  107. package/dist/elements/services/copyPasteService/CopyPasteService.js +12 -12
  108. package/dist/elements/services/copyPasteService/ICopyPasteService.d.ts +7 -7
  109. package/dist/elements/services/copyPasteService/ICopyPasteService.js +1 -1
  110. package/dist/elements/services/demoProviderService/DemoProviderService.d.ts +6 -6
  111. package/dist/elements/services/demoProviderService/DemoProviderService.js +28 -28
  112. package/dist/elements/services/demoProviderService/IDemoProviderService.d.ts +5 -5
  113. package/dist/elements/services/demoProviderService/IDemoProviderService.js +1 -1
  114. package/dist/elements/services/dragDropService/DragDropService.d.ts +6 -6
  115. package/dist/elements/services/dragDropService/DragDropService.js +28 -28
  116. package/dist/elements/services/dragDropService/IDragDropService.d.ts +5 -5
  117. package/dist/elements/services/dragDropService/IDragDropService.js +1 -1
  118. package/dist/elements/services/elementAtPointService/ElementAtPointService.d.ts +6 -6
  119. package/dist/elements/services/elementAtPointService/ElementAtPointService.js +5 -5
  120. package/dist/elements/services/elementAtPointService/IElementAtPointService.d.ts +6 -6
  121. package/dist/elements/services/elementAtPointService/IElementAtPointService.js +1 -1
  122. package/dist/elements/services/elementsService/IElementDefinition.d.ts +31 -31
  123. package/dist/elements/services/elementsService/IElementDefinition.js +1 -1
  124. package/dist/elements/services/elementsService/IElementsJson.d.ts +4 -4
  125. package/dist/elements/services/elementsService/IElementsJson.js +1 -1
  126. package/dist/elements/services/elementsService/IElementsService.d.ts +6 -6
  127. package/dist/elements/services/elementsService/IElementsService.js +1 -1
  128. package/dist/elements/services/elementsService/JsonFileElementsService.d.ts +12 -12
  129. package/dist/elements/services/elementsService/JsonFileElementsService.js +45 -45
  130. package/dist/elements/services/elementsService/PreDefinedElementsService.d.ts +11 -11
  131. package/dist/elements/services/elementsService/PreDefinedElementsService.js +21 -21
  132. package/dist/elements/services/htmlParserService/DefaultHtmlParserService.d.ts +9 -9
  133. package/dist/elements/services/htmlParserService/DefaultHtmlParserService.js +18 -18
  134. package/dist/elements/services/htmlParserService/IHtmlParserService.d.ts +7 -7
  135. package/dist/elements/services/htmlParserService/IHtmlParserService.js +1 -1
  136. package/dist/elements/services/htmlParserService/NodeHtmlParserService.d.ts +11 -11
  137. package/dist/elements/services/htmlParserService/NodeHtmlParserService.js +87 -87
  138. package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +12 -12
  139. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +103 -103
  140. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.d.ts +5 -5
  141. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.js +5 -5
  142. package/dist/elements/services/htmlWriterService/IHtmlWriterService.d.ts +8 -8
  143. package/dist/elements/services/htmlWriterService/IHtmlWriterService.js +1 -1
  144. package/dist/elements/services/htmlWriterService/IStringPosition.d.ts +4 -4
  145. package/dist/elements/services/htmlWriterService/IStringPosition.js +1 -1
  146. package/dist/elements/services/initializationService/IIntializationService.d.ts +4 -4
  147. package/dist/elements/services/initializationService/IIntializationService.js +1 -1
  148. package/dist/elements/services/instanceService/DefaultInstanceService.d.ts +8 -8
  149. package/dist/elements/services/instanceService/DefaultInstanceService.js +67 -67
  150. package/dist/elements/services/instanceService/IDesignerInstance.d.ts +3 -3
  151. package/dist/elements/services/instanceService/IDesignerInstance.js +1 -1
  152. package/dist/elements/services/instanceService/IInstanceService.d.ts +8 -8
  153. package/dist/elements/services/instanceService/IInstanceService.js +1 -1
  154. package/dist/elements/services/instanceService/IPrepareElementsForDesignerService.d.ts +4 -4
  155. package/dist/elements/services/instanceService/IPrepareElementsForDesignerService.js +1 -1
  156. package/dist/elements/services/instanceService/PrepareElementsForDesignerService.d.ts +6 -6
  157. package/dist/elements/services/instanceService/PrepareElementsForDesignerService.js +32 -32
  158. package/dist/elements/services/modelCommandService/DefaultModelCommandService.d.ts +7 -7
  159. package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +68 -68
  160. package/dist/elements/services/modelCommandService/IModelCommandService.d.ts +7 -7
  161. package/dist/elements/services/modelCommandService/IModelCommandService.js +1 -1
  162. package/dist/elements/services/placementService/DefaultPlacementService.d.ts +16 -16
  163. package/dist/elements/services/placementService/DefaultPlacementService.js +109 -109
  164. package/dist/elements/services/placementService/FlexBoxPlacementService.d.ts +15 -15
  165. package/dist/elements/services/placementService/FlexBoxPlacementService.js +42 -42
  166. package/dist/elements/services/placementService/GridPlacementService.d.ts +15 -15
  167. package/dist/elements/services/placementService/GridPlacementService.js +99 -99
  168. package/dist/elements/services/placementService/IPlacementService.d.ts +15 -15
  169. package/dist/elements/services/placementService/IPlacementService.js +1 -1
  170. package/dist/elements/services/placementService/ISnaplinesProviderService.d.ts +12 -11
  171. package/dist/elements/services/placementService/ISnaplinesProviderService.js +1 -1
  172. package/dist/elements/services/placementService/SnaplinesProviderService.d.ts +12 -11
  173. package/dist/elements/services/placementService/SnaplinesProviderService.js +38 -36
  174. package/dist/elements/services/popupService/IPopupService.d.ts +16 -16
  175. package/dist/elements/services/popupService/IPopupService.js +1 -1
  176. package/dist/elements/services/popupService/PopupService.d.ts +9 -9
  177. package/dist/elements/services/popupService/PopupService.js +20 -20
  178. package/dist/elements/services/propertiesService/DefaultEditorTypesService.d.ts +6 -6
  179. package/dist/elements/services/propertiesService/DefaultEditorTypesService.js +60 -60
  180. package/dist/elements/services/propertiesService/IEditorTypesService.d.ts +5 -5
  181. package/dist/elements/services/propertiesService/IEditorTypesService.js +1 -1
  182. package/dist/elements/services/propertiesService/IPropertiesService.d.ts +15 -15
  183. package/dist/elements/services/propertiesService/IPropertiesService.js +1 -1
  184. package/dist/elements/services/propertiesService/IProperty.d.ts +17 -17
  185. package/dist/elements/services/propertiesService/IProperty.js +1 -1
  186. package/dist/elements/services/propertiesService/IPropertyEditor.d.ts +19 -19
  187. package/dist/elements/services/propertiesService/IPropertyEditor.js +1 -1
  188. package/dist/elements/services/propertiesService/ValueType.d.ts +6 -6
  189. package/dist/elements/services/propertiesService/ValueType.js +7 -7
  190. package/dist/elements/services/propertiesService/app.d.ts +2 -2
  191. package/dist/elements/services/propertiesService/app.js +71 -71
  192. package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.d.ts +15 -15
  193. package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.js +41 -41
  194. package/dist/elements/services/propertiesService/propertyEditors/BooleanPropertyEditor.d.ts +7 -7
  195. package/dist/elements/services/propertiesService/propertyEditors/BooleanPropertyEditor.js +13 -13
  196. package/dist/elements/services/propertiesService/propertyEditors/ColorPropertyEditor.d.ts +7 -7
  197. package/dist/elements/services/propertiesService/propertyEditors/ColorPropertyEditor.js +22 -22
  198. package/dist/elements/services/propertiesService/propertyEditors/DatePropertyEditor.d.ts +7 -7
  199. package/dist/elements/services/propertiesService/propertyEditors/DatePropertyEditor.js +16 -16
  200. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.d.ts +8 -8
  201. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.js +40 -40
  202. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyEditor.d.ts +9 -9
  203. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyEditor.js +16 -16
  204. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyPopupEditor.d.ts +5 -5
  205. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyPopupEditor.js +8 -8
  206. package/dist/elements/services/propertiesService/propertyEditors/NumberPropertyEditor.d.ts +7 -7
  207. package/dist/elements/services/propertiesService/propertyEditors/NumberPropertyEditor.js +16 -16
  208. package/dist/elements/services/propertiesService/propertyEditors/SelectPropertyEditor.d.ts +7 -7
  209. package/dist/elements/services/propertiesService/propertyEditors/SelectPropertyEditor.js +28 -28
  210. package/dist/elements/services/propertiesService/propertyEditors/TextPropertyEditor.d.ts +7 -7
  211. package/dist/elements/services/propertiesService/propertyEditors/TextPropertyEditor.js +20 -20
  212. package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.d.ts +8 -8
  213. package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.js +14 -14
  214. package/dist/elements/services/propertiesService/services/AbstractBasePropertiesService.d.ts +7 -7
  215. package/dist/elements/services/propertiesService/services/AbstractBasePropertiesService.js +43 -43
  216. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.d.ts +15 -15
  217. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.js +63 -63
  218. package/dist/elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.d.ts +8 -8
  219. package/dist/elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.js +12 -12
  220. package/dist/elements/services/propertiesService/services/CommonPropertiesService.d.ts +16 -16
  221. package/dist/elements/services/propertiesService/services/CommonPropertiesService.js +92 -92
  222. package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +20 -20
  223. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +279 -279
  224. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinition.d.ts +13 -13
  225. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinition.js +1 -1
  226. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinitions.d.ts +4 -4
  227. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinitions.js +1 -1
  228. package/dist/elements/services/propertiesService/services/ListPropertiesService.d.ts +12 -12
  229. package/dist/elements/services/propertiesService/services/ListPropertiesService.js +37 -37
  230. package/dist/elements/services/propertiesService/services/Lit2PropertiesService.d.ts +9 -9
  231. package/dist/elements/services/propertiesService/services/Lit2PropertiesService.js +50 -50
  232. package/dist/elements/services/propertiesService/services/LitElementPropertiesService.d.ts +8 -8
  233. package/dist/elements/services/propertiesService/services/LitElementPropertiesService.js +17 -17
  234. package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.d.ts +15 -15
  235. package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.js +111 -111
  236. package/dist/elements/services/propertiesService/services/PolymerPropertiesService.d.ts +8 -8
  237. package/dist/elements/services/propertiesService/services/PolymerPropertiesService.js +10 -10
  238. package/dist/elements/services/propertiesService/services/PropertiesHelper.d.ts +6 -6
  239. package/dist/elements/services/propertiesService/services/PropertiesHelper.js +27 -27
  240. package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.d.ts +16 -16
  241. package/dist/elements/services/propertiesService/services/UnkownElementPropertiesService.js +92 -92
  242. package/dist/elements/services/selectionService/ISelectionChangedEvent.d.ts +5 -5
  243. package/dist/elements/services/selectionService/ISelectionChangedEvent.js +1 -1
  244. package/dist/elements/services/selectionService/ISelectionService.d.ts +11 -11
  245. package/dist/elements/services/selectionService/ISelectionService.js +1 -1
  246. package/dist/elements/services/selectionService/SelectionService.d.ts +12 -12
  247. package/dist/elements/services/selectionService/SelectionService.js +35 -35
  248. package/dist/elements/services/treeStructureService/ITreeStructureChangedEvent.d.ts +8 -8
  249. package/dist/elements/services/treeStructureService/ITreeStructureChangedEvent.js +1 -1
  250. package/dist/elements/services/treeStructureService/ITreeStructureService.d.ts +2 -2
  251. package/dist/elements/services/treeStructureService/ITreeStructureService.js +2 -2
  252. package/dist/elements/services/undoService/ChangeGroup.d.ts +17 -17
  253. package/dist/elements/services/undoService/ChangeGroup.js +56 -56
  254. package/dist/elements/services/undoService/ITransactionItem.d.ts +8 -8
  255. package/dist/elements/services/undoService/ITransactionItem.js +2 -2
  256. package/dist/elements/services/undoService/IUndoService.d.ts +13 -13
  257. package/dist/elements/services/undoService/IUndoService.js +1 -1
  258. package/dist/elements/services/undoService/UndoService.d.ts +21 -21
  259. package/dist/elements/services/undoService/UndoService.js +92 -92
  260. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.d.ts +15 -15
  261. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.js +70 -70
  262. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.d.ts +14 -14
  263. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.js +44 -44
  264. package/dist/elements/services/undoService/transactionItems/DeleteAction.d.ts +15 -15
  265. package/dist/elements/services/undoService/transactionItems/DeleteAction.js +38 -38
  266. package/dist/elements/services/undoService/transactionItems/InsertAction.d.ts +13 -13
  267. package/dist/elements/services/undoService/transactionItems/InsertAction.js +29 -29
  268. package/dist/elements/services/undoService/transactionItems/MoveElementInDomAction.d.ts +16 -16
  269. package/dist/elements/services/undoService/transactionItems/MoveElementInDomAction.js +31 -31
  270. package/dist/elements/services/undoService/transactionItems/PropertyChangeAction.d.ts +15 -15
  271. package/dist/elements/services/undoService/transactionItems/PropertyChangeAction.js +36 -36
  272. package/dist/elements/widgets/bindableObjectsBrowser/IBindableObjectsBrowser.d.ts +3 -3
  273. package/dist/elements/widgets/bindableObjectsBrowser/IBindableObjectsBrowser.js +1 -1
  274. package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.d.ts +13 -19
  275. package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.js +80 -101
  276. package/dist/elements/widgets/bindings/BindingsEditor.d.ts +17 -6
  277. package/dist/elements/widgets/bindings/BindingsEditor.js +46 -20
  278. package/dist/elements/widgets/codeView/ICodeView.d.ts +11 -11
  279. package/dist/elements/widgets/codeView/ICodeView.js +1 -1
  280. package/dist/elements/widgets/codeView/code-view-ace.d.ts +24 -24
  281. package/dist/elements/widgets/codeView/code-view-ace.js +127 -127
  282. package/dist/elements/widgets/codeView/code-view-code-mirror.d.ts +24 -24
  283. package/dist/elements/widgets/codeView/code-view-code-mirror.js +89 -89
  284. package/dist/elements/widgets/codeView/code-view-monaco.d.ts +25 -25
  285. package/dist/elements/widgets/codeView/code-view-monaco.js +102 -102
  286. package/dist/elements/widgets/demoView/IDemoView.d.ts +5 -5
  287. package/dist/elements/widgets/demoView/IDemoView.js +1 -1
  288. package/dist/elements/widgets/demoView/demoView.d.ts +11 -11
  289. package/dist/elements/widgets/demoView/demoView.js +22 -22
  290. package/dist/elements/widgets/designerView/ButtonSeperatorProvider.d.ts +8 -8
  291. package/dist/elements/widgets/designerView/ButtonSeperatorProvider.js +11 -11
  292. package/dist/elements/widgets/designerView/DesignContext.d.ts +7 -7
  293. package/dist/elements/widgets/designerView/DesignContext.js +4 -4
  294. package/dist/elements/widgets/designerView/DesignerViewUseOverlayScollbars.d.ts +7 -7
  295. package/dist/elements/widgets/designerView/DesignerViewUseOverlayScollbars.js +13 -13
  296. package/dist/elements/widgets/designerView/DomConverter.d.ts +8 -8
  297. package/dist/elements/widgets/designerView/DomConverter.js +44 -44
  298. package/dist/elements/widgets/designerView/IDesignContext.d.ts +6 -6
  299. package/dist/elements/widgets/designerView/IDesignContext.js +1 -1
  300. package/dist/elements/widgets/designerView/IDesignViewConfigButtonsProvider.d.ts +5 -5
  301. package/dist/elements/widgets/designerView/IDesignViewConfigButtonsProvider.js +1 -1
  302. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +34 -32
  303. package/dist/elements/widgets/designerView/IDesignerCanvas.js +1 -1
  304. package/dist/elements/widgets/designerView/IPlacementView.d.ts +13 -11
  305. package/dist/elements/widgets/designerView/IPlacementView.js +1 -1
  306. package/dist/elements/widgets/designerView/Snaplines.d.ts +21 -20
  307. package/dist/elements/widgets/designerView/Snaplines.js +220 -220
  308. package/dist/elements/widgets/designerView/defaultConfiguredDesignerView.d.ts +5 -5
  309. package/dist/elements/widgets/designerView/defaultConfiguredDesignerView.js +11 -11
  310. package/dist/elements/widgets/designerView/designerCanvas.d.ts +88 -82
  311. package/dist/elements/widgets/designerView/designerCanvas.js +624 -564
  312. package/dist/elements/widgets/designerView/designerView.d.ts +37 -34
  313. package/dist/elements/widgets/designerView/designerView.js +218 -159
  314. package/dist/elements/widgets/designerView/extensions/AbstractExtension.d.ts +12 -12
  315. package/dist/elements/widgets/designerView/extensions/AbstractExtension.js +8 -8
  316. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +16 -16
  317. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +50 -50
  318. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.d.ts +12 -12
  319. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.js +20 -20
  320. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.d.ts +10 -10
  321. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js +11 -11
  322. package/dist/elements/widgets/designerView/extensions/CanvasExtension.d.ts +10 -10
  323. package/dist/elements/widgets/designerView/extensions/CanvasExtension.js +29 -29
  324. package/dist/elements/widgets/designerView/extensions/CanvasExtensionProvider.d.ts +10 -10
  325. package/dist/elements/widgets/designerView/extensions/CanvasExtensionProvider.js +13 -13
  326. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.d.ts +17 -17
  327. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +71 -71
  328. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.d.ts +9 -9
  329. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.js +11 -11
  330. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +16 -16
  331. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +217 -217
  332. package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +18 -18
  333. package/dist/elements/widgets/designerView/extensions/ExtensionType.js +19 -19
  334. package/dist/elements/widgets/designerView/extensions/GrayOutExtension.d.ts +13 -13
  335. package/dist/elements/widgets/designerView/extensions/GrayOutExtension.js +32 -32
  336. package/dist/elements/widgets/designerView/extensions/GrayOutExtensionProvider.d.ts +10 -10
  337. package/dist/elements/widgets/designerView/extensions/GrayOutExtensionProvider.js +11 -11
  338. package/dist/elements/widgets/designerView/extensions/GridExtension.d.ts +10 -10
  339. package/dist/elements/widgets/designerView/extensions/GridExtension.js +30 -30
  340. package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons.d.ts +6 -6
  341. package/dist/elements/widgets/designerView/extensions/GridExtensionDesignViewConfigButtons.js +21 -21
  342. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.d.ts +11 -11
  343. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider.js +14 -14
  344. package/dist/elements/widgets/designerView/extensions/IDesignerExtension.d.ts +5 -5
  345. package/dist/elements/widgets/designerView/extensions/IDesignerExtension.js +1 -1
  346. package/dist/elements/widgets/designerView/extensions/IDesignerExtensionProvider.d.ts +9 -9
  347. package/dist/elements/widgets/designerView/extensions/IDesignerExtensionProvider.js +1 -1
  348. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +11 -11
  349. package/dist/elements/widgets/designerView/extensions/IExtensionManger.js +1 -1
  350. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.d.ts +11 -11
  351. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtension.js +22 -22
  352. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.d.ts +10 -10
  353. package/dist/elements/widgets/designerView/extensions/InvisibleDivExtensionProvider.js +15 -15
  354. package/dist/elements/widgets/designerView/extensions/MouseOverExtension.d.ts +11 -11
  355. package/dist/elements/widgets/designerView/extensions/MouseOverExtension.js +20 -20
  356. package/dist/elements/widgets/designerView/extensions/MouseOverExtensionProvider.d.ts +10 -10
  357. package/dist/elements/widgets/designerView/extensions/MouseOverExtensionProvider.js +11 -11
  358. package/dist/elements/widgets/designerView/extensions/OverlayLayer.d.ts +5 -5
  359. package/dist/elements/widgets/designerView/extensions/OverlayLayer.js +6 -6
  360. package/dist/elements/widgets/designerView/extensions/PathExtension.d.ts +15 -15
  361. package/dist/elements/widgets/designerView/extensions/PathExtension.js +78 -78
  362. package/dist/elements/widgets/designerView/extensions/PathExtensionProvider.d.ts +9 -9
  363. package/dist/elements/widgets/designerView/extensions/PathExtensionProvider.js +17 -17
  364. package/dist/elements/widgets/designerView/extensions/PositionExtension.d.ts +14 -14
  365. package/dist/elements/widgets/designerView/extensions/PositionExtension.js +45 -45
  366. package/dist/elements/widgets/designerView/extensions/PositionExtensionProvider.d.ts +9 -9
  367. package/dist/elements/widgets/designerView/extensions/PositionExtensionProvider.js +12 -12
  368. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtension.d.ts +13 -13
  369. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtension.js +21 -21
  370. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider.d.ts +10 -10
  371. package/dist/elements/widgets/designerView/extensions/PrimarySelectionDefaultExtensionProvider.js +11 -11
  372. package/dist/elements/widgets/designerView/extensions/ResizeExtension.d.ts +25 -24
  373. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +150 -146
  374. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.d.ts +12 -12
  375. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +15 -15
  376. package/dist/elements/widgets/designerView/extensions/RotateExtension.d.ts +12 -12
  377. package/dist/elements/widgets/designerView/extensions/RotateExtension.js +71 -71
  378. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.d.ts +10 -10
  379. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +11 -11
  380. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.d.ts +11 -11
  381. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.js +22 -22
  382. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.d.ts +10 -10
  383. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.js +11 -11
  384. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.d.ts +14 -14
  385. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +68 -68
  386. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.d.ts +10 -10
  387. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js +13 -13
  388. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.d.ts +8 -8
  389. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +16 -16
  390. package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.d.ts +8 -8
  391. package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.js +1 -1
  392. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.d.ts +10 -10
  393. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js +51 -51
  394. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.d.ts +9 -9
  395. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js +22 -22
  396. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.d.ts +8 -8
  397. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js +14 -14
  398. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.d.ts +11 -11
  399. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js +11 -11
  400. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.d.ts +13 -13
  401. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.js +24 -24
  402. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.d.ts +7 -7
  403. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js +8 -8
  404. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.d.ts +5 -5
  405. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.js +1 -1
  406. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.d.ts +6 -6
  407. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.js +1 -1
  408. package/dist/elements/widgets/designerView/overlay/EditTextOverlay.d.ts +5 -5
  409. package/dist/elements/widgets/designerView/overlay/EditTextOverlay.js +5 -5
  410. package/dist/elements/widgets/designerView/overlayLayerView.d.ts +25 -25
  411. package/dist/elements/widgets/designerView/overlayLayerView.js +130 -130
  412. package/dist/elements/widgets/designerView/tools/DrawElementTool.d.ts +18 -18
  413. package/dist/elements/widgets/designerView/tools/DrawElementTool.js +78 -78
  414. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.d.ts +15 -0
  415. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +90 -0
  416. package/dist/elements/widgets/designerView/tools/DrawLineTool.d.ts +13 -0
  417. package/dist/elements/widgets/designerView/tools/DrawLineTool.js +75 -0
  418. package/dist/elements/widgets/designerView/tools/DrawPathTool.d.ts +19 -21
  419. package/dist/elements/widgets/designerView/tools/DrawPathTool.js +113 -126
  420. package/dist/elements/widgets/designerView/tools/DrawRectTool.d.ts +18 -0
  421. package/dist/elements/widgets/designerView/tools/DrawRectTool.js +105 -0
  422. package/dist/elements/widgets/designerView/tools/ITool.d.ts +8 -8
  423. package/dist/elements/widgets/designerView/tools/ITool.js +1 -1
  424. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.d.ts +11 -11
  425. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +61 -61
  426. package/dist/elements/widgets/designerView/tools/NamedTools.d.ts +14 -11
  427. package/dist/elements/widgets/designerView/tools/NamedTools.js +15 -12
  428. package/dist/elements/widgets/designerView/tools/PanTool.d.ts +9 -9
  429. package/dist/elements/widgets/designerView/tools/PanTool.js +23 -9
  430. package/dist/elements/widgets/designerView/tools/PickColorTool.d.ts +9 -9
  431. package/dist/elements/widgets/designerView/tools/PickColorTool.js +19 -19
  432. package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +23 -23
  433. package/dist/elements/widgets/designerView/tools/PointerTool.js +325 -318
  434. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.d.ts +11 -11
  435. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +81 -81
  436. package/dist/elements/widgets/designerView/tools/TextTool.d.ts +10 -10
  437. package/dist/elements/widgets/designerView/tools/TextTool.js +11 -11
  438. package/dist/elements/widgets/designerView/tools/ZoomTool.d.ts +9 -9
  439. package/dist/elements/widgets/designerView/tools/ZoomTool.js +9 -9
  440. package/dist/elements/widgets/miniatureView/IMiniatureView.d.ts +2 -2
  441. package/dist/elements/widgets/miniatureView/IMiniatureView.js +1 -1
  442. package/dist/elements/widgets/miniatureView/html-2-canvas-miniature-view.d.ts +10 -10
  443. package/dist/elements/widgets/miniatureView/html-2-canvas-miniature-view.js +18 -18
  444. package/dist/elements/widgets/paletteView/paletteElements.d.ts +10 -10
  445. package/dist/elements/widgets/paletteView/paletteElements.js +72 -72
  446. package/dist/elements/widgets/paletteView/paletteTreeView.d.ts +13 -13
  447. package/dist/elements/widgets/paletteView/paletteTreeView.js +72 -77
  448. package/dist/elements/widgets/paletteView/paletteView.d.ts +11 -11
  449. package/dist/elements/widgets/paletteView/paletteView.js +25 -25
  450. package/dist/elements/widgets/propertyGrid/PropertyGrid.d.ts +21 -21
  451. package/dist/elements/widgets/propertyGrid/PropertyGrid.js +127 -126
  452. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.d.ts +17 -17
  453. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +91 -91
  454. package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.d.ts +15 -15
  455. package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.js +48 -47
  456. package/dist/elements/widgets/treeView/ITreeView.d.ts +6 -6
  457. package/dist/elements/widgets/treeView/ITreeView.js +1 -1
  458. package/dist/elements/widgets/treeView/treeView.d.ts +28 -28
  459. package/dist/elements/widgets/treeView/treeView.js +148 -148
  460. package/dist/elements/widgets/treeView/treeViewExtended.d.ts +31 -31
  461. package/dist/elements/widgets/treeView/treeViewExtended.js +306 -306
  462. package/dist/enums/EventNames.d.ts +15 -15
  463. package/dist/enums/EventNames.js +16 -16
  464. package/dist/enums/PointerActionType.d.ts +8 -8
  465. package/dist/enums/PointerActionType.js +9 -9
  466. package/dist/index.d.ts +174 -166
  467. package/dist/index.js +124 -118
  468. package/dist/interfaces/IActivateable.d.ts +3 -3
  469. package/dist/interfaces/IActivateable.js +1 -1
  470. package/dist/interfaces/IDisposable.d.ts +3 -3
  471. package/dist/interfaces/IDisposable.js +1 -1
  472. package/dist/interfaces/IPoint.d.ts +4 -4
  473. package/dist/interfaces/IPoint.js +1 -1
  474. package/dist/interfaces/IRect.d.ts +6 -6
  475. package/dist/interfaces/IRect.js +1 -1
  476. package/dist/interfaces/ISize.d.ts +4 -4
  477. package/dist/interfaces/ISize.js +1 -1
  478. package/dist/polyfill/globals.d.ts +11 -11
  479. package/dist/polyfill/globals.js +1 -1
  480. package/dist/polyfill/mobileDragDrop.d.ts +2 -2
  481. package/dist/polyfill/mobileDragDrop.js +32 -32
  482. package/package.json +1 -1
  483. package/debug.log +0 -8
  484. package/dist/elements/controls/SimpleSplitView2.d.ts +0 -11
  485. package/dist/elements/controls/SimpleSplitView2.js +0 -63
  486. package/dist/elements/controls/aa.d.ts +0 -24
  487. package/dist/elements/controls/aa.js +0 -98
  488. package/dist/elements/widgets/designerView/ButtonSeperatorProvider copy.d.ts +0 -7
  489. package/dist/elements/widgets/designerView/ButtonSeperatorProvider copy.js +0 -11
  490. package/dist/elements/widgets/designerView/extensions/GridExtensionConfigButtons.d.ts +0 -5
  491. package/dist/elements/widgets/designerView/extensions/GridExtensionConfigButtons.js +0 -12
  492. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider copy.d.ts +0 -10
  493. package/dist/elements/widgets/designerView/extensions/GridExtensionProvider copy.js +0 -18
  494. package/dist/elements/widgets/designerView/extensions/GridExtensionProviderConfigButtons.d.ts +0 -5
  495. package/dist/elements/widgets/designerView/extensions/GridExtensionProviderConfigButtons.js +0 -12
  496. package/dist/elements/widgets/designerView/extensions/GridExtensionProviderOptions.d.ts +0 -10
  497. package/dist/elements/widgets/designerView/extensions/GridExtensionProviderOptions.js +0 -18
  498. package/dist/elements/widgets/designerView/extensions/IDesignViewConfigButtonsProvider.d.ts +0 -0
  499. package/dist/elements/widgets/designerView/extensions/IDesignViewConfigButtonsProvider.js +0 -1
  500. package/dist/elements/widgets/designerView/extensions/IExtensionConfiguration.d.ts +0 -3
@@ -1,58 +1,70 @@
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 { dragDropFormatName } 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
- // IPlacementView
30
- gridSize = 10;
31
- alignOnGrid = false;
32
- alignOnSnap = true;
33
- snapLines;
34
- overlayLayer;
35
- rootDesignItem;
36
- eatEvents;
37
- _zoomFactor = 1;
38
- get zoomFactor() {
39
- return this._zoomFactor;
40
- }
41
- set zoomFactor(value) {
42
- this._zoomFactor = value;
43
- this.zoomFactorChanged();
44
- }
45
- onContentChanged = new TypedEvent();
46
- // Private Variables
47
- _canvas;
48
- _canvasContainer;
49
- _outercanvas2;
50
- _lastHoverDesignItem;
51
- _onContextMenuBound;
52
- _pointerEventHandlerBound;
53
- _firstConnect;
54
- _onKeyDownBound;
55
- _onKeyUpBound;
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
+ // IPlacementView
30
+ gridSize = 10;
31
+ alignOnGrid = false;
32
+ alignOnSnap = true;
33
+ snapLines;
34
+ overlayLayer;
35
+ rootDesignItem;
36
+ eatEvents;
37
+ _zoomFactor = 1; //if scale or zoom css property is used this needs to be the value
38
+ _scaleFactor = 1; //if scale css property is used this need to be the scale value
39
+ _canvasOffset = { x: 0, y: 0 };
40
+ get zoomFactor() {
41
+ return this._zoomFactor;
42
+ }
43
+ set zoomFactor(value) {
44
+ this._zoomFactor = value;
45
+ this.zoomFactorChanged();
46
+ }
47
+ get scaleFactor() {
48
+ return this._scaleFactor;
49
+ }
50
+ get canvasOffset() {
51
+ return this._canvasOffset;
52
+ }
53
+ set canvasOffset(value) {
54
+ this._canvasOffset = value;
55
+ this.zoomFactorChanged();
56
+ }
57
+ onContentChanged = new TypedEvent();
58
+ // Private Variables
59
+ _canvas;
60
+ _canvasContainer;
61
+ _outercanvas2;
62
+ _lastHoverDesignItem;
63
+ _onContextMenuBound;
64
+ _pointerEventHandlerBound;
65
+ _firstConnect;
66
+ _onKeyDownBound;
67
+ _onKeyUpBound;
56
68
  static style = css `
57
69
  :host {
58
70
  display: block;
@@ -91,520 +103,568 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
91
103
  pointer-events: none;
92
104
  overflow: visible;
93
105
  user-select: none;
106
+ -webkit-user-select: none;
94
107
  z-index: 999999999999;
95
108
  }
96
109
 
97
110
  #node-projects-designer-canvas-canvas * {
98
111
  cursor: pointer;
99
112
  user-select: none;
100
- }`;
113
+ -webkit-user-select: none;
114
+ }`;
101
115
  static template = html `
102
- <div style="display: flex;flex-direction: column;width: 100%;height: 100%;">
103
- <div style="width: 100%;height: 100%;">
104
- <div id="node-projects-designer-canvas-outercanvas2" style="width: 100%;height: 100%;position: relative;overflow: auto;">
105
- <div id="node-projects-designer-canvas-canvasContainer" style="width: 100%;height: 100%;margin: auto;position: absolute;top: 0;/* bottom: 0; does not work with fixed sized when size is bigger then view */left: 0;user-select: none;">
106
- <div id="node-projects-designer-canvas-canvas" part="canvas" tabindex="0"></div>
107
- </div>
108
- </div>
116
+ <div style="display: flex;flex-direction: column;width: 100%;height: 100%;">
117
+ <div style="width: 100%;height: 100%;">
118
+ <div id="node-projects-designer-canvas-outercanvas2"
119
+ style="width:100%;height:100%;position:relative;">
120
+ <div id="node-projects-designer-canvas-canvasContainer"
121
+ style="width: 100%;height: 100%;margin: auto;position: absolute;top: 0;/* bottom: 0; does not work with fixed sized when size is bigger then view */left: 0;user-select: none;">
122
+ <div id="node-projects-designer-canvas-canvas" part="canvas" tabindex="0"></div>
109
123
  </div>
110
- </div>`;
111
- extensionManager;
112
- _pointerextensions;
113
- _onDblClickBound;
114
- constructor() {
115
- super();
116
- this._canvas = this._getDomElement('node-projects-designer-canvas-canvas');
117
- this._canvasContainer = this._getDomElement('node-projects-designer-canvas-canvasContainer');
118
- this._outercanvas2 = this._getDomElement('node-projects-designer-canvas-outercanvas2');
119
- this.instanceServiceContainer = new InstanceServiceContainer(this);
120
- this.instanceServiceContainer.register("undoService", new UndoService(this));
121
- this.instanceServiceContainer.register("selectionService", new SelectionService);
122
- this.extensionManager = new ExtensionManager(this);
123
- this._onKeyDownBound = this.onKeyDown.bind(this);
124
- this._onKeyUpBound = this.onKeyUp.bind(this);
125
- this._onDblClickBound = this._onDblClick.bind(this);
126
- this._onContextMenuBound = this._onContextMenu.bind(this);
127
- this._pointerEventHandlerBound = this._pointerEventHandler.bind(this);
128
- this._canvas.oncontextmenu = this._onContextMenuBound;
129
- }
130
- get designerWidth() {
131
- return this._canvasContainer.style.width;
132
- }
133
- set designerWidth(value) {
134
- this._canvasContainer.style.width = value;
135
- this.zoomFactorChanged();
136
- }
137
- get designerHeight() {
138
- return this._canvasContainer.style.height;
139
- }
140
- set designerHeight(value) {
141
- this._canvasContainer.style.height = value;
142
- this.zoomFactorChanged();
143
- }
144
- set additionalStyle(value) {
145
- if (value) {
146
- for (let r of value.rules) {
147
- if (r instanceof CSSStyleRule) {
148
- let parts = r.selectorText.split(',');
149
- let t = '';
150
- for (let p of parts) {
151
- if (r.selectorText)
152
- t += ',';
153
- t += '#canvas ' + p;
154
- }
155
- r.selectorText = t;
156
- }
157
- }
158
- this.shadowRoot.adoptedStyleSheets = [this.constructor.style, value];
159
- }
160
- else
161
- this.shadowRoot.adoptedStyleSheets = [this.constructor.style];
162
- }
163
- /* --- start IUiCommandHandler --- */
164
- async executeCommand(command) {
165
- const modelCommandService = this.serviceContainer.modelCommandService;
166
- if (modelCommandService) {
167
- let handeled = await modelCommandService.executeCommand(this, command);
168
- if (handeled != null)
169
- return;
170
- }
171
- switch (command.type) {
172
- case CommandType.screenshot:
173
- {
174
- if (!this.instanceServiceContainer.selectionService.primarySelection)
175
- alert("you need to select an element!");
176
- else {
177
- if (!Screenshot.screenshotsEnabled) {
178
- alert("you need to select current tab in next browser dialog, or screenshots will not work correctly");
179
- }
180
- const el = this.instanceServiceContainer.selectionService.primarySelection.element;
181
- const sel = this.instanceServiceContainer.selectionService.selectedElements;
182
- this.instanceServiceContainer.selectionService.setSelectedElements(null);
183
- const screenshot = await Screenshot.takeScreenshot(el, el.clientWidth, el.clientHeight);
184
- await exportData(dataURItoBlob(screenshot), "screenshot.png");
185
- this.instanceServiceContainer.selectionService.setSelectedElements(sel);
186
- }
187
- }
188
- break;
189
- case CommandType.setTool:
190
- {
191
- this.serviceContainer.globalContext.tool = this.serviceContainer.designerTools.get(command.parameter);
192
- }
193
- break;
194
- case CommandType.setStrokeColor:
195
- {
196
- this.serviceContainer.globalContext.strokeColor = command.parameter;
197
- }
198
- break;
199
- case CommandType.setFillBrush:
200
- {
201
- this.serviceContainer.globalContext.fillBrush = command.parameter;
202
- }
203
- break;
204
- case CommandType.setStrokeThickness:
205
- {
206
- this.serviceContainer.globalContext.strokeThickness = command.parameter;
207
- }
208
- break;
209
- case CommandType.delete:
210
- this.handleDeleteCommand();
211
- break;
212
- case CommandType.undo:
213
- this.instanceServiceContainer.undoService.undo();
214
- break;
215
- case CommandType.redo:
216
- this.instanceServiceContainer.undoService.redo();
217
- break;
218
- case CommandType.copy:
219
- this.handleCopyCommand();
220
- break;
221
- case CommandType.cut:
222
- this.handleCopyCommand();
223
- this.handleDeleteCommand();
224
- break;
225
- case CommandType.paste:
226
- this.handlePasteCommand();
227
- break;
228
- case CommandType.selectAll:
229
- this.handleSelectAll();
230
- break;
231
- }
232
- }
233
- canExecuteCommand(command) {
234
- const modelCommandService = this.serviceContainer.modelCommandService;
235
- if (modelCommandService) {
236
- let handeled = modelCommandService.canExecuteCommand(this, command);
237
- if (handeled !== null)
238
- return handeled;
239
- }
240
- if (command.type === CommandType.undo) {
241
- return this.instanceServiceContainer.undoService.canUndo();
242
- }
243
- if (command.type === CommandType.redo) {
244
- return this.instanceServiceContainer.undoService.canRedo();
245
- }
246
- if (command.type === CommandType.setTool) {
247
- return this.serviceContainer.designerTools.has(command.parameter);
248
- }
249
- return true;
250
- }
251
- /* --- end IUiCommandHandler --- */
252
- handleSelectAll() {
253
- this.instanceServiceContainer.selectionService.setSelectedElements(Array.from(this.rootDesignItem.children()));
254
- }
255
- async handleCopyCommand() {
256
- await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements);
257
- }
258
- async handlePasteCommand() {
259
- const designItems = await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer, this.instanceServiceContainer);
260
- let grp = this.rootDesignItem.openGroup("Insert");
261
- if (designItems) {
262
- for (let di of designItems) {
263
- this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
264
- }
265
- const intializationService = this.serviceContainer.intializationService;
266
- if (intializationService) {
267
- for (let di of designItems)
268
- intializationService.init(di);
269
- }
270
- this.instanceServiceContainer.selectionService.setSelectedElements(designItems);
271
- }
272
- grp.commit();
273
- this.snapLines.clearSnaplines();
274
- }
275
- handleDeleteCommand() {
276
- let items = this.instanceServiceContainer.selectionService.selectedElements;
277
- this.instanceServiceContainer.undoService.execute(new DeleteAction(items, this.extensionManager));
278
- this.instanceServiceContainer.selectionService.setSelectedElements(null);
279
- }
280
- initialize(serviceContainer) {
281
- this.serviceContainer = serviceContainer;
282
- this.rootDesignItem = DesignItem.GetOrCreateDesignItem(this._canvas, this.serviceContainer, this.instanceServiceContainer);
283
- this.instanceServiceContainer.register("contentService", new ContentService(this.rootDesignItem));
284
- this.overlayLayer = new OverlayLayerView(serviceContainer);
285
- this.overlayLayer.style.pointerEvents = 'none';
286
- this._canvasContainer.appendChild(this.overlayLayer);
287
- this.snapLines = new Snaplines(this.overlayLayer);
288
- this.snapLines.initialize(this.rootDesignItem);
289
- if (this.serviceContainer.designerPointerExtensions)
290
- for (let pe of this.serviceContainer.designerPointerExtensions) {
291
- if (!this._pointerextensions)
292
- this._pointerextensions = [];
293
- this._pointerextensions.push(pe.getExtension(this));
294
- }
295
- if (this.children) {
296
- let children = this.children;
297
- if (this.children.length == 1 && this.children[0] instanceof HTMLSlotElement) {
298
- children = this.children[0].assignedElements();
299
- }
300
- const parser = this.serviceContainer.getLastServiceWhere('htmlParserService', x => x.constructor == DefaultHtmlParserService);
301
- this.addDesignItems(parser.createDesignItems(children, this.serviceContainer, this.instanceServiceContainer));
302
- }
303
- }
304
- elementFromPoint(x, y) {
305
- //@ts-ignore
306
- return this.shadowRoot.elementFromPoint(x, y);
307
- }
308
- connectedCallback() {
309
- if (!this._firstConnect) {
310
- this._firstConnect = true;
311
- this._outercanvas2.addEventListener(EventNames.PointerDown, this._pointerEventHandlerBound);
312
- this._outercanvas2.addEventListener(EventNames.PointerMove, this._pointerEventHandlerBound);
313
- this._outercanvas2.addEventListener(EventNames.PointerUp, this._pointerEventHandlerBound);
314
- this._outercanvas2.addEventListener(EventNames.DragEnter, event => this._onDragEnter(event));
315
- this._outercanvas2.addEventListener(EventNames.DragLeave, event => this._onDragLeave(event));
316
- this._outercanvas2.addEventListener(EventNames.DragOver, event => this._onDragOver(event));
317
- this._outercanvas2.addEventListener(EventNames.Drop, event => this._onDrop(event));
318
- this._canvas.addEventListener(EventNames.KeyDown, this._onKeyDownBound, true);
319
- this._canvas.addEventListener(EventNames.KeyUp, this._onKeyUpBound, true);
320
- this._canvas.addEventListener(EventNames.DblClick, this._onDblClickBound, true);
321
- }
322
- }
323
- zoomFactorChanged() {
324
- //@ts-ignore
325
- this._canvasContainer.style.zoom = this._zoomFactor;
326
- //this._canvasContainer.style.transform = 'scale(' + this._zoomFactor+')';
327
- //this._canvasContainer.style.transformOrigin = '0 0';
328
- this._canvasContainer.style.bottom = this._outercanvas2.offsetHeight >= this._canvasContainer.offsetHeight ? '0' : '';
329
- this._canvasContainer.style.right = this._outercanvas2.offsetWidth >= this._canvasContainer.offsetWidth ? '0' : '';
330
- this.snapLines.clearSnaplines();
331
- }
332
- setDesignItems(designItems) {
333
- this.instanceServiceContainer.undoService.clear();
334
- this.overlayLayer.removeAllOverlays();
335
- DomHelper.removeAllChildnodes(this.overlayLayer);
336
- this.rootDesignItem.clearChildren();
337
- this.addDesignItems(designItems);
338
- this.instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'parsed' });
339
- }
340
- addDesignItems(designItems) {
341
- if (designItems) {
342
- for (let di of designItems) {
343
- this.rootDesignItem.insertChild(di);
344
- }
345
- }
346
- const intializationService = this.serviceContainer.intializationService;
347
- if (intializationService) {
348
- for (let di of designItems)
349
- intializationService.init(di);
350
- }
351
- this.snapLines.clearSnaplines();
352
- const prepService = this.serviceContainer.prepareElementsForDesignerService;
353
- if (prepService)
354
- requestAnimationFrame(() => prepService.prepareElementsForDesigner(this.rootDesignItem));
355
- }
356
- _onDragEnter(event) {
357
- event.preventDefault();
358
- }
359
- _onDragLeave(event) {
360
- event.preventDefault();
361
- this._canvas.classList.remove('dragFileActive');
362
- }
363
- _onDragOver(event) {
364
- event.preventDefault();
365
- /*if (this.alignOnSnap) {
366
- this.snapLines.calculateSnaplines(this.instanceServiceContainer.selectionService.selectedElements);
367
- //TODO: fix this following code...
368
- const currentPoint = this.getDesignerMousepoint(event);
369
- let containerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this.rootDesignItem))
370
- containerService.finishPlace(this, this.rootDesignItem, this._initialPoint, currentPoint, this.instanceServiceContainer.selectionService.selectedElements);
371
- }*/
372
- if (event.dataTransfer.types.length > 0 && event.dataTransfer.types[0] == 'Files') {
373
- const ddService = this.serviceContainer.dragDropService;
374
- if (ddService) {
375
- const effect = ddService.dragOver(event);
376
- event.dataTransfer.dropEffect = effect;
377
- if (effect !== 'none')
378
- this._canvas.classList.add('dragFileActive');
379
- }
380
- }
381
- }
382
- async _onDrop(event) {
383
- event.preventDefault();
384
- this._canvas.classList.remove('dragFileActive');
385
- if (event.dataTransfer.files.length > 0) {
386
- const ddService = this.serviceContainer.dragDropService;
387
- if (ddService) {
388
- ddService.drop(this, event);
389
- }
390
- }
391
- else {
392
- this._fillCalculationrects();
393
- const position = this.getNormalizedEventCoordinates(event);
394
- const transferData = event.dataTransfer.getData(dragDropFormatName);
395
- const elementDefinition = JSON.parse(transferData);
396
- const di = await this.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(elementDefinition, this.serviceContainer, this.instanceServiceContainer));
397
- const grp = di.openGroup("Insert");
398
- di.setStyle('position', 'absolute');
399
- di.setStyle('left', position.x + 'px');
400
- di.setStyle('top', position.y + 'px');
401
- this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
402
- grp.commit();
403
- requestAnimationFrame(() => this.instanceServiceContainer.selectionService.setSelectedElements([di]));
404
- }
405
- }
406
- _onContextMenu(event) {
407
- event.preventDefault();
408
- const designItem = DesignItem.GetOrCreateDesignItem(event.target, this.serviceContainer, this.instanceServiceContainer);
409
- if (!this.instanceServiceContainer.selectionService.isSelected(designItem)) {
410
- this.instanceServiceContainer.selectionService.setSelectedElements([designItem]);
411
- }
412
- this.showDesignItemContextMenu(designItem, event);
413
- }
414
- showDesignItemContextMenu(designItem, event) {
415
- const mnuItems = [];
416
- for (let cme of this.serviceContainer.designerContextMenuExtensions) {
417
- if (cme.shouldProvideContextmenu(event, this, designItem, 'designer')) {
418
- mnuItems.push(...cme.provideContextMenuItems(event, this, designItem));
419
- }
420
- }
421
- let ctxMnu = ContextMenuHelper.showContextMenu(null, event, null, mnuItems);
422
- return ctxMnu;
423
- }
424
- _onDblClick(event) {
425
- event.preventDefault();
426
- this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection, ExtensionType.Doubleclick);
427
- }
428
- onKeyUp(event) {
429
- if (event.composedPath().indexOf(this.eatEvents) >= 0)
430
- return;
431
- switch (event.key) {
432
- case 'ArrowUp':
433
- //this._resetPointerEventsForClickThrough();
434
- break;
435
- }
436
- event.preventDefault();
437
- }
438
- onKeyDown(event) {
439
- if (event.composedPath().indexOf(this.eatEvents) >= 0)
440
- return;
441
- //TODO: keyboard events maybe should also be handeled by tools
442
- if ((event.ctrlKey || event.metaKey) && event.key === 'z' && !event.shiftKey)
443
- this.executeCommand({ type: CommandType.undo });
444
- else if ((event.ctrlKey || event.metaKey) && event.key === 'z' && event.shiftKey)
445
- this.executeCommand({ type: CommandType.redo });
446
- else if ((event.ctrlKey || event.metaKey) && event.key === 'y')
447
- this.executeCommand({ type: CommandType.redo });
448
- else if ((event.ctrlKey || event.metaKey) && event.key === 'a')
449
- this.executeCommand({ type: CommandType.selectAll });
450
- else if ((event.ctrlKey || event.metaKey) && event.key === 'c')
451
- this.executeCommand({ type: CommandType.copy });
452
- else if ((event.ctrlKey || event.metaKey) && event.key === 'v')
453
- this.executeCommand({ type: CommandType.paste });
454
- else if ((event.ctrlKey || event.metaKey) && event.key === 'x')
455
- this.executeCommand({ type: CommandType.cut });
456
- else {
457
- let primarySelection = this.instanceServiceContainer.selectionService.primarySelection;
458
- if (!primarySelection) {
459
- return;
460
- }
461
- let moveOffset = 1;
462
- if (event.shiftKey)
463
- moveOffset = 10;
464
- switch (event.key) {
465
- case 'Delete':
466
- case 'Backspace':
467
- this.executeCommand({ type: CommandType.delete });
468
- break;
469
- case 'ArrowUp':
470
- {
471
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('top', parseInt(x.element.style.top) - moveOffset + 'px'));
472
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
473
- }
474
- break;
475
- case 'ArrowDown':
476
- {
477
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('top', parseInt(x.element.style.top) + moveOffset + 'px'));
478
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
479
- }
480
- break;
481
- case 'ArrowLeft':
482
- {
483
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('left', parseInt(x.element.style.left) - moveOffset + 'px'));
484
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
485
- }
486
- break;
487
- case 'ArrowRight':
488
- {
489
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('left', parseInt(x.element.style.left) + moveOffset + 'px'));
490
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
491
- }
492
- break;
493
- }
494
- }
495
- event.preventDefault();
496
- }
497
- getNormalizedEventCoordinates(event) {
498
- const offsetOfOuterX = (event.clientX - this.outerRect.x) / this.zoomFactor;
499
- const offsetOfCanvasX = this.containerBoundingRect.x - this.outerRect.x / this.zoomFactor;
500
- const offsetOfOuterY = (event.clientY - this.outerRect.y) / this.zoomFactor;
501
- const offsetOfCanvasY = this.containerBoundingRect.y - this.outerRect.y / this.zoomFactor;
502
- return {
503
- x: offsetOfOuterX - offsetOfCanvasX,
504
- y: offsetOfOuterY - offsetOfCanvasY
505
- };
506
- }
507
- getNormalizedElementCoordinates(element) {
508
- const targetRect = element.getBoundingClientRect();
509
- return { x: targetRect.x - this.containerBoundingRect.x, y: targetRect.y - this.containerBoundingRect.y, width: targetRect.width, height: targetRect.height };
510
- }
511
- getNormalizedOffsetInElement(event, element) {
512
- const normEvt = this.getNormalizedEventCoordinates(event);
513
- const normEl = this.getNormalizedElementCoordinates(element);
514
- return { x: normEvt.x - normEl.x, y: normEvt.y - normEl.y };
515
- }
516
- getElementAtPoint(point, ignoreElementCallback) {
517
- let backupPEventsMap = new Map();
518
- let currentElement = this.elementFromPoint(point.x, point.y);
519
- let lastElement = null;
520
- try {
521
- while (currentElement != null) {
522
- if (currentElement == lastElement) {
523
- currentElement = null;
524
- break;
525
- }
526
- lastElement = currentElement;
527
- if (currentElement == this._canvas) {
528
- break;
529
- }
530
- if (currentElement === this.overlayLayer) {
531
- currentElement = this.overlayLayer.elementFromPoint(point.x, point.y);
532
- break;
533
- }
534
- if (!ignoreElementCallback || !ignoreElementCallback(currentElement)) {
535
- break;
536
- }
537
- backupPEventsMap.set(currentElement, currentElement.style.pointerEvents);
538
- currentElement.style.pointerEvents = 'none';
539
- if (currentElement.shadowRoot) {
540
- for (let e of currentElement.shadowRoot.querySelectorAll('*')) {
541
- if (!backupPEventsMap.has(e)) {
542
- if (e.style)
543
- backupPEventsMap.set(e, e.style.pointerEvents);
544
- e.style.pointerEvents = 'none';
545
- }
546
- }
547
- }
548
- currentElement = this.elementFromPoint(point.x, point.y);
549
- }
550
- }
551
- finally {
552
- for (let e of backupPEventsMap.entries()) {
553
- e[0].style.pointerEvents = e[1];
554
- }
555
- }
556
- return currentElement;
557
- }
558
- _rect;
559
- _pointerEventHandler(event) {
560
- this._fillCalculationrects();
561
- /*let clickOnScrollbar = event.clientX - this.containerBoundingRect.x > this.containerBoundingRect.width || event.clientY - this.containerBoundingRect.y > this.containerBoundingRect.height
562
- if (clickOnScrollbar) https://kingsora.github.io/OverlayScrollbars/
563
- return;*/
564
- if (this._pointerextensions) {
565
- for (let pe of this._pointerextensions)
566
- pe.refresh(event);
567
- }
568
- if (event.composedPath().indexOf(this.eatEvents) >= 0)
569
- return;
570
- if (event.button == 2)
571
- return;
572
- let currentElement = this.serviceContainer.elementAtPointService.getElementAtPoint(this, { x: event.x, y: event.y });
573
- if (currentElement === this._outercanvas2 || currentElement === this.overlayLayer || !currentElement) {
574
- currentElement = this._canvas;
575
- } /* else {
576
- if (!DesignerCanvas.hasOrIsParent(currentElement, this._canvas))
577
- return;
578
- }*/
579
- //TODO: remove duplication when tool refactoring starts
580
- //this._fillCalculationrects();
581
- const currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, this.serviceContainer, this.instanceServiceContainer);
582
- if (this._lastHoverDesignItem != currentDesignItem) {
583
- if (this._lastHoverDesignItem)
584
- this.extensionManager.removeExtension(this._lastHoverDesignItem, ExtensionType.MouseOver);
585
- if (currentDesignItem && currentDesignItem != this.rootDesignItem && DomHelper.getHost(currentElement.parentNode) !== this.overlayLayer)
586
- this.extensionManager.applyExtension(currentDesignItem, ExtensionType.MouseOver);
587
- this._lastHoverDesignItem = currentDesignItem;
588
- }
589
- if (currentElement && DomHelper.getHost(currentElement.parentNode) === this.overlayLayer) {
590
- if (this.eatEvents)
591
- return;
592
- currentElement = this.instanceServiceContainer.selectionService.primarySelection?.element ?? this._canvas;
593
- }
594
- this._fillCalculationrects();
595
- let tool = this.serviceContainer.globalContext.tool ?? this.serviceContainer.designerTools.get(NamedTools.Pointer);
596
- this._canvas.style.cursor = tool.cursor;
597
- tool.pointerEventHandler(this, event, currentElement);
598
- }
599
- _fillCalculationrects() {
600
- this.containerBoundingRect = this._canvasContainer.getBoundingClientRect();
601
- this.outerRect = this._outercanvas2.getBoundingClientRect();
602
- }
603
- addOverlay(element, overlayLayer = OverlayLayer.Normal) {
604
- this.overlayLayer.addOverlay(element, overlayLayer);
605
- }
606
- removeOverlay(element) {
607
- this.overlayLayer.removeOverlay(element);
608
- }
609
- }
610
- customElements.define('node-projects-designer-canvas', DesignerCanvas);
124
+ </div>
125
+ </div>
126
+ </div>`;
127
+ extensionManager;
128
+ _pointerextensions;
129
+ _onDblClickBound;
130
+ constructor() {
131
+ super();
132
+ this._canvas = this._getDomElement('node-projects-designer-canvas-canvas');
133
+ this._canvasContainer = this._getDomElement('node-projects-designer-canvas-canvasContainer');
134
+ this._outercanvas2 = this._getDomElement('node-projects-designer-canvas-outercanvas2');
135
+ this.instanceServiceContainer = new InstanceServiceContainer(this);
136
+ this.instanceServiceContainer.register("undoService", new UndoService(this));
137
+ this.instanceServiceContainer.register("selectionService", new SelectionService);
138
+ this.extensionManager = new ExtensionManager(this);
139
+ this._onKeyDownBound = this.onKeyDown.bind(this);
140
+ this._onKeyUpBound = this.onKeyUp.bind(this);
141
+ this._onDblClickBound = this._onDblClick.bind(this);
142
+ this._onContextMenuBound = this._onContextMenu.bind(this);
143
+ this._pointerEventHandlerBound = this._pointerEventHandler.bind(this);
144
+ this._canvas.oncontextmenu = this._onContextMenuBound;
145
+ }
146
+ get designerWidth() {
147
+ return this._canvasContainer.style.width;
148
+ }
149
+ set designerWidth(value) {
150
+ this._canvasContainer.style.width = value;
151
+ this.zoomFactorChanged();
152
+ }
153
+ get designerHeight() {
154
+ return this._canvasContainer.style.height;
155
+ }
156
+ set designerHeight(value) {
157
+ this._canvasContainer.style.height = value;
158
+ this.zoomFactorChanged();
159
+ }
160
+ set additionalStyle(value) {
161
+ if (value) {
162
+ for (let r of value.rules) {
163
+ if (r instanceof CSSStyleRule) {
164
+ let parts = r.selectorText.split(',');
165
+ let t = '';
166
+ for (let p of parts) {
167
+ if (r.selectorText)
168
+ t += ',';
169
+ t += '#canvas ' + p;
170
+ }
171
+ r.selectorText = t;
172
+ }
173
+ }
174
+ this.shadowRoot.adoptedStyleSheets = [this.constructor.style, value];
175
+ }
176
+ else
177
+ this.shadowRoot.adoptedStyleSheets = [this.constructor.style];
178
+ }
179
+ /* --- start IUiCommandHandler --- */
180
+ async executeCommand(command) {
181
+ const modelCommandService = this.serviceContainer.modelCommandService;
182
+ if (modelCommandService) {
183
+ let handeled = await modelCommandService.executeCommand(this, command);
184
+ if (handeled != null)
185
+ return;
186
+ }
187
+ switch (command.type) {
188
+ case CommandType.screenshot:
189
+ {
190
+ if (!this.instanceServiceContainer.selectionService.primarySelection)
191
+ alert("you need to select an element!");
192
+ else {
193
+ if (!Screenshot.screenshotsEnabled) {
194
+ alert("you need to select current tab in next browser dialog, or screenshots will not work correctly");
195
+ }
196
+ const el = this.instanceServiceContainer.selectionService.primarySelection.element;
197
+ const sel = this.instanceServiceContainer.selectionService.selectedElements;
198
+ this.instanceServiceContainer.selectionService.setSelectedElements(null);
199
+ const screenshot = await Screenshot.takeScreenshot(el, el.clientWidth, el.clientHeight);
200
+ await exportData(dataURItoBlob(screenshot), "screenshot.png");
201
+ this.instanceServiceContainer.selectionService.setSelectedElements(sel);
202
+ }
203
+ }
204
+ break;
205
+ case CommandType.setTool:
206
+ {
207
+ this.serviceContainer.globalContext.tool = this.serviceContainer.designerTools.get(command.parameter);
208
+ }
209
+ break;
210
+ case CommandType.setStrokeColor:
211
+ {
212
+ this.serviceContainer.globalContext.strokeColor = command.parameter;
213
+ }
214
+ break;
215
+ case CommandType.setFillBrush:
216
+ {
217
+ this.serviceContainer.globalContext.fillBrush = command.parameter;
218
+ }
219
+ break;
220
+ case CommandType.setStrokeThickness:
221
+ {
222
+ this.serviceContainer.globalContext.strokeThickness = command.parameter;
223
+ }
224
+ break;
225
+ case CommandType.delete:
226
+ this.handleDeleteCommand();
227
+ break;
228
+ case CommandType.undo:
229
+ this.instanceServiceContainer.undoService.undo();
230
+ break;
231
+ case CommandType.redo:
232
+ this.instanceServiceContainer.undoService.redo();
233
+ break;
234
+ case CommandType.copy:
235
+ this.handleCopyCommand();
236
+ break;
237
+ case CommandType.cut:
238
+ this.handleCopyCommand();
239
+ this.handleDeleteCommand();
240
+ break;
241
+ case CommandType.paste:
242
+ this.handlePasteCommand();
243
+ break;
244
+ case CommandType.selectAll:
245
+ this.handleSelectAll();
246
+ break;
247
+ }
248
+ }
249
+ canExecuteCommand(command) {
250
+ const modelCommandService = this.serviceContainer.modelCommandService;
251
+ if (modelCommandService) {
252
+ let handeled = modelCommandService.canExecuteCommand(this, command);
253
+ if (handeled !== null)
254
+ return handeled;
255
+ }
256
+ if (command.type === CommandType.undo) {
257
+ return this.instanceServiceContainer.undoService.canUndo();
258
+ }
259
+ if (command.type === CommandType.redo) {
260
+ return this.instanceServiceContainer.undoService.canRedo();
261
+ }
262
+ if (command.type === CommandType.setTool) {
263
+ return this.serviceContainer.designerTools.has(command.parameter);
264
+ }
265
+ return true;
266
+ }
267
+ /* --- end IUiCommandHandler --- */
268
+ handleSelectAll() {
269
+ this.instanceServiceContainer.selectionService.setSelectedElements(Array.from(this.rootDesignItem.children()));
270
+ }
271
+ async handleCopyCommand() {
272
+ await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements);
273
+ }
274
+ async handlePasteCommand() {
275
+ const designItems = await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer, this.instanceServiceContainer);
276
+ let grp = this.rootDesignItem.openGroup("Insert");
277
+ if (designItems) {
278
+ for (let di of designItems) {
279
+ this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
280
+ }
281
+ const intializationService = this.serviceContainer.intializationService;
282
+ if (intializationService) {
283
+ for (let di of designItems)
284
+ intializationService.init(di);
285
+ }
286
+ this.instanceServiceContainer.selectionService.setSelectedElements(designItems);
287
+ }
288
+ grp.commit();
289
+ this.snapLines.clearSnaplines();
290
+ }
291
+ handleDeleteCommand() {
292
+ let items = this.instanceServiceContainer.selectionService.selectedElements;
293
+ this.instanceServiceContainer.undoService.execute(new DeleteAction(items, this.extensionManager));
294
+ this.instanceServiceContainer.selectionService.setSelectedElements(null);
295
+ }
296
+ initialize(serviceContainer) {
297
+ this.serviceContainer = serviceContainer;
298
+ this.rootDesignItem = DesignItem.GetOrCreateDesignItem(this._canvas, this.serviceContainer, this.instanceServiceContainer);
299
+ this.instanceServiceContainer.register("contentService", new ContentService(this.rootDesignItem));
300
+ this.overlayLayer = new OverlayLayerView(serviceContainer);
301
+ this.overlayLayer.style.pointerEvents = 'none';
302
+ this._canvasContainer.appendChild(this.overlayLayer);
303
+ this.snapLines = new Snaplines(this.overlayLayer);
304
+ this.snapLines.initialize(this.rootDesignItem);
305
+ if (this.serviceContainer.designerPointerExtensions)
306
+ for (let pe of this.serviceContainer.designerPointerExtensions) {
307
+ if (!this._pointerextensions)
308
+ this._pointerextensions = [];
309
+ this._pointerextensions.push(pe.getExtension(this));
310
+ }
311
+ if (this.children) {
312
+ let children = this.children;
313
+ if (this.children.length == 1 && this.children[0] instanceof HTMLSlotElement) {
314
+ children = this.children[0].assignedElements();
315
+ }
316
+ const parser = this.serviceContainer.getLastServiceWhere('htmlParserService', x => x.constructor == DefaultHtmlParserService);
317
+ this.addDesignItems(parser.createDesignItems(children, this.serviceContainer, this.instanceServiceContainer));
318
+ }
319
+ }
320
+ elementFromPoint(x, y) {
321
+ //@ts-ignore
322
+ return this.shadowRoot.elementFromPoint(x, y);
323
+ }
324
+ connectedCallback() {
325
+ if (!this._firstConnect) {
326
+ this._firstConnect = true;
327
+ this._outercanvas2.addEventListener(EventNames.PointerDown, this._pointerEventHandlerBound);
328
+ this._outercanvas2.addEventListener(EventNames.PointerMove, this._pointerEventHandlerBound);
329
+ this._outercanvas2.addEventListener(EventNames.PointerUp, this._pointerEventHandlerBound);
330
+ this._outercanvas2.addEventListener(EventNames.DragEnter, event => this._onDragEnter(event));
331
+ this._outercanvas2.addEventListener(EventNames.DragLeave, event => this._onDragLeave(event));
332
+ this._outercanvas2.addEventListener(EventNames.DragOver, event => this._onDragOver(event));
333
+ this._outercanvas2.addEventListener(EventNames.Drop, event => this._onDrop(event));
334
+ this._canvas.addEventListener(EventNames.KeyDown, this._onKeyDownBound, true);
335
+ this._canvas.addEventListener(EventNames.KeyUp, this._onKeyUpBound, true);
336
+ this._canvas.addEventListener(EventNames.DblClick, this._onDblClickBound, true);
337
+ }
338
+ }
339
+ zoomFactorChanged() {
340
+ //a@ts-ignore
341
+ //this._canvasContainer.style.zoom = <any>this._zoomFactor;
342
+ //this._canvasContainer.style.transform = 'scale(' + this._zoomFactor+') translate(' + this._translate.x + ', '+this._translate.y+')';
343
+ //this._canvasContainer.style.transformOrigin = '0 0';
344
+ this._canvasContainer.style.bottom = this._outercanvas2.offsetHeight >= this._canvasContainer.offsetHeight ? '0' : '';
345
+ this._canvasContainer.style.right = this._outercanvas2.offsetWidth >= this._canvasContainer.offsetWidth ? '0' : '';
346
+ this._updateTransform();
347
+ }
348
+ _updateTransform() {
349
+ this._scaleFactor = this._zoomFactor;
350
+ this._canvasContainer.style.transform = 'scale(' + this._zoomFactor + ') translate(' + this._canvasOffset.x + 'px, ' + this._canvasOffset.y + 'px)';
351
+ this._canvasContainer.style.transformOrigin = '0 0';
352
+ this.snapLines.clearSnaplines();
353
+ }
354
+ setDesignItems(designItems) {
355
+ this.instanceServiceContainer.undoService.clear();
356
+ this.overlayLayer.removeAllOverlays();
357
+ DomHelper.removeAllChildnodes(this.overlayLayer);
358
+ this.rootDesignItem.clearChildren();
359
+ this.addDesignItems(designItems);
360
+ this.instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'parsed' });
361
+ }
362
+ addDesignItems(designItems) {
363
+ if (designItems) {
364
+ for (let di of designItems) {
365
+ this.rootDesignItem.insertChild(di);
366
+ }
367
+ }
368
+ const intializationService = this.serviceContainer.intializationService;
369
+ if (intializationService) {
370
+ for (let di of designItems)
371
+ intializationService.init(di);
372
+ }
373
+ this.snapLines.clearSnaplines();
374
+ const prepService = this.serviceContainer.prepareElementsForDesignerService;
375
+ if (prepService)
376
+ requestAnimationFrame(() => prepService.prepareElementsForDesigner(this.rootDesignItem));
377
+ }
378
+ _onDragEnter(event) {
379
+ this._fillCalculationrects();
380
+ event.preventDefault();
381
+ const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
382
+ if (hasTransferDataBindingObject) {
383
+ const ddService = this.serviceContainer.bindableObjectDragDropService;
384
+ if (ddService) {
385
+ const effect = ddService.dragEnter(this, event);
386
+ event.dataTransfer.dropEffect = effect;
387
+ }
388
+ }
389
+ }
390
+ _onDragLeave(event) {
391
+ this._fillCalculationrects();
392
+ event.preventDefault();
393
+ this._canvas.classList.remove('dragFileActive');
394
+ const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
395
+ if (hasTransferDataBindingObject) {
396
+ const ddService = this.serviceContainer.bindableObjectDragDropService;
397
+ if (ddService) {
398
+ const effect = ddService.dragLeave(this, event);
399
+ event.dataTransfer.dropEffect = effect;
400
+ }
401
+ }
402
+ }
403
+ _onDragOver(event) {
404
+ event.preventDefault();
405
+ /*if (this.alignOnSnap) {
406
+ this.snapLines.calculateSnaplines(this.instanceServiceContainer.selectionService.selectedElements);
407
+ //TODO: fix this following code...
408
+ const currentPoint = this.getDesignerMousepoint(event);
409
+ let containerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this.rootDesignItem))
410
+ containerService.finishPlace(this, this.rootDesignItem, this._initialPoint, currentPoint, this.instanceServiceContainer.selectionService.selectedElements);
411
+ }*/
412
+ this._fillCalculationrects();
413
+ if (event.dataTransfer.types.length > 0 && event.dataTransfer.types[0] == 'Files') {
414
+ const ddService = this.serviceContainer.dragDropService;
415
+ if (ddService) {
416
+ const effect = ddService.dragOver(event);
417
+ event.dataTransfer.dropEffect = effect;
418
+ if (effect !== 'none')
419
+ this._canvas.classList.add('dragFileActive');
420
+ }
421
+ }
422
+ const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
423
+ if (hasTransferDataBindingObject) {
424
+ const ddService = this.serviceContainer.bindableObjectDragDropService;
425
+ if (ddService) {
426
+ const effect = ddService.dragOver(this, event);
427
+ event.dataTransfer.dropEffect = effect;
428
+ }
429
+ }
430
+ }
431
+ async _onDrop(event) {
432
+ event.preventDefault();
433
+ this._canvas.classList.remove('dragFileActive');
434
+ this._fillCalculationrects();
435
+ if (event.dataTransfer.files.length > 0) {
436
+ const ddService = this.serviceContainer.dragDropService;
437
+ if (ddService) {
438
+ ddService.drop(this, event);
439
+ }
440
+ }
441
+ else {
442
+ const transferDataBindingObject = event.dataTransfer.getData(dragDropFormatNameBindingObject);
443
+ if (transferDataBindingObject) {
444
+ const bo = JSON.parse(transferDataBindingObject);
445
+ const ddService = this.serviceContainer.bindableObjectDragDropService;
446
+ if (ddService) {
447
+ const effect = ddService.drop(this, event, bo);
448
+ event.dataTransfer.dropEffect = effect;
449
+ }
450
+ }
451
+ else {
452
+ this._fillCalculationrects();
453
+ const position = this.getNormalizedEventCoordinates(event);
454
+ const transferData = event.dataTransfer.getData(dragDropFormatNameElementDefinition);
455
+ const elementDefinition = JSON.parse(transferData);
456
+ const di = await this.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(elementDefinition, this.serviceContainer, this.instanceServiceContainer));
457
+ const grp = di.openGroup("Insert");
458
+ di.setStyle('position', 'absolute');
459
+ di.setStyle('left', position.x + 'px');
460
+ di.setStyle('top', position.y + 'px');
461
+ this.instanceServiceContainer.undoService.execute(new InsertAction(this.rootDesignItem, this.rootDesignItem.childCount, di));
462
+ grp.commit();
463
+ requestAnimationFrame(() => this.instanceServiceContainer.selectionService.setSelectedElements([di]));
464
+ }
465
+ }
466
+ }
467
+ _onContextMenu(event) {
468
+ event.preventDefault();
469
+ if (!event.shiftKey) {
470
+ const designItem = DesignItem.GetOrCreateDesignItem(event.target, this.serviceContainer, this.instanceServiceContainer);
471
+ if (!this.instanceServiceContainer.selectionService.isSelected(designItem)) {
472
+ this.instanceServiceContainer.selectionService.setSelectedElements([designItem]);
473
+ }
474
+ this.showDesignItemContextMenu(designItem, event);
475
+ }
476
+ }
477
+ showDesignItemContextMenu(designItem, event) {
478
+ const mnuItems = [];
479
+ for (let cme of this.serviceContainer.designerContextMenuExtensions) {
480
+ if (cme.shouldProvideContextmenu(event, this, designItem, 'designer')) {
481
+ mnuItems.push(...cme.provideContextMenuItems(event, this, designItem));
482
+ }
483
+ }
484
+ let ctxMnu = ContextMenuHelper.showContextMenu(null, event, null, mnuItems);
485
+ return ctxMnu;
486
+ }
487
+ _onDblClick(event) {
488
+ event.preventDefault();
489
+ this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection, ExtensionType.Doubleclick);
490
+ }
491
+ onKeyUp(event) {
492
+ if (event.composedPath().indexOf(this.eatEvents) >= 0)
493
+ return;
494
+ switch (event.key) {
495
+ case 'ArrowUp':
496
+ //this._resetPointerEventsForClickThrough();
497
+ break;
498
+ }
499
+ event.preventDefault();
500
+ }
501
+ onKeyDown(event) {
502
+ if (event.composedPath().indexOf(this.eatEvents) >= 0)
503
+ return;
504
+ //TODO: keyboard events maybe should also be handeled by tools
505
+ if ((event.ctrlKey || event.metaKey) && event.key === 'z' && !event.shiftKey)
506
+ this.executeCommand({ type: CommandType.undo });
507
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'z' && event.shiftKey)
508
+ this.executeCommand({ type: CommandType.redo });
509
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'y')
510
+ this.executeCommand({ type: CommandType.redo });
511
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'a')
512
+ this.executeCommand({ type: CommandType.selectAll });
513
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'c')
514
+ this.executeCommand({ type: CommandType.copy });
515
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'v')
516
+ this.executeCommand({ type: CommandType.paste });
517
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'x')
518
+ this.executeCommand({ type: CommandType.cut });
519
+ else {
520
+ let primarySelection = this.instanceServiceContainer.selectionService.primarySelection;
521
+ if (!primarySelection) {
522
+ return;
523
+ }
524
+ let moveOffset = 1;
525
+ if (event.shiftKey)
526
+ moveOffset = 10;
527
+ switch (event.key) {
528
+ case 'Delete':
529
+ case 'Backspace':
530
+ this.executeCommand({ type: CommandType.delete });
531
+ break;
532
+ case 'ArrowUp':
533
+ {
534
+ this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('top', parseInt(x.element.style.top) - moveOffset + 'px'));
535
+ this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
536
+ }
537
+ break;
538
+ case 'ArrowDown':
539
+ {
540
+ this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('top', parseInt(x.element.style.top) + moveOffset + 'px'));
541
+ this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
542
+ }
543
+ break;
544
+ case 'ArrowLeft':
545
+ {
546
+ this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('left', parseInt(x.element.style.left) - moveOffset + 'px'));
547
+ this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
548
+ }
549
+ break;
550
+ case 'ArrowRight':
551
+ {
552
+ this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('left', parseInt(x.element.style.left) + moveOffset + 'px'));
553
+ this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
554
+ }
555
+ break;
556
+ }
557
+ }
558
+ event.preventDefault();
559
+ }
560
+ getNormalizedEventCoordinates(event) {
561
+ const offsetOfOuterX = (event.clientX - this.outerRect.x) / this.zoomFactor;
562
+ const offsetOfCanvasX = this.containerBoundingRect.x - this.outerRect.x / this.zoomFactor * this._scaleFactor;
563
+ const offsetOfOuterY = (event.clientY - this.outerRect.y) / this.zoomFactor;
564
+ const offsetOfCanvasY = this.containerBoundingRect.y - this.outerRect.y / this.zoomFactor * this._scaleFactor;
565
+ return {
566
+ x: offsetOfOuterX - offsetOfCanvasX + offsetOfCanvasX - offsetOfCanvasX / this.zoomFactor,
567
+ y: offsetOfOuterY - offsetOfCanvasY + offsetOfCanvasY - offsetOfCanvasY / this.zoomFactor
568
+ };
569
+ }
570
+ getNormalizedElementCoordinates(element) {
571
+ const targetRect = element.getBoundingClientRect();
572
+ 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 };
573
+ }
574
+ getNormalizedOffsetInElement(event, element) {
575
+ const normEvt = this.getNormalizedEventCoordinates(event);
576
+ const normEl = this.getNormalizedElementCoordinates(element);
577
+ return { x: normEvt.x - normEl.x, y: normEvt.y - normEl.y };
578
+ }
579
+ getElementAtPoint(point, ignoreElementCallback) {
580
+ let backupPEventsMap = new Map();
581
+ let currentElement = this.elementFromPoint(point.x, point.y);
582
+ let lastElement = null;
583
+ try {
584
+ while (currentElement != null) {
585
+ if (currentElement == lastElement) {
586
+ currentElement = null;
587
+ break;
588
+ }
589
+ lastElement = currentElement;
590
+ if (currentElement == this._canvas) {
591
+ break;
592
+ }
593
+ if (currentElement === this.overlayLayer) {
594
+ currentElement = this.overlayLayer.elementFromPoint(point.x, point.y);
595
+ break;
596
+ }
597
+ if (!ignoreElementCallback || !ignoreElementCallback(currentElement)) {
598
+ break;
599
+ }
600
+ backupPEventsMap.set(currentElement, currentElement.style.pointerEvents);
601
+ currentElement.style.pointerEvents = 'none';
602
+ if (currentElement.shadowRoot) {
603
+ for (let e of currentElement.shadowRoot.querySelectorAll('*')) {
604
+ if (!backupPEventsMap.has(e)) {
605
+ if (e.style)
606
+ backupPEventsMap.set(e, e.style.pointerEvents);
607
+ e.style.pointerEvents = 'none';
608
+ }
609
+ }
610
+ }
611
+ currentElement = this.elementFromPoint(point.x, point.y);
612
+ }
613
+ }
614
+ finally {
615
+ for (let e of backupPEventsMap.entries()) {
616
+ e[0].style.pointerEvents = e[1];
617
+ }
618
+ }
619
+ return currentElement;
620
+ }
621
+ _rect;
622
+ _pointerEventHandler(event) {
623
+ this._fillCalculationrects();
624
+ if (this._pointerextensions) {
625
+ for (let pe of this._pointerextensions)
626
+ pe.refresh(event);
627
+ }
628
+ if (event.composedPath().indexOf(this.eatEvents) >= 0)
629
+ return;
630
+ if (event.buttons == 2)
631
+ return;
632
+ let currentElement = this.serviceContainer.elementAtPointService.getElementAtPoint(this, { x: event.x, y: event.y });
633
+ if (currentElement === this._outercanvas2 || currentElement === this.overlayLayer || !currentElement) {
634
+ currentElement = this._canvas;
635
+ } /* else {
636
+ if (!DesignerCanvas.hasOrIsParent(currentElement, this._canvas))
637
+ return;
638
+ }*/
639
+ //TODO: remove duplication when tool refactoring starts
640
+ //this._fillCalculationrects();
641
+ const currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, this.serviceContainer, this.instanceServiceContainer);
642
+ if (this._lastHoverDesignItem != currentDesignItem) {
643
+ if (this._lastHoverDesignItem)
644
+ this.extensionManager.removeExtension(this._lastHoverDesignItem, ExtensionType.MouseOver);
645
+ if (currentDesignItem && currentDesignItem != this.rootDesignItem && DomHelper.getHost(currentElement.parentNode) !== this.overlayLayer)
646
+ this.extensionManager.applyExtension(currentDesignItem, ExtensionType.MouseOver);
647
+ this._lastHoverDesignItem = currentDesignItem;
648
+ }
649
+ if (currentElement && DomHelper.getHost(currentElement.parentNode) === this.overlayLayer) {
650
+ if (this.eatEvents)
651
+ return;
652
+ currentElement = this.instanceServiceContainer.selectionService.primarySelection?.element ?? this._canvas;
653
+ }
654
+ this._fillCalculationrects();
655
+ let tool = this.serviceContainer.globalContext.tool ?? this.serviceContainer.designerTools.get(NamedTools.Pointer);
656
+ this._canvas.style.cursor = tool.cursor;
657
+ tool.pointerEventHandler(this, event, currentElement);
658
+ }
659
+ _fillCalculationrects() {
660
+ this.containerBoundingRect = this._canvasContainer.getBoundingClientRect();
661
+ this.outerRect = this._outercanvas2.getBoundingClientRect();
662
+ }
663
+ addOverlay(element, overlayLayer = OverlayLayer.Normal) {
664
+ this.overlayLayer.addOverlay(element, overlayLayer);
665
+ }
666
+ removeOverlay(element) {
667
+ this.overlayLayer.removeOverlay(element);
668
+ }
669
+ }
670
+ customElements.define('node-projects-designer-canvas', DesignerCanvas);