@node-projects/web-component-designer 0.0.216 → 0.0.217

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 (633) hide show
  1. package/dist/Constants.d.ts +3 -3
  2. package/dist/Constants.js +5 -5
  3. package/dist/commandHandling/CommandType.d.ts +32 -32
  4. package/dist/commandHandling/CommandType.js +33 -33
  5. package/dist/commandHandling/IUiCommand.d.ts +10 -10
  6. package/dist/commandHandling/IUiCommand.js +1 -1
  7. package/dist/commandHandling/IUiCommandHandler.d.ts +5 -5
  8. package/dist/commandHandling/IUiCommandHandler.js +1 -1
  9. package/dist/elements/controls/DesignerTabControl.d.ts +24 -24
  10. package/dist/elements/controls/DesignerTabControl.js +152 -151
  11. package/dist/elements/controls/ImageButtonListSelector.d.ts +17 -17
  12. package/dist/elements/controls/ImageButtonListSelector.js +51 -50
  13. package/dist/elements/controls/MetricsEditor.d.ts +14 -14
  14. package/dist/elements/controls/MetricsEditor.js +37 -36
  15. package/dist/elements/controls/NumericPopup.d.ts +6 -6
  16. package/dist/elements/controls/NumericPopup.js +9 -8
  17. package/dist/elements/controls/NumericStyleInput.d.ts +16 -16
  18. package/dist/elements/controls/NumericStyleInput.js +43 -42
  19. package/dist/elements/controls/PlainScrollbar.d.ts +15 -15
  20. package/dist/elements/controls/PlainScrollbar.js +374 -374
  21. package/dist/elements/controls/SimpleSplitView.d.ts +11 -11
  22. package/dist/elements/controls/SimpleSplitView.js +40 -39
  23. package/dist/elements/controls/ThicknessEditor.d.ts +33 -33
  24. package/dist/elements/controls/ThicknessEditor.js +91 -90
  25. package/dist/elements/documentContainer.d.ts +54 -54
  26. package/dist/elements/documentContainer.js +227 -227
  27. package/dist/elements/helper/ArrangeHelper.d.ts +8 -8
  28. package/dist/elements/helper/ArrangeHelper.js +105 -105
  29. package/dist/elements/helper/ClipboardHelper.d.ts +4 -4
  30. package/dist/elements/helper/ClipboardHelper.js +90 -90
  31. package/dist/elements/helper/CssAttributeParser.d.ts +9 -9
  32. package/dist/elements/helper/CssAttributeParser.js +67 -67
  33. package/dist/elements/helper/CssCombiner.d.ts +11 -11
  34. package/dist/elements/helper/CssCombiner.js +298 -297
  35. package/dist/elements/helper/CssUnitConverter.d.ts +3 -3
  36. package/dist/elements/helper/CssUnitConverter.js +101 -101
  37. package/dist/elements/helper/ElementHelper.d.ts +19 -18
  38. package/dist/elements/helper/ElementHelper.js +107 -101
  39. package/dist/elements/helper/GridHelper.d.ts +19 -19
  40. package/dist/elements/helper/GridHelper.js +112 -112
  41. package/dist/elements/helper/Helper.d.ts +8 -8
  42. package/dist/elements/helper/Helper.js +36 -36
  43. package/dist/elements/helper/ITextWriter.d.ts +11 -11
  44. package/dist/elements/helper/ITextWriter.js +1 -1
  45. package/dist/elements/helper/IndentedTextWriter.d.ts +15 -15
  46. package/dist/elements/helper/IndentedTextWriter.js +34 -34
  47. package/dist/elements/helper/LayoutHelper.d.ts +4 -4
  48. package/dist/elements/helper/LayoutHelper.js +73 -73
  49. package/dist/elements/helper/NpmPackageLoader.d.ts +17 -17
  50. package/dist/elements/helper/NpmPackageLoader.js +207 -207
  51. package/dist/elements/helper/PathDataPolyfill.d.ts +101 -101
  52. package/dist/elements/helper/PathDataPolyfill.js +955 -955
  53. package/dist/elements/helper/Screenshot.d.ts +11 -11
  54. package/dist/elements/helper/Screenshot.js +60 -60
  55. package/dist/elements/helper/SimpleTextWriter.d.ts +13 -13
  56. package/dist/elements/helper/SimpleTextWriter.js +26 -26
  57. package/dist/elements/helper/SvgHelper.d.ts +1 -1
  58. package/dist/elements/helper/SvgHelper.js +13 -13
  59. package/dist/elements/helper/SwitchContainerHelper.d.ts +2 -2
  60. package/dist/elements/helper/SwitchContainerHelper.js +45 -45
  61. package/dist/elements/helper/TextHelper.d.ts +10 -10
  62. package/dist/elements/helper/TextHelper.js +23 -23
  63. package/dist/elements/helper/TransformHelper.d.ts +23 -23
  64. package/dist/elements/helper/TransformHelper.js +224 -224
  65. package/dist/elements/helper/XmlHelper.d.ts +2 -2
  66. package/dist/elements/helper/XmlHelper.js +16 -16
  67. package/dist/elements/helper/contextMenu/ContextMenu.d.ts +25 -25
  68. package/dist/elements/helper/contextMenu/ContextMenu.js +232 -231
  69. package/dist/elements/helper/contextMenu/IContextMenuItem.d.ts +9 -9
  70. package/dist/elements/helper/contextMenu/IContextMenuItem.js +2 -2
  71. package/dist/elements/helper/w3color.d.ts +120 -120
  72. package/dist/elements/helper/w3color.js +801 -801
  73. package/dist/elements/item/BindingMode.d.ts +4 -4
  74. package/dist/elements/item/BindingMode.js +5 -5
  75. package/dist/elements/item/BindingTarget.d.ts +8 -8
  76. package/dist/elements/item/BindingTarget.js +9 -9
  77. package/dist/elements/item/DesignItem.d.ts +88 -88
  78. package/dist/elements/item/DesignItem.js +465 -464
  79. package/dist/elements/item/IBinding.d.ts +15 -15
  80. package/dist/elements/item/IBinding.js +1 -1
  81. package/dist/elements/item/IDesignItem.d.ts +70 -70
  82. package/dist/elements/item/IDesignItem.js +1 -1
  83. package/dist/elements/item/NodeType.d.ts +8 -8
  84. package/dist/elements/item/NodeType.js +9 -9
  85. package/dist/elements/loader/IOldCustomElementsManifest.d.ts +24 -24
  86. package/dist/elements/loader/IOldCustomElementsManifest.js +1 -1
  87. package/dist/elements/loader/OldCustomElementsManifestLoader.d.ts +8 -8
  88. package/dist/elements/loader/OldCustomElementsManifestLoader.js +45 -45
  89. package/dist/elements/services/BaseServiceContainer.d.ts +14 -14
  90. package/dist/elements/services/BaseServiceContainer.js +54 -54
  91. package/dist/elements/services/DefaultServiceBootstrap.d.ts +3 -3
  92. package/dist/elements/services/DefaultServiceBootstrap.js +193 -193
  93. package/dist/elements/services/GlobalContext.d.ts +27 -27
  94. package/dist/elements/services/GlobalContext.js +68 -68
  95. package/dist/elements/services/IService.d.ts +2 -2
  96. package/dist/elements/services/IService.js +1 -1
  97. package/dist/elements/services/IServiceContainer.d.ts +5 -5
  98. package/dist/elements/services/IServiceContainer.js +1 -1
  99. package/dist/elements/services/InstanceServiceContainer.d.ts +27 -27
  100. package/dist/elements/services/InstanceServiceContainer.js +26 -26
  101. package/dist/elements/services/ServiceContainer.d.ts +105 -105
  102. package/dist/elements/services/ServiceContainer.js +85 -85
  103. package/dist/elements/services/bindableObjectsService/BindableObjectType.d.ts +9 -9
  104. package/dist/elements/services/bindableObjectsService/BindableObjectType.js +10 -10
  105. package/dist/elements/services/bindableObjectsService/IBindableObject.d.ts +8 -8
  106. package/dist/elements/services/bindableObjectsService/IBindableObject.js +1 -1
  107. package/dist/elements/services/bindableObjectsService/IBindableObjectDragDropService.d.ts +8 -8
  108. package/dist/elements/services/bindableObjectsService/IBindableObjectDragDropService.js +1 -1
  109. package/dist/elements/services/bindableObjectsService/IBindableObjectsService.d.ts +6 -6
  110. package/dist/elements/services/bindableObjectsService/IBindableObjectsService.js +1 -1
  111. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.d.ts +10 -10
  112. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js +74 -73
  113. package/dist/elements/services/bindingsService/IBindingService.d.ts +13 -13
  114. package/dist/elements/services/bindingsService/IBindingService.js +1 -1
  115. package/dist/elements/services/bindingsService/SpecialTagsBindingService.d.ts +16 -16
  116. package/dist/elements/services/bindingsService/SpecialTagsBindingService.js +45 -44
  117. package/dist/elements/services/bindingsService/VueBindingsService.js +7 -7
  118. package/dist/elements/services/contentService/ContentService.d.ts +9 -9
  119. package/dist/elements/services/contentService/ContentService.js +8 -8
  120. package/dist/elements/services/contentService/IContentChanged.d.ts +10 -10
  121. package/dist/elements/services/contentService/IContentChanged.js +1 -1
  122. package/dist/elements/services/contentService/IContentService.d.ts +7 -7
  123. package/dist/elements/services/contentService/IContentService.js +1 -1
  124. package/dist/elements/services/copyPasteService/CopyPasteService.d.ts +10 -10
  125. package/dist/elements/services/copyPasteService/CopyPasteService.js +33 -33
  126. package/dist/elements/services/copyPasteService/ICopyPasteService.d.ts +8 -8
  127. package/dist/elements/services/copyPasteService/ICopyPasteService.js +1 -1
  128. package/dist/elements/services/demoProviderService/DemoProviderService.d.ts +6 -6
  129. package/dist/elements/services/demoProviderService/DemoProviderService.js +29 -29
  130. package/dist/elements/services/demoProviderService/IDemoProviderService.d.ts +5 -5
  131. package/dist/elements/services/demoProviderService/IDemoProviderService.js +1 -1
  132. package/dist/elements/services/designItemDocumentPositionService/DesignItemDocumentPositionService.d.ts +10 -11
  133. package/dist/elements/services/designItemDocumentPositionService/DesignItemDocumentPositionService.js +10 -13
  134. package/dist/elements/services/designItemDocumentPositionService/IDesignItemDocumentPositionService.d.ts +6 -7
  135. package/dist/elements/services/designItemDocumentPositionService/IDesignItemDocumentPositionService.js +1 -1
  136. package/dist/elements/services/designerAddons/IDesignerAddonJson.d.ts +6 -6
  137. package/dist/elements/services/designerAddons/IDesignerAddonJson.js +1 -1
  138. package/dist/elements/services/dragDropService/DragDropService.d.ts +6 -6
  139. package/dist/elements/services/dragDropService/DragDropService.js +28 -28
  140. package/dist/elements/services/dragDropService/IDragDropService.d.ts +5 -5
  141. package/dist/elements/services/dragDropService/IDragDropService.js +1 -1
  142. package/dist/elements/services/elementAtPointService/ElementAtPointService.d.ts +6 -6
  143. package/dist/elements/services/elementAtPointService/ElementAtPointService.js +5 -5
  144. package/dist/elements/services/elementAtPointService/IElementAtPointService.d.ts +6 -6
  145. package/dist/elements/services/elementAtPointService/IElementAtPointService.js +1 -1
  146. package/dist/elements/services/elementInteractionService/IElementInteractionService.d.ts +5 -5
  147. package/dist/elements/services/elementInteractionService/IElementInteractionService.js +1 -1
  148. package/dist/elements/services/elementsService/IElementDefinition.d.ts +31 -31
  149. package/dist/elements/services/elementsService/IElementDefinition.js +1 -1
  150. package/dist/elements/services/elementsService/IElementsJson.d.ts +5 -5
  151. package/dist/elements/services/elementsService/IElementsJson.js +1 -1
  152. package/dist/elements/services/elementsService/IElementsService.d.ts +6 -6
  153. package/dist/elements/services/elementsService/IElementsService.js +1 -1
  154. package/dist/elements/services/elementsService/JsonFileElementsService.d.ts +12 -12
  155. package/dist/elements/services/elementsService/JsonFileElementsService.js +45 -45
  156. package/dist/elements/services/elementsService/PreDefinedElementsService.d.ts +11 -11
  157. package/dist/elements/services/elementsService/PreDefinedElementsService.js +21 -21
  158. package/dist/elements/services/elementsService/WebcomponentManifestElementsService.d.ts +13 -13
  159. package/dist/elements/services/elementsService/WebcomponentManifestElementsService.js +39 -39
  160. package/dist/elements/services/htmlParserService/AbstractClassElementParserService.d.ts +12 -12
  161. package/dist/elements/services/htmlParserService/AbstractClassElementParserService.js +106 -106
  162. package/dist/elements/services/htmlParserService/DefaultHtmlParserService.d.ts +9 -9
  163. package/dist/elements/services/htmlParserService/DefaultHtmlParserService.js +18 -18
  164. package/dist/elements/services/htmlParserService/IHtmlParserService.d.ts +7 -7
  165. package/dist/elements/services/htmlParserService/IHtmlParserService.js +1 -1
  166. package/dist/elements/services/htmlParserService/LitElementParserService.d.ts +12 -12
  167. package/dist/elements/services/htmlParserService/LitElementParserService.js +91 -91
  168. package/dist/elements/services/htmlParserService/NodeHtmlParserService.d.ts +11 -11
  169. package/dist/elements/services/htmlParserService/NodeHtmlParserService.js +87 -87
  170. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.d.ts +9 -10
  171. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.js +62 -62
  172. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.d.ts +21 -22
  173. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +133 -133
  174. package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +12 -12
  175. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +109 -109
  176. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.d.ts +7 -7
  177. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.js +7 -7
  178. package/dist/elements/services/htmlWriterService/IHtmlWriterService.d.ts +6 -6
  179. package/dist/elements/services/htmlWriterService/IHtmlWriterService.js +1 -1
  180. package/dist/elements/services/htmlWriterService/IStringPosition.d.ts +4 -4
  181. package/dist/elements/services/htmlWriterService/IStringPosition.js +1 -1
  182. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.d.ts +8 -9
  183. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.js +8 -7
  184. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.d.ts +25 -27
  185. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.js +89 -93
  186. package/dist/elements/services/initializationService/IIntializationService.d.ts +4 -4
  187. package/dist/elements/services/initializationService/IIntializationService.js +1 -1
  188. package/dist/elements/services/instanceService/DefaultInstanceService.d.ts +8 -8
  189. package/dist/elements/services/instanceService/DefaultInstanceService.js +71 -71
  190. package/dist/elements/services/instanceService/IDesignerInstance.d.ts +3 -3
  191. package/dist/elements/services/instanceService/IDesignerInstance.js +1 -1
  192. package/dist/elements/services/instanceService/IInstanceService.d.ts +8 -8
  193. package/dist/elements/services/instanceService/IInstanceService.js +1 -1
  194. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.d.ts +26 -26
  195. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +114 -114
  196. package/dist/elements/services/modelCommandService/DefaultModelCommandService.d.ts +7 -7
  197. package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +128 -128
  198. package/dist/elements/services/modelCommandService/IModelCommandService.d.ts +7 -7
  199. package/dist/elements/services/modelCommandService/IModelCommandService.js +1 -1
  200. package/dist/elements/services/placementService/DefaultPlacementService.d.ts +18 -18
  201. package/dist/elements/services/placementService/DefaultPlacementService.js +134 -134
  202. package/dist/elements/services/placementService/FlexBoxPlacementService.d.ts +17 -17
  203. package/dist/elements/services/placementService/FlexBoxPlacementService.js +113 -113
  204. package/dist/elements/services/placementService/GridPlacementService.d.ts +17 -17
  205. package/dist/elements/services/placementService/GridPlacementService.js +108 -108
  206. package/dist/elements/services/placementService/IPlacementService.d.ts +17 -17
  207. package/dist/elements/services/placementService/IPlacementService.js +1 -1
  208. package/dist/elements/services/placementService/ISnaplinesProviderService.d.ts +12 -12
  209. package/dist/elements/services/placementService/ISnaplinesProviderService.js +1 -1
  210. package/dist/elements/services/placementService/SnaplinesProviderService.d.ts +14 -14
  211. package/dist/elements/services/placementService/SnaplinesProviderService.js +48 -48
  212. package/dist/elements/services/popupService/IPopupService.d.ts +16 -16
  213. package/dist/elements/services/popupService/IPopupService.js +1 -1
  214. package/dist/elements/services/popupService/PopupService.d.ts +9 -9
  215. package/dist/elements/services/popupService/PopupService.js +20 -20
  216. package/dist/elements/services/propertiesService/DefaultEditorTypesService.d.ts +6 -6
  217. package/dist/elements/services/propertiesService/DefaultEditorTypesService.js +64 -64
  218. package/dist/elements/services/propertiesService/IEditorTypesService.d.ts +5 -5
  219. package/dist/elements/services/propertiesService/IEditorTypesService.js +1 -1
  220. package/dist/elements/services/propertiesService/IPropertiesService.d.ts +25 -25
  221. package/dist/elements/services/propertiesService/IPropertiesService.js +6 -6
  222. package/dist/elements/services/propertiesService/IProperty.d.ts +22 -22
  223. package/dist/elements/services/propertiesService/IProperty.js +1 -1
  224. package/dist/elements/services/propertiesService/IPropertyEditor.d.ts +19 -19
  225. package/dist/elements/services/propertiesService/IPropertyEditor.js +1 -1
  226. package/dist/elements/services/propertiesService/IPropertyGroup.d.ts +6 -6
  227. package/dist/elements/services/propertiesService/IPropertyGroup.js +1 -1
  228. package/dist/elements/services/propertiesService/IPropertyTabsService.d.ts +8 -8
  229. package/dist/elements/services/propertiesService/IPropertyTabsService.js +1 -1
  230. package/dist/elements/services/propertiesService/PropertyTabsService.d.ts +17 -17
  231. package/dist/elements/services/propertiesService/PropertyTabsService.js +30 -30
  232. package/dist/elements/services/propertiesService/PropertyType.d.ts +8 -8
  233. package/dist/elements/services/propertiesService/PropertyType.js +9 -9
  234. package/dist/elements/services/propertiesService/ValueType.d.ts +6 -6
  235. package/dist/elements/services/propertiesService/ValueType.js +7 -7
  236. package/dist/elements/services/propertiesService/app.d.ts +2 -2
  237. package/dist/elements/services/propertiesService/app.js +71 -71
  238. package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.d.ts +15 -15
  239. package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.js +41 -41
  240. package/dist/elements/services/propertiesService/propertyEditors/BooleanPropertyEditor.d.ts +7 -7
  241. package/dist/elements/services/propertiesService/propertyEditors/BooleanPropertyEditor.js +13 -13
  242. package/dist/elements/services/propertiesService/propertyEditors/ColorPropertyEditor.d.ts +7 -7
  243. package/dist/elements/services/propertiesService/propertyEditors/ColorPropertyEditor.js +22 -22
  244. package/dist/elements/services/propertiesService/propertyEditors/DatePropertyEditor.d.ts +7 -7
  245. package/dist/elements/services/propertiesService/propertyEditors/DatePropertyEditor.js +16 -16
  246. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.d.ts +8 -8
  247. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.js +40 -40
  248. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyEditor.d.ts +9 -9
  249. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyEditor.js +17 -16
  250. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyPopupEditor.d.ts +5 -5
  251. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyPopupEditor.js +9 -8
  252. package/dist/elements/services/propertiesService/propertyEditors/MetricsPropertyEditor.d.ts +8 -8
  253. package/dist/elements/services/propertiesService/propertyEditors/MetricsPropertyEditor.js +14 -14
  254. package/dist/elements/services/propertiesService/propertyEditors/NumberPropertyEditor.d.ts +7 -7
  255. package/dist/elements/services/propertiesService/propertyEditors/NumberPropertyEditor.js +16 -16
  256. package/dist/elements/services/propertiesService/propertyEditors/SelectPropertyEditor.d.ts +7 -7
  257. package/dist/elements/services/propertiesService/propertyEditors/SelectPropertyEditor.js +28 -28
  258. package/dist/elements/services/propertiesService/propertyEditors/TextPropertyEditor.d.ts +7 -7
  259. package/dist/elements/services/propertiesService/propertyEditors/TextPropertyEditor.js +20 -20
  260. package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.d.ts +8 -8
  261. package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.js +14 -14
  262. package/dist/elements/services/propertiesService/services/AbstractPolymerLikePropertiesService.d.ts +9 -9
  263. package/dist/elements/services/propertiesService/services/AbstractPolymerLikePropertiesService.js +48 -48
  264. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.d.ts +21 -21
  265. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.js +175 -175
  266. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.d.ts +20 -20
  267. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.js +91 -91
  268. package/dist/elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.d.ts +8 -8
  269. package/dist/elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.js +14 -14
  270. package/dist/elements/services/propertiesService/services/CommonPropertiesService.d.ts +13 -13
  271. package/dist/elements/services/propertiesService/services/CommonPropertiesService.js +44 -44
  272. package/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.d.ts +34 -34
  273. package/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.js +103 -103
  274. package/dist/elements/services/propertiesService/services/CssProperties.json +541 -541
  275. package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +17 -17
  276. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +86 -86
  277. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinition.d.ts +17 -17
  278. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinition.js +1 -1
  279. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinitions.d.ts +4 -4
  280. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinitions.js +1 -1
  281. package/dist/elements/services/propertiesService/services/ListPropertiesService.d.ts +14 -14
  282. package/dist/elements/services/propertiesService/services/ListPropertiesService.js +45 -45
  283. package/dist/elements/services/propertiesService/services/Lit2PropertiesService.d.ts +9 -9
  284. package/dist/elements/services/propertiesService/services/Lit2PropertiesService.js +51 -51
  285. package/dist/elements/services/propertiesService/services/LitElementPropertiesService.d.ts +8 -8
  286. package/dist/elements/services/propertiesService/services/LitElementPropertiesService.js +17 -17
  287. package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.d.ts +20 -20
  288. package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.js +211 -211
  289. package/dist/elements/services/propertiesService/services/PolymerPropertiesService.d.ts +8 -8
  290. package/dist/elements/services/propertiesService/services/PolymerPropertiesService.js +10 -10
  291. package/dist/elements/services/propertiesService/services/PropertiesHelper.d.ts +6 -6
  292. package/dist/elements/services/propertiesService/services/PropertiesHelper.js +27 -27
  293. package/dist/elements/services/propertiesService/services/SVGElementsPropertiesService.d.ts +15 -15
  294. package/dist/elements/services/propertiesService/services/SVGElementsPropertiesService.js +259 -259
  295. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.d.ts +18 -18
  296. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.js +77 -77
  297. package/dist/elements/services/selectionService/ISelectionChangedEvent.d.ts +5 -5
  298. package/dist/elements/services/selectionService/ISelectionChangedEvent.js +1 -1
  299. package/dist/elements/services/selectionService/ISelectionService.d.ts +11 -11
  300. package/dist/elements/services/selectionService/ISelectionService.js +1 -1
  301. package/dist/elements/services/selectionService/SelectionService.d.ts +17 -17
  302. package/dist/elements/services/selectionService/SelectionService.js +50 -50
  303. package/dist/elements/services/stylesheetService/AbstractStylesheetService.d.ts +46 -46
  304. package/dist/elements/services/stylesheetService/AbstractStylesheetService.js +136 -136
  305. package/dist/elements/services/stylesheetService/CssToolsStylesheetService.d.ts +40 -40
  306. package/dist/elements/services/stylesheetService/CssToolsStylesheetService.js +99 -99
  307. package/dist/elements/services/stylesheetService/CssTreeStylesheetService.d.ts +56 -56
  308. package/dist/elements/services/stylesheetService/CssTreeStylesheetService.js +198 -198
  309. package/dist/elements/services/stylesheetService/IStylesheetService.d.ts +41 -41
  310. package/dist/elements/services/stylesheetService/IStylesheetService.js +1 -1
  311. package/dist/elements/services/stylesheetService/SpecificityCalculator.d.ts +7 -7
  312. package/dist/elements/services/stylesheetService/SpecificityCalculator.js +178 -178
  313. package/dist/elements/services/treeStructureService/ITreeStructureChangedEvent.d.ts +8 -8
  314. package/dist/elements/services/treeStructureService/ITreeStructureChangedEvent.js +1 -1
  315. package/dist/elements/services/treeStructureService/ITreeStructureService.d.ts +2 -2
  316. package/dist/elements/services/treeStructureService/ITreeStructureService.js +2 -2
  317. package/dist/elements/services/undoService/ChangeGroup.d.ts +18 -18
  318. package/dist/elements/services/undoService/ChangeGroup.js +67 -67
  319. package/dist/elements/services/undoService/ITransactionItem.d.ts +8 -8
  320. package/dist/elements/services/undoService/ITransactionItem.js +2 -2
  321. package/dist/elements/services/undoService/IUndoService.d.ts +14 -14
  322. package/dist/elements/services/undoService/IUndoService.js +1 -1
  323. package/dist/elements/services/undoService/UndoService.d.ts +22 -22
  324. package/dist/elements/services/undoService/UndoService.js +113 -107
  325. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.d.ts +15 -15
  326. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.js +70 -70
  327. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.d.ts +14 -14
  328. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.js +40 -40
  329. package/dist/elements/services/undoService/transactionItems/DeleteAction.d.ts +13 -13
  330. package/dist/elements/services/undoService/transactionItems/DeleteAction.js +35 -35
  331. package/dist/elements/services/undoService/transactionItems/InsertAction.d.ts +13 -13
  332. package/dist/elements/services/undoService/transactionItems/InsertAction.js +26 -26
  333. package/dist/elements/services/undoService/transactionItems/InsertChildAction.d.ts +16 -16
  334. package/dist/elements/services/undoService/transactionItems/InsertChildAction.js +40 -40
  335. package/dist/elements/services/undoService/transactionItems/SelectionChangedAction.d.ts +14 -14
  336. package/dist/elements/services/undoService/transactionItems/SelectionChangedAction.js +28 -28
  337. package/dist/elements/services/undoService/transactionItems/SetDesignItemsAction.d.ts +12 -12
  338. package/dist/elements/services/undoService/transactionItems/SetDesignItemsAction.js +22 -22
  339. package/dist/elements/services/undoService/transactionItems/StylesheetChangedAction.d.ts +14 -14
  340. package/dist/elements/services/undoService/transactionItems/StylesheetChangedAction.js +24 -24
  341. package/dist/elements/services/undoService/transactionItems/StylesheetStyleChangeAction.d.ts +17 -17
  342. package/dist/elements/services/undoService/transactionItems/StylesheetStyleChangeAction.js +28 -28
  343. package/dist/elements/widgets/bindableObjectsBrowser/IBindableObjectsBrowser.d.ts +3 -3
  344. package/dist/elements/widgets/bindableObjectsBrowser/IBindableObjectsBrowser.js +1 -1
  345. package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.d.ts +10 -10
  346. package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.js +85 -84
  347. package/dist/elements/widgets/bindings/BindingsEditor.d.ts +17 -17
  348. package/dist/elements/widgets/bindings/BindingsEditor.js +23 -22
  349. package/dist/elements/widgets/codeView/ICodeView.d.ts +11 -11
  350. package/dist/elements/widgets/codeView/ICodeView.js +1 -1
  351. package/dist/elements/widgets/codeView/code-view-ace.d.ts +24 -24
  352. package/dist/elements/widgets/codeView/code-view-ace.js +128 -127
  353. package/dist/elements/widgets/codeView/code-view-code-mirror.d.ts +24 -24
  354. package/dist/elements/widgets/codeView/code-view-code-mirror.js +97 -96
  355. package/dist/elements/widgets/codeView/code-view-monaco.d.ts +27 -27
  356. package/dist/elements/widgets/codeView/code-view-monaco.js +162 -160
  357. package/dist/elements/widgets/codeView/code-view-simple.d.ts +23 -23
  358. package/dist/elements/widgets/codeView/code-view-simple.js +38 -37
  359. package/dist/elements/widgets/demoView/IDemoView.d.ts +7 -7
  360. package/dist/elements/widgets/demoView/IDemoView.js +1 -1
  361. package/dist/elements/widgets/demoView/demoView.d.ts +17 -17
  362. package/dist/elements/widgets/demoView/demoView.js +27 -26
  363. package/dist/elements/widgets/designerView/DesignContext.d.ts +7 -7
  364. package/dist/elements/widgets/designerView/DesignContext.js +4 -4
  365. package/dist/elements/widgets/designerView/DomConverter.d.ts +7 -7
  366. package/dist/elements/widgets/designerView/DomConverter.js +42 -42
  367. package/dist/elements/widgets/designerView/IDesignContext.d.ts +6 -6
  368. package/dist/elements/widgets/designerView/IDesignContext.js +1 -1
  369. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +59 -59
  370. package/dist/elements/widgets/designerView/IDesignerCanvas.js +1 -1
  371. package/dist/elements/widgets/designerView/IPlacementView.d.ts +13 -13
  372. package/dist/elements/widgets/designerView/IPlacementView.js +1 -1
  373. package/dist/elements/widgets/designerView/Snaplines.d.ts +21 -21
  374. package/dist/elements/widgets/designerView/Snaplines.js +220 -220
  375. package/dist/elements/widgets/designerView/defaultConfiguredDesignerView.d.ts +5 -5
  376. package/dist/elements/widgets/designerView/defaultConfiguredDesignerView.js +11 -11
  377. package/dist/elements/widgets/designerView/designerCanvas.d.ts +132 -132
  378. package/dist/elements/widgets/designerView/designerCanvas.js +967 -966
  379. package/dist/elements/widgets/designerView/designerView.d.ts +39 -39
  380. package/dist/elements/widgets/designerView/designerView.js +218 -216
  381. package/dist/elements/widgets/designerView/extensions/AbstractExtension.d.ts +12 -12
  382. package/dist/elements/widgets/designerView/extensions/AbstractExtension.js +8 -8
  383. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +19 -19
  384. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +65 -65
  385. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.d.ts +11 -11
  386. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.js +21 -21
  387. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.d.ts +10 -10
  388. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js +11 -11
  389. package/dist/elements/widgets/designerView/extensions/CanvasExtension.d.ts +10 -10
  390. package/dist/elements/widgets/designerView/extensions/CanvasExtension.js +27 -27
  391. package/dist/elements/widgets/designerView/extensions/CanvasExtensionProvider.d.ts +10 -10
  392. package/dist/elements/widgets/designerView/extensions/CanvasExtensionProvider.js +13 -13
  393. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.d.ts +24 -24
  394. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +90 -89
  395. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.d.ts +9 -9
  396. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.js +11 -11
  397. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.d.ts +23 -23
  398. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.js +87 -86
  399. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtensionProvider.d.ts +10 -10
  400. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtensionProvider.js +13 -13
  401. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtension.d.ts +15 -15
  402. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtension.js +60 -60
  403. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.d.ts +10 -10
  404. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.js +11 -11
  405. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +22 -22
  406. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +305 -305
  407. package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +23 -23
  408. package/dist/elements/widgets/designerView/extensions/ExtensionType.js +24 -24
  409. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.d.ts +11 -11
  410. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.js +20 -20
  411. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.d.ts +11 -11
  412. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.js +15 -15
  413. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.d.ts +11 -11
  414. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.js +19 -19
  415. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.d.ts +10 -10
  416. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js +11 -11
  417. package/dist/elements/widgets/designerView/extensions/GrayOutExtension.d.ts +13 -13
  418. package/dist/elements/widgets/designerView/extensions/GrayOutExtension.js +33 -33
  419. package/dist/elements/widgets/designerView/extensions/GrayOutExtensionProvider.d.ts +10 -10
  420. package/dist/elements/widgets/designerView/extensions/GrayOutExtensionProvider.js +11 -11
  421. package/dist/elements/widgets/designerView/extensions/HighlightElementExtension.d.ts +11 -11
  422. package/dist/elements/widgets/designerView/extensions/HighlightElementExtension.js +20 -20
  423. package/dist/elements/widgets/designerView/extensions/HighlightElementExtensionProvider.d.ts +10 -10
  424. package/dist/elements/widgets/designerView/extensions/HighlightElementExtensionProvider.js +11 -11
  425. package/dist/elements/widgets/designerView/extensions/IDesignerExtension.d.ts +5 -5
  426. package/dist/elements/widgets/designerView/extensions/IDesignerExtension.js +1 -1
  427. package/dist/elements/widgets/designerView/extensions/IDesignerExtensionProvider.d.ts +9 -9
  428. package/dist/elements/widgets/designerView/extensions/IDesignerExtensionProvider.js +1 -1
  429. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +14 -14
  430. package/dist/elements/widgets/designerView/extensions/IExtensionManger.js +1 -1
  431. package/dist/elements/widgets/designerView/extensions/InvisibleElementExtension.d.ts +11 -11
  432. package/dist/elements/widgets/designerView/extensions/InvisibleElementExtension.js +19 -19
  433. package/dist/elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.d.ts +13 -13
  434. package/dist/elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.js +22 -22
  435. package/dist/elements/widgets/designerView/extensions/OverlayLayer.d.ts +5 -5
  436. package/dist/elements/widgets/designerView/extensions/OverlayLayer.js +6 -6
  437. package/dist/elements/widgets/designerView/extensions/PlacementExtension.d.ts +11 -11
  438. package/dist/elements/widgets/designerView/extensions/PlacementExtension.js +22 -22
  439. package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.d.ts +10 -10
  440. package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.js +11 -11
  441. package/dist/elements/widgets/designerView/extensions/PositionExtension.d.ts +16 -16
  442. package/dist/elements/widgets/designerView/extensions/PositionExtension.js +42 -42
  443. package/dist/elements/widgets/designerView/extensions/PositionExtensionProvider.d.ts +10 -10
  444. package/dist/elements/widgets/designerView/extensions/PositionExtensionProvider.js +14 -14
  445. package/dist/elements/widgets/designerView/extensions/ResizeExtension.d.ts +27 -27
  446. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +335 -335
  447. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.d.ts +12 -12
  448. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +18 -18
  449. package/dist/elements/widgets/designerView/extensions/RotateExtension.d.ts +18 -18
  450. package/dist/elements/widgets/designerView/extensions/RotateExtension.js +108 -108
  451. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.d.ts +10 -10
  452. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +14 -14
  453. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.d.ts +14 -14
  454. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.js +35 -35
  455. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.d.ts +10 -10
  456. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.js +11 -11
  457. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.d.ts +15 -15
  458. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +94 -94
  459. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.d.ts +12 -12
  460. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js +26 -26
  461. package/dist/elements/widgets/designerView/extensions/buttons/AbstractDesignViewConfigButton.d.ts +12 -12
  462. package/dist/elements/widgets/designerView/extensions/buttons/AbstractDesignViewConfigButton.js +40 -40
  463. package/dist/elements/widgets/designerView/extensions/buttons/ButtonSeperatorProvider.d.ts +8 -8
  464. package/dist/elements/widgets/designerView/extensions/buttons/ButtonSeperatorProvider.js +12 -12
  465. package/dist/elements/widgets/designerView/extensions/buttons/FlexboxExtensionDesignViewConfigButtons.d.ts +4 -4
  466. package/dist/elements/widgets/designerView/extensions/buttons/FlexboxExtensionDesignViewConfigButtons.js +7 -7
  467. package/dist/elements/widgets/designerView/extensions/buttons/GridExtensionDesignViewConfigButtons.d.ts +4 -4
  468. package/dist/elements/widgets/designerView/extensions/buttons/GridExtensionDesignViewConfigButtons.js +7 -7
  469. package/dist/elements/widgets/designerView/extensions/buttons/IDesignViewConfigButtonsProvider.d.ts +5 -5
  470. package/dist/elements/widgets/designerView/extensions/buttons/IDesignViewConfigButtonsProvider.js +1 -1
  471. package/dist/elements/widgets/designerView/extensions/buttons/InvisibleElementExtensionDesignViewConfigButtons.d.ts +4 -4
  472. package/dist/elements/widgets/designerView/extensions/buttons/InvisibleElementExtensionDesignViewConfigButtons.js +7 -7
  473. package/dist/elements/widgets/designerView/extensions/buttons/StylesheetServiceDesignViewConfigButtons.d.ts +5 -5
  474. package/dist/elements/widgets/designerView/extensions/buttons/StylesheetServiceDesignViewConfigButtons.js +7 -7
  475. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.d.ts +8 -8
  476. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +14 -14
  477. package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.d.ts +8 -8
  478. package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.js +1 -1
  479. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.d.ts +9 -9
  480. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js +17 -17
  481. package/dist/elements/widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.d.ts +8 -8
  482. package/dist/elements/widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.js +15 -15
  483. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.d.ts +9 -9
  484. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js +33 -33
  485. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.d.ts +8 -8
  486. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.js +31 -31
  487. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.d.ts +8 -8
  488. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js +33 -33
  489. package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.d.ts +8 -8
  490. package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.js +13 -13
  491. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.d.ts +8 -8
  492. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.js +13 -13
  493. package/dist/elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.d.ts +8 -8
  494. package/dist/elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.js +10 -10
  495. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.d.ts +8 -8
  496. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js +15 -15
  497. package/dist/elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.d.ts +8 -8
  498. package/dist/elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js +27 -27
  499. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.d.ts +15 -15
  500. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +56 -56
  501. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.d.ts +11 -11
  502. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js +15 -15
  503. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.d.ts +17 -17
  504. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.js +111 -111
  505. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.d.ts +10 -10
  506. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.js +15 -15
  507. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.d.ts +13 -13
  508. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js +28 -28
  509. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.d.ts +11 -11
  510. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js +11 -11
  511. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.d.ts +13 -13
  512. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.js +24 -24
  513. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.d.ts +7 -7
  514. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js +8 -8
  515. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.d.ts +5 -5
  516. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.js +1 -1
  517. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.d.ts +6 -6
  518. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.js +1 -1
  519. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.d.ts +41 -41
  520. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.js +174 -174
  521. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtensionProvider.d.ts +9 -9
  522. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtensionProvider.js +13 -13
  523. package/dist/elements/widgets/designerView/extensions/svg/LineExtension.d.ts +32 -32
  524. package/dist/elements/widgets/designerView/extensions/svg/LineExtension.js +147 -147
  525. package/dist/elements/widgets/designerView/extensions/svg/LineExtensionProvider.d.ts +9 -9
  526. package/dist/elements/widgets/designerView/extensions/svg/LineExtensionProvider.js +14 -14
  527. package/dist/elements/widgets/designerView/extensions/svg/PathExtension.d.ts +29 -29
  528. package/dist/elements/widgets/designerView/extensions/svg/PathExtension.js +320 -320
  529. package/dist/elements/widgets/designerView/extensions/svg/PathExtensionProvider.d.ts +9 -9
  530. package/dist/elements/widgets/designerView/extensions/svg/PathExtensionProvider.js +14 -14
  531. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.d.ts +46 -46
  532. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.js +199 -199
  533. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider.d.ts +9 -9
  534. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider.js +14 -14
  535. package/dist/elements/widgets/designerView/overlay/EditTextOverlay.d.ts +5 -5
  536. package/dist/elements/widgets/designerView/overlay/EditTextOverlay.js +6 -5
  537. package/dist/elements/widgets/designerView/overlayLayerView.d.ts +29 -29
  538. package/dist/elements/widgets/designerView/overlayLayerView.js +181 -180
  539. package/dist/elements/widgets/designerView/tools/DrawElementTool.d.ts +19 -19
  540. package/dist/elements/widgets/designerView/tools/DrawElementTool.js +79 -79
  541. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.d.ts +16 -16
  542. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +94 -94
  543. package/dist/elements/widgets/designerView/tools/DrawLineTool.d.ts +14 -14
  544. package/dist/elements/widgets/designerView/tools/DrawLineTool.js +79 -79
  545. package/dist/elements/widgets/designerView/tools/DrawPathTool.d.ts +20 -20
  546. package/dist/elements/widgets/designerView/tools/DrawPathTool.js +128 -128
  547. package/dist/elements/widgets/designerView/tools/DrawRectTool.d.ts +19 -19
  548. package/dist/elements/widgets/designerView/tools/DrawRectTool.js +109 -109
  549. package/dist/elements/widgets/designerView/tools/ITool.d.ts +9 -9
  550. package/dist/elements/widgets/designerView/tools/ITool.js +1 -1
  551. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.d.ts +12 -12
  552. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +66 -66
  553. package/dist/elements/widgets/designerView/tools/NamedTools.d.ts +15 -15
  554. package/dist/elements/widgets/designerView/tools/NamedTools.js +16 -16
  555. package/dist/elements/widgets/designerView/tools/PanTool.d.ts +10 -10
  556. package/dist/elements/widgets/designerView/tools/PanTool.js +26 -26
  557. package/dist/elements/widgets/designerView/tools/PickColorTool.d.ts +10 -10
  558. package/dist/elements/widgets/designerView/tools/PickColorTool.js +20 -20
  559. package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +36 -36
  560. package/dist/elements/widgets/designerView/tools/PointerTool.js +397 -397
  561. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.d.ts +12 -12
  562. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +86 -86
  563. package/dist/elements/widgets/designerView/tools/TextTool.d.ts +14 -14
  564. package/dist/elements/widgets/designerView/tools/TextTool.js +51 -51
  565. package/dist/elements/widgets/designerView/tools/ZoomTool.d.ts +17 -17
  566. package/dist/elements/widgets/designerView/tools/ZoomTool.js +82 -82
  567. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.d.ts +19 -19
  568. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.js +74 -73
  569. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.d.ts +19 -19
  570. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.js +45 -44
  571. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.d.ts +4 -4
  572. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.js +1 -1
  573. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.d.ts +5 -5
  574. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js +16 -16
  575. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.d.ts +5 -5
  576. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.js +7 -7
  577. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.d.ts +5 -5
  578. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.js +10 -10
  579. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.d.ts +7 -7
  580. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.js +11 -11
  581. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.d.ts +5 -5
  582. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.js +7 -7
  583. package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.d.ts +5 -5
  584. package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.js +7 -7
  585. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.d.ts +6 -6
  586. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.js +27 -26
  587. package/dist/elements/widgets/miniatureView/IMiniatureView.d.ts +2 -2
  588. package/dist/elements/widgets/miniatureView/IMiniatureView.js +1 -1
  589. package/dist/elements/widgets/miniatureView/html-2-canvas-miniature-view.d.ts +10 -10
  590. package/dist/elements/widgets/miniatureView/html-2-canvas-miniature-view.js +20 -19
  591. package/dist/elements/widgets/paletteView/paletteElements.d.ts +10 -10
  592. package/dist/elements/widgets/paletteView/paletteElements.js +73 -72
  593. package/dist/elements/widgets/paletteView/paletteTreeView.d.ts +12 -12
  594. package/dist/elements/widgets/paletteView/paletteTreeView.js +91 -90
  595. package/dist/elements/widgets/paletteView/paletteView.d.ts +11 -11
  596. package/dist/elements/widgets/paletteView/paletteView.js +33 -32
  597. package/dist/elements/widgets/propertyGrid/PropertyGrid.d.ts +22 -22
  598. package/dist/elements/widgets/propertyGrid/PropertyGrid.js +100 -99
  599. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.d.ts +22 -22
  600. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +181 -181
  601. package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.d.ts +16 -16
  602. package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.js +74 -73
  603. package/dist/elements/widgets/treeView/ITreeView.d.ts +6 -6
  604. package/dist/elements/widgets/treeView/ITreeView.js +1 -1
  605. package/dist/elements/widgets/treeView/treeView.d.ts +28 -28
  606. package/dist/elements/widgets/treeView/treeView.js +149 -148
  607. package/dist/elements/widgets/treeView/treeViewExtended.d.ts +32 -32
  608. package/dist/elements/widgets/treeView/treeViewExtended.js +286 -285
  609. package/dist/enums/EventNames.d.ts +16 -16
  610. package/dist/enums/EventNames.js +17 -17
  611. package/dist/enums/Orientation.d.ts +8 -8
  612. package/dist/enums/Orientation.js +9 -9
  613. package/dist/enums/PointerActionType.d.ts +8 -8
  614. package/dist/enums/PointerActionType.js +9 -9
  615. package/dist/index.d.ts +254 -254
  616. package/dist/index.js +195 -195
  617. package/dist/interfaces/IActivateable.d.ts +3 -3
  618. package/dist/interfaces/IActivateable.js +1 -1
  619. package/dist/interfaces/ICommandHandler.d.ts +5 -5
  620. package/dist/interfaces/ICommandHandler.js +1 -1
  621. package/dist/interfaces/IDisposable.d.ts +3 -3
  622. package/dist/interfaces/IDisposable.js +1 -1
  623. package/dist/interfaces/IPoint.d.ts +4 -4
  624. package/dist/interfaces/IPoint.js +1 -1
  625. package/dist/interfaces/IPoint3D.d.ts +5 -5
  626. package/dist/interfaces/IPoint3D.js +1 -1
  627. package/dist/interfaces/IRect.d.ts +6 -6
  628. package/dist/interfaces/IRect.js +1 -1
  629. package/dist/interfaces/ISize.d.ts +4 -4
  630. package/dist/interfaces/ISize.js +1 -1
  631. package/dist/polyfill/globals.d.ts +11 -11
  632. package/dist/polyfill/globals.js +1 -1
  633. package/package.json +5 -5
@@ -1,84 +1,84 @@
1
- import { EventNames } from '../../../enums/EventNames.js';
2
- import { InstanceServiceContainer } from '../../services/InstanceServiceContainer.js';
3
- import { DesignItem } from '../../item/DesignItem.js';
4
- import { BaseCustomWebComponentLazyAppend, css, html, TypedEvent, cssFromString } from '@node-projects/base-custom-webcomponent';
5
- import { dragDropFormatNameElementDefinition, dragDropFormatNameBindingObject } from '../../../Constants.js';
6
- import { InsertAction } from '../../services/undoService/transactionItems/InsertAction.js';
7
- import { Snaplines } from './Snaplines.js';
8
- import { DeleteAction } from '../../services/undoService/transactionItems/DeleteAction.js';
9
- import { CommandType } from '../../../commandHandling/CommandType.js';
10
- import { DefaultHtmlParserService } from '../../services/htmlParserService/DefaultHtmlParserService.js';
11
- import { ExtensionType } from './extensions/ExtensionType.js';
12
- import { ExtensionManager } from './extensions/ExtensionManager.js';
13
- import { NamedTools } from './tools/NamedTools.js';
14
- import { Screenshot } from '../../helper/Screenshot.js';
15
- import { dataURItoBlob, exportData, sleep } from '../../helper/Helper.js';
16
- import { DomHelper } from '@node-projects/base-custom-webcomponent/dist/DomHelper.js';
17
- import { OverlayLayer } from './extensions/OverlayLayer.js';
18
- import { OverlayLayerView } from './overlayLayerView.js';
19
- import { ContextMenu } from '../../helper/contextMenu/ContextMenu.js';
20
- import { NodeType } from '../../item/NodeType.js';
21
- import { StylesheetChangedAction } from '../../services/undoService/transactionItems/StylesheetChangedAction.js';
22
- import { SetDesignItemsAction } from '../../services/undoService/transactionItems/SetDesignItemsAction.js';
23
- import { AbstractStylesheetService } from '../../services/stylesheetService/AbstractStylesheetService.js';
24
- export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
25
- // Public Properties
26
- serviceContainer;
27
- instanceServiceContainer;
28
- containerBoundingRect;
29
- outerRect;
30
- clickOverlay;
31
- _activeTool;
32
- // IPlacementView
33
- gridSize = 10;
34
- alignOnGrid = false;
35
- alignOnSnap = true;
36
- snapLines;
37
- overlayLayer;
38
- rootDesignItem;
39
- eatEvents;
40
- _zoomFactor = 1; //if scale or zoom css property is used this needs to be the value
41
- _scaleFactor = 1; //if scale css property is used this need to be the scale value
42
- _canvasOffset = { x: 0, y: 0 };
43
- _additionalStyle;
44
- _currentContextMenu;
45
- _backgroundImage;
46
- _enableSelectTextNodesOnClick = false;
47
- get zoomFactor() {
48
- return this._zoomFactor;
49
- }
50
- set zoomFactor(value) {
51
- this._zoomFactor = value;
52
- this._zoomFactorChanged();
53
- }
54
- get scaleFactor() {
55
- return this._scaleFactor;
56
- }
57
- get canvasOffset() {
58
- return this._canvasOffset;
59
- }
60
- set canvasOffset(value) {
61
- this._canvasOffset = value;
62
- this._zoomFactorChanged(false);
63
- }
64
- get canvasOffsetUnzoomed() {
65
- return { x: this._canvasOffset.x * this.zoomFactor, y: this._canvasOffset.y * this.zoomFactor };
66
- }
67
- set canvasOffsetUnzoomed(value) {
68
- this.canvasOffset = { x: value.x / this.zoomFactor, y: value.y / this.zoomFactor };
69
- }
70
- onContentChanged = new TypedEvent();
71
- onZoomFactorChanged = new TypedEvent();
72
- get canvas() {
73
- return this._canvas;
74
- }
75
- // Private Variables
76
- _canvas;
77
- _canvasContainer;
78
- _outercanvas2;
79
- _lastHoverDesignItem;
80
- _firstConnect;
81
- static cssprefixConstant = '#node-projects-designer-canvas-canvas ';
1
+ import { EventNames } from '../../../enums/EventNames.js';
2
+ import { InstanceServiceContainer } from '../../services/InstanceServiceContainer.js';
3
+ import { DesignItem } from '../../item/DesignItem.js';
4
+ import { BaseCustomWebComponentLazyAppend, css, html, TypedEvent, cssFromString } from '@node-projects/base-custom-webcomponent';
5
+ import { dragDropFormatNameElementDefinition, dragDropFormatNameBindingObject } from '../../../Constants.js';
6
+ import { InsertAction } from '../../services/undoService/transactionItems/InsertAction.js';
7
+ import { Snaplines } from './Snaplines.js';
8
+ import { DeleteAction } from '../../services/undoService/transactionItems/DeleteAction.js';
9
+ import { CommandType } from '../../../commandHandling/CommandType.js';
10
+ import { DefaultHtmlParserService } from '../../services/htmlParserService/DefaultHtmlParserService.js';
11
+ import { ExtensionType } from './extensions/ExtensionType.js';
12
+ import { ExtensionManager } from './extensions/ExtensionManager.js';
13
+ import { NamedTools } from './tools/NamedTools.js';
14
+ import { Screenshot } from '../../helper/Screenshot.js';
15
+ import { dataURItoBlob, exportData, sleep } from '../../helper/Helper.js';
16
+ import { DomHelper } from '@node-projects/base-custom-webcomponent/dist/DomHelper.js';
17
+ import { OverlayLayer } from './extensions/OverlayLayer.js';
18
+ import { OverlayLayerView } from './overlayLayerView.js';
19
+ import { ContextMenu } from '../../helper/contextMenu/ContextMenu.js';
20
+ import { NodeType } from '../../item/NodeType.js';
21
+ import { StylesheetChangedAction } from '../../services/undoService/transactionItems/StylesheetChangedAction.js';
22
+ import { SetDesignItemsAction } from '../../services/undoService/transactionItems/SetDesignItemsAction.js';
23
+ import { AbstractStylesheetService } from '../../services/stylesheetService/AbstractStylesheetService.js';
24
+ class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
25
+ // Public Properties
26
+ serviceContainer;
27
+ instanceServiceContainer;
28
+ containerBoundingRect;
29
+ outerRect;
30
+ clickOverlay;
31
+ _activeTool;
32
+ // IPlacementView
33
+ gridSize = 10;
34
+ alignOnGrid = false;
35
+ alignOnSnap = true;
36
+ snapLines;
37
+ overlayLayer;
38
+ rootDesignItem;
39
+ eatEvents;
40
+ _zoomFactor = 1; //if scale or zoom css property is used this needs to be the value
41
+ _scaleFactor = 1; //if scale css property is used this need to be the scale value
42
+ _canvasOffset = { x: 0, y: 0 };
43
+ _additionalStyle;
44
+ _currentContextMenu;
45
+ _backgroundImage;
46
+ _enableSelectTextNodesOnClick = false;
47
+ get zoomFactor() {
48
+ return this._zoomFactor;
49
+ }
50
+ set zoomFactor(value) {
51
+ this._zoomFactor = value;
52
+ this._zoomFactorChanged();
53
+ }
54
+ get scaleFactor() {
55
+ return this._scaleFactor;
56
+ }
57
+ get canvasOffset() {
58
+ return this._canvasOffset;
59
+ }
60
+ set canvasOffset(value) {
61
+ this._canvasOffset = value;
62
+ this._zoomFactorChanged(false);
63
+ }
64
+ get canvasOffsetUnzoomed() {
65
+ return { x: this._canvasOffset.x * this.zoomFactor, y: this._canvasOffset.y * this.zoomFactor };
66
+ }
67
+ set canvasOffsetUnzoomed(value) {
68
+ this.canvasOffset = { x: value.x / this.zoomFactor, y: value.y / this.zoomFactor };
69
+ }
70
+ onContentChanged = new TypedEvent();
71
+ onZoomFactorChanged = new TypedEvent();
72
+ get canvas() {
73
+ return this._canvas;
74
+ }
75
+ // Private Variables
76
+ _canvas;
77
+ _canvasContainer;
78
+ _outercanvas2;
79
+ _lastHoverDesignItem;
80
+ _firstConnect;
81
+ static cssprefixConstant = '#node-projects-designer-canvas-canvas ';
82
82
  static style = css `
83
83
  :host {
84
84
  display: block;
@@ -149,7 +149,7 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
149
149
  height: 0;
150
150
  width: 0;
151
151
  }
152
- `;
152
+ `;
153
153
  static template = html `
154
154
  <div style="display: flex;flex-direction: column;width: 100%;height: 100%; margin: 0 !important; padding: 0 !important; border: none !important;">
155
155
  <div style="width: 100%;height: 100%; margin: 0 !important; padding: 0 !important; border: none !important;">
@@ -161,887 +161,888 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
161
161
  </div>
162
162
  <div id="node-projects-designer-canvas-clickOverlay" tabindex="0" style="pointer-events: auto; margin: 0 !important; padding: 0 !important; border: none !important;"></div>
163
163
  </div>
164
- </div>`;
165
- extensionManager;
166
- _pointerextensions;
167
- _lastCopiedPrimaryItem;
168
- constructor() {
169
- super();
170
- this._restoreCachedInititalValues();
171
- this._canvas = this._getDomElement('node-projects-designer-canvas-canvas');
172
- this._canvasContainer = this._getDomElement('node-projects-designer-canvas-canvasContainer');
173
- this._outercanvas2 = this._getDomElement('node-projects-designer-canvas-outercanvas2');
174
- this.clickOverlay = this._getDomElement('node-projects-designer-canvas-clickOverlay');
175
- this.onKeyDown = this.onKeyDown.bind(this);
176
- this.onKeyUp = this.onKeyUp.bind(this);
177
- this._onDblClick = this._onDblClick.bind(this);
178
- this._pointerEventHandler = this._pointerEventHandler.bind(this);
179
- this.clickOverlay.oncontextmenu = (e) => e.preventDefault();
180
- }
181
- get designerWidth() {
182
- return this._canvasContainer.style.width;
183
- }
184
- set designerWidth(value) {
185
- this._canvasContainer.style.width = value;
186
- this._zoomFactorChanged();
187
- }
188
- get designerHeight() {
189
- return this._canvasContainer.style.height;
190
- }
191
- set designerHeight(value) {
192
- this._canvasContainer.style.height = value;
193
- this._zoomFactorChanged();
194
- }
195
- getDesignSurfaceDimensions() {
196
- let ret = { width: null, height: null };
197
- const cs = getComputedStyle(this._canvasContainer);
198
- if (this._canvasContainer.style.width)
199
- ret.width = parseFloat(cs.width);
200
- if (this._canvasContainer.style.height)
201
- ret.height = parseFloat(cs.height);
202
- return ret;
203
- }
204
- get designerOffsetWidth() {
205
- return this._canvasContainer.offsetWidth;
206
- }
207
- get designerOffsetHeight() {
208
- return this._canvasContainer.offsetHeight;
209
- }
210
- set additionalStyles(value) {
211
- this._additionalStyle = value;
212
- this.applyAllStyles();
213
- }
214
- get additionalStyles() {
215
- return this._additionalStyle;
216
- }
217
- applyAllStyles() {
218
- let styles = [this.constructor.style];
219
- if (this._additionalStyle)
220
- styles.push(cssFromString(AbstractStylesheetService.buildPatchedStyleSheet(this._additionalStyle)));
221
- if (this.instanceServiceContainer.stylesheetService) {
222
- styles.push(...this.instanceServiceContainer.stylesheetService
223
- .getStylesheets()
224
- .map(x => cssFromString(AbstractStylesheetService.buildPatchedStyleSheet([cssFromString(x.content)]))));
225
- }
226
- this.shadowRoot.adoptedStyleSheets = styles;
227
- }
228
- /* --- start IUiCommandHandler --- */
229
- async executeCommand(command) {
230
- const modelCommandService = this.serviceContainer.modelCommandService;
231
- if (modelCommandService) {
232
- let handeled = await modelCommandService.executeCommand(this, command);
233
- if (handeled != null)
234
- return;
235
- }
236
- switch (command.type) {
237
- case CommandType.screenshot:
238
- {
239
- if (!Screenshot.screenshotsEnabled) {
240
- alert("you need to select current tab in next browser dialog, or screenshots will not work correctly");
241
- }
242
- if (!this.instanceServiceContainer.selectionService.primarySelection) {
243
- this.zoomToFit();
244
- this.disableBackgroud();
245
- const el = this.rootDesignItem.element;
246
- const sel = this.instanceServiceContainer.selectionService.selectedElements;
247
- this.instanceServiceContainer.selectionService.setSelectedElements(null);
248
- await sleep(100);
249
- const screenshot = await Screenshot.takeScreenshot(el, el.clientWidth, el.clientHeight);
250
- await exportData(dataURItoBlob(screenshot), "screenshot.png");
251
- this.instanceServiceContainer.selectionService.setSelectedElements(sel);
252
- this.enableBackground();
253
- }
254
- else {
255
- this.disableBackgroud();
256
- const el = this.instanceServiceContainer.selectionService.primarySelection.element;
257
- const sel = this.instanceServiceContainer.selectionService.selectedElements;
258
- this.instanceServiceContainer.selectionService.setSelectedElements(null);
259
- await sleep(100);
260
- const screenshot = await Screenshot.takeScreenshot(el, el.clientWidth, el.clientHeight);
261
- await exportData(dataURItoBlob(screenshot), "screenshot.png");
262
- this.instanceServiceContainer.selectionService.setSelectedElements(sel);
263
- this.enableBackground();
264
- }
265
- }
266
- break;
267
- case CommandType.setTool:
268
- {
269
- this.serviceContainer.globalContext.tool = this.serviceContainer.designerTools.get(command.parameter);
270
- }
271
- break;
272
- case CommandType.setStrokeColor:
273
- {
274
- this.serviceContainer.globalContext.strokeColor = command.parameter;
275
- }
276
- break;
277
- case CommandType.setFillBrush:
278
- {
279
- this.serviceContainer.globalContext.fillBrush = command.parameter;
280
- }
281
- break;
282
- case CommandType.setStrokeThickness:
283
- {
284
- this.serviceContainer.globalContext.strokeThickness = command.parameter;
285
- }
286
- break;
287
- case CommandType.delete:
288
- this.handleDeleteCommand();
289
- break;
290
- case CommandType.undo:
291
- this.instanceServiceContainer.undoService.undo();
292
- break;
293
- case CommandType.redo:
294
- this.instanceServiceContainer.undoService.redo();
295
- break;
296
- case CommandType.copy:
297
- this.handleCopyCommand();
298
- break;
299
- case CommandType.cut:
300
- this.handleCopyCommand();
301
- this.handleDeleteCommand();
302
- break;
303
- case CommandType.paste:
304
- this.handlePasteCommand(command.altKey == true);
305
- break;
306
- case CommandType.selectAll:
307
- this.handleSelectAll();
308
- break;
309
- }
310
- }
311
- disableBackgroud() {
312
- this._backgroundImage = this._canvas.style.backgroundImage;
313
- this._canvas.style.backgroundImage = 'none';
314
- }
315
- enableBackground() {
316
- this._canvas.style.backgroundImage = this._backgroundImage;
317
- }
318
- zoomToFit() {
319
- const autoZomOffset = 10;
320
- let maxX = 0, maxY = 0, minX = 0, minY = 0;
321
- this.canvasOffset = { x: 0, y: 0 };
322
- this.zoomFactor = 1;
323
- for (let n of DomHelper.getAllChildNodes(this.rootDesignItem.element)) {
324
- if (n instanceof Element) {
325
- const rect = n.getBoundingClientRect();
326
- minX = minX < rect.x ? minX : rect.x;
327
- minY = minY < rect.y ? minY : rect.y;
328
- maxX = maxX > rect.x + rect.width + autoZomOffset ? maxX : rect.x + rect.width + autoZomOffset;
329
- maxY = maxY > rect.y + rect.height + autoZomOffset ? maxY : rect.y + rect.height + autoZomOffset;
330
- }
331
- }
332
- const cvRect = this.getBoundingClientRect();
333
- maxX -= cvRect.x;
334
- maxY -= cvRect.y;
335
- let scaleX = cvRect.width / (maxX / this.zoomFactor);
336
- let scaleY = cvRect.height / (maxY / this.zoomFactor);
337
- const dimensions = this.getDesignSurfaceDimensions();
338
- if (dimensions.width)
339
- scaleX = cvRect.width / dimensions.width;
340
- if (dimensions.height)
341
- scaleY = cvRect.height / dimensions.height;
342
- let fak = scaleX < scaleY ? scaleX : scaleY;
343
- if (!isNaN(fak))
344
- this.zoomFactor = fak;
345
- //this._zoomInput.value = Math.round(this.zoomFactor * 100) + '%';
346
- }
347
- canExecuteCommand(command) {
348
- const modelCommandService = this.serviceContainer.modelCommandService;
349
- if (modelCommandService) {
350
- let handeled = modelCommandService.canExecuteCommand(this, command);
351
- if (handeled !== null)
352
- return handeled;
353
- }
354
- if (command.type === CommandType.undo) {
355
- return this.instanceServiceContainer.undoService.canUndo();
356
- }
357
- if (command.type === CommandType.redo) {
358
- return this.instanceServiceContainer.undoService.canRedo();
359
- }
360
- if (command.type === CommandType.setTool) {
361
- return this.serviceContainer.designerTools.has(command.parameter);
362
- }
363
- return true;
364
- }
365
- /* --- end IUiCommandHandler --- */
366
- handleSelectAll() {
367
- this.instanceServiceContainer.selectionService.setSelectedElements(Array.from(this.rootDesignItem.children()));
368
- }
369
- async handleCopyCommand() {
370
- this._lastCopiedPrimaryItem = this.instanceServiceContainer.selectionService.primarySelection;
371
- await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements);
372
- }
373
- async handlePasteCommand(disableRestoreOfPositions) {
374
- const [designItems, positions] = await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer, this.instanceServiceContainer);
375
- let grp = this.rootDesignItem.openGroup("Insert");
376
- let pasteContainer = this.rootDesignItem;
377
- let pCon = this._lastCopiedPrimaryItem?.parent ?? this.instanceServiceContainer.selectionService.primarySelection;
378
- while (pCon != null) {
379
- const containerStyle = getComputedStyle(pCon.element);
380
- let newContainerService;
381
- newContainerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(pCon, containerStyle));
382
- if (newContainerService) {
383
- if (newContainerService.canEnter(pCon, designItems)) {
384
- pasteContainer = pCon;
385
- break;
386
- }
387
- else {
388
- pCon = pCon.parent;
389
- continue;
390
- }
391
- }
392
- }
393
- if (designItems) {
394
- let containerPos = this.getNormalizedElementCoordinates(pasteContainer.element);
395
- for (let i = 0; i < designItems.length; i++) {
396
- let di = designItems[i];
397
- let pos = positions ? positions[i] : null;
398
- this.instanceServiceContainer.undoService.execute(new InsertAction(pasteContainer, pasteContainer.childCount, di));
399
- if (!disableRestoreOfPositions && pos && di.nodeType == NodeType.Element) {
400
- di.setStyle('left', (pos.x - containerPos.x) + 'px');
401
- di.setStyle('top', (pos.y - containerPos.y) + 'px');
402
- }
403
- }
404
- const intializationService = this.serviceContainer.intializationService;
405
- if (intializationService) {
406
- for (let di of designItems)
407
- intializationService.init(di);
408
- }
409
- this.instanceServiceContainer.selectionService.setSelectedElements(designItems);
410
- }
411
- grp.commit();
412
- this.snapLines.clearSnaplines();
413
- }
414
- handleDeleteCommand() {
415
- let items = this.instanceServiceContainer.selectionService.selectedElements;
416
- this.instanceServiceContainer.undoService.execute(new DeleteAction(items));
417
- this.instanceServiceContainer.selectionService.setSelectedElements(null);
418
- }
419
- initialize(serviceContainer) {
420
- this.serviceContainer = serviceContainer;
421
- this.instanceServiceContainer = new InstanceServiceContainer(this);
422
- const undoService = this.serviceContainer.getLastService('undoService');
423
- if (undoService)
424
- this.instanceServiceContainer.register("undoService", undoService(this));
425
- const selectionService = this.serviceContainer.getLastService('selectionService');
426
- if (selectionService) {
427
- this.instanceServiceContainer.register("selectionService", selectionService(this));
428
- this.instanceServiceContainer.selectionService.onSelectionChanged.on(() => {
429
- this._lastCopiedPrimaryItem = null;
430
- });
431
- }
432
- const designItemDocumentPositionService = this.serviceContainer.getLastService('designItemDocumentPositionService');
433
- if (designItemDocumentPositionService) {
434
- this.instanceServiceContainer.register("designItemDocumentPositionService", designItemDocumentPositionService(this));
435
- }
436
- this.rootDesignItem = DesignItem.GetOrCreateDesignItem(this._canvas, this.serviceContainer, this.instanceServiceContainer);
437
- const contentService = this.serviceContainer.getLastService('contentService');
438
- if (contentService) {
439
- this.instanceServiceContainer.register("contentService", contentService(this));
440
- }
441
- const stylesheetService = this.serviceContainer.getLastService('stylesheetService');
442
- if (stylesheetService) {
443
- const instance = stylesheetService(this);
444
- this.instanceServiceContainer.register("stylesheetService", instance);
445
- this.instanceServiceContainer.stylesheetService.stylesheetChanged.on((ss) => {
446
- if (ss.changeSource == 'extern') {
447
- const ssca = new StylesheetChangedAction(this.instanceServiceContainer.stylesheetService, ss.name, ss.newStyle, ss.oldStyle);
448
- this.instanceServiceContainer.undoService.execute(ssca);
449
- }
450
- this.applyAllStyles();
451
- });
452
- this.instanceServiceContainer.stylesheetService.stylesheetsChanged.on(() => {
453
- this.applyAllStyles();
454
- });
455
- }
456
- this.extensionManager = new ExtensionManager(this);
457
- this.overlayLayer = new OverlayLayerView(serviceContainer);
458
- this.overlayLayer.style.pointerEvents = 'none';
459
- this.overlayLayer.style.setProperty('margin', '0', 'important');
460
- this.overlayLayer.style.setProperty('padding', '0', 'important');
461
- this.overlayLayer.style.setProperty('border', 'none', 'important');
462
- this.clickOverlay.appendChild(this.overlayLayer);
463
- this.snapLines = new Snaplines(this.overlayLayer);
464
- this.snapLines.initialize(this.rootDesignItem);
465
- if (this.serviceContainer.designerPointerExtensions)
466
- for (let pe of this.serviceContainer.designerPointerExtensions) {
467
- if (!this._pointerextensions)
468
- this._pointerextensions = [];
469
- this._pointerextensions.push(pe.getExtension(this));
470
- }
471
- if (this.children) {
472
- let children = this.children;
473
- if (this.children.length == 1 && this.children[0] instanceof HTMLSlotElement) {
474
- children = this.children[0].assignedElements();
475
- }
476
- const parser = this.serviceContainer.getLastServiceWhere('htmlParserService', x => x.constructor == DefaultHtmlParserService);
477
- this.addDesignItems(parser.createDesignItems(children, this.serviceContainer, this.instanceServiceContainer));
478
- }
479
- if (!this.serviceContainer.options.zoomDesignerBackground) {
480
- requestAnimationFrame(() => {
481
- this._resizeBackgroundGrid();
482
- });
483
- }
484
- }
485
- connectedCallback() {
486
- if (!this._firstConnect) {
487
- this._firstConnect = true;
488
- this.clickOverlay.addEventListener(EventNames.PointerDown, this._pointerEventHandler);
489
- this.clickOverlay.addEventListener(EventNames.PointerMove, this._pointerEventHandler);
490
- this.clickOverlay.addEventListener(EventNames.PointerUp, this._pointerEventHandler);
491
- this.clickOverlay.addEventListener(EventNames.DragEnter, event => this._onDragEnter(event));
492
- this.clickOverlay.addEventListener(EventNames.DragLeave, event => this._onDragLeave(event));
493
- this.clickOverlay.addEventListener(EventNames.DragOver, event => this._onDragOver(event));
494
- this.clickOverlay.addEventListener(EventNames.Drop, event => this._onDrop(event));
495
- this.clickOverlay.addEventListener(EventNames.KeyDown, this.onKeyDown, true);
496
- this.clickOverlay.addEventListener(EventNames.KeyUp, this.onKeyUp, true);
497
- this.clickOverlay.addEventListener(EventNames.DblClick, this._onDblClick, true);
498
- }
499
- }
500
- _zoomFactorChanged(refreshExtensions = true) {
501
- //a@ts-ignore
502
- //this._canvasContainer.style.zoom = <any>this._zoomFactor;
503
- //this._canvasContainer.style.transform = 'scale(' + this._zoomFactor+') translate(' + this._translate.x + ', '+this._translate.y+')';
504
- //this._canvasContainer.style.transformOrigin = '0 0';
505
- this._canvasContainer.style.bottom = this._outercanvas2.offsetHeight >= this._canvasContainer.offsetHeight ? '0' : '';
506
- this._canvasContainer.style.right = this._outercanvas2.offsetWidth >= this._canvasContainer.offsetWidth ? '0' : '';
507
- this._updateTransform();
508
- this._fillCalculationrects();
509
- this.onZoomFactorChanged.emit(this._zoomFactor);
510
- if (refreshExtensions) {
511
- this.extensionManager.refreshAllAppliedExtentions();
512
- setTimeout(() => this.extensionManager.refreshAllAppliedExtentions(), 200);
513
- }
514
- if (!this.serviceContainer.options.zoomDesignerBackground)
515
- this._resizeBackgroundGrid();
516
- }
517
- _resizeBackgroundGrid() {
518
- const backgroundGridSize = 10;
519
- const backgroundGridFactor = backgroundGridSize * 100 * 2;
520
- let canvasWidth = this.canvas.getBoundingClientRect().width;
521
- let backgroundGridZoom = backgroundGridFactor / canvasWidth;
522
- this.canvas.style.backgroundSize = backgroundGridZoom.toString() + '%';
523
- }
524
- _updateTransform() {
525
- this._scaleFactor = this._zoomFactor;
526
- this._canvasContainer.style.transform = 'scale(' + this._zoomFactor + ') translate(' + (isNaN(this._canvasOffset.x) ? '0' : this._canvasOffset.x) + 'px, ' + (isNaN(this._canvasOffset.y) ? '0' : this._canvasOffset.y) + 'px)';
527
- this._canvasContainer.style.transformOrigin = '0 0';
528
- this.overlayLayer.style.transform = this._canvasContainer.style.transform;
529
- this.overlayLayer.style.transformOrigin = '0 0';
530
- this.snapLines.clearSnaplines();
531
- }
532
- setDesignItems(designItems) {
533
- const setItemsAction = new SetDesignItemsAction(designItems, [...this.rootDesignItem.children()]);
534
- this.instanceServiceContainer.undoService.execute(setItemsAction);
535
- }
536
- _internalSetDesignItems(designItems) {
537
- this._fillCalculationrects();
538
- this.overlayLayer.removeAllOverlays();
539
- DomHelper.removeAllChildnodes(this.overlayLayer);
540
- for (let i of [...this.rootDesignItem.children()])
541
- this.rootDesignItem._removeChildInternal(i);
542
- this.addDesignItems(designItems);
543
- this.lazyTriggerReparseDocumentStylesheets();
544
- this.instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'parsed' });
545
- this.instanceServiceContainer.selectionService._withoutUndoSetSelectedElements(null);
546
- setTimeout(() => this.extensionManager.refreshAllAppliedExtentions(), 50);
547
- }
548
- reparseTimeout;
549
- lazyTriggerReparseDocumentStylesheets() {
550
- if (this.reparseTimeout) {
551
- clearTimeout(this.reparseTimeout);
552
- }
553
- this.reparseTimeout = setTimeout(async () => {
554
- await this.reparseDocumentStylesheets();
555
- clearTimeout(this.reparseTimeout);
556
- }, 20);
557
- }
558
- async reparseDocumentStylesheets() {
559
- if (this.instanceServiceContainer.stylesheetService) {
560
- const styleElements = this.rootDesignItem.element.querySelectorAll('style');
561
- let i = 1;
562
- const intStyleSheets = [...styleElements].map(x => ({ name: '&lt;style&gt; #' + (x.id ? x.id + '(' + i++ + ')' : i++), content: DesignItem.GetDesignItem(x).content, designItem: DesignItem.GetDesignItem(x) }));
563
- await this.instanceServiceContainer.stylesheetService.setDocumentStylesheets(intStyleSheets);
564
- }
565
- }
566
- addDesignItems(designItems) {
567
- if (designItems) {
568
- for (let di of designItems) {
569
- this.rootDesignItem._insertChildInternal(di);
570
- }
571
- }
572
- const intializationService = this.serviceContainer.intializationService;
573
- if (intializationService) {
574
- for (let di of designItems)
575
- intializationService.init(di);
576
- }
577
- this.snapLines.clearSnaplines();
578
- }
579
- _dragOverExtensionItem;
580
- _onDragEnter(event) {
581
- this._fillCalculationrects();
582
- event.preventDefault();
583
- const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
584
- if (hasTransferDataBindingObject) {
585
- const ddService = this.serviceContainer.bindableObjectDragDropService;
586
- if (ddService) {
587
- const el = this.getElementAtPoint({ x: event.x, y: event.y });
588
- if (this._lastDdElement != el) {
589
- ddService.dragLeave(this, event, this._lastDdElement);
590
- ddService.dragEnter(this, event, el);
591
- this._lastDdElement = el;
592
- }
593
- }
594
- else {
595
- this._lastDdElement = null;
596
- }
597
- }
598
- else {
599
- this._lastDdElement = null;
600
- }
601
- }
602
- _onDragLeave(event) {
603
- this._fillCalculationrects();
604
- event.preventDefault();
605
- this._canvas.classList.remove('dragFileActive');
606
- if (this._dragOverExtensionItem) {
607
- this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
608
- this._dragOverExtensionItem = null;
609
- }
610
- }
611
- _lastDdElement = null;
612
- _onDragOver(event) {
613
- event.preventDefault();
614
- /*if (this.alignOnSnap) {
615
- this.snapLines.calculateSnaplines(this.instanceServiceContainer.selectionService.selectedElements);
616
- //TODO: fix this following code...
617
- const currentPoint = this.getDesignerMousepoint(event);
618
- let containerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this.rootDesignItem))
619
- containerService.finishPlace(this, this.rootDesignItem, this._initialPoint, currentPoint, this.instanceServiceContainer.selectionService.selectedElements);
620
- }*/
621
- this._fillCalculationrects();
622
- if (event.dataTransfer.types.length > 0 && event.dataTransfer.types[0] == 'Files') {
623
- const ddService = this.serviceContainer.dragDropService;
624
- if (ddService) {
625
- const effect = ddService.dragOver(event);
626
- event.dataTransfer.dropEffect = effect;
627
- if (effect !== 'none')
628
- this._canvas.classList.add('dragFileActive');
629
- }
630
- }
631
- else {
632
- const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
633
- if (hasTransferDataBindingObject) {
634
- const ddService = this.serviceContainer.bindableObjectDragDropService;
635
- if (ddService) {
636
- const el = this.getElementAtPoint({ x: event.x, y: event.y });
637
- if (this._lastDdElement != el) {
638
- ddService.dragLeave(this, event, this._lastDdElement);
639
- ddService.dragEnter(this, event, el);
640
- this._lastDdElement = el;
641
- }
642
- const effect = ddService.dragOver(this, event, el);
643
- event.dataTransfer.dropEffect = effect;
644
- }
645
- }
646
- else {
647
- let [newContainer] = this._getPossibleContainerForDrop(event);
648
- if (this._dragOverExtensionItem != newContainer) {
649
- this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
650
- this.extensionManager.applyExtension(newContainer, ExtensionType.ContainerExternalDragOver, event);
651
- this._dragOverExtensionItem = newContainer;
652
- }
653
- else {
654
- this.extensionManager.refreshExtension(newContainer, ExtensionType.ContainerExternalDragOver, event);
655
- }
656
- }
657
- }
658
- }
659
- _getPossibleContainerForDrop(event) {
660
- let newContainerElementDesignItem = null;
661
- let newContainerService = null;
662
- const elementsFromPoint = this.elementsFromPoint(event.x, event.y);
663
- for (let e of elementsFromPoint) {
664
- if (e == this.rootDesignItem.element) {
665
- newContainerElementDesignItem = this.rootDesignItem;
666
- const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
667
- newContainerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
668
- break;
669
- }
670
- else if (false) {
671
- //check we don't try to move a item over one of its children..
672
- }
673
- else {
674
- newContainerElementDesignItem = DesignItem.GetOrCreateDesignItem(e, this.serviceContainer, this.instanceServiceContainer);
675
- const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
676
- newContainerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
677
- if (newContainerService) {
678
- if (newContainerService.canEnterByDrop(newContainerElementDesignItem)) {
679
- break;
680
- }
681
- else {
682
- newContainerElementDesignItem = null;
683
- newContainerService = null;
684
- continue;
685
- }
686
- }
687
- }
688
- }
689
- return [newContainerElementDesignItem, newContainerService];
690
- }
691
- async _onDrop(event) {
692
- this._lastDdElement = null;
693
- event.preventDefault();
694
- this._canvas.classList.remove('dragFileActive');
695
- this._fillCalculationrects();
696
- if (event.dataTransfer.files?.length > 0) {
697
- const ddService = this.serviceContainer.dragDropService;
698
- if (ddService) {
699
- ddService.drop(this, event);
700
- }
701
- }
702
- else {
703
- const transferDataBindingObject = event.dataTransfer.getData(dragDropFormatNameBindingObject);
704
- if (transferDataBindingObject) {
705
- const bo = JSON.parse(transferDataBindingObject);
706
- const ddService = this.serviceContainer.bindableObjectDragDropService;
707
- if (ddService) {
708
- const el = this.getElementAtPoint({ x: event.x, y: event.y });
709
- const effect = ddService.drop(this, event, bo, el);
710
- event.dataTransfer.dropEffect = effect;
711
- }
712
- }
713
- else {
714
- if (this._dragOverExtensionItem) {
715
- this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
716
- this._dragOverExtensionItem = null;
717
- }
718
- let [newContainer] = this._getPossibleContainerForDrop(event);
719
- if (!newContainer)
720
- newContainer = this.rootDesignItem;
721
- this._fillCalculationrects();
722
- //TODO : we need to use container service for adding to element, so also grid and flexbox work correct
723
- const transferData = event.dataTransfer.getData(dragDropFormatNameElementDefinition);
724
- const elementDefinition = JSON.parse(transferData);
725
- const di = await this.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(elementDefinition, this.serviceContainer, this.instanceServiceContainer));
726
- const grp = di.openGroup("Insert of &lt;" + di.name + "&gt;");
727
- di.setStyle('position', 'absolute');
728
- const containerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainer, getComputedStyle(newContainer.element)));
729
- containerService.enterContainer(newContainer, [di]);
730
- const containerPos = this.getNormalizedElementCoordinates(newContainer.element);
731
- const evCoord = this.getNormalizedEventCoordinates(event);
732
- const pos = { x: evCoord.x - containerPos.x, y: evCoord.y - containerPos.y };
733
- containerService.place(event, this, newContainer, { x: 0, y: 0 }, { x: 0, y: 0 }, pos, [di]);
734
- containerService.finishPlace(event, this, newContainer, { x: 0, y: 0 }, { x: 0, y: 0 }, pos, [di]);
735
- this.instanceServiceContainer.undoService.execute(new InsertAction(newContainer, newContainer.childCount, di));
736
- requestAnimationFrame(() => {
737
- this.instanceServiceContainer.selectionService.setSelectedElements([di]);
738
- grp.commit();
739
- });
740
- }
741
- }
742
- }
743
- showDesignItemContextMenu(designItem, event) {
744
- this._currentContextMenu?.close();
745
- const mnuItems = [];
746
- for (let cme of this.serviceContainer.designerContextMenuExtensions) {
747
- if (cme.shouldProvideContextmenu(event, this, designItem, 'designer')) {
748
- mnuItems.push(...cme.provideContextMenuItems(event, this, designItem));
749
- }
750
- }
751
- let ctxMenu = new ContextMenu(mnuItems, null);
752
- ctxMenu.display(event);
753
- return ctxMenu;
754
- }
755
- _onDblClick(event) {
756
- event.preventDefault();
757
- this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection, ExtensionType.Doubleclick, event);
758
- }
759
- onKeyUp(event) {
760
- if (event.composedPath().indexOf(this.eatEvents) >= 0)
761
- return;
762
- event.preventDefault();
763
- }
764
- onKeyDown(event) {
765
- if (event.composedPath().indexOf(this.eatEvents) >= 0)
766
- return;
767
- if ((event.ctrlKey || event.metaKey) && event.key === 'z' && !event.shiftKey)
768
- this.executeCommand({ type: CommandType.undo, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
769
- else if ((event.ctrlKey || event.metaKey) && event.key === 'z' && event.shiftKey)
770
- this.executeCommand({ type: CommandType.redo, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
771
- else if ((event.ctrlKey || event.metaKey) && event.key === 'y')
772
- this.executeCommand({ type: CommandType.redo, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
773
- else if ((event.ctrlKey || event.metaKey) && event.key === 'a')
774
- this.executeCommand({ type: CommandType.selectAll, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
775
- else if ((event.ctrlKey || event.metaKey) && event.key === 'c')
776
- this.executeCommand({ type: CommandType.copy, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
777
- else if ((event.ctrlKey || event.metaKey) && event.key === 'v')
778
- this.executeCommand({ type: CommandType.paste, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
779
- else if ((event.ctrlKey || event.metaKey) && event.key === 'x')
780
- this.executeCommand({ type: CommandType.cut, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
781
- else {
782
- let primarySelection = this.instanceServiceContainer.selectionService.primarySelection;
783
- if (!primarySelection) {
784
- return;
785
- }
786
- let moveOffset = 1;
787
- if (event.shiftKey)
788
- moveOffset = 10;
789
- switch (event.key) {
790
- case 'Delete':
791
- case 'Backspace':
792
- this.executeCommand({ type: CommandType.delete, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
793
- break;
794
- case 'ArrowUp':
795
- {
796
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('top', parseInt(x.element.style.top) - moveOffset + 'px'));
797
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
798
- }
799
- break;
800
- case 'ArrowDown':
801
- {
802
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('top', parseInt(x.element.style.top) + moveOffset + 'px'));
803
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
804
- }
805
- break;
806
- case 'ArrowLeft':
807
- {
808
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('left', parseInt(x.element.style.left) - moveOffset + 'px'));
809
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
810
- }
811
- break;
812
- case 'ArrowRight':
813
- {
814
- this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('left', parseInt(x.element.style.left) + moveOffset + 'px'));
815
- this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
816
- }
817
- break;
818
- }
819
- }
820
- event.preventDefault();
821
- }
822
- /**
823
- * Converts the Event x/y coordinates, to the mouse position on the canvas
824
- */
825
- getNormalizedEventCoordinates(event) {
826
- const offsetOfOuterX = (event.clientX - this.outerRect.x) / this.zoomFactor;
827
- const offsetOfCanvasX = this.containerBoundingRect.x - this.outerRect.x;
828
- const offsetOfOuterY = (event.clientY - this.outerRect.y) / this.zoomFactor;
829
- const offsetOfCanvasY = this.containerBoundingRect.y - this.outerRect.y;
830
- return {
831
- x: offsetOfOuterX - offsetOfCanvasX / this.zoomFactor,
832
- y: offsetOfOuterY - offsetOfCanvasY / this.zoomFactor
833
- };
834
- }
835
- /**
836
- * Converts the Event x/y coordinates, to the mouse position in the viewport
837
- */
838
- getViewportCoordinates(event) {
839
- return {
840
- x: (event.clientX - this.outerRect.x),
841
- y: (event.clientY - this.outerRect.y)
842
- };
843
- }
844
- getNormalizedTextNodeCoordinates(element, ignoreScalefactor) {
845
- let range = document.createRange();
846
- range.selectNodeContents(element);
847
- let targetRect = range.getBoundingClientRect();
848
- return { x: (targetRect.x - this.containerBoundingRect.x) / (ignoreScalefactor ? 1 : this.scaleFactor), y: (targetRect.y - this.containerBoundingRect.y) / (ignoreScalefactor ? 1 : this.scaleFactor), width: targetRect.width / (ignoreScalefactor ? 1 : this.scaleFactor), height: targetRect.height / (ignoreScalefactor ? 1 : this.scaleFactor) };
849
- }
850
- getNormalizedElementCoordinates(element, ignoreScalefactor) {
851
- if (element.nodeType == NodeType.TextNode) {
852
- return this.getNormalizedTextNodeCoordinates(element, ignoreScalefactor);
853
- }
854
- const targetRect = element.getBoundingClientRect();
855
- return { x: (targetRect.x - this.containerBoundingRect.x) / (ignoreScalefactor ? 1 : this.scaleFactor), y: (targetRect.y - this.containerBoundingRect.y) / (ignoreScalefactor ? 1 : this.scaleFactor), width: targetRect.width / (ignoreScalefactor ? 1 : this.scaleFactor), height: targetRect.height / (ignoreScalefactor ? 1 : this.scaleFactor) };
856
- }
857
- getNormalizedElementCoordinatesAndRealSizes(element) {
858
- let ret = this.getNormalizedElementCoordinates(element);
859
- const st = getComputedStyle(element);
860
- let realWidth = ret.width;
861
- let realHeight = ret.height;
862
- if (st.boxSizing != 'border-box') {
863
- realWidth = realWidth - (parseFloat(st.borderLeft) + parseFloat(st.paddingLeft) + parseFloat(st.paddingRight) + parseFloat(st.borderRight));
864
- realHeight = realHeight - (parseFloat(st.borderTop) + parseFloat(st.paddingTop) + parseFloat(st.paddingBottom) + parseFloat(st.borderBottom));
865
- }
866
- return { ...ret, realWidth, realHeight };
867
- }
868
- getNormalizedOffsetInElement(event, element) {
869
- const normEvt = this.getNormalizedEventCoordinates(event);
870
- const normEl = this.getNormalizedElementCoordinates(element);
871
- return { x: normEvt.x - normEl.x, y: normEvt.y - normEl.y };
872
- }
873
- //todo: remove
874
- elementFromPoint(x, y) {
875
- let elements = this.shadowRoot.elementsFromPoint(x, y);
876
- let element = elements[0];
877
- if (element === this.clickOverlay)
878
- element = elements[1];
879
- if (element === this.clickOverlay)
880
- element = this._canvas;
881
- return element;
882
- }
883
- elementsFromPoint(x, y) {
884
- let retVal = [];
885
- let elements = this.shadowRoot.elementsFromPoint(x, y);
886
- for (let e of elements) {
887
- if (e == this.clickOverlay)
888
- continue;
889
- if (e == this.overlayLayer)
890
- continue;
891
- if (e.getRootNode() !== this.shadowRoot)
892
- continue;
893
- if (e == this._outercanvas2)
894
- break;
895
- retVal.push(e);
896
- if (e === this._canvas)
897
- break;
898
- }
899
- return retVal;
900
- }
901
- getElementAtPoint(point, ignoreElementCallback) {
902
- const elements = this.shadowRoot.elementsFromPoint(point.x, point.y);
903
- let currentElement = null;
904
- for (let i = 0; i < elements.length; i++) {
905
- currentElement = elements[i];
906
- if (currentElement == this._outercanvas2) {
907
- currentElement = null;
908
- break;
909
- }
910
- if (currentElement == this.clickOverlay) {
911
- currentElement = null;
912
- continue;
913
- }
914
- if (currentElement == this.overlayLayer) {
915
- currentElement = null;
916
- continue;
917
- }
918
- if (ignoreElementCallback && ignoreElementCallback(currentElement)) {
919
- currentElement = null;
920
- continue;
921
- }
922
- if (currentElement.getRootNode() !== this.shadowRoot) {
923
- currentElement = null;
924
- continue;
925
- }
926
- break;
927
- }
928
- return currentElement;
929
- }
930
- showHoverExtension(element, event) {
931
- const currentDesignItem = DesignItem.GetOrCreateDesignItem(element, this.serviceContainer, this.instanceServiceContainer);
932
- if (this._lastHoverDesignItem != currentDesignItem) {
933
- if (this._lastHoverDesignItem)
934
- this.extensionManager.removeExtension(this._lastHoverDesignItem, ExtensionType.MouseOver);
935
- if (currentDesignItem && currentDesignItem != this.rootDesignItem && DomHelper.getHost(element.parentNode) !== this.overlayLayer)
936
- this.extensionManager.applyExtension(currentDesignItem, ExtensionType.MouseOver, event);
937
- this._lastHoverDesignItem = currentDesignItem;
938
- }
939
- }
940
- _pointerEventHandler(event, forceElement = null) {
941
- if (!this.serviceContainer)
942
- return;
943
- this._fillCalculationrects();
944
- if (this._pointerextensions) {
945
- for (let pe of this._pointerextensions)
946
- pe.refresh(event);
947
- }
948
- if (event.composedPath().indexOf(this.eatEvents) >= 0)
949
- return;
950
- let currentElement;
951
- if (forceElement)
952
- currentElement = forceElement;
953
- else {
954
- currentElement = this.serviceContainer.elementAtPointService.getElementAtPoint(this, { x: event.x, y: event.y });
955
- if (!currentElement) {
956
- currentElement = this._canvas;
957
- }
958
- else if (this._enableSelectTextNodesOnClick) {
959
- const norm = this.getNormalizedEventCoordinates(event);
960
- for (let n of currentElement.childNodes) {
961
- if (n.nodeType == NodeType.TextNode) {
962
- let nc = this.getNormalizedElementCoordinates(n);
963
- if (nc.x <= norm.x && nc.x + nc.width >= norm.x && nc.y <= norm.y && nc.y + nc.height >= norm.y) {
964
- currentElement = n;
965
- break;
966
- }
967
- }
968
- }
969
- }
970
- }
971
- if (this._activeTool) {
972
- this._activeTool.pointerEventHandler(this, event, currentElement);
973
- return;
974
- }
975
- this.clickOverlay.style.cursor = this._canvas.style.cursor;
976
- const currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, this.serviceContainer, this.instanceServiceContainer);
977
- this.showHoverExtension(currentDesignItem.element, event);
978
- //TODO: needed ??
979
- if (currentElement && DomHelper.getHost(currentElement.parentNode) === this.overlayLayer) {
980
- if (this.eatEvents)
981
- return;
982
- currentElement = this.instanceServiceContainer.selectionService.primarySelection?.element ?? this._canvas;
983
- }
984
- let tool = this.serviceContainer.globalContext.tool ?? this.serviceContainer.designerTools.get(NamedTools.Pointer);
985
- tool.pointerEventHandler(this, event, currentElement);
986
- this._canvas.style.cursor = tool.cursor;
987
- }
988
- captureActiveTool(tool) {
989
- this._activeTool = tool;
990
- }
991
- releaseActiveTool() {
992
- this._activeTool = null;
993
- }
994
- _fillCalculationrects() {
995
- this.containerBoundingRect = this._canvasContainer.getBoundingClientRect();
996
- this.outerRect = this._outercanvas2.getBoundingClientRect();
997
- }
998
- addOverlay(element, overlayLayer = OverlayLayer.Normal) {
999
- this.overlayLayer.addOverlay(element, overlayLayer);
1000
- }
1001
- removeOverlay(element) {
1002
- this.overlayLayer.removeOverlay(element);
1003
- }
1004
- zoomOntoRectangle(startPoint, endPoint) {
1005
- let rect = {
1006
- x: startPoint.x < endPoint.x ? startPoint.x : endPoint.x,
1007
- y: startPoint.y < endPoint.y ? startPoint.y : endPoint.y,
1008
- width: Math.abs(startPoint.x - endPoint.x),
1009
- height: Math.abs(startPoint.y - endPoint.y),
1010
- };
1011
- let zFactorWidth = this.outerRect.width / rect.width;
1012
- let zFactorHeight = this.outerRect.height / rect.height;
1013
- let zoomFactor = zFactorWidth >= zFactorHeight ? zFactorHeight : zFactorWidth;
1014
- let rectCenter = {
1015
- x: (rect.width / 2) + rect.x,
1016
- y: (rect.height / 2) + rect.y
1017
- };
1018
- this.zoomPoint(rectCenter, zoomFactor);
1019
- }
1020
- zoomPoint(canvasPoint, newZoom) {
1021
- this.zoomFactor = newZoom;
1022
- const newCanvasOffset = {
1023
- x: -(canvasPoint.x) + this.outerRect.width / this.zoomFactor / 2,
1024
- y: -(canvasPoint.y) + this.outerRect.height / this.zoomFactor / 2
1025
- };
1026
- this.canvasOffset = newCanvasOffset;
1027
- }
1028
- zoomConvertEventToViewPortCoordinates(point) {
1029
- const offsetOfCanvasX = this.containerBoundingRect.x - this.outerRect.x;
1030
- const offsetOfCanvasY = this.containerBoundingRect.y - this.outerRect.y;
1031
- return {
1032
- x: (point.x + offsetOfCanvasX / this.zoomFactor) * this.zoomFactor,
1033
- y: (point.y + offsetOfCanvasY / this.zoomFactor) * this.zoomFactor
1034
- };
1035
- }
1036
- zoomTowardsPoint(canvasPoint, newZoom) {
1037
- const scaleChange = newZoom / this.zoomFactor;
1038
- const point = this.zoomConvertEventToViewPortCoordinates(canvasPoint);
1039
- const newCanvasOffset = {
1040
- x: -(point.x * (scaleChange - 1) + scaleChange * -this.canvasOffsetUnzoomed.x),
1041
- y: -(point.y * (scaleChange - 1) + scaleChange * -this.canvasOffsetUnzoomed.y)
1042
- };
1043
- this.zoomFactor = newZoom;
1044
- this.canvasOffsetUnzoomed = newCanvasOffset;
1045
- }
1046
- }
1047
- customElements.define('node-projects-designer-canvas', DesignerCanvas);
164
+ </div>`;
165
+ extensionManager;
166
+ _pointerextensions;
167
+ _lastCopiedPrimaryItem;
168
+ constructor() {
169
+ super();
170
+ this._restoreCachedInititalValues();
171
+ this._canvas = this._getDomElement('node-projects-designer-canvas-canvas');
172
+ this._canvasContainer = this._getDomElement('node-projects-designer-canvas-canvasContainer');
173
+ this._outercanvas2 = this._getDomElement('node-projects-designer-canvas-outercanvas2');
174
+ this.clickOverlay = this._getDomElement('node-projects-designer-canvas-clickOverlay');
175
+ this.onKeyDown = this.onKeyDown.bind(this);
176
+ this.onKeyUp = this.onKeyUp.bind(this);
177
+ this._onDblClick = this._onDblClick.bind(this);
178
+ this._pointerEventHandler = this._pointerEventHandler.bind(this);
179
+ this.clickOverlay.oncontextmenu = (e) => e.preventDefault();
180
+ }
181
+ get designerWidth() {
182
+ return this._canvasContainer.style.width;
183
+ }
184
+ set designerWidth(value) {
185
+ this._canvasContainer.style.width = value;
186
+ this._zoomFactorChanged();
187
+ }
188
+ get designerHeight() {
189
+ return this._canvasContainer.style.height;
190
+ }
191
+ set designerHeight(value) {
192
+ this._canvasContainer.style.height = value;
193
+ this._zoomFactorChanged();
194
+ }
195
+ getDesignSurfaceDimensions() {
196
+ let ret = { width: null, height: null };
197
+ const cs = getComputedStyle(this._canvasContainer);
198
+ if (this._canvasContainer.style.width)
199
+ ret.width = parseFloat(cs.width);
200
+ if (this._canvasContainer.style.height)
201
+ ret.height = parseFloat(cs.height);
202
+ return ret;
203
+ }
204
+ get designerOffsetWidth() {
205
+ return this._canvasContainer.offsetWidth;
206
+ }
207
+ get designerOffsetHeight() {
208
+ return this._canvasContainer.offsetHeight;
209
+ }
210
+ set additionalStyles(value) {
211
+ this._additionalStyle = value;
212
+ this.applyAllStyles();
213
+ }
214
+ get additionalStyles() {
215
+ return this._additionalStyle;
216
+ }
217
+ applyAllStyles() {
218
+ let styles = [this.constructor.style];
219
+ if (this._additionalStyle)
220
+ styles.push(cssFromString(AbstractStylesheetService.buildPatchedStyleSheet(this._additionalStyle)));
221
+ if (this.instanceServiceContainer.stylesheetService) {
222
+ styles.push(...this.instanceServiceContainer.stylesheetService
223
+ .getStylesheets()
224
+ .map(x => cssFromString(AbstractStylesheetService.buildPatchedStyleSheet([cssFromString(x.content)]))));
225
+ }
226
+ this.shadowRoot.adoptedStyleSheets = styles;
227
+ }
228
+ /* --- start IUiCommandHandler --- */
229
+ async executeCommand(command) {
230
+ const modelCommandService = this.serviceContainer.modelCommandService;
231
+ if (modelCommandService) {
232
+ let handeled = await modelCommandService.executeCommand(this, command);
233
+ if (handeled != null)
234
+ return;
235
+ }
236
+ switch (command.type) {
237
+ case CommandType.screenshot:
238
+ {
239
+ if (!Screenshot.screenshotsEnabled) {
240
+ alert("you need to select current tab in next browser dialog, or screenshots will not work correctly");
241
+ }
242
+ if (!this.instanceServiceContainer.selectionService.primarySelection) {
243
+ this.zoomToFit();
244
+ this.disableBackgroud();
245
+ const el = this.rootDesignItem.element;
246
+ const sel = this.instanceServiceContainer.selectionService.selectedElements;
247
+ this.instanceServiceContainer.selectionService.setSelectedElements(null);
248
+ await sleep(100);
249
+ const screenshot = await Screenshot.takeScreenshot(el, el.clientWidth, el.clientHeight);
250
+ await exportData(dataURItoBlob(screenshot), "screenshot.png");
251
+ this.instanceServiceContainer.selectionService.setSelectedElements(sel);
252
+ this.enableBackground();
253
+ }
254
+ else {
255
+ this.disableBackgroud();
256
+ const el = this.instanceServiceContainer.selectionService.primarySelection.element;
257
+ const sel = this.instanceServiceContainer.selectionService.selectedElements;
258
+ this.instanceServiceContainer.selectionService.setSelectedElements(null);
259
+ await sleep(100);
260
+ const screenshot = await Screenshot.takeScreenshot(el, el.clientWidth, el.clientHeight);
261
+ await exportData(dataURItoBlob(screenshot), "screenshot.png");
262
+ this.instanceServiceContainer.selectionService.setSelectedElements(sel);
263
+ this.enableBackground();
264
+ }
265
+ }
266
+ break;
267
+ case CommandType.setTool:
268
+ {
269
+ this.serviceContainer.globalContext.tool = this.serviceContainer.designerTools.get(command.parameter);
270
+ }
271
+ break;
272
+ case CommandType.setStrokeColor:
273
+ {
274
+ this.serviceContainer.globalContext.strokeColor = command.parameter;
275
+ }
276
+ break;
277
+ case CommandType.setFillBrush:
278
+ {
279
+ this.serviceContainer.globalContext.fillBrush = command.parameter;
280
+ }
281
+ break;
282
+ case CommandType.setStrokeThickness:
283
+ {
284
+ this.serviceContainer.globalContext.strokeThickness = command.parameter;
285
+ }
286
+ break;
287
+ case CommandType.delete:
288
+ this.handleDeleteCommand();
289
+ break;
290
+ case CommandType.undo:
291
+ this.instanceServiceContainer.undoService.undo();
292
+ break;
293
+ case CommandType.redo:
294
+ this.instanceServiceContainer.undoService.redo();
295
+ break;
296
+ case CommandType.copy:
297
+ this.handleCopyCommand();
298
+ break;
299
+ case CommandType.cut:
300
+ this.handleCopyCommand();
301
+ this.handleDeleteCommand();
302
+ break;
303
+ case CommandType.paste:
304
+ this.handlePasteCommand(command.altKey == true);
305
+ break;
306
+ case CommandType.selectAll:
307
+ this.handleSelectAll();
308
+ break;
309
+ }
310
+ }
311
+ disableBackgroud() {
312
+ this._backgroundImage = this._canvas.style.backgroundImage;
313
+ this._canvas.style.backgroundImage = 'none';
314
+ }
315
+ enableBackground() {
316
+ this._canvas.style.backgroundImage = this._backgroundImage;
317
+ }
318
+ zoomToFit() {
319
+ const autoZomOffset = 10;
320
+ let maxX = 0, maxY = 0, minX = 0, minY = 0;
321
+ this.canvasOffset = { x: 0, y: 0 };
322
+ this.zoomFactor = 1;
323
+ for (let n of DomHelper.getAllChildNodes(this.rootDesignItem.element)) {
324
+ if (n instanceof Element) {
325
+ const rect = n.getBoundingClientRect();
326
+ minX = minX < rect.x ? minX : rect.x;
327
+ minY = minY < rect.y ? minY : rect.y;
328
+ maxX = maxX > rect.x + rect.width + autoZomOffset ? maxX : rect.x + rect.width + autoZomOffset;
329
+ maxY = maxY > rect.y + rect.height + autoZomOffset ? maxY : rect.y + rect.height + autoZomOffset;
330
+ }
331
+ }
332
+ const cvRect = this.getBoundingClientRect();
333
+ maxX -= cvRect.x;
334
+ maxY -= cvRect.y;
335
+ let scaleX = cvRect.width / (maxX / this.zoomFactor);
336
+ let scaleY = cvRect.height / (maxY / this.zoomFactor);
337
+ const dimensions = this.getDesignSurfaceDimensions();
338
+ if (dimensions.width)
339
+ scaleX = cvRect.width / dimensions.width;
340
+ if (dimensions.height)
341
+ scaleY = cvRect.height / dimensions.height;
342
+ let fak = scaleX < scaleY ? scaleX : scaleY;
343
+ if (!isNaN(fak))
344
+ this.zoomFactor = fak;
345
+ //this._zoomInput.value = Math.round(this.zoomFactor * 100) + '%';
346
+ }
347
+ canExecuteCommand(command) {
348
+ const modelCommandService = this.serviceContainer.modelCommandService;
349
+ if (modelCommandService) {
350
+ let handeled = modelCommandService.canExecuteCommand(this, command);
351
+ if (handeled !== null)
352
+ return handeled;
353
+ }
354
+ if (command.type === CommandType.undo) {
355
+ return this.instanceServiceContainer.undoService.canUndo();
356
+ }
357
+ if (command.type === CommandType.redo) {
358
+ return this.instanceServiceContainer.undoService.canRedo();
359
+ }
360
+ if (command.type === CommandType.setTool) {
361
+ return this.serviceContainer.designerTools.has(command.parameter);
362
+ }
363
+ return true;
364
+ }
365
+ /* --- end IUiCommandHandler --- */
366
+ handleSelectAll() {
367
+ this.instanceServiceContainer.selectionService.setSelectedElements(Array.from(this.rootDesignItem.children()));
368
+ }
369
+ async handleCopyCommand() {
370
+ this._lastCopiedPrimaryItem = this.instanceServiceContainer.selectionService.primarySelection;
371
+ await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements);
372
+ }
373
+ async handlePasteCommand(disableRestoreOfPositions) {
374
+ const [designItems, positions] = await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer, this.instanceServiceContainer);
375
+ let grp = this.rootDesignItem.openGroup("Insert");
376
+ let pasteContainer = this.rootDesignItem;
377
+ let pCon = this._lastCopiedPrimaryItem?.parent ?? this.instanceServiceContainer.selectionService.primarySelection;
378
+ while (pCon != null) {
379
+ const containerStyle = getComputedStyle(pCon.element);
380
+ let newContainerService;
381
+ newContainerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(pCon, containerStyle));
382
+ if (newContainerService) {
383
+ if (newContainerService.canEnter(pCon, designItems)) {
384
+ pasteContainer = pCon;
385
+ break;
386
+ }
387
+ else {
388
+ pCon = pCon.parent;
389
+ continue;
390
+ }
391
+ }
392
+ }
393
+ if (designItems) {
394
+ let containerPos = this.getNormalizedElementCoordinates(pasteContainer.element);
395
+ for (let i = 0; i < designItems.length; i++) {
396
+ let di = designItems[i];
397
+ let pos = positions ? positions[i] : null;
398
+ this.instanceServiceContainer.undoService.execute(new InsertAction(pasteContainer, pasteContainer.childCount, di));
399
+ if (!disableRestoreOfPositions && pos && di.nodeType == NodeType.Element) {
400
+ di.setStyle('left', (pos.x - containerPos.x) + 'px');
401
+ di.setStyle('top', (pos.y - containerPos.y) + 'px');
402
+ }
403
+ }
404
+ const intializationService = this.serviceContainer.intializationService;
405
+ if (intializationService) {
406
+ for (let di of designItems)
407
+ intializationService.init(di);
408
+ }
409
+ this.instanceServiceContainer.selectionService.setSelectedElements(designItems);
410
+ }
411
+ grp.commit();
412
+ this.snapLines.clearSnaplines();
413
+ }
414
+ handleDeleteCommand() {
415
+ let items = this.instanceServiceContainer.selectionService.selectedElements;
416
+ this.instanceServiceContainer.undoService.execute(new DeleteAction(items));
417
+ this.instanceServiceContainer.selectionService.setSelectedElements(null);
418
+ }
419
+ initialize(serviceContainer) {
420
+ this.serviceContainer = serviceContainer;
421
+ this.instanceServiceContainer = new InstanceServiceContainer(this);
422
+ const undoService = this.serviceContainer.getLastService('undoService');
423
+ if (undoService)
424
+ this.instanceServiceContainer.register("undoService", undoService(this));
425
+ const selectionService = this.serviceContainer.getLastService('selectionService');
426
+ if (selectionService) {
427
+ this.instanceServiceContainer.register("selectionService", selectionService(this));
428
+ this.instanceServiceContainer.selectionService.onSelectionChanged.on(() => {
429
+ this._lastCopiedPrimaryItem = null;
430
+ });
431
+ }
432
+ const designItemDocumentPositionService = this.serviceContainer.getLastService('designItemDocumentPositionService');
433
+ if (designItemDocumentPositionService) {
434
+ this.instanceServiceContainer.register("designItemDocumentPositionService", designItemDocumentPositionService(this));
435
+ }
436
+ this.rootDesignItem = DesignItem.GetOrCreateDesignItem(this._canvas, this.serviceContainer, this.instanceServiceContainer);
437
+ const contentService = this.serviceContainer.getLastService('contentService');
438
+ if (contentService) {
439
+ this.instanceServiceContainer.register("contentService", contentService(this));
440
+ }
441
+ const stylesheetService = this.serviceContainer.getLastService('stylesheetService');
442
+ if (stylesheetService) {
443
+ const instance = stylesheetService(this);
444
+ this.instanceServiceContainer.register("stylesheetService", instance);
445
+ this.instanceServiceContainer.stylesheetService.stylesheetChanged.on((ss) => {
446
+ if (ss.changeSource == 'extern') {
447
+ const ssca = new StylesheetChangedAction(this.instanceServiceContainer.stylesheetService, ss.name, ss.newStyle, ss.oldStyle);
448
+ this.instanceServiceContainer.undoService.execute(ssca);
449
+ }
450
+ this.applyAllStyles();
451
+ });
452
+ this.instanceServiceContainer.stylesheetService.stylesheetsChanged.on(() => {
453
+ this.applyAllStyles();
454
+ });
455
+ }
456
+ this.extensionManager = new ExtensionManager(this);
457
+ this.overlayLayer = new OverlayLayerView(serviceContainer);
458
+ this.overlayLayer.style.pointerEvents = 'none';
459
+ this.overlayLayer.style.setProperty('margin', '0', 'important');
460
+ this.overlayLayer.style.setProperty('padding', '0', 'important');
461
+ this.overlayLayer.style.setProperty('border', 'none', 'important');
462
+ this.clickOverlay.appendChild(this.overlayLayer);
463
+ this.snapLines = new Snaplines(this.overlayLayer);
464
+ this.snapLines.initialize(this.rootDesignItem);
465
+ if (this.serviceContainer.designerPointerExtensions)
466
+ for (let pe of this.serviceContainer.designerPointerExtensions) {
467
+ if (!this._pointerextensions)
468
+ this._pointerextensions = [];
469
+ this._pointerextensions.push(pe.getExtension(this));
470
+ }
471
+ if (this.children) {
472
+ let children = this.children;
473
+ if (this.children.length == 1 && this.children[0] instanceof HTMLSlotElement) {
474
+ children = this.children[0].assignedElements();
475
+ }
476
+ const parser = this.serviceContainer.getLastServiceWhere('htmlParserService', x => x.constructor == DefaultHtmlParserService);
477
+ this.addDesignItems(parser.createDesignItems(children, this.serviceContainer, this.instanceServiceContainer));
478
+ }
479
+ if (!this.serviceContainer.options.zoomDesignerBackground) {
480
+ requestAnimationFrame(() => {
481
+ this._resizeBackgroundGrid();
482
+ });
483
+ }
484
+ }
485
+ connectedCallback() {
486
+ if (!this._firstConnect) {
487
+ this._firstConnect = true;
488
+ this.clickOverlay.addEventListener(EventNames.PointerDown, this._pointerEventHandler);
489
+ this.clickOverlay.addEventListener(EventNames.PointerMove, this._pointerEventHandler);
490
+ this.clickOverlay.addEventListener(EventNames.PointerUp, this._pointerEventHandler);
491
+ this.clickOverlay.addEventListener(EventNames.DragEnter, event => this._onDragEnter(event));
492
+ this.clickOverlay.addEventListener(EventNames.DragLeave, event => this._onDragLeave(event));
493
+ this.clickOverlay.addEventListener(EventNames.DragOver, event => this._onDragOver(event));
494
+ this.clickOverlay.addEventListener(EventNames.Drop, event => this._onDrop(event));
495
+ this.clickOverlay.addEventListener(EventNames.KeyDown, this.onKeyDown, true);
496
+ this.clickOverlay.addEventListener(EventNames.KeyUp, this.onKeyUp, true);
497
+ this.clickOverlay.addEventListener(EventNames.DblClick, this._onDblClick, true);
498
+ }
499
+ }
500
+ _zoomFactorChanged(refreshExtensions = true) {
501
+ //a@ts-ignore
502
+ //this._canvasContainer.style.zoom = <any>this._zoomFactor;
503
+ //this._canvasContainer.style.transform = 'scale(' + this._zoomFactor+') translate(' + this._translate.x + ', '+this._translate.y+')';
504
+ //this._canvasContainer.style.transformOrigin = '0 0';
505
+ this._canvasContainer.style.bottom = this._outercanvas2.offsetHeight >= this._canvasContainer.offsetHeight ? '0' : '';
506
+ this._canvasContainer.style.right = this._outercanvas2.offsetWidth >= this._canvasContainer.offsetWidth ? '0' : '';
507
+ this._updateTransform();
508
+ this._fillCalculationrects();
509
+ this.onZoomFactorChanged.emit(this._zoomFactor);
510
+ if (refreshExtensions) {
511
+ this.extensionManager.refreshAllAppliedExtentions();
512
+ setTimeout(() => this.extensionManager.refreshAllAppliedExtentions(), 200);
513
+ }
514
+ if (!this.serviceContainer.options.zoomDesignerBackground)
515
+ this._resizeBackgroundGrid();
516
+ }
517
+ _resizeBackgroundGrid() {
518
+ const backgroundGridSize = 10;
519
+ const backgroundGridFactor = backgroundGridSize * 100 * 2;
520
+ let canvasWidth = this.canvas.getBoundingClientRect().width;
521
+ let backgroundGridZoom = backgroundGridFactor / canvasWidth;
522
+ this.canvas.style.backgroundSize = backgroundGridZoom.toString() + '%';
523
+ }
524
+ _updateTransform() {
525
+ this._scaleFactor = this._zoomFactor;
526
+ this._canvasContainer.style.transform = 'scale(' + this._zoomFactor + ') translate(' + (isNaN(this._canvasOffset.x) ? '0' : this._canvasOffset.x) + 'px, ' + (isNaN(this._canvasOffset.y) ? '0' : this._canvasOffset.y) + 'px)';
527
+ this._canvasContainer.style.transformOrigin = '0 0';
528
+ this.overlayLayer.style.transform = this._canvasContainer.style.transform;
529
+ this.overlayLayer.style.transformOrigin = '0 0';
530
+ this.snapLines.clearSnaplines();
531
+ }
532
+ setDesignItems(designItems) {
533
+ const setItemsAction = new SetDesignItemsAction(designItems, [...this.rootDesignItem.children()]);
534
+ this.instanceServiceContainer.undoService.execute(setItemsAction);
535
+ }
536
+ _internalSetDesignItems(designItems) {
537
+ this._fillCalculationrects();
538
+ this.overlayLayer.removeAllOverlays();
539
+ DomHelper.removeAllChildnodes(this.overlayLayer);
540
+ for (let i of [...this.rootDesignItem.children()])
541
+ this.rootDesignItem._removeChildInternal(i);
542
+ this.addDesignItems(designItems);
543
+ this.lazyTriggerReparseDocumentStylesheets();
544
+ this.instanceServiceContainer.contentService.onContentChanged.emit({ changeType: 'parsed' });
545
+ this.instanceServiceContainer.selectionService._withoutUndoSetSelectedElements(null);
546
+ setTimeout(() => this.extensionManager.refreshAllAppliedExtentions(), 50);
547
+ }
548
+ reparseTimeout;
549
+ lazyTriggerReparseDocumentStylesheets() {
550
+ if (this.reparseTimeout) {
551
+ clearTimeout(this.reparseTimeout);
552
+ }
553
+ this.reparseTimeout = setTimeout(async () => {
554
+ await this.reparseDocumentStylesheets();
555
+ clearTimeout(this.reparseTimeout);
556
+ }, 20);
557
+ }
558
+ async reparseDocumentStylesheets() {
559
+ if (this.instanceServiceContainer.stylesheetService) {
560
+ const styleElements = this.rootDesignItem.element.querySelectorAll('style');
561
+ let i = 1;
562
+ const intStyleSheets = [...styleElements].map(x => ({ name: '&lt;style&gt; #' + (x.id ? x.id + '(' + i++ + ')' : i++), content: DesignItem.GetDesignItem(x).content, designItem: DesignItem.GetDesignItem(x) }));
563
+ await this.instanceServiceContainer.stylesheetService.setDocumentStylesheets(intStyleSheets);
564
+ }
565
+ }
566
+ addDesignItems(designItems) {
567
+ if (designItems) {
568
+ for (let di of designItems) {
569
+ this.rootDesignItem._insertChildInternal(di);
570
+ }
571
+ }
572
+ const intializationService = this.serviceContainer.intializationService;
573
+ if (intializationService) {
574
+ for (let di of designItems)
575
+ intializationService.init(di);
576
+ }
577
+ this.snapLines.clearSnaplines();
578
+ }
579
+ _dragOverExtensionItem;
580
+ _onDragEnter(event) {
581
+ this._fillCalculationrects();
582
+ event.preventDefault();
583
+ const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
584
+ if (hasTransferDataBindingObject) {
585
+ const ddService = this.serviceContainer.bindableObjectDragDropService;
586
+ if (ddService) {
587
+ const el = this.getElementAtPoint({ x: event.x, y: event.y });
588
+ if (this._lastDdElement != el) {
589
+ ddService.dragLeave(this, event, this._lastDdElement);
590
+ ddService.dragEnter(this, event, el);
591
+ this._lastDdElement = el;
592
+ }
593
+ }
594
+ else {
595
+ this._lastDdElement = null;
596
+ }
597
+ }
598
+ else {
599
+ this._lastDdElement = null;
600
+ }
601
+ }
602
+ _onDragLeave(event) {
603
+ this._fillCalculationrects();
604
+ event.preventDefault();
605
+ this._canvas.classList.remove('dragFileActive');
606
+ if (this._dragOverExtensionItem) {
607
+ this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
608
+ this._dragOverExtensionItem = null;
609
+ }
610
+ }
611
+ _lastDdElement = null;
612
+ _onDragOver(event) {
613
+ event.preventDefault();
614
+ /*if (this.alignOnSnap) {
615
+ this.snapLines.calculateSnaplines(this.instanceServiceContainer.selectionService.selectedElements);
616
+ //TODO: fix this following code...
617
+ const currentPoint = this.getDesignerMousepoint(event);
618
+ let containerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this.rootDesignItem))
619
+ containerService.finishPlace(this, this.rootDesignItem, this._initialPoint, currentPoint, this.instanceServiceContainer.selectionService.selectedElements);
620
+ }*/
621
+ this._fillCalculationrects();
622
+ if (event.dataTransfer.types.length > 0 && event.dataTransfer.types[0] == 'Files') {
623
+ const ddService = this.serviceContainer.dragDropService;
624
+ if (ddService) {
625
+ const effect = ddService.dragOver(event);
626
+ event.dataTransfer.dropEffect = effect;
627
+ if (effect !== 'none')
628
+ this._canvas.classList.add('dragFileActive');
629
+ }
630
+ }
631
+ else {
632
+ const hasTransferDataBindingObject = event.dataTransfer.types.indexOf(dragDropFormatNameBindingObject) >= 0;
633
+ if (hasTransferDataBindingObject) {
634
+ const ddService = this.serviceContainer.bindableObjectDragDropService;
635
+ if (ddService) {
636
+ const el = this.getElementAtPoint({ x: event.x, y: event.y });
637
+ if (this._lastDdElement != el) {
638
+ ddService.dragLeave(this, event, this._lastDdElement);
639
+ ddService.dragEnter(this, event, el);
640
+ this._lastDdElement = el;
641
+ }
642
+ const effect = ddService.dragOver(this, event, el);
643
+ event.dataTransfer.dropEffect = effect;
644
+ }
645
+ }
646
+ else {
647
+ let [newContainer] = this._getPossibleContainerForDrop(event);
648
+ if (this._dragOverExtensionItem != newContainer) {
649
+ this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
650
+ this.extensionManager.applyExtension(newContainer, ExtensionType.ContainerExternalDragOver, event);
651
+ this._dragOverExtensionItem = newContainer;
652
+ }
653
+ else {
654
+ this.extensionManager.refreshExtension(newContainer, ExtensionType.ContainerExternalDragOver, event);
655
+ }
656
+ }
657
+ }
658
+ }
659
+ _getPossibleContainerForDrop(event) {
660
+ let newContainerElementDesignItem = null;
661
+ let newContainerService = null;
662
+ const elementsFromPoint = this.elementsFromPoint(event.x, event.y);
663
+ for (let e of elementsFromPoint) {
664
+ if (e == this.rootDesignItem.element) {
665
+ newContainerElementDesignItem = this.rootDesignItem;
666
+ const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
667
+ newContainerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
668
+ break;
669
+ }
670
+ else if (false) {
671
+ //check we don't try to move a item over one of its children..
672
+ }
673
+ else {
674
+ newContainerElementDesignItem = DesignItem.GetOrCreateDesignItem(e, this.serviceContainer, this.instanceServiceContainer);
675
+ const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
676
+ newContainerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
677
+ if (newContainerService) {
678
+ if (newContainerService.canEnterByDrop(newContainerElementDesignItem)) {
679
+ break;
680
+ }
681
+ else {
682
+ newContainerElementDesignItem = null;
683
+ newContainerService = null;
684
+ continue;
685
+ }
686
+ }
687
+ }
688
+ }
689
+ return [newContainerElementDesignItem, newContainerService];
690
+ }
691
+ async _onDrop(event) {
692
+ this._lastDdElement = null;
693
+ event.preventDefault();
694
+ this._canvas.classList.remove('dragFileActive');
695
+ this._fillCalculationrects();
696
+ if (event.dataTransfer.files?.length > 0) {
697
+ const ddService = this.serviceContainer.dragDropService;
698
+ if (ddService) {
699
+ ddService.drop(this, event);
700
+ }
701
+ }
702
+ else {
703
+ const transferDataBindingObject = event.dataTransfer.getData(dragDropFormatNameBindingObject);
704
+ if (transferDataBindingObject) {
705
+ const bo = JSON.parse(transferDataBindingObject);
706
+ const ddService = this.serviceContainer.bindableObjectDragDropService;
707
+ if (ddService) {
708
+ const el = this.getElementAtPoint({ x: event.x, y: event.y });
709
+ const effect = ddService.drop(this, event, bo, el);
710
+ event.dataTransfer.dropEffect = effect;
711
+ }
712
+ }
713
+ else {
714
+ if (this._dragOverExtensionItem) {
715
+ this.extensionManager.removeExtension(this._dragOverExtensionItem, ExtensionType.ContainerExternalDragOver);
716
+ this._dragOverExtensionItem = null;
717
+ }
718
+ let [newContainer] = this._getPossibleContainerForDrop(event);
719
+ if (!newContainer)
720
+ newContainer = this.rootDesignItem;
721
+ this._fillCalculationrects();
722
+ //TODO : we need to use container service for adding to element, so also grid and flexbox work correct
723
+ const transferData = event.dataTransfer.getData(dragDropFormatNameElementDefinition);
724
+ const elementDefinition = JSON.parse(transferData);
725
+ const di = await this.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(elementDefinition, this.serviceContainer, this.instanceServiceContainer));
726
+ const grp = di.openGroup("Insert of &lt;" + di.name + "&gt;");
727
+ di.setStyle('position', 'absolute');
728
+ const containerService = this.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainer, getComputedStyle(newContainer.element)));
729
+ containerService.enterContainer(newContainer, [di]);
730
+ const containerPos = this.getNormalizedElementCoordinates(newContainer.element);
731
+ const evCoord = this.getNormalizedEventCoordinates(event);
732
+ const pos = { x: evCoord.x - containerPos.x, y: evCoord.y - containerPos.y };
733
+ containerService.place(event, this, newContainer, { x: 0, y: 0 }, { x: 0, y: 0 }, pos, [di]);
734
+ containerService.finishPlace(event, this, newContainer, { x: 0, y: 0 }, { x: 0, y: 0 }, pos, [di]);
735
+ this.instanceServiceContainer.undoService.execute(new InsertAction(newContainer, newContainer.childCount, di));
736
+ requestAnimationFrame(() => {
737
+ this.instanceServiceContainer.selectionService.setSelectedElements([di]);
738
+ grp.commit();
739
+ });
740
+ }
741
+ }
742
+ }
743
+ showDesignItemContextMenu(designItem, event) {
744
+ this._currentContextMenu?.close();
745
+ const mnuItems = [];
746
+ for (let cme of this.serviceContainer.designerContextMenuExtensions) {
747
+ if (cme.shouldProvideContextmenu(event, this, designItem, 'designer')) {
748
+ mnuItems.push(...cme.provideContextMenuItems(event, this, designItem));
749
+ }
750
+ }
751
+ let ctxMenu = new ContextMenu(mnuItems, null);
752
+ ctxMenu.display(event);
753
+ return ctxMenu;
754
+ }
755
+ _onDblClick(event) {
756
+ event.preventDefault();
757
+ this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection, ExtensionType.Doubleclick, event);
758
+ }
759
+ onKeyUp(event) {
760
+ if (event.composedPath().indexOf(this.eatEvents) >= 0)
761
+ return;
762
+ event.preventDefault();
763
+ }
764
+ onKeyDown(event) {
765
+ if (event.composedPath().indexOf(this.eatEvents) >= 0)
766
+ return;
767
+ if ((event.ctrlKey || event.metaKey) && event.key === 'z' && !event.shiftKey)
768
+ this.executeCommand({ type: CommandType.undo, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
769
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'z' && event.shiftKey)
770
+ this.executeCommand({ type: CommandType.redo, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
771
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'y')
772
+ this.executeCommand({ type: CommandType.redo, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
773
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'a')
774
+ this.executeCommand({ type: CommandType.selectAll, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
775
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'c')
776
+ this.executeCommand({ type: CommandType.copy, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
777
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'v')
778
+ this.executeCommand({ type: CommandType.paste, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
779
+ else if ((event.ctrlKey || event.metaKey) && event.key === 'x')
780
+ this.executeCommand({ type: CommandType.cut, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
781
+ else {
782
+ let primarySelection = this.instanceServiceContainer.selectionService.primarySelection;
783
+ if (!primarySelection) {
784
+ return;
785
+ }
786
+ let moveOffset = 1;
787
+ if (event.shiftKey)
788
+ moveOffset = 10;
789
+ switch (event.key) {
790
+ case 'Delete':
791
+ case 'Backspace':
792
+ this.executeCommand({ type: CommandType.delete, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
793
+ break;
794
+ case 'ArrowUp':
795
+ {
796
+ this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('top', parseInt(x.element.style.top) - moveOffset + 'px'));
797
+ this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
798
+ }
799
+ break;
800
+ case 'ArrowDown':
801
+ {
802
+ this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('top', parseInt(x.element.style.top) + moveOffset + 'px'));
803
+ this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
804
+ }
805
+ break;
806
+ case 'ArrowLeft':
807
+ {
808
+ this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('left', parseInt(x.element.style.left) - moveOffset + 'px'));
809
+ this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
810
+ }
811
+ break;
812
+ case 'ArrowRight':
813
+ {
814
+ this.instanceServiceContainer.selectionService.selectedElements.forEach(x => x.setStyle('left', parseInt(x.element.style.left) + moveOffset + 'px'));
815
+ this.extensionManager.refreshExtensions(this.instanceServiceContainer.selectionService.selectedElements);
816
+ }
817
+ break;
818
+ }
819
+ }
820
+ event.preventDefault();
821
+ }
822
+ /**
823
+ * Converts the Event x/y coordinates, to the mouse position on the canvas
824
+ */
825
+ getNormalizedEventCoordinates(event) {
826
+ const offsetOfOuterX = (event.clientX - this.outerRect.x) / this.zoomFactor;
827
+ const offsetOfCanvasX = this.containerBoundingRect.x - this.outerRect.x;
828
+ const offsetOfOuterY = (event.clientY - this.outerRect.y) / this.zoomFactor;
829
+ const offsetOfCanvasY = this.containerBoundingRect.y - this.outerRect.y;
830
+ return {
831
+ x: offsetOfOuterX - offsetOfCanvasX / this.zoomFactor,
832
+ y: offsetOfOuterY - offsetOfCanvasY / this.zoomFactor
833
+ };
834
+ }
835
+ /**
836
+ * Converts the Event x/y coordinates, to the mouse position in the viewport
837
+ */
838
+ getViewportCoordinates(event) {
839
+ return {
840
+ x: (event.clientX - this.outerRect.x),
841
+ y: (event.clientY - this.outerRect.y)
842
+ };
843
+ }
844
+ getNormalizedTextNodeCoordinates(element, ignoreScalefactor) {
845
+ let range = document.createRange();
846
+ range.selectNodeContents(element);
847
+ let targetRect = range.getBoundingClientRect();
848
+ return { x: (targetRect.x - this.containerBoundingRect.x) / (ignoreScalefactor ? 1 : this.scaleFactor), y: (targetRect.y - this.containerBoundingRect.y) / (ignoreScalefactor ? 1 : this.scaleFactor), width: targetRect.width / (ignoreScalefactor ? 1 : this.scaleFactor), height: targetRect.height / (ignoreScalefactor ? 1 : this.scaleFactor) };
849
+ }
850
+ getNormalizedElementCoordinates(element, ignoreScalefactor) {
851
+ if (element.nodeType == NodeType.TextNode) {
852
+ return this.getNormalizedTextNodeCoordinates(element, ignoreScalefactor);
853
+ }
854
+ const targetRect = element.getBoundingClientRect();
855
+ return { x: (targetRect.x - this.containerBoundingRect.x) / (ignoreScalefactor ? 1 : this.scaleFactor), y: (targetRect.y - this.containerBoundingRect.y) / (ignoreScalefactor ? 1 : this.scaleFactor), width: targetRect.width / (ignoreScalefactor ? 1 : this.scaleFactor), height: targetRect.height / (ignoreScalefactor ? 1 : this.scaleFactor) };
856
+ }
857
+ getNormalizedElementCoordinatesAndRealSizes(element) {
858
+ let ret = this.getNormalizedElementCoordinates(element);
859
+ const st = getComputedStyle(element);
860
+ let realWidth = ret.width;
861
+ let realHeight = ret.height;
862
+ if (st.boxSizing != 'border-box') {
863
+ realWidth = realWidth - (parseFloat(st.borderLeft) + parseFloat(st.paddingLeft) + parseFloat(st.paddingRight) + parseFloat(st.borderRight));
864
+ realHeight = realHeight - (parseFloat(st.borderTop) + parseFloat(st.paddingTop) + parseFloat(st.paddingBottom) + parseFloat(st.borderBottom));
865
+ }
866
+ return { ...ret, realWidth, realHeight };
867
+ }
868
+ getNormalizedOffsetInElement(event, element) {
869
+ const normEvt = this.getNormalizedEventCoordinates(event);
870
+ const normEl = this.getNormalizedElementCoordinates(element);
871
+ return { x: normEvt.x - normEl.x, y: normEvt.y - normEl.y };
872
+ }
873
+ //todo: remove
874
+ elementFromPoint(x, y) {
875
+ let elements = this.shadowRoot.elementsFromPoint(x, y);
876
+ let element = elements[0];
877
+ if (element === this.clickOverlay)
878
+ element = elements[1];
879
+ if (element === this.clickOverlay)
880
+ element = this._canvas;
881
+ return element;
882
+ }
883
+ elementsFromPoint(x, y) {
884
+ let retVal = [];
885
+ let elements = this.shadowRoot.elementsFromPoint(x, y);
886
+ for (let e of elements) {
887
+ if (e == this.clickOverlay)
888
+ continue;
889
+ if (e == this.overlayLayer)
890
+ continue;
891
+ if (e.getRootNode() !== this.shadowRoot)
892
+ continue;
893
+ if (e == this._outercanvas2)
894
+ break;
895
+ retVal.push(e);
896
+ if (e === this._canvas)
897
+ break;
898
+ }
899
+ return retVal;
900
+ }
901
+ getElementAtPoint(point, ignoreElementCallback) {
902
+ const elements = this.shadowRoot.elementsFromPoint(point.x, point.y);
903
+ let currentElement = null;
904
+ for (let i = 0; i < elements.length; i++) {
905
+ currentElement = elements[i];
906
+ if (currentElement == this._outercanvas2) {
907
+ currentElement = null;
908
+ break;
909
+ }
910
+ if (currentElement == this.clickOverlay) {
911
+ currentElement = null;
912
+ continue;
913
+ }
914
+ if (currentElement == this.overlayLayer) {
915
+ currentElement = null;
916
+ continue;
917
+ }
918
+ if (ignoreElementCallback && ignoreElementCallback(currentElement)) {
919
+ currentElement = null;
920
+ continue;
921
+ }
922
+ if (currentElement.getRootNode() !== this.shadowRoot) {
923
+ currentElement = null;
924
+ continue;
925
+ }
926
+ break;
927
+ }
928
+ return currentElement;
929
+ }
930
+ showHoverExtension(element, event) {
931
+ const currentDesignItem = DesignItem.GetOrCreateDesignItem(element, this.serviceContainer, this.instanceServiceContainer);
932
+ if (this._lastHoverDesignItem != currentDesignItem) {
933
+ if (this._lastHoverDesignItem)
934
+ this.extensionManager.removeExtension(this._lastHoverDesignItem, ExtensionType.MouseOver);
935
+ if (currentDesignItem && currentDesignItem != this.rootDesignItem && DomHelper.getHost(element.parentNode) !== this.overlayLayer)
936
+ this.extensionManager.applyExtension(currentDesignItem, ExtensionType.MouseOver, event);
937
+ this._lastHoverDesignItem = currentDesignItem;
938
+ }
939
+ }
940
+ _pointerEventHandler(event, forceElement = null) {
941
+ if (!this.serviceContainer)
942
+ return;
943
+ this._fillCalculationrects();
944
+ if (this._pointerextensions) {
945
+ for (let pe of this._pointerextensions)
946
+ pe.refresh(event);
947
+ }
948
+ if (event.composedPath().indexOf(this.eatEvents) >= 0)
949
+ return;
950
+ let currentElement;
951
+ if (forceElement)
952
+ currentElement = forceElement;
953
+ else {
954
+ currentElement = this.serviceContainer.elementAtPointService.getElementAtPoint(this, { x: event.x, y: event.y });
955
+ if (!currentElement) {
956
+ currentElement = this._canvas;
957
+ }
958
+ else if (this._enableSelectTextNodesOnClick) {
959
+ const norm = this.getNormalizedEventCoordinates(event);
960
+ for (let n of currentElement.childNodes) {
961
+ if (n.nodeType == NodeType.TextNode) {
962
+ let nc = this.getNormalizedElementCoordinates(n);
963
+ if (nc.x <= norm.x && nc.x + nc.width >= norm.x && nc.y <= norm.y && nc.y + nc.height >= norm.y) {
964
+ currentElement = n;
965
+ break;
966
+ }
967
+ }
968
+ }
969
+ }
970
+ }
971
+ if (this._activeTool) {
972
+ this._activeTool.pointerEventHandler(this, event, currentElement);
973
+ return;
974
+ }
975
+ this.clickOverlay.style.cursor = this._canvas.style.cursor;
976
+ const currentDesignItem = DesignItem.GetOrCreateDesignItem(currentElement, this.serviceContainer, this.instanceServiceContainer);
977
+ this.showHoverExtension(currentDesignItem.element, event);
978
+ //TODO: needed ??
979
+ if (currentElement && DomHelper.getHost(currentElement.parentNode) === this.overlayLayer) {
980
+ if (this.eatEvents)
981
+ return;
982
+ currentElement = this.instanceServiceContainer.selectionService.primarySelection?.element ?? this._canvas;
983
+ }
984
+ let tool = this.serviceContainer.globalContext.tool ?? this.serviceContainer.designerTools.get(NamedTools.Pointer);
985
+ tool.pointerEventHandler(this, event, currentElement);
986
+ this._canvas.style.cursor = tool.cursor;
987
+ }
988
+ captureActiveTool(tool) {
989
+ this._activeTool = tool;
990
+ }
991
+ releaseActiveTool() {
992
+ this._activeTool = null;
993
+ }
994
+ _fillCalculationrects() {
995
+ this.containerBoundingRect = this._canvasContainer.getBoundingClientRect();
996
+ this.outerRect = this._outercanvas2.getBoundingClientRect();
997
+ }
998
+ addOverlay(element, overlayLayer = OverlayLayer.Normal) {
999
+ this.overlayLayer.addOverlay(element, overlayLayer);
1000
+ }
1001
+ removeOverlay(element) {
1002
+ this.overlayLayer.removeOverlay(element);
1003
+ }
1004
+ zoomOntoRectangle(startPoint, endPoint) {
1005
+ let rect = {
1006
+ x: startPoint.x < endPoint.x ? startPoint.x : endPoint.x,
1007
+ y: startPoint.y < endPoint.y ? startPoint.y : endPoint.y,
1008
+ width: Math.abs(startPoint.x - endPoint.x),
1009
+ height: Math.abs(startPoint.y - endPoint.y),
1010
+ };
1011
+ let zFactorWidth = this.outerRect.width / rect.width;
1012
+ let zFactorHeight = this.outerRect.height / rect.height;
1013
+ let zoomFactor = zFactorWidth >= zFactorHeight ? zFactorHeight : zFactorWidth;
1014
+ let rectCenter = {
1015
+ x: (rect.width / 2) + rect.x,
1016
+ y: (rect.height / 2) + rect.y
1017
+ };
1018
+ this.zoomPoint(rectCenter, zoomFactor);
1019
+ }
1020
+ zoomPoint(canvasPoint, newZoom) {
1021
+ this.zoomFactor = newZoom;
1022
+ const newCanvasOffset = {
1023
+ x: -(canvasPoint.x) + this.outerRect.width / this.zoomFactor / 2,
1024
+ y: -(canvasPoint.y) + this.outerRect.height / this.zoomFactor / 2
1025
+ };
1026
+ this.canvasOffset = newCanvasOffset;
1027
+ }
1028
+ zoomConvertEventToViewPortCoordinates(point) {
1029
+ const offsetOfCanvasX = this.containerBoundingRect.x - this.outerRect.x;
1030
+ const offsetOfCanvasY = this.containerBoundingRect.y - this.outerRect.y;
1031
+ return {
1032
+ x: (point.x + offsetOfCanvasX / this.zoomFactor) * this.zoomFactor,
1033
+ y: (point.y + offsetOfCanvasY / this.zoomFactor) * this.zoomFactor
1034
+ };
1035
+ }
1036
+ zoomTowardsPoint(canvasPoint, newZoom) {
1037
+ const scaleChange = newZoom / this.zoomFactor;
1038
+ const point = this.zoomConvertEventToViewPortCoordinates(canvasPoint);
1039
+ const newCanvasOffset = {
1040
+ x: -(point.x * (scaleChange - 1) + scaleChange * -this.canvasOffsetUnzoomed.x),
1041
+ y: -(point.y * (scaleChange - 1) + scaleChange * -this.canvasOffsetUnzoomed.y)
1042
+ };
1043
+ this.zoomFactor = newZoom;
1044
+ this.canvasOffsetUnzoomed = newCanvasOffset;
1045
+ }
1046
+ }
1047
+ export { DesignerCanvas };
1048
+ customElements.define('node-projects-designer-canvas', DesignerCanvas);