@eclipse-glsp/client 0.9.0 → 0.10.0-next.17bfb07.173

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 (531) hide show
  1. package/css/glsp-sprotty.css +110 -8
  2. package/lib/base/action-dispatcher.d.ts +4 -3
  3. package/lib/base/action-dispatcher.d.ts.map +1 -1
  4. package/lib/base/action-dispatcher.js +22 -12
  5. package/lib/base/action-dispatcher.js.map +1 -1
  6. package/lib/base/actions/focus-change-action.d.ts +16 -7
  7. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  8. package/lib/base/actions/focus-change-action.js +31 -12
  9. package/lib/base/actions/focus-change-action.js.map +1 -1
  10. package/lib/base/actions/sprotty-actions.d.ts +7 -0
  11. package/lib/base/actions/sprotty-actions.d.ts.map +1 -0
  12. package/lib/{features/tool-palette/palette-item.js → base/actions/sprotty-actions.js} +4 -20
  13. package/lib/base/actions/sprotty-actions.js.map +1 -0
  14. package/lib/base/auto-complete/auto-complete-actions.d.ts +5 -3
  15. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  16. package/lib/base/auto-complete/auto-complete-actions.js +24 -5
  17. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  18. package/lib/base/auto-complete/auto-complete-widget.d.ts +9 -2
  19. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  20. package/lib/base/auto-complete/auto-complete-widget.js +16 -9
  21. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  22. package/lib/base/auto-complete/validation-decorator.js +2 -2
  23. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  24. package/lib/base/command-stack.d.ts.map +1 -1
  25. package/lib/base/command-stack.js +6 -5
  26. package/lib/base/command-stack.js.map +1 -1
  27. package/lib/base/container-modules.d.ts.map +1 -1
  28. package/lib/base/container-modules.js +2 -1
  29. package/lib/base/container-modules.js.map +1 -1
  30. package/lib/base/di.config.d.ts +1 -1
  31. package/lib/base/di.config.d.ts.map +1 -1
  32. package/lib/base/di.config.js +13 -14
  33. package/lib/base/di.config.js.map +1 -1
  34. package/lib/base/drag-aware-mouse-listener.d.ts +1 -1
  35. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  36. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  37. package/lib/base/editor-context-service.d.ts +18 -5
  38. package/lib/base/editor-context-service.d.ts.map +1 -1
  39. package/lib/base/editor-context-service.js +39 -22
  40. package/lib/base/editor-context-service.js.map +1 -1
  41. package/lib/base/focus-tracker.d.ts +1 -1
  42. package/lib/base/focus-tracker.d.ts.map +1 -1
  43. package/lib/base/focus-tracker.js +4 -4
  44. package/lib/base/focus-tracker.js.map +1 -1
  45. package/lib/base/model/model-registry.d.ts.map +1 -1
  46. package/lib/base/model/model-registry.js +2 -2
  47. package/lib/base/model/model-registry.js.map +1 -1
  48. package/lib/base/model/update-model-command.d.ts +1 -1
  49. package/lib/base/model/update-model-command.d.ts.map +1 -1
  50. package/lib/base/model/update-model-command.js +15 -15
  51. package/lib/base/model/update-model-command.js.map +1 -1
  52. package/lib/base/model-initialization-constraint.d.ts +4 -5
  53. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  54. package/lib/base/model-initialization-constraint.js +11 -13
  55. package/lib/base/model-initialization-constraint.js.map +1 -1
  56. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  57. package/lib/base/selection-clearing-mouse-listener.js +1 -1
  58. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  59. package/lib/base/source-uri-aware.d.ts +2 -17
  60. package/lib/base/source-uri-aware.d.ts.map +1 -1
  61. package/lib/base/source-uri-aware.js +4 -6
  62. package/lib/base/source-uri-aware.js.map +1 -1
  63. package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
  64. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  65. package/lib/base/tool-manager/glsp-tool-manager.js +10 -10
  66. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  67. package/lib/base/tool-manager/tool-actions.d.ts +14 -0
  68. package/lib/base/tool-manager/tool-actions.d.ts.map +1 -0
  69. package/lib/base/tool-manager/tool-actions.js +25 -0
  70. package/lib/base/tool-manager/tool-actions.js.map +1 -0
  71. package/lib/base/types.d.ts +144 -20
  72. package/lib/base/types.d.ts.map +1 -1
  73. package/lib/base/types.js +14 -26
  74. package/lib/base/types.js.map +1 -1
  75. package/lib/base/view/view-registry.d.ts.map +1 -1
  76. package/lib/base/view/view-registry.js +2 -2
  77. package/lib/base/view/view-registry.js.map +1 -1
  78. package/lib/features/change-bounds/model.d.ts +1 -1
  79. package/lib/features/change-bounds/model.d.ts.map +1 -1
  80. package/lib/features/change-bounds/model.js +3 -3
  81. package/lib/features/change-bounds/model.js.map +1 -1
  82. package/lib/features/change-bounds/movement-restrictor.d.ts +37 -7
  83. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  84. package/lib/features/change-bounds/movement-restrictor.js +55 -40
  85. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  86. package/lib/features/change-bounds/snap.d.ts +42 -2
  87. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  88. package/lib/features/change-bounds/snap.js +78 -2
  89. package/lib/features/change-bounds/snap.js.map +1 -1
  90. package/lib/features/change-bounds/snap.spec.d.ts +17 -0
  91. package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
  92. package/lib/features/change-bounds/snap.spec.js +82 -0
  93. package/lib/features/change-bounds/snap.spec.js.map +1 -0
  94. package/lib/features/command-palette/command-palette-tool.js +3 -3
  95. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  96. package/lib/features/command-palette/di.config.d.ts +2 -2
  97. package/lib/features/command-palette/di.config.d.ts.map +1 -1
  98. package/lib/features/command-palette/di.config.js +6 -6
  99. package/lib/features/command-palette/di.config.js.map +1 -1
  100. package/lib/features/command-palette/server-command-palette-provider.d.ts +1 -1
  101. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  102. package/lib/features/command-palette/server-command-palette-provider.js +13 -10
  103. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  104. package/lib/features/context-menu/delete-element-context-menu.d.ts +17 -1
  105. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  106. package/lib/features/context-menu/delete-element-context-menu.js +4 -4
  107. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  108. package/lib/features/context-menu/di.config.d.ts +1 -1
  109. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  110. package/lib/features/context-menu/di.config.js +8 -7
  111. package/lib/features/context-menu/di.config.js.map +1 -1
  112. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +33 -1
  113. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  114. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +41 -28
  115. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  116. package/lib/features/context-menu/server-context-menu-provider.d.ts +1 -1
  117. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  118. package/lib/features/context-menu/server-context-menu-provider.js +8 -7
  119. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  120. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +12 -15
  121. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  122. package/lib/features/copy-paste/copy-paste-context-menu.js +26 -33
  123. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  124. package/lib/features/copy-paste/copy-paste-handler.d.ts +1 -1
  125. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  126. package/lib/features/copy-paste/copy-paste-handler.js +10 -11
  127. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  128. package/lib/features/copy-paste/di.config.d.ts +1 -1
  129. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  130. package/lib/features/copy-paste/di.config.js +5 -7
  131. package/lib/features/copy-paste/di.config.js.map +1 -1
  132. package/lib/features/decoration/decoration-placer.d.ts +1 -1
  133. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  134. package/lib/features/decoration/decoration-placer.js +19 -3
  135. package/lib/features/decoration/decoration-placer.js.map +1 -1
  136. package/lib/features/decoration/di.config.d.ts +2 -2
  137. package/lib/features/decoration/di.config.d.ts.map +1 -1
  138. package/lib/features/decoration/di.config.js +4 -4
  139. package/lib/features/decoration/di.config.js.map +1 -1
  140. package/lib/features/edit-label/di.config.d.ts +1 -1
  141. package/lib/features/edit-label/di.config.d.ts.map +1 -1
  142. package/lib/features/edit-label/di.config.js +5 -5
  143. package/lib/features/edit-label/di.config.js.map +1 -1
  144. package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -1
  145. package/lib/features/edit-label/edit-label-tool.js +2 -2
  146. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  147. package/lib/features/edit-label/edit-label-validator.d.ts +4 -6
  148. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  149. package/lib/features/edit-label/edit-label-validator.js +11 -13
  150. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  151. package/lib/features/hints/di.config.js +4 -4
  152. package/lib/features/hints/di.config.js.map +1 -1
  153. package/lib/features/hints/type-hints.d.ts +15 -5
  154. package/lib/features/hints/type-hints.d.ts.map +1 -1
  155. package/lib/features/hints/type-hints.js +29 -26
  156. package/lib/features/hints/type-hints.js.map +1 -1
  157. package/lib/features/hover/di.config.d.ts +1 -1
  158. package/lib/features/hover/di.config.d.ts.map +1 -1
  159. package/lib/features/hover/di.config.js +14 -10
  160. package/lib/features/hover/di.config.js.map +1 -1
  161. package/lib/features/hover/hover.d.ts +16 -4
  162. package/lib/features/hover/hover.d.ts.map +1 -1
  163. package/lib/features/hover/hover.js +42 -4
  164. package/lib/features/hover/hover.js.map +1 -1
  165. package/lib/features/layout/di.config.d.ts +3 -3
  166. package/lib/features/layout/di.config.d.ts.map +1 -1
  167. package/lib/features/layout/di.config.js +11 -7
  168. package/lib/features/layout/di.config.js.map +1 -1
  169. package/lib/features/layout/freeform-layout.d.ts +17 -1
  170. package/lib/features/layout/freeform-layout.d.ts.map +1 -1
  171. package/lib/features/layout/freeform-layout.js +4 -4
  172. package/lib/features/layout/freeform-layout.js.map +1 -1
  173. package/lib/features/layout/hbox-layout.d.ts +41 -0
  174. package/lib/features/layout/hbox-layout.d.ts.map +1 -0
  175. package/lib/features/layout/hbox-layout.js +189 -0
  176. package/lib/features/layout/hbox-layout.js.map +1 -0
  177. package/lib/features/layout/layout-elements-action.d.ts +198 -0
  178. package/lib/features/layout/layout-elements-action.d.ts.map +1 -0
  179. package/lib/features/layout/layout-elements-action.js +391 -0
  180. package/lib/features/layout/layout-elements-action.js.map +1 -0
  181. package/lib/features/layout/layout-elements-action.spec.d.ts +3 -0
  182. package/lib/features/layout/layout-elements-action.spec.d.ts.map +1 -0
  183. package/lib/features/layout/{layout-commands.spec.js → layout-elements-action.spec.js} +81 -62
  184. package/lib/features/layout/layout-elements-action.spec.js.map +1 -0
  185. package/lib/features/layout/vbox-layout.d.ts +17 -1
  186. package/lib/features/layout/vbox-layout.d.ts.map +1 -1
  187. package/lib/features/layout/vbox-layout.js +9 -8
  188. package/lib/features/layout/vbox-layout.js.map +1 -1
  189. package/lib/features/model-source-watcher/di.config.js +1 -1
  190. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  191. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +1 -1
  192. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  193. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +11 -11
  194. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  195. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  196. package/lib/features/mouse-tool/di.config.d.ts.map +1 -1
  197. package/lib/features/mouse-tool/di.config.js +2 -2
  198. package/lib/features/mouse-tool/di.config.js.map +1 -1
  199. package/lib/features/mouse-tool/mouse-tool.d.ts +9 -5
  200. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  201. package/lib/features/mouse-tool/mouse-tool.js +11 -53
  202. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  203. package/lib/features/navigation/di.config.js +4 -4
  204. package/lib/features/navigation/di.config.js.map +1 -1
  205. package/lib/features/navigation/navigation-action-handler.d.ts +31 -16
  206. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  207. package/lib/features/navigation/navigation-action-handler.js +52 -68
  208. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  209. package/lib/features/navigation/navigation-target-resolver.d.ts +3 -3
  210. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  211. package/lib/features/navigation/navigation-target-resolver.js +9 -10
  212. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  213. package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
  214. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  215. package/lib/features/reconnect/model.d.ts +1 -1
  216. package/lib/features/reconnect/model.d.ts.map +1 -1
  217. package/lib/features/reconnect/model.js +1 -1
  218. package/lib/features/reconnect/model.js.map +1 -1
  219. package/lib/features/save/di.config.d.ts +1 -1
  220. package/lib/features/save/di.config.d.ts.map +1 -1
  221. package/lib/features/save/di.config.js +3 -3
  222. package/lib/features/save/di.config.js.map +1 -1
  223. package/lib/features/save/save-keylistener.d.ts +1 -1
  224. package/lib/features/save/save-keylistener.d.ts.map +1 -1
  225. package/lib/features/save/save-keylistener.js +3 -3
  226. package/lib/features/save/save-keylistener.js.map +1 -1
  227. package/lib/features/select/di.config.d.ts +1 -1
  228. package/lib/features/select/di.config.d.ts.map +1 -1
  229. package/lib/features/select/di.config.js +7 -8
  230. package/lib/features/select/di.config.js.map +1 -1
  231. package/lib/features/select/select-feedback-action.d.ts +26 -22
  232. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  233. package/lib/features/select/select-feedback-action.js +19 -46
  234. package/lib/features/select/select-feedback-action.js.map +1 -1
  235. package/lib/features/select/select-mouse-listener.d.ts +1 -1
  236. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  237. package/lib/features/select/select-mouse-listener.js +1 -1
  238. package/lib/features/select/select-mouse-listener.js.map +1 -1
  239. package/lib/features/select/selection-service.d.ts +14 -5
  240. package/lib/features/select/selection-service.d.ts.map +1 -1
  241. package/lib/features/select/selection-service.js +55 -64
  242. package/lib/features/select/selection-service.js.map +1 -1
  243. package/lib/features/select/selection-service.spec.js +28 -25
  244. package/lib/features/select/selection-service.spec.js.map +1 -1
  245. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +17 -9
  246. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  247. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +68 -38
  248. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  249. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +24 -12
  250. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  251. package/lib/features/tool-feedback/creation-tool-feedback.js +88 -35
  252. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  253. package/lib/features/tool-feedback/css-feedback.d.ts +17 -10
  254. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  255. package/lib/features/tool-feedback/css-feedback.js +42 -38
  256. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  257. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  258. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  259. package/lib/features/tool-feedback/di.config.js +18 -18
  260. package/lib/features/tool-feedback/di.config.js.map +1 -1
  261. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +45 -22
  262. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  263. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -114
  264. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  265. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
  266. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  267. package/lib/features/tool-feedback/feedback-action-dispatcher.js +4 -4
  268. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  269. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +21 -10
  270. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  271. package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -18
  272. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  273. package/lib/features/tool-feedback/model.d.ts +1 -2
  274. package/lib/features/tool-feedback/model.d.ts.map +1 -1
  275. package/lib/features/tool-feedback/model.js +1 -1
  276. package/lib/features/tool-feedback/model.js.map +1 -1
  277. package/lib/features/tool-feedback/view.d.ts +1 -1
  278. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  279. package/lib/features/tool-feedback/view.js +22 -5
  280. package/lib/features/tool-feedback/view.js.map +1 -1
  281. package/lib/features/tool-palette/di.config.d.ts +1 -1
  282. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  283. package/lib/features/tool-palette/di.config.js +5 -4
  284. package/lib/features/tool-palette/di.config.js.map +1 -1
  285. package/lib/features/tool-palette/tool-palette.d.ts +10 -7
  286. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  287. package/lib/features/tool-palette/tool-palette.js +39 -32
  288. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  289. package/lib/features/tools/base-glsp-tool.d.ts +3 -3
  290. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  291. package/lib/features/tools/base-glsp-tool.js +11 -11
  292. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  293. package/lib/features/tools/change-bounds-tool.d.ts +7 -9
  294. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  295. package/lib/features/tools/change-bounds-tool.js +48 -71
  296. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  297. package/lib/features/tools/delete-tool.d.ts +1 -1
  298. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  299. package/lib/features/tools/delete-tool.js +17 -17
  300. package/lib/features/tools/delete-tool.js.map +1 -1
  301. package/lib/features/tools/di.config.d.ts +9 -2
  302. package/lib/features/tools/di.config.d.ts.map +1 -1
  303. package/lib/features/tools/di.config.js +26 -15
  304. package/lib/features/tools/di.config.js.map +1 -1
  305. package/lib/features/tools/edge-creation-tool.d.ts +1 -1
  306. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  307. package/lib/features/tools/edge-creation-tool.js +28 -21
  308. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  309. package/lib/features/tools/edge-edit-tool.d.ts +3 -2
  310. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  311. package/lib/features/tools/edge-edit-tool.js +41 -36
  312. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  313. package/lib/features/{tool-palette/palette-item.d.ts → tools/enable-default-tools-on-focus-loss.d.ts} +11 -11
  314. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -0
  315. package/lib/features/tools/enable-default-tools-on-focus-loss.js +29 -0
  316. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -0
  317. package/lib/features/tools/marquee-behavior.d.ts +1 -1
  318. package/lib/features/tools/marquee-behavior.js +2 -2
  319. package/lib/features/tools/marquee-behavior.js.map +1 -1
  320. package/lib/features/tools/marquee-behavior.spec.js +63 -63
  321. package/lib/features/tools/marquee-behavior.spec.js.map +1 -1
  322. package/lib/features/tools/marquee-mouse-tool.d.ts +1 -1
  323. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  324. package/lib/features/tools/marquee-mouse-tool.js +20 -20
  325. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  326. package/lib/features/tools/marquee-tool.d.ts +1 -1
  327. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  328. package/lib/features/tools/marquee-tool.js +4 -4
  329. package/lib/features/tools/marquee-tool.js.map +1 -1
  330. package/lib/features/tools/model.d.ts +3 -2
  331. package/lib/features/tools/model.d.ts.map +1 -1
  332. package/lib/features/tools/model.js +0 -15
  333. package/lib/features/tools/model.js.map +1 -1
  334. package/lib/features/tools/node-creation-tool.d.ts +1 -1
  335. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  336. package/lib/features/tools/node-creation-tool.js +17 -17
  337. package/lib/features/tools/node-creation-tool.js.map +1 -1
  338. package/lib/features/tools/view.d.ts.map +1 -1
  339. package/lib/features/tools/view.js +2 -2
  340. package/lib/features/tools/view.js.map +1 -1
  341. package/lib/features/validation/di.config.d.ts +0 -15
  342. package/lib/features/validation/di.config.d.ts.map +1 -1
  343. package/lib/features/validation/di.config.js +9 -7
  344. package/lib/features/validation/di.config.js.map +1 -1
  345. package/lib/features/validation/marker-navigator.d.ts +27 -25
  346. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  347. package/lib/features/validation/marker-navigator.js +64 -91
  348. package/lib/features/validation/marker-navigator.js.map +1 -1
  349. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  350. package/lib/features/validation/marker-navigator.spec.js +23 -37
  351. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  352. package/lib/features/validation/validate.d.ts +16 -30
  353. package/lib/features/validation/validate.d.ts.map +1 -1
  354. package/lib/features/validation/validate.js +61 -92
  355. package/lib/features/validation/validate.js.map +1 -1
  356. package/lib/features/viewport/di.config.d.ts +1 -1
  357. package/lib/features/viewport/di.config.d.ts.map +1 -1
  358. package/lib/features/viewport/di.config.js +7 -7
  359. package/lib/features/viewport/di.config.js.map +1 -1
  360. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +1 -1
  361. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  362. package/lib/features/viewport/glsp-scroll-mouse-listener.js +3 -3
  363. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  364. package/lib/index.d.ts +8 -9
  365. package/lib/index.d.ts.map +1 -1
  366. package/lib/index.js +15 -11
  367. package/lib/index.js.map +1 -1
  368. package/lib/lib/model.d.ts +3 -2
  369. package/lib/lib/model.d.ts.map +1 -1
  370. package/lib/lib/model.js +3 -18
  371. package/lib/lib/model.js.map +1 -1
  372. package/lib/model-source/glsp-diagram-server.d.ts +6 -6
  373. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  374. package/lib/model-source/glsp-diagram-server.js +8 -7
  375. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  376. package/lib/sprotty-reexport.d.ts +174 -0
  377. package/lib/sprotty-reexport.d.ts.map +1 -0
  378. package/lib/sprotty-reexport.js +299 -0
  379. package/lib/sprotty-reexport.js.map +1 -0
  380. package/lib/utils/argument-utils.js +5 -5
  381. package/lib/utils/argument-utils.js.map +1 -1
  382. package/lib/utils/layout-utils.d.ts +6 -22
  383. package/lib/utils/layout-utils.d.ts.map +1 -1
  384. package/lib/utils/layout-utils.js +1 -1
  385. package/lib/utils/layout-utils.js.map +1 -1
  386. package/lib/utils/smodel-util.d.ts +117 -11
  387. package/lib/utils/smodel-util.d.ts.map +1 -1
  388. package/lib/utils/smodel-util.js +142 -37
  389. package/lib/utils/smodel-util.js.map +1 -1
  390. package/lib/utils/viewpoint-util.d.ts +3 -3
  391. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  392. package/lib/utils/viewpoint-util.js +19 -3
  393. package/lib/utils/viewpoint-util.js.map +1 -1
  394. package/lib/views/base-view-module.d.ts.map +1 -1
  395. package/lib/views/base-view-module.js +21 -19
  396. package/lib/views/base-view-module.js.map +1 -1
  397. package/lib/views/compartments.js +2 -2
  398. package/lib/views/compartments.js.map +1 -1
  399. package/lib/views/glsp-edge-view.d.ts +1 -1
  400. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  401. package/lib/views/glsp-edge-view.js +1 -1
  402. package/lib/views/glsp-edge-view.js.map +1 -1
  403. package/lib/views/index.js +6 -2
  404. package/lib/views/index.js.map +1 -1
  405. package/lib/views/issue-marker-view.d.ts.map +1 -1
  406. package/lib/views/issue-marker-view.js +3 -3
  407. package/lib/views/issue-marker-view.js.map +1 -1
  408. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  409. package/lib/views/rounded-corner-view.js +2 -2
  410. package/lib/views/rounded-corner-view.js.map +1 -1
  411. package/package.json +8 -18
  412. package/src/base/action-dispatcher.ts +26 -16
  413. package/src/base/actions/focus-change-action.ts +25 -8
  414. package/src/base/actions/sprotty-actions.ts +26 -0
  415. package/src/base/auto-complete/auto-complete-actions.ts +7 -5
  416. package/src/base/auto-complete/auto-complete-widget.ts +15 -13
  417. package/src/base/command-stack.ts +7 -6
  418. package/src/base/container-modules.ts +4 -3
  419. package/src/base/di.config.ts +4 -5
  420. package/src/base/drag-aware-mouse-listener.ts +4 -4
  421. package/src/base/editor-context-service.ts +38 -16
  422. package/src/base/focus-tracker.ts +5 -4
  423. package/src/base/model/model-registry.ts +2 -2
  424. package/src/base/model/update-model-command.ts +9 -10
  425. package/src/base/model-initialization-constraint.ts +9 -11
  426. package/src/base/selection-clearing-mouse-listener.ts +1 -1
  427. package/src/base/source-uri-aware.ts +5 -4
  428. package/src/base/tool-manager/glsp-tool-manager.ts +9 -9
  429. package/src/base/tool-manager/tool-actions.ts +37 -0
  430. package/src/base/types.ts +31 -24
  431. package/src/base/view/view-registry.ts +2 -2
  432. package/src/features/change-bounds/model.ts +5 -5
  433. package/src/features/change-bounds/movement-restrictor.ts +74 -44
  434. package/src/features/change-bounds/snap.spec.ts +89 -0
  435. package/src/features/change-bounds/snap.ts +86 -3
  436. package/src/features/command-palette/di.config.ts +5 -7
  437. package/src/features/command-palette/server-command-palette-provider.ts +9 -8
  438. package/src/features/context-menu/delete-element-context-menu.ts +6 -6
  439. package/src/features/context-menu/di.config.ts +3 -2
  440. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +45 -17
  441. package/src/features/context-menu/server-context-menu-provider.ts +7 -6
  442. package/src/features/copy-paste/copy-paste-context-menu.ts +30 -23
  443. package/src/features/copy-paste/copy-paste-handler.ts +6 -6
  444. package/src/features/copy-paste/di.config.ts +7 -15
  445. package/src/features/decoration/decoration-placer.ts +4 -4
  446. package/src/features/decoration/di.config.ts +3 -5
  447. package/src/features/edit-label/di.config.ts +4 -5
  448. package/src/features/edit-label/edit-label-tool.ts +1 -2
  449. package/src/features/edit-label/edit-label-validator.ts +6 -10
  450. package/src/features/hints/di.config.ts +3 -3
  451. package/src/features/hints/type-hints.ts +33 -18
  452. package/src/features/hover/di.config.ts +8 -2
  453. package/src/features/hover/hover.ts +53 -11
  454. package/src/features/layout/di.config.ts +11 -7
  455. package/src/features/layout/freeform-layout.ts +6 -15
  456. package/src/features/layout/hbox-layout.ts +256 -0
  457. package/src/features/layout/{layout-commands.spec.ts → layout-elements-action.spec.ts} +89 -65
  458. package/src/features/layout/layout-elements-action.ts +486 -0
  459. package/src/features/layout/vbox-layout.ts +20 -20
  460. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +7 -12
  461. package/src/features/mouse-tool/di.config.ts +3 -4
  462. package/src/features/mouse-tool/mouse-tool.ts +18 -59
  463. package/src/features/navigation/navigation-action-handler.ts +76 -42
  464. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -3
  465. package/src/features/navigation/navigation-target-resolver.ts +9 -14
  466. package/src/features/reconnect/model.ts +2 -2
  467. package/src/features/save/di.config.ts +2 -3
  468. package/src/features/save/save-keylistener.ts +3 -3
  469. package/src/features/select/di.config.ts +6 -8
  470. package/src/features/select/select-feedback-action.ts +18 -46
  471. package/src/features/select/select-mouse-listener.ts +1 -2
  472. package/src/features/select/selection-service.spec.ts +12 -9
  473. package/src/features/select/selection-service.ts +52 -60
  474. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +52 -22
  475. package/src/features/tool-feedback/creation-tool-feedback.ts +79 -30
  476. package/src/features/tool-feedback/css-feedback.ts +40 -37
  477. package/src/features/tool-feedback/di.config.ts +4 -5
  478. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +140 -88
  479. package/src/features/tool-feedback/feedback-action-dispatcher.ts +4 -3
  480. package/src/features/tool-feedback/marquee-tool-feedback.ts +38 -13
  481. package/src/features/tool-feedback/model.ts +1 -3
  482. package/src/features/tool-feedback/view.tsx +3 -3
  483. package/src/features/tool-palette/di.config.ts +3 -2
  484. package/src/features/tool-palette/tool-palette.ts +35 -19
  485. package/src/features/tools/base-glsp-tool.ts +11 -11
  486. package/src/features/tools/change-bounds-tool.ts +37 -67
  487. package/src/features/tools/delete-tool.ts +9 -9
  488. package/src/features/tools/di.config.ts +23 -12
  489. package/src/features/tools/edge-creation-tool.ts +21 -12
  490. package/src/features/tools/edge-edit-tool.ts +25 -21
  491. package/src/features/tools/enable-default-tools-on-focus-loss.ts +33 -0
  492. package/src/features/tools/marquee-behavior.ts +2 -2
  493. package/src/features/tools/marquee-mouse-tool.ts +13 -14
  494. package/src/features/tools/marquee-tool.ts +3 -3
  495. package/src/features/tools/model.ts +4 -3
  496. package/src/features/tools/node-creation-tool.ts +8 -8
  497. package/src/features/tools/view.tsx +2 -3
  498. package/src/features/validation/di.config.ts +13 -11
  499. package/src/features/validation/marker-navigator.spec.ts +4 -2
  500. package/src/features/validation/marker-navigator.ts +67 -82
  501. package/src/features/validation/validate.ts +57 -91
  502. package/src/features/viewport/di.config.ts +1 -2
  503. package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
  504. package/src/index.ts +9 -9
  505. package/src/lib/model.ts +4 -4
  506. package/src/model-source/glsp-diagram-server.ts +15 -15
  507. package/src/sprotty-reexport.ts +283 -0
  508. package/src/utils/layout-utils.ts +9 -29
  509. package/src/utils/smodel-util.ts +139 -43
  510. package/src/utils/viewpoint-util.ts +5 -14
  511. package/src/views/base-view-module.ts +5 -1
  512. package/src/views/compartments.tsx +1 -1
  513. package/src/views/glsp-edge-view.tsx +4 -4
  514. package/src/views/issue-marker-view.tsx +2 -2
  515. package/src/views/rounded-corner-view.tsx +2 -3
  516. package/lib/features/layout/layout-commands.d.ts +0 -153
  517. package/lib/features/layout/layout-commands.d.ts.map +0 -1
  518. package/lib/features/layout/layout-commands.js +0 -412
  519. package/lib/features/layout/layout-commands.js.map +0 -1
  520. package/lib/features/layout/layout-commands.spec.d.ts +0 -3
  521. package/lib/features/layout/layout-commands.spec.d.ts.map +0 -1
  522. package/lib/features/layout/layout-commands.spec.js.map +0 -1
  523. package/lib/features/tool-palette/palette-item.d.ts.map +0 -1
  524. package/lib/features/tool-palette/palette-item.js.map +0 -1
  525. package/lib/protocol-reexport.d.ts +0 -45
  526. package/lib/protocol-reexport.d.ts.map +0 -1
  527. package/lib/protocol-reexport.js +0 -75
  528. package/lib/protocol-reexport.js.map +0 -1
  529. package/src/features/layout/layout-commands.ts +0 -424
  530. package/src/features/tool-palette/palette-item.ts +0 -38
  531. package/src/protocol-reexport.ts +0 -64
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,108 +13,192 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { ElementAndRoutingPoints } from '@eclipse-glsp/protocol';
16
+ import { distinctAdd, ElementAndBounds, ElementAndRoutingPoints, remove, SModelElementSchema, TypeGuard } from '@eclipse-glsp/protocol';
17
17
  import {
18
18
  BoundsAware,
19
- ElementAndBounds,
20
19
  isBoundsAware,
21
20
  isMoveable,
22
21
  isSelectable,
23
22
  isSelected,
23
+ ModelIndexImpl,
24
24
  Selectable,
25
25
  SModelElement,
26
- SModelElementSchema,
27
- SModelIndex,
28
26
  SRoutableElement,
29
27
  SRoutingHandle
30
28
  } from 'sprotty';
29
+ import { FluentIterable } from 'sprotty/lib/utils/iterable';
31
30
 
32
- export function getIndex(element: SModelElement): SModelIndex<SModelElement> {
33
- return element.root.index;
31
+ /**
32
+ * Helper type to represent a filter predicate for {@link SModelElement}s. This is used to retrieve
33
+ * elements from the {@link ModelIndexImpl} that also conform to a second type `T`. Its mainly used for
34
+ * retrieving elements that also implement a certain model features (e.g. selectable)
35
+ */
36
+ export type ModelFilterPredicate<T> = (modelElement: SModelElement) => modelElement is SModelElement & T;
37
+
38
+ /**
39
+ * Retrieves all elements from the given {@link ModelIndexImpl} that match the given {@link ModelFilterPredicate}
40
+ * @param index The {@link ModelIndexImpl}.
41
+ * @param predicate The {@link ModelFilterPredicate} that should be used.
42
+ * @returns A {@link FluentIterable} of all indexed element that match the predicate
43
+ * (correctly casted to also include the additional type of the predicate).
44
+ */
45
+ export function filter<T>(index: ModelIndexImpl, predicate: ModelFilterPredicate<T>): FluentIterable<SModelElement & T> {
46
+ return index.all().filter(predicate) as FluentIterable<SModelElement & T>;
34
47
  }
35
48
 
49
+ /**
50
+ * Retrieves all elements from the given {@link ModelIndexImpl} that match the given {@link ModelFilterPredicate} and executes
51
+ * the given runnable for each element of the result set.
52
+ * @param index The {@link ModelIndexImpl}.
53
+ * @param predicate The {@link ModelFilterPredicate} that should be used.
54
+ * @param runnable The runnable that should be executed for each matching element.
55
+ */
36
56
  export function forEachElement<T>(
37
- element: SModelElement,
38
- predicate: (modelElement: SModelElement) => modelElement is SModelElement & T,
57
+ index: ModelIndexImpl,
58
+ predicate: ModelFilterPredicate<T>,
39
59
  runnable: (modelElement: SModelElement & T) => void
40
60
  ): void {
41
- getIndex(element).all().filter(predicate).forEach(runnable);
61
+ filter(index, predicate).forEach(runnable);
42
62
  }
43
63
 
44
- export function getMatchingElements<T>(
45
- element: SModelElement,
46
- predicate: (modelElement: SModelElement) => modelElement is SModelElement & T
47
- ): (SModelElement & T)[] {
48
- const matching: (SModelElement & T)[] = [];
49
- forEachElement(element, predicate, item => matching.push(item));
50
- return matching;
64
+ /**
65
+ * Retrieves an array of all elements that match the given {@link ModelFilterPredicate} from the given {@link ModelIndexImpl}.
66
+ * @param index The {@link ModelIndexImpl}.
67
+ * @param predicate The {@link ModelFilterPredicate} that should be used.
68
+ * @returns An array of all indexed element that match the predicate
69
+ * (correctly casted to also include the additional type of the predicate).
70
+ */
71
+ export function getMatchingElements<T>(index: ModelIndexImpl, predicate: ModelFilterPredicate<T>): (SModelElement & T)[] {
72
+ return Array.from(filter(index, predicate));
51
73
  }
52
74
 
53
- export function hasSelectedElements(element: SModelElement): boolean {
54
- return getSelectedElementCount(element) > 0;
75
+ /**
76
+ * Invokes the given model index to retrieve the corresponding model elements for the given set of ids. Ids that
77
+ * have no corresponding element in the index will be ignored.
78
+ * @param index THe model index.
79
+ * @param elementsIDs The element ids.
80
+ * @param guard Optional typeguard. If defined only elements that match the guard will be returned.
81
+ * @returns An array of the model elements that correspond to the given ids and filter predicate.
82
+ */
83
+ export function getElements<S extends SModelElement>(index: ModelIndexImpl, elementsIDs: string[], guard?: TypeGuard<S>): S[] {
84
+ // Internal filter function that filters out undefined model elements and runs an optional typeguard check.
85
+ const filterFn = (element?: SModelElement): element is S => {
86
+ if (element !== undefined) {
87
+ return guard ? guard(element) : true;
88
+ }
89
+ return false;
90
+ };
91
+ return elementsIDs.map(id => index.getById(id)).filter(filterFn);
55
92
  }
56
-
57
- export function getSelectedElementCount(element: SModelElement): number {
93
+ /**
94
+ * Retrieves the amount of currently selected elements in the given {@link ModelIndexImpl}.
95
+ * @param index The {@link ModelIndexImpl}.
96
+ * @returns The amount of selected elements.
97
+ */
98
+ export function getSelectedElementCount(index: ModelIndexImpl): number {
58
99
  let selected = 0;
59
- getIndex(element)
60
- .all()
61
- .filter(isSelected)
62
- .forEach(e => (selected = selected + 1));
100
+ forEachElement(index, isSelected, element => selected++);
63
101
  return selected;
64
102
  }
65
103
 
104
+ /**
105
+ * Helper function to check wether an any element is selected in the given {@link ModelIndexImpl}.
106
+ * @param index The {@link ModelIndexImpl}.
107
+ * @returns `true` if at least one element is selected, `false` otherwise.
108
+ */
109
+ export function hasSelectedElements(index: ModelIndexImpl): boolean {
110
+ return getSelectedElementCount(index) > 0;
111
+ }
112
+
113
+ /**
114
+ * Helper function to check wether an element is defined. Can be used as {@link ModelFilterPredicate}.
115
+ * @param element The element that should be checked.
116
+ * @returns the type predicate for `T`
117
+ */
66
118
  export function isNotUndefined<T>(element: T | undefined): element is T {
67
119
  return element !== undefined;
68
120
  }
69
121
 
70
- export function addCssClasses(root: SModelElement, cssClasses: string[]): void {
71
- if (root.cssClasses === undefined) {
72
- root.cssClasses = [];
73
- }
74
- for (const cssClass of cssClasses) {
75
- if (root.cssClasses.indexOf(cssClass) < 0) {
76
- root.cssClasses.push(cssClass);
77
- }
78
- }
122
+ /**
123
+ * Adds a set of css classes to the given {@link SModelElement}.
124
+ * @param element The element to which the css classes should be added.
125
+ * @param cssClasses The set of css classes as string array.
126
+ */
127
+ export function addCssClasses(element: SModelElement, cssClasses: string[]): void {
128
+ const elementCssClasses: string[] = element.cssClasses ?? [];
129
+ distinctAdd(elementCssClasses, ...cssClasses);
130
+ element.cssClasses = elementCssClasses;
79
131
  }
80
132
 
133
+ /**
134
+ * Removes a set of css classes from the given {@link SModelElement}.
135
+ * @param element The element from which the css classes should be removed.
136
+ * @param cssClasses The set of css classes as string array.
137
+ */
81
138
  export function removeCssClasses(root: SModelElement, cssClasses: string[]): void {
82
- if (root.cssClasses === undefined || root.cssClasses.length === 0) {
139
+ if (!root.cssClasses || root.cssClasses.length === 0) {
83
140
  return;
84
141
  }
85
- for (const cssClass of cssClasses) {
86
- const index = root.cssClasses.indexOf(cssClass);
87
- if (index !== -1) {
88
- root.cssClasses.splice(root.cssClasses.indexOf(cssClass), 1);
89
- }
90
- }
142
+ remove(root.cssClasses, ...cssClasses);
91
143
  }
92
144
 
93
145
  export function isNonRoutableSelectedMovableBoundsAware(element: SModelElement): element is SelectableBoundsAware {
94
146
  return isNonRoutableSelectedBoundsAware(element) && isMoveable(element);
95
147
  }
96
148
 
149
+ /**
150
+ * A typeguard function to check wether a given {@link SModelElement} implements the {@link BoundsAware} model feature,
151
+ * the {@link Selectable} model feature and is actually selected. In addition, the element must not be a {@link SRoutableElement}.
152
+ * @param element The element to check.
153
+ * @returns A type predicate indicating wether the element is of type {@link SelectableBoundsAware}.
154
+ */
97
155
  export function isNonRoutableSelectedBoundsAware(element: SModelElement): element is SelectableBoundsAware {
98
156
  return isBoundsAware(element) && isSelected(element) && !isRoutable(element);
99
157
  }
100
158
 
159
+ /**
160
+ * A type guard function to check wether a given {@link SModelElement} is a {@link SRoutableElement}.
161
+ * @param element The element to check.
162
+ * @returns A type predicate indicating wether the element is a {@link SRoutableElement}.
163
+ */
101
164
  export function isRoutable<T extends SModelElement>(element: T): element is T & SRoutableElement {
102
165
  return element instanceof SRoutableElement && (element as any).routingPoints !== undefined;
103
166
  }
104
167
 
168
+ /**
169
+ * A typeguard function to check wether a given {@link SModelElement} is a {@link SRoutingHandle}.
170
+ * @param element The element to check.
171
+ * @returns A type predicate indicating wether the element is a {@link SRoutingHandle}
172
+ */
105
173
  export function isRoutingHandle(element: SModelElement | undefined): element is SRoutingHandle {
106
174
  return element !== undefined && element instanceof SRoutingHandle;
107
175
  }
108
176
 
109
- export function isSelectableAndBoundsAware(element: SModelElement): element is BoundsAware & Selectable & SModelElement {
177
+ /**
178
+ * A typeguard function to check wether a given {@link SModelElement} implements the {@link Selectable} model feature and
179
+ * the {@link BoundsAware} model feature.
180
+ * @returns A type predicate indicating wether the element is of type {@link SelectableBoundsAware}.
181
+ */
182
+ export function isSelectableAndBoundsAware(element: SModelElement): element is SelectableBoundsAware {
110
183
  return isSelectable(element) && isBoundsAware(element);
111
184
  }
112
185
 
186
+ /**
187
+ * Union type to describe {@link SModelElement}s that implement the {@link Selectable} and {@link BoundsAware} feature.
188
+ */
113
189
  export type SelectableBoundsAware = SModelElement & BoundsAware & Selectable;
114
190
 
191
+ /**
192
+ * Union type to describe {@link SModelElement}s that implement the {@link BoundsAware} feature.
193
+ */
115
194
  export type BoundsAwareModelElement = SModelElement & BoundsAware;
116
195
 
117
- export function toElementAndBounds(element: SModelElement & BoundsAware): ElementAndBounds {
196
+ /**
197
+ * Helper function to translate a given {@link SModelElement} into its corresponding {@link ElementAndBounds} representation.
198
+ * @param element The element to translate.
199
+ * @returns The corresponding {@link ElementAndBounds} for the given element.
200
+ */
201
+ export function toElementAndBounds(element: BoundsAwareModelElement): ElementAndBounds {
118
202
  return {
119
203
  elementId: element.id,
120
204
  newPosition: {
@@ -128,6 +212,12 @@ export function toElementAndBounds(element: SModelElement & BoundsAware): Elemen
128
212
  };
129
213
  }
130
214
 
215
+ /**
216
+ * Helper function to translate a given {@link SRoutableElement} into its corresponding
217
+ * {@ElementAndRoutingPoints ElementAndBounds} representation.
218
+ * @param element The element to translate.
219
+ * @returns The corresponding {@link ElementAndRoutingPoints} for the given element.
220
+ */
131
221
  export function toElementAndRoutingPoints(element: SRoutableElement): ElementAndRoutingPoints {
132
222
  return {
133
223
  elementId: element.id,
@@ -144,6 +234,12 @@ export function hasCompatibleType(input: SModelElement | SModelElementSchema | s
144
234
  return inputType === type ? true : inputType.split(':').includes(type);
145
235
  }
146
236
 
237
+ /**
238
+ * Convenience function to retrieve the model element type from a given input. The input
239
+ * can either be a {@link SModelElement}, {@link SModelElementSchema} or a string.
240
+ * @param input The type input.
241
+ * @returns The corresponding model type as string.
242
+ */
147
243
  export function getElementTypeId(input: SModelElement | SModelElementSchema | string): string {
148
244
  if (typeof input === 'string') {
149
245
  return input as string;
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,18 +13,9 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Bounds, Point } from '@eclipse-glsp/protocol';
17
- import {
18
- BoundsAware,
19
- Dimension,
20
- findParentByFeature,
21
- isAlignable,
22
- isViewport,
23
- ORIGIN_POINT,
24
- SModelElement,
25
- translateBounds,
26
- Viewport
27
- } from 'sprotty';
16
+
17
+ import { Bounds, Dimension, Point, Viewport } from '@eclipse-glsp/protocol';
18
+ import { BoundsAware, findParentByFeature, isAlignable, isViewport, SModelElement, translateBounds } from 'sprotty';
28
19
 
29
20
  /**
30
21
  * Return the position corresponding to this mouse event (Browser coordinates)
@@ -70,7 +61,7 @@ export function getAbsolutePosition(target: SModelElement, mouseEvent: MouseEven
70
61
  * @param target A bounds-aware element from the diagram
71
62
  */
72
63
  export function toAbsoluteBounds(element: SModelElement & BoundsAware): Bounds {
73
- const location = isAlignable(element) ? element.alignment : ORIGIN_POINT;
64
+ const location = isAlignable(element) ? element.alignment : Point.ORIGIN;
74
65
  const x = location.x;
75
66
  const y = location.y;
76
67
  const width = element.bounds.width;
@@ -26,6 +26,7 @@ import {
26
26
  ForeignObjectView,
27
27
  HtmlRoot,
28
28
  HtmlRootView,
29
+ moveFeature,
29
30
  PreRenderedElement,
30
31
  PreRenderedView,
31
32
  RectangularNode,
@@ -34,6 +35,7 @@ import {
34
35
  SCompartment,
35
36
  SCompartmentView,
36
37
  SEdge,
38
+ selectFeature,
37
39
  SGraphView,
38
40
  ShapedPreRenderedElement,
39
41
  SIssueMarker,
@@ -66,7 +68,9 @@ export function configureDefaultModelElements(context: ContainerContext): void {
66
68
  configureModelElement(context, DefaultTypes.HTML, HtmlRoot, HtmlRootView);
67
69
 
68
70
  // generic elements
69
- configureModelElement(context, DefaultTypes.FOREIGN_OBJECT, ForeignObjectElement, ForeignObjectView);
71
+ configureModelElement(context, DefaultTypes.FOREIGN_OBJECT, ForeignObjectElement, ForeignObjectView, {
72
+ disable: [selectFeature, moveFeature]
73
+ });
70
74
  configureModelElement(context, DefaultTypes.PRE_RENDERED, PreRenderedElement, PreRenderedView);
71
75
  configureModelElement(context, DefaultTypes.SHAPE_PRE_RENDERED, ShapedPreRenderedElement, PreRenderedView);
72
76
 
@@ -29,7 +29,7 @@ export class StructureCompartmentView extends ShapeView {
29
29
 
30
30
  return (
31
31
  <g>
32
- <rect class-sprotty-comp={true} class-debug={true} x='0' y='0' width={model.size.width} height={model.size.height}></rect>
32
+ <rect class-sprotty-comp={true} class-debug={false} x='0' y='0' width={model.size.width} height={model.size.height}></rect>
33
33
  {context.renderChildren(model)}
34
34
  </g>
35
35
  );
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2021 EclipseSource and others.
2
+ * Copyright (c) 2021-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -24,7 +24,7 @@ const JSX = { createElement: svg };
24
24
 
25
25
  @injectable()
26
26
  export class GEdgeView extends PolylineEdgeView {
27
- render(edge: Readonly<SEdge>, context: RenderingContext): VNode {
27
+ override render(edge: Readonly<SEdge>, context: RenderingContext): VNode {
28
28
  const router = this.edgeRouterRegistry.get(edge.routerKind);
29
29
  const route = router.route(edge);
30
30
  if (route.length === 0) {
@@ -44,11 +44,11 @@ export class GEdgeView extends PolylineEdgeView {
44
44
  return {};
45
45
  }
46
46
 
47
- protected renderLine(_edge: SEdge, segments: Point[], _context: RenderingContext): VNode {
47
+ protected override renderLine(_edge: SEdge, segments: Point[], _context: RenderingContext): VNode {
48
48
  return <path d={this.createPathForSegments(segments)} />;
49
49
  }
50
50
 
51
- protected renderAdditionals(edge: SEdge, segments: Point[], _context: RenderingContext): VNode[] {
51
+ protected override renderAdditionals(edge: SEdge, segments: Point[], _context: RenderingContext): VNode[] {
52
52
  // for additional padding we draw another transparent path with larger stroke width
53
53
  const edgePadding = EdgePadding.from(edge);
54
54
  return edgePadding ? [this.renderMouseHandle(segments, edgePadding)] : [];
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020-2021 EclipseSource and others.
2
+ * Copyright (c) 2020-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -23,7 +23,7 @@ const JSX = { createElement: svg };
23
23
 
24
24
  @injectable()
25
25
  export class GIssueMarkerView extends IssueMarkerView {
26
- render(marker: SIssueMarker, _context: RenderingContext): VNode {
26
+ override render(marker: SIssueMarker, _context: RenderingContext): VNode {
27
27
  const maxSeverity = super.getMaxSeverity(marker);
28
28
  const group = (
29
29
  <g class-sprotty-issue={true}>
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2021 EclipseSource and others.
2
+ * Copyright (c) 2021-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -16,7 +16,6 @@
16
16
  import { injectable } from 'inversify';
17
17
  import { Classes, VNode } from 'snabbdom';
18
18
  import { Hoverable, RectangularNodeView, RenderingContext, Selectable, SNode, SPort, SShapeElement, svg } from 'sprotty';
19
-
20
19
  import { CornerRadius } from '../utils/argument-utils';
21
20
  import { RoundedCornerWrapper } from './rounded-corner';
22
21
 
@@ -25,7 +24,7 @@ const JSX = { createElement: svg };
25
24
 
26
25
  @injectable()
27
26
  export class RoundedCornerNodeView extends RectangularNodeView {
28
- render(node: Readonly<SShapeElement & Hoverable & Selectable>, context: RenderingContext): VNode | undefined {
27
+ override render(node: Readonly<SShapeElement & Hoverable & Selectable>, context: RenderingContext): VNode | undefined {
29
28
  const cornerRadius = CornerRadius.from(node);
30
29
  if (!cornerRadius) {
31
30
  return this.renderWithoutRadius(node, context);
@@ -1,153 +0,0 @@
1
- /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
3
- *
4
- * This program and the accompanying materials are made available under the
5
- * terms of the Eclipse Public License v. 2.0 which is available at
6
- * http://www.eclipse.org/legal/epl-2.0.
7
- *
8
- * This Source Code may also be made available under the following Secondary
9
- * Licenses when the conditions for such availability set forth in the Eclipse
10
- * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
- * with the GNU Classpath Exception which is available at
12
- * https://www.gnu.org/software/classpath/license.html.
13
- *
14
- * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
- ********************************************************************************/
16
- import { Action, ElementAndBounds } from '@eclipse-glsp/protocol';
17
- import { Command, CommandExecutionContext, CommandReturn, ElementMove, IActionDispatcher, SModelElement } from 'sprotty';
18
- import { WriteableElementAndBounds, WriteableElementMove } from '../../utils/layout-utils';
19
- import { BoundsAwareModelElement } from '../../utils/smodel-util';
20
- import { IMovementRestrictor } from '../change-bounds/movement-restrictor';
21
- import { SelectionService } from '../select/selection-service';
22
- export declare enum ResizeDimension {
23
- Width = 0,
24
- Height = 1,
25
- Width_And_Height = 2
26
- }
27
- export declare namespace Reduce {
28
- function min(...values: number[]): number;
29
- function max(...values: number[]): number;
30
- function avg(...values: number[]): number;
31
- function first(...values: number[]): number;
32
- function last(...values: number[]): number;
33
- }
34
- export declare class ResizeElementsAction implements Action {
35
- /**
36
- * IDs of the elements that should be resized. If no IDs are given, the selected elements will be resized.
37
- */
38
- readonly elementIds: string[];
39
- /**
40
- * Resize dimension.
41
- */
42
- readonly dimension: ResizeDimension;
43
- /**
44
- * Function to reduce the dimension to a target dimension value, see Reduce.* for potential functions.
45
- */
46
- readonly reductionFunction: (...values: number[]) => number;
47
- readonly kind: string;
48
- constructor(
49
- /**
50
- * IDs of the elements that should be resized. If no IDs are given, the selected elements will be resized.
51
- */
52
- elementIds: string[],
53
- /**
54
- * Resize dimension.
55
- */
56
- dimension: ResizeDimension,
57
- /**
58
- * Function to reduce the dimension to a target dimension value, see Reduce.* for potential functions.
59
- */
60
- reductionFunction: (...values: number[]) => number, kind?: string);
61
- }
62
- export declare enum Alignment {
63
- Left = 0,
64
- Center = 1,
65
- Right = 2,
66
- Top = 3,
67
- Middle = 4,
68
- Bottom = 5
69
- }
70
- export declare namespace Select {
71
- function all(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[];
72
- function first(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[];
73
- function last(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[];
74
- }
75
- export declare class AlignElementsAction implements Action {
76
- /**
77
- * IDs of the elements that should be aligned. If no IDs are given, the selected elements will be aligned.
78
- */
79
- readonly elementIds: string[];
80
- /**
81
- * Alignment direction.
82
- */
83
- readonly alignment: Alignment;
84
- /**
85
- * Function to selected elements that are considered during alignment calculation, see Select.* for potential functions.
86
- */
87
- readonly selectionFunction: (elements: BoundsAwareModelElement[]) => BoundsAwareModelElement[];
88
- readonly kind: string;
89
- constructor(
90
- /**
91
- * IDs of the elements that should be aligned. If no IDs are given, the selected elements will be aligned.
92
- */
93
- elementIds?: string[],
94
- /**
95
- * Alignment direction.
96
- */
97
- alignment?: Alignment,
98
- /**
99
- * Function to selected elements that are considered during alignment calculation, see Select.* for potential functions.
100
- */
101
- selectionFunction?: (elements: BoundsAwareModelElement[]) => BoundsAwareModelElement[], kind?: string);
102
- }
103
- declare abstract class LayoutElementsCommand extends Command {
104
- protected action: ResizeElementsAction | AlignElementsAction;
105
- protected actionDispatcher: IActionDispatcher;
106
- protected selectionService: SelectionService;
107
- readonly movementRestrictor?: IMovementRestrictor | undefined;
108
- constructor(action: ResizeElementsAction | AlignElementsAction, actionDispatcher: IActionDispatcher, selectionService: SelectionService, movementRestrictor?: IMovementRestrictor | undefined);
109
- getActionElements(context: CommandExecutionContext): BoundsAwareModelElement[];
110
- protected abstract isActionElement(element: SModelElement): element is BoundsAwareModelElement;
111
- dispatchAction(action: Action): void;
112
- dispatchActions(actions: Action[]): void;
113
- }
114
- export declare class ResizeElementsCommand extends LayoutElementsCommand {
115
- protected action: ResizeElementsAction;
116
- protected actionDispatcher: IActionDispatcher;
117
- protected selectionService: SelectionService;
118
- readonly movementRestrictor?: IMovementRestrictor | undefined;
119
- static readonly KIND = "layout:resize";
120
- constructor(action: ResizeElementsAction, actionDispatcher: IActionDispatcher, selectionService: SelectionService, movementRestrictor?: IMovementRestrictor | undefined);
121
- protected isActionElement(element: SModelElement): element is BoundsAwareModelElement;
122
- execute(context: CommandExecutionContext): CommandReturn;
123
- resizeWidth(elements: BoundsAwareModelElement[]): void;
124
- resizeHeight(elements: BoundsAwareModelElement[]): void;
125
- resizeWidthAndHeight(elements: BoundsAwareModelElement[]): void;
126
- dispatchResizeActions(elements: BoundsAwareModelElement[], change: (element: BoundsAwareModelElement, bounds: WriteableElementAndBounds) => void): void;
127
- createElementAndBounds(element: BoundsAwareModelElement, change: (_element: BoundsAwareModelElement, _bounds: WriteableElementAndBounds) => void): WriteableElementAndBounds | undefined;
128
- undo(context: CommandExecutionContext): CommandReturn;
129
- redo(context: CommandExecutionContext): CommandReturn;
130
- }
131
- export declare class AlignElementsCommand extends LayoutElementsCommand {
132
- protected action: AlignElementsAction;
133
- protected actionDispatcher: IActionDispatcher;
134
- protected selectionService: SelectionService;
135
- readonly movementRestrictor?: IMovementRestrictor | undefined;
136
- static readonly KIND = "layout:align";
137
- constructor(action: AlignElementsAction, actionDispatcher: IActionDispatcher, selectionService: SelectionService, movementRestrictor?: IMovementRestrictor | undefined);
138
- protected isActionElement(element: SModelElement): element is BoundsAwareModelElement;
139
- execute(context: CommandExecutionContext): CommandReturn;
140
- alignLeft(elements: BoundsAwareModelElement[]): void;
141
- alignCenter(elements: BoundsAwareModelElement[]): void;
142
- alignRight(elements: BoundsAwareModelElement[]): void;
143
- alignTop(elements: BoundsAwareModelElement[]): void;
144
- alignMiddle(elements: BoundsAwareModelElement[]): void;
145
- alignBottom(elements: BoundsAwareModelElement[]): void;
146
- dispatchAlignActions(elements: BoundsAwareModelElement[], change: (element: BoundsAwareModelElement, move: WriteableElementMove) => void): void;
147
- createElementMove(element: BoundsAwareModelElement, change: (_element: BoundsAwareModelElement, _move: WriteableElementMove) => void): WriteableElementMove | undefined;
148
- createElementAndBounds(element: BoundsAwareModelElement, move: ElementMove): ElementAndBounds;
149
- undo(context: CommandExecutionContext): CommandReturn;
150
- redo(context: CommandExecutionContext): CommandReturn;
151
- }
152
- export {};
153
- //# sourceMappingURL=layout-commands.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout-commands.d.ts","sourceRoot":"","sources":["../../../src/features/layout/layout-commands.ts"],"names":[],"mappings":"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"}