@node-projects/web-component-designer 0.0.83 → 0.0.87

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