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

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