@eclipse-glsp/client 1.1.0-next.cab84ec.250 → 1.1.0-next.cc57a50.267

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 (784) hide show
  1. package/README.md +1 -1
  2. package/css/decoration.css +0 -7
  3. package/css/glsp-sprotty.css +7 -0
  4. package/css/key-shortcut.css +107 -0
  5. package/css/status-overlay.css +75 -0
  6. package/lib/base/action-dispatcher.d.ts +1 -0
  7. package/lib/base/action-dispatcher.d.ts.map +1 -1
  8. package/lib/base/action-dispatcher.js +8 -3
  9. package/lib/base/action-dispatcher.js.map +1 -1
  10. package/lib/base/auto-complete/auto-complete-actions.js +1 -1
  11. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  12. package/lib/base/auto-complete/validation-decorator.js +1 -1
  13. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  14. package/lib/base/command-stack.d.ts +17 -2
  15. package/lib/base/command-stack.d.ts.map +1 -1
  16. package/lib/base/command-stack.js +43 -3
  17. package/lib/base/command-stack.js.map +1 -1
  18. package/lib/base/{di.config.d.ts → default.module.d.ts} +8 -5
  19. package/lib/base/default.module.d.ts.map +1 -0
  20. package/lib/base/{di.config.js → default.module.js} +37 -12
  21. package/lib/base/default.module.js.map +1 -0
  22. package/lib/base/drag-aware-mouse-listener.d.ts +2 -2
  23. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  24. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  25. package/lib/base/editor-context-service.d.ts +17 -8
  26. package/lib/base/editor-context-service.d.ts.map +1 -1
  27. package/lib/base/editor-context-service.js +50 -17
  28. package/lib/base/editor-context-service.js.map +1 -1
  29. package/lib/{features/tool-feedback → base/feedback}/css-feedback.d.ts +1 -1
  30. package/lib/base/feedback/css-feedback.d.ts.map +1 -0
  31. package/lib/{features/tool-feedback → base/feedback}/css-feedback.js +5 -6
  32. package/lib/base/feedback/css-feedback.js.map +1 -0
  33. package/lib/{features/tool-feedback → base/feedback}/feedback-action-dispatcher.d.ts +11 -9
  34. package/lib/base/feedback/feedback-action-dispatcher.d.ts.map +1 -0
  35. package/lib/{features/tool-feedback → base/feedback}/feedback-action-dispatcher.js +26 -20
  36. package/lib/base/feedback/feedback-action-dispatcher.js.map +1 -0
  37. package/lib/{features/tool-feedback/model.d.ts → base/feedback/feedback-command.d.ts} +1 -1
  38. package/lib/base/feedback/feedback-command.d.ts.map +1 -0
  39. package/lib/{features/tool-feedback/model.js → base/feedback/feedback-command.js} +1 -1
  40. package/lib/base/feedback/feedback-command.js.map +1 -0
  41. package/lib/base/{model → feedback}/update-model-command.d.ts +3 -15
  42. package/lib/base/feedback/update-model-command.d.ts.map +1 -0
  43. package/lib/base/{model → feedback}/update-model-command.js +3 -27
  44. package/lib/base/feedback/update-model-command.js.map +1 -0
  45. package/lib/base/{actions/focus-change-action.d.ts → focus/focus-state-change-action.d.ts} +1 -1
  46. package/lib/base/focus/focus-state-change-action.d.ts.map +1 -0
  47. package/lib/base/{actions/focus-change-action.js → focus/focus-state-change-action.js} +2 -2
  48. package/lib/base/focus/focus-state-change-action.js.map +1 -0
  49. package/lib/base/{focus-tracker.d.ts → focus/focus-tracker.d.ts} +1 -1
  50. package/lib/base/focus/focus-tracker.d.ts.map +1 -0
  51. package/lib/base/{focus-tracker.js → focus/focus-tracker.js} +5 -6
  52. package/lib/base/focus/focus-tracker.js.map +1 -0
  53. package/lib/base/model/glsp-model-source.d.ts +58 -0
  54. package/lib/base/model/glsp-model-source.d.ts.map +1 -0
  55. package/lib/base/model/glsp-model-source.js +137 -0
  56. package/lib/base/model/glsp-model-source.js.map +1 -0
  57. package/lib/base/model/model-registry.js +2 -3
  58. package/lib/base/model/model-registry.js.map +1 -1
  59. package/lib/base/model-initialization-constraint.js +4 -6
  60. package/lib/base/model-initialization-constraint.js.map +1 -1
  61. package/lib/base/ranked.d.ts +34 -0
  62. package/lib/base/ranked.d.ts.map +1 -0
  63. package/lib/base/{source-uri-aware.js → ranked.js} +22 -8
  64. package/lib/base/ranked.js.map +1 -0
  65. package/lib/base/selection-clearing-mouse-listener.js +2 -3
  66. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  67. package/lib/{features/select → base}/selection-service.d.ts +34 -13
  68. package/lib/base/selection-service.d.ts.map +1 -0
  69. package/lib/{features/select → base}/selection-service.js +77 -31
  70. package/lib/base/selection-service.js.map +1 -0
  71. package/lib/base/selection-service.spec.d.ts +2 -0
  72. package/lib/base/selection-service.spec.d.ts.map +1 -0
  73. package/lib/base/selection-service.spec.js +281 -0
  74. package/lib/base/selection-service.spec.js.map +1 -0
  75. package/lib/base/tool-manager/glsp-tool-manager.d.ts +3 -3
  76. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  77. package/lib/base/tool-manager/glsp-tool-manager.js +5 -6
  78. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  79. package/lib/base/view/key-tool.d.ts +5 -0
  80. package/lib/base/view/key-tool.d.ts.map +1 -0
  81. package/lib/base/view/key-tool.js +36 -0
  82. package/lib/base/view/key-tool.js.map +1 -0
  83. package/lib/base/view/mouse-tool.d.ts +19 -0
  84. package/lib/base/view/mouse-tool.d.ts.map +1 -0
  85. package/lib/{features/mouse-tool → base/view}/mouse-tool.js +14 -11
  86. package/lib/base/view/mouse-tool.js.map +1 -0
  87. package/lib/base/view/view-registry.js +2 -3
  88. package/lib/base/view/view-registry.js.map +1 -1
  89. package/lib/{base/container-modules.d.ts → default-modules.d.ts} +7 -6
  90. package/lib/default-modules.d.ts.map +1 -0
  91. package/lib/default-modules.js +152 -0
  92. package/lib/default-modules.js.map +1 -0
  93. package/lib/features/accessibility/{di.config.d.ts → accessibility-module.d.ts} +3 -3
  94. package/lib/features/accessibility/accessibility-module.d.ts.map +1 -0
  95. package/lib/features/accessibility/{di.config.js → accessibility-module.js} +14 -12
  96. package/lib/features/accessibility/accessibility-module.js.map +1 -0
  97. package/lib/features/accessibility/key-shortcut/accessible-key-shortcut-tool.d.ts +31 -0
  98. package/lib/features/accessibility/key-shortcut/accessible-key-shortcut-tool.d.ts.map +1 -0
  99. package/lib/features/accessibility/key-shortcut/accessible-key-shortcut-tool.js +72 -0
  100. package/lib/features/accessibility/key-shortcut/accessible-key-shortcut-tool.js.map +1 -0
  101. package/lib/features/accessibility/key-shortcut/accessible-key-shortcut.d.ts +53 -0
  102. package/lib/features/accessibility/key-shortcut/accessible-key-shortcut.d.ts.map +1 -0
  103. package/lib/features/accessibility/key-shortcut/accessible-key-shortcut.js +149 -0
  104. package/lib/features/accessibility/key-shortcut/accessible-key-shortcut.js.map +1 -0
  105. package/lib/features/accessibility/key-shortcut/di.config.d.ts +24 -0
  106. package/lib/features/accessibility/key-shortcut/di.config.d.ts.map +1 -0
  107. package/lib/features/accessibility/key-shortcut/di.config.js +37 -0
  108. package/lib/features/accessibility/key-shortcut/di.config.js.map +1 -0
  109. package/lib/features/accessibility/move-zoom/move-handler.js +6 -8
  110. package/lib/features/accessibility/move-zoom/move-handler.js.map +1 -1
  111. package/lib/features/accessibility/move-zoom/{di.config.d.ts → move-zoom-module.d.ts} +3 -4
  112. package/lib/features/accessibility/move-zoom/move-zoom-module.d.ts.map +1 -0
  113. package/lib/features/accessibility/move-zoom/{di.config.js → move-zoom-module.js} +3 -4
  114. package/lib/features/accessibility/move-zoom/move-zoom-module.js.map +1 -0
  115. package/lib/features/accessibility/move-zoom/zoom-handler.js +6 -8
  116. package/lib/features/accessibility/move-zoom/zoom-handler.js.map +1 -1
  117. package/lib/features/accessibility/resize-key-tool/resize-key-handler.js +4 -5
  118. package/lib/features/accessibility/resize-key-tool/resize-key-handler.js.map +1 -1
  119. package/lib/features/accessibility/resize-key-tool/{di.config.d.ts → resize-key-module.d.ts} +3 -4
  120. package/lib/features/accessibility/resize-key-tool/resize-key-module.d.ts.map +1 -0
  121. package/lib/features/accessibility/resize-key-tool/{di.config.js → resize-key-module.js} +3 -4
  122. package/lib/features/accessibility/resize-key-tool/resize-key-module.js.map +1 -0
  123. package/lib/features/accessibility/resize-key-tool/resize-key-tool.d.ts +7 -2
  124. package/lib/features/accessibility/resize-key-tool/resize-key-tool.d.ts.map +1 -1
  125. package/lib/features/accessibility/resize-key-tool/resize-key-tool.js +30 -9
  126. package/lib/features/accessibility/resize-key-tool/resize-key-tool.js.map +1 -1
  127. package/lib/features/accessibility/search/{di.config.d.ts → search-palette-module.d.ts} +3 -4
  128. package/lib/features/accessibility/search/search-palette-module.d.ts.map +1 -0
  129. package/lib/features/accessibility/search/{di.config.js → search-palette-module.js} +3 -4
  130. package/lib/features/accessibility/search/search-palette-module.js.map +1 -0
  131. package/lib/features/accessibility/search/search-palette.js +3 -4
  132. package/lib/features/accessibility/search/search-palette.js.map +1 -1
  133. package/lib/features/accessibility/search/search-tool.d.ts +8 -1
  134. package/lib/features/accessibility/search/search-tool.d.ts.map +1 -1
  135. package/lib/features/accessibility/search/search-tool.js +25 -4
  136. package/lib/features/accessibility/search/search-tool.js.map +1 -1
  137. package/lib/features/accessibility/view-key-tools/deselect-key-tool.js +2 -3
  138. package/lib/features/accessibility/view-key-tools/deselect-key-tool.js.map +1 -1
  139. package/lib/features/accessibility/view-key-tools/movement-key-tool.d.ts +7 -2
  140. package/lib/features/accessibility/view-key-tools/movement-key-tool.d.ts.map +1 -1
  141. package/lib/features/accessibility/view-key-tools/movement-key-tool.js +23 -6
  142. package/lib/features/accessibility/view-key-tools/movement-key-tool.js.map +1 -1
  143. package/lib/features/accessibility/view-key-tools/{di.config.d.ts → view-key-tools-module.d.ts} +3 -4
  144. package/lib/features/accessibility/view-key-tools/view-key-tools-module.d.ts.map +1 -0
  145. package/lib/features/accessibility/view-key-tools/{di.config.js → view-key-tools-module.js} +4 -5
  146. package/lib/features/accessibility/view-key-tools/view-key-tools-module.js.map +1 -0
  147. package/lib/features/accessibility/view-key-tools/zoom-key-tool.d.ts +5 -1
  148. package/lib/features/accessibility/view-key-tools/zoom-key-tool.d.ts.map +1 -1
  149. package/lib/features/accessibility/view-key-tools/zoom-key-tool.js +28 -6
  150. package/lib/features/accessibility/view-key-tools/zoom-key-tool.js.map +1 -1
  151. package/lib/features/autocomplete-palette/base-autocomplete-palette.js +1 -1
  152. package/lib/features/autocomplete-palette/base-autocomplete-palette.js.map +1 -1
  153. package/lib/features/bounds/{di.config.d.ts → bounds-module.d.ts} +3 -4
  154. package/lib/features/bounds/bounds-module.d.ts.map +1 -0
  155. package/lib/features/bounds/{di.config.js → bounds-module.js} +3 -4
  156. package/lib/features/bounds/bounds-module.js.map +1 -0
  157. package/lib/features/bounds/freeform-layout.js +2 -3
  158. package/lib/features/bounds/freeform-layout.js.map +1 -1
  159. package/lib/features/bounds/freeform-layout.spec.d.ts +3 -0
  160. package/lib/features/bounds/freeform-layout.spec.d.ts.map +1 -0
  161. package/lib/features/bounds/freeform-layout.spec.js +201 -0
  162. package/lib/features/bounds/freeform-layout.spec.js.map +1 -0
  163. package/lib/features/bounds/glsp-hidden-bounds-updater.js +2 -3
  164. package/lib/features/bounds/glsp-hidden-bounds-updater.js.map +1 -1
  165. package/lib/features/bounds/hbox-layout.js +2 -3
  166. package/lib/features/bounds/hbox-layout.js.map +1 -1
  167. package/lib/features/bounds/hbox-layout.spec.d.ts +3 -0
  168. package/lib/features/bounds/hbox-layout.spec.d.ts.map +1 -0
  169. package/lib/features/bounds/hbox-layout.spec.js +160 -0
  170. package/lib/features/bounds/hbox-layout.spec.js.map +1 -0
  171. package/lib/features/bounds/layouter-test-util.spec.d.ts +32 -0
  172. package/lib/features/bounds/layouter-test-util.spec.d.ts.map +1 -0
  173. package/lib/features/bounds/layouter-test-util.spec.js +96 -0
  174. package/lib/features/bounds/layouter-test-util.spec.js.map +1 -0
  175. package/lib/features/bounds/layouter.js +2 -3
  176. package/lib/features/bounds/layouter.js.map +1 -1
  177. package/lib/features/bounds/vbox-layout.js +2 -3
  178. package/lib/features/bounds/vbox-layout.js.map +1 -1
  179. package/lib/features/bounds/vbox-layout.spec.d.ts +3 -0
  180. package/lib/features/bounds/vbox-layout.spec.d.ts.map +1 -0
  181. package/lib/features/bounds/vbox-layout.spec.js +160 -0
  182. package/lib/features/bounds/vbox-layout.spec.js.map +1 -0
  183. package/lib/features/change-bounds/model.js +2 -2
  184. package/lib/features/change-bounds/model.js.map +1 -1
  185. package/lib/features/change-bounds/movement-restrictor.d.ts +1 -1
  186. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  187. package/lib/features/change-bounds/movement-restrictor.js +3 -4
  188. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  189. package/lib/features/change-bounds/snap.js +2 -3
  190. package/lib/features/change-bounds/snap.js.map +1 -1
  191. package/lib/features/change-bounds/snap.spec.d.ts +17 -0
  192. package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
  193. package/lib/features/change-bounds/snap.spec.js +82 -0
  194. package/lib/features/change-bounds/snap.spec.js.map +1 -0
  195. package/lib/features/command-palette/{di.config.d.ts → command-palette-module.d.ts} +3 -4
  196. package/lib/features/command-palette/command-palette-module.d.ts.map +1 -0
  197. package/lib/features/command-palette/{di.config.js → command-palette-module.js} +3 -4
  198. package/lib/features/command-palette/command-palette-module.js.map +1 -0
  199. package/lib/features/command-palette/command-palette-tool.js +2 -3
  200. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  201. package/lib/features/command-palette/server-command-palette-provider.js +3 -4
  202. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  203. package/lib/features/{select/di.config.d.ts → context-menu/context-menu-module.d.ts} +3 -4
  204. package/lib/features/context-menu/context-menu-module.d.ts.map +1 -0
  205. package/lib/features/context-menu/{di.config.js → context-menu-module.js} +4 -5
  206. package/lib/features/context-menu/context-menu-module.js.map +1 -0
  207. package/lib/features/context-menu/delete-element-context-menu.js +2 -3
  208. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  209. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +1 -3
  210. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  211. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +8 -14
  212. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  213. package/lib/features/context-menu/server-context-menu-provider.js +3 -4
  214. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  215. package/lib/features/copy-paste/copy-paste-context-menu.js +6 -8
  216. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  217. package/lib/features/copy-paste/copy-paste-handler.js +4 -6
  218. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  219. package/lib/features/copy-paste/{di.config.d.ts → copy-paste-modules.d.ts} +7 -7
  220. package/lib/features/copy-paste/copy-paste-modules.d.ts.map +1 -0
  221. package/lib/features/copy-paste/{di.config.js → copy-paste-modules.js} +8 -9
  222. package/lib/features/copy-paste/copy-paste-modules.js.map +1 -0
  223. package/lib/features/decoration/{di.config.d.ts → decoration-module.d.ts} +3 -4
  224. package/lib/features/decoration/decoration-module.d.ts.map +1 -0
  225. package/lib/features/decoration/{di.config.js → decoration-module.js} +3 -4
  226. package/lib/features/decoration/decoration-module.js.map +1 -0
  227. package/lib/features/decoration/decoration-placer.js +2 -3
  228. package/lib/features/decoration/decoration-placer.js.map +1 -1
  229. package/lib/features/export/export-modules.d.ts +24 -0
  230. package/lib/features/export/export-modules.d.ts.map +1 -0
  231. package/lib/features/export/{di.config.js → export-modules.js} +15 -5
  232. package/lib/features/export/export-modules.js.map +1 -0
  233. package/lib/features/export/export-svg-action-handler.d.ts +11 -0
  234. package/lib/features/export/export-svg-action-handler.d.ts.map +1 -0
  235. package/lib/features/export/export-svg-action-handler.js +42 -0
  236. package/lib/features/export/export-svg-action-handler.js.map +1 -0
  237. package/lib/features/export/glsp-svg-exporter.js +2 -3
  238. package/lib/features/export/glsp-svg-exporter.js.map +1 -1
  239. package/lib/features/{layout/di.config.d.ts → hints/type-hints-module.d.ts} +3 -4
  240. package/lib/features/hints/type-hints-module.d.ts.map +1 -0
  241. package/lib/features/hints/{di.config.js → type-hints-module.js} +3 -4
  242. package/lib/features/hints/type-hints-module.js.map +1 -0
  243. package/lib/features/hints/type-hints.d.ts +2 -2
  244. package/lib/features/hints/type-hints.d.ts.map +1 -1
  245. package/lib/features/hints/type-hints.js +9 -11
  246. package/lib/features/hints/type-hints.js.map +1 -1
  247. package/lib/features/hover/{di.config.d.ts → hover-module.d.ts} +3 -4
  248. package/lib/features/hover/hover-module.d.ts.map +1 -0
  249. package/lib/features/hover/{di.config.js → hover-module.js} +6 -7
  250. package/lib/features/hover/hover-module.js.map +1 -0
  251. package/lib/features/hover/hover.d.ts.map +1 -1
  252. package/lib/features/hover/hover.js +5 -6
  253. package/lib/features/hover/hover.js.map +1 -1
  254. package/lib/features/{edit-label → label-edit}/edit-label-tool.d.ts +0 -3
  255. package/lib/features/label-edit/edit-label-tool.d.ts.map +1 -0
  256. package/lib/features/{edit-label → label-edit}/edit-label-tool.js +3 -11
  257. package/lib/features/label-edit/edit-label-tool.js.map +1 -0
  258. package/lib/features/{edit-label → label-edit}/edit-label-validator.d.ts.map +1 -1
  259. package/lib/features/{edit-label → label-edit}/edit-label-validator.js +5 -7
  260. package/lib/features/label-edit/edit-label-validator.js.map +1 -0
  261. package/lib/features/{hints/di.config.d.ts → label-edit/label-edit-module.d.ts} +3 -4
  262. package/lib/features/label-edit/label-edit-module.d.ts.map +1 -0
  263. package/lib/features/{edit-label/di.config.js → label-edit/label-edit-module.js} +3 -4
  264. package/lib/features/label-edit/label-edit-module.js.map +1 -0
  265. package/lib/features/layout/layout-elements-action.d.ts +1 -1
  266. package/lib/features/layout/layout-elements-action.d.ts.map +1 -1
  267. package/lib/features/layout/layout-elements-action.js +14 -17
  268. package/lib/features/layout/layout-elements-action.js.map +1 -1
  269. package/lib/features/layout/layout-elements-action.spec.d.ts +3 -0
  270. package/lib/features/layout/layout-elements-action.spec.d.ts.map +1 -0
  271. package/lib/features/layout/layout-elements-action.spec.js +322 -0
  272. package/lib/features/layout/layout-elements-action.spec.js.map +1 -0
  273. package/lib/features/{tool-feedback/di.config.d.ts → layout/layout-module.d.ts} +3 -4
  274. package/lib/features/layout/layout-module.d.ts.map +1 -0
  275. package/lib/features/layout/{di.config.js → layout-module.js} +3 -4
  276. package/lib/features/layout/layout-module.js.map +1 -0
  277. package/lib/features/navigation/navigation-action-handler.js +5 -6
  278. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  279. package/lib/features/navigation/{di.config.d.ts → navigation-module.d.ts} +3 -4
  280. package/lib/features/navigation/navigation-module.d.ts.map +1 -0
  281. package/lib/features/navigation/{di.config.js → navigation-module.js} +3 -4
  282. package/lib/features/navigation/navigation-module.js.map +1 -0
  283. package/lib/features/navigation/navigation-target-resolver.js +2 -3
  284. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  285. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +3 -0
  286. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -0
  287. package/lib/features/navigation/navigation-target-resolver.spec.js +53 -0
  288. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -0
  289. package/lib/features/routing/glsp-manhattan-edge-router.d.ts.map +1 -0
  290. package/lib/features/routing/glsp-manhattan-edge-router.js.map +1 -0
  291. package/lib/features/routing/routing-module.d.ts +18 -0
  292. package/lib/features/routing/routing-module.d.ts.map +1 -0
  293. package/lib/features/routing/routing-module.js +39 -0
  294. package/lib/features/routing/routing-module.js.map +1 -0
  295. package/lib/features/save/{di.config.d.ts → save-module.d.ts} +6 -6
  296. package/lib/features/save/save-module.d.ts.map +1 -0
  297. package/lib/features/save/{di.config.js → save-module.js} +6 -6
  298. package/lib/features/save/save-module.js.map +1 -0
  299. package/lib/features/select/select-feedback-command.d.ts +12 -0
  300. package/lib/features/select/select-feedback-command.d.ts.map +1 -0
  301. package/lib/features/select/{select-feedback-action.js → select-feedback-command.js} +6 -18
  302. package/lib/features/select/select-feedback-command.js.map +1 -0
  303. package/lib/features/select/select-module.d.ts +24 -0
  304. package/lib/features/select/select-module.d.ts.map +1 -0
  305. package/lib/features/select/{di.config.js → select-module.js} +14 -9
  306. package/lib/features/select/select-module.js.map +1 -0
  307. package/lib/features/select/select-mouse-listener.d.ts +5 -3
  308. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  309. package/lib/features/select/select-mouse-listener.js +18 -59
  310. package/lib/features/select/select-mouse-listener.js.map +1 -1
  311. package/lib/features/source-model-watcher/source-model-changed-action-handler.js +5 -7
  312. package/lib/features/source-model-watcher/source-model-changed-action-handler.js.map +1 -1
  313. package/lib/features/{context-menu/di.config.d.ts → source-model-watcher/source-model-wacher-module.d.ts} +3 -4
  314. package/lib/features/source-model-watcher/source-model-wacher-module.d.ts.map +1 -0
  315. package/lib/features/source-model-watcher/{di.config.js → source-model-wacher-module.js} +3 -4
  316. package/lib/features/source-model-watcher/source-model-wacher-module.js.map +1 -0
  317. package/lib/features/status/status-module.d.ts +19 -0
  318. package/lib/features/status/status-module.d.ts.map +1 -0
  319. package/lib/features/status/status-module.js +27 -0
  320. package/lib/features/status/status-module.js.map +1 -0
  321. package/lib/features/status/status-overlay.d.ts +19 -0
  322. package/lib/features/status/status-overlay.d.ts.map +1 -0
  323. package/lib/features/status/status-overlay.js +108 -0
  324. package/lib/features/status/status-overlay.js.map +1 -0
  325. package/lib/features/svg-metadata/metadata-placer.js +2 -3
  326. package/lib/features/svg-metadata/metadata-placer.js.map +1 -1
  327. package/lib/features/svg-metadata/{di.config.d.ts → svg-metadata-module.d.ts} +3 -4
  328. package/lib/features/svg-metadata/svg-metadata-module.d.ts.map +1 -0
  329. package/lib/features/svg-metadata/{di.config.js → svg-metadata-module.js} +3 -4
  330. package/lib/features/svg-metadata/svg-metadata-module.js.map +1 -0
  331. package/lib/features/tool-palette/{di.config.d.ts → tool-palette-module.d.ts} +3 -4
  332. package/lib/features/tool-palette/tool-palette-module.d.ts.map +1 -0
  333. package/lib/features/tool-palette/{di.config.js → tool-palette-module.js} +3 -4
  334. package/lib/features/tool-palette/tool-palette-module.js.map +1 -0
  335. package/lib/features/tool-palette/tool-palette.d.ts +6 -4
  336. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  337. package/lib/features/tool-palette/tool-palette.js +22 -15
  338. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  339. package/lib/features/tools/base-glsp-creation-tool.d.ts +10 -0
  340. package/lib/features/tools/base-glsp-creation-tool.d.ts.map +1 -0
  341. package/lib/features/tools/base-glsp-creation-tool.js +45 -0
  342. package/lib/features/tools/base-glsp-creation-tool.js.map +1 -0
  343. package/lib/features/tools/base-glsp-tool.d.ts +26 -8
  344. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  345. package/lib/features/tools/base-glsp-tool.js +34 -11
  346. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  347. package/lib/features/{export/di.config.d.ts → tools/change-bounds/change-boounds-tool-module.d.ts} +3 -4
  348. package/lib/features/tools/change-bounds/change-boounds-tool-module.d.ts.map +1 -0
  349. package/lib/features/tools/change-bounds/change-boounds-tool-module.js +31 -0
  350. package/lib/features/tools/change-bounds/change-boounds-tool-module.js.map +1 -0
  351. package/lib/features/{tool-feedback → tools/change-bounds}/change-bounds-tool-feedback.d.ts +12 -5
  352. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.d.ts.map +1 -0
  353. package/lib/features/{tool-feedback → tools/change-bounds}/change-bounds-tool-feedback.js +45 -27
  354. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.js.map +1 -0
  355. package/lib/features/tools/{change-bounds-tool.d.ts → change-bounds/change-bounds-tool.d.ts} +13 -14
  356. package/lib/features/tools/change-bounds/change-bounds-tool.d.ts.map +1 -0
  357. package/lib/features/tools/{change-bounds-tool.js → change-bounds/change-bounds-tool.js} +50 -35
  358. package/lib/features/tools/change-bounds/change-bounds-tool.js.map +1 -0
  359. package/lib/features/tools/change-bounds/view.d.ts +9 -0
  360. package/lib/features/tools/change-bounds/view.d.ts.map +1 -0
  361. package/lib/features/{tool-feedback → tools/change-bounds}/view.js +5 -21
  362. package/lib/features/tools/change-bounds/view.js.map +1 -0
  363. package/lib/features/tools/{delete-tool.d.ts → deletion/delete-tool.d.ts} +4 -9
  364. package/lib/features/tools/deletion/delete-tool.d.ts.map +1 -0
  365. package/lib/features/tools/{delete-tool.js → deletion/delete-tool.js} +13 -29
  366. package/lib/features/tools/deletion/delete-tool.js.map +1 -0
  367. package/lib/features/tools/deletion/deletion-tool-module.d.ts +18 -0
  368. package/lib/features/tools/deletion/deletion-tool-module.d.ts.map +1 -0
  369. package/lib/features/{mouse-tool/di.config.js → tools/deletion/deletion-tool-module.js} +8 -9
  370. package/lib/features/tools/deletion/deletion-tool-module.js.map +1 -0
  371. package/lib/features/{tool-feedback/creation-tool-feedback.d.ts → tools/edge-creation/dangling-edge-feedback.d.ts} +5 -10
  372. package/lib/features/tools/edge-creation/dangling-edge-feedback.d.ts.map +1 -0
  373. package/lib/features/{tool-feedback/creation-tool-feedback.js → tools/edge-creation/dangling-edge-feedback.js} +25 -87
  374. package/lib/features/tools/edge-creation/dangling-edge-feedback.js.map +1 -0
  375. package/lib/features/{edit-label/di.config.d.ts → tools/edge-creation/edege-creation-module.d.ts} +3 -4
  376. package/lib/features/tools/edge-creation/edege-creation-module.d.ts.map +1 -0
  377. package/lib/features/tools/edge-creation/edege-creation-module.js +28 -0
  378. package/lib/features/tools/edge-creation/edege-creation-module.js.map +1 -0
  379. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.d.ts +26 -0
  380. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.d.ts.map +1 -0
  381. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.js +74 -0
  382. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.js.map +1 -0
  383. package/lib/features/tools/{edge-creation-tool.d.ts → edge-creation/edge-creation-tool.d.ts} +6 -11
  384. package/lib/features/tools/edge-creation/edge-creation-tool.d.ts.map +1 -0
  385. package/lib/features/tools/{edge-creation-tool.js → edge-creation/edge-creation-tool.js} +29 -40
  386. package/lib/features/tools/edge-creation/edge-creation-tool.js.map +1 -0
  387. package/lib/features/tools/edge-creation/view.d.ts +10 -0
  388. package/lib/features/tools/edge-creation/view.d.ts.map +1 -0
  389. package/lib/features/tools/edge-creation/view.js +43 -0
  390. package/lib/features/tools/edge-creation/view.js.map +1 -0
  391. package/lib/features/tools/edge-edit/edge-edit-module.d.ts +18 -0
  392. package/lib/features/tools/edge-edit/edge-edit-module.d.ts.map +1 -0
  393. package/lib/features/tools/edge-edit/edge-edit-module.js +34 -0
  394. package/lib/features/tools/edge-edit/edge-edit-module.js.map +1 -0
  395. package/lib/features/{tool-feedback → tools/edge-edit}/edge-edit-tool-feedback.d.ts +14 -8
  396. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.d.ts.map +1 -0
  397. package/lib/features/{tool-feedback → tools/edge-edit}/edge-edit-tool-feedback.js +42 -37
  398. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.js.map +1 -0
  399. package/lib/features/tools/{edge-edit-tool.d.ts → edge-edit/edge-edit-tool.d.ts} +7 -9
  400. package/lib/features/tools/edge-edit/edge-edit-tool.d.ts.map +1 -0
  401. package/lib/features/tools/{edge-edit-tool.js → edge-edit/edge-edit-tool.js} +28 -33
  402. package/lib/features/tools/edge-edit/edge-edit-tool.js.map +1 -0
  403. package/lib/features/tools/{marquee-behavior.d.ts → marquee-selection/marquee-behavior.d.ts} +10 -10
  404. package/lib/features/tools/marquee-selection/marquee-behavior.d.ts.map +1 -0
  405. package/lib/features/tools/{marquee-behavior.js → marquee-selection/marquee-behavior.js} +2 -2
  406. package/lib/features/tools/marquee-selection/marquee-behavior.js.map +1 -0
  407. package/lib/features/tools/marquee-selection/marquee-behavior.spec.d.ts +17 -0
  408. package/lib/features/tools/marquee-selection/marquee-behavior.spec.d.ts.map +1 -0
  409. package/lib/features/tools/marquee-selection/marquee-behavior.spec.js +165 -0
  410. package/lib/features/tools/marquee-selection/marquee-behavior.spec.js.map +1 -0
  411. package/lib/features/tools/{marquee-mouse-tool.d.ts → marquee-selection/marquee-mouse-tool.d.ts} +4 -6
  412. package/lib/features/tools/marquee-selection/marquee-mouse-tool.d.ts.map +1 -0
  413. package/lib/features/tools/{marquee-mouse-tool.js → marquee-selection/marquee-mouse-tool.js} +13 -27
  414. package/lib/features/tools/marquee-selection/marquee-mouse-tool.js.map +1 -0
  415. package/lib/features/tools/marquee-selection/marquee-selection-module.d.ts +18 -0
  416. package/lib/features/tools/marquee-selection/marquee-selection-module.d.ts.map +1 -0
  417. package/lib/features/tools/marquee-selection/marquee-selection-module.js +33 -0
  418. package/lib/features/tools/marquee-selection/marquee-selection-module.js.map +1 -0
  419. package/lib/features/{tool-feedback → tools/marquee-selection}/marquee-tool-feedback.d.ts +2 -2
  420. package/lib/features/tools/marquee-selection/marquee-tool-feedback.d.ts.map +1 -0
  421. package/lib/features/{tool-feedback → tools/marquee-selection}/marquee-tool-feedback.js +8 -10
  422. package/lib/features/tools/marquee-selection/marquee-tool-feedback.js.map +1 -0
  423. package/lib/features/tools/marquee-selection/marquee-tool.d.ts +12 -0
  424. package/lib/features/tools/marquee-selection/marquee-tool.d.ts.map +1 -0
  425. package/lib/features/tools/{marquee-tool.js → marquee-selection/marquee-tool.js} +8 -20
  426. package/lib/features/tools/marquee-selection/marquee-tool.js.map +1 -0
  427. package/lib/features/tools/{model.d.ts → marquee-selection/model.d.ts} +1 -1
  428. package/lib/features/tools/marquee-selection/model.d.ts.map +1 -0
  429. package/lib/features/tools/{model.js → marquee-selection/model.js} +2 -2
  430. package/lib/features/tools/marquee-selection/model.js.map +1 -0
  431. package/lib/features/tools/{view.d.ts → marquee-selection/view.d.ts} +1 -1
  432. package/lib/features/tools/marquee-selection/view.d.ts.map +1 -0
  433. package/lib/features/tools/{view.js → marquee-selection/view.js} +3 -4
  434. package/lib/features/tools/marquee-selection/view.js.map +1 -0
  435. package/lib/features/tools/node-creation/node-creation-module.d.ts +18 -0
  436. package/lib/features/tools/node-creation/node-creation-module.d.ts.map +1 -0
  437. package/lib/features/tools/node-creation/node-creation-module.js +26 -0
  438. package/lib/features/tools/node-creation/node-creation-module.js.map +1 -0
  439. package/lib/features/tools/{node-creation-tool.d.ts → node-creation/node-creation-tool.d.ts} +7 -10
  440. package/lib/features/tools/node-creation/node-creation-tool.d.ts.map +1 -0
  441. package/lib/features/tools/{node-creation-tool.js → node-creation/node-creation-tool.js} +17 -30
  442. package/lib/features/tools/node-creation/node-creation-tool.js.map +1 -0
  443. package/lib/features/tools/tool-focus-loss-module.d.ts +13 -0
  444. package/lib/features/tools/tool-focus-loss-module.d.ts.map +1 -0
  445. package/lib/features/tools/{enable-default-tools-on-focus-loss.js → tool-focus-loss-module.js} +12 -8
  446. package/lib/features/tools/tool-focus-loss-module.js.map +1 -0
  447. package/lib/features/undo-redo/undo-redo-key-listener.d.ts +23 -0
  448. package/lib/features/undo-redo/undo-redo-key-listener.d.ts.map +1 -0
  449. package/lib/features/undo-redo/undo-redo-key-listener.js +35 -0
  450. package/lib/features/undo-redo/undo-redo-key-listener.js.map +1 -0
  451. package/lib/features/undo-redo/undo-redo-module.d.ts +23 -0
  452. package/lib/features/undo-redo/undo-redo-module.d.ts.map +1 -0
  453. package/lib/features/undo-redo/undo-redo-module.js +30 -0
  454. package/lib/features/undo-redo/undo-redo-module.js.map +1 -0
  455. package/lib/features/validation/marker-navigator.d.ts +4 -3
  456. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  457. package/lib/features/validation/marker-navigator.js +16 -20
  458. package/lib/features/validation/marker-navigator.js.map +1 -1
  459. package/lib/features/validation/marker-navigator.spec.d.ts +3 -0
  460. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -0
  461. package/lib/features/validation/marker-navigator.spec.js +184 -0
  462. package/lib/features/validation/marker-navigator.spec.js.map +1 -0
  463. package/lib/features/validation/validate.d.ts +2 -2
  464. package/lib/features/validation/validate.d.ts.map +1 -1
  465. package/lib/features/validation/validate.js +12 -17
  466. package/lib/features/validation/validate.js.map +1 -1
  467. package/lib/features/validation/{di.config.d.ts → validation-modules.d.ts} +8 -8
  468. package/lib/features/validation/validation-modules.d.ts.map +1 -0
  469. package/lib/features/validation/{di.config.js → validation-modules.js} +9 -10
  470. package/lib/features/validation/validation-modules.js.map +1 -0
  471. package/lib/features/viewport/glsp-scroll-mouse-listener.js +3 -4
  472. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  473. package/lib/features/viewport/{di.config.d.ts → viewport-modules.d.ts} +9 -4
  474. package/lib/features/viewport/viewport-modules.d.ts.map +1 -0
  475. package/lib/features/viewport/{di.config.js → viewport-modules.js} +12 -5
  476. package/lib/features/viewport/viewport-modules.js.map +1 -0
  477. package/lib/glsp-sprotty/index.d.ts +3 -4
  478. package/lib/glsp-sprotty/index.d.ts.map +1 -1
  479. package/lib/glsp-sprotty/index.js +66 -60
  480. package/lib/glsp-sprotty/index.js.map +1 -1
  481. package/lib/glsp-sprotty/types.d.ts +4 -8
  482. package/lib/glsp-sprotty/types.d.ts.map +1 -1
  483. package/lib/glsp-sprotty/types.js +1 -1
  484. package/lib/glsp-sprotty/types.js.map +1 -1
  485. package/lib/index.d.ts +69 -58
  486. package/lib/index.d.ts.map +1 -1
  487. package/lib/index.js +87 -106
  488. package/lib/index.js.map +1 -1
  489. package/lib/lib/model.d.ts +1 -2
  490. package/lib/lib/model.d.ts.map +1 -1
  491. package/lib/lib/model.js +1 -2
  492. package/lib/lib/model.js.map +1 -1
  493. package/lib/standalone-modules.d.ts +38 -0
  494. package/lib/standalone-modules.d.ts.map +1 -0
  495. package/lib/standalone-modules.js +84 -0
  496. package/lib/standalone-modules.js.map +1 -0
  497. package/lib/utils/argument-utils.js +3 -3
  498. package/lib/utils/argument-utils.js.map +1 -1
  499. package/lib/utils/marker.js +1 -1
  500. package/lib/utils/marker.js.map +1 -1
  501. package/lib/utils/smodel-util.d.ts +5 -2
  502. package/lib/utils/smodel-util.d.ts.map +1 -1
  503. package/lib/utils/smodel-util.js +21 -4
  504. package/lib/utils/smodel-util.js.map +1 -1
  505. package/lib/utils/smodel-util.spec.d.ts +2 -0
  506. package/lib/utils/smodel-util.spec.d.ts.map +1 -0
  507. package/lib/utils/smodel-util.spec.js +185 -0
  508. package/lib/utils/smodel-util.spec.js.map +1 -0
  509. package/lib/utils/viewpoint-util.d.ts +20 -1
  510. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  511. package/lib/utils/viewpoint-util.js +30 -1
  512. package/lib/utils/viewpoint-util.js.map +1 -1
  513. package/lib/views/base-view-module.d.ts +2 -4
  514. package/lib/views/base-view-module.d.ts.map +1 -1
  515. package/lib/views/base-view-module.js +2 -4
  516. package/lib/views/base-view-module.js.map +1 -1
  517. package/lib/views/compartments.js +2 -3
  518. package/lib/views/compartments.js.map +1 -1
  519. package/lib/views/glsp-edge-view.js +2 -3
  520. package/lib/views/glsp-edge-view.js.map +1 -1
  521. package/lib/views/glsp-projection-view.js +2 -3
  522. package/lib/views/glsp-projection-view.js.map +1 -1
  523. package/lib/views/issue-marker-view.js +2 -3
  524. package/lib/views/issue-marker-view.js.map +1 -1
  525. package/lib/views/rounded-corner-view.js +2 -3
  526. package/lib/views/rounded-corner-view.js.map +1 -1
  527. package/package.json +4 -3
  528. package/src/base/action-dispatcher.ts +7 -1
  529. package/src/base/command-stack.ts +55 -3
  530. package/src/base/{di.config.ts → default.module.ts} +51 -15
  531. package/src/base/drag-aware-mouse-listener.ts +2 -2
  532. package/src/base/editor-context-service.ts +55 -20
  533. package/src/{features/tool-feedback → base/feedback}/css-feedback.ts +1 -1
  534. package/src/{features/tool-feedback → base/feedback}/feedback-action-dispatcher.ts +31 -23
  535. package/src/base/{model → feedback}/update-model-command.ts +3 -29
  536. package/src/base/{focus-tracker.ts → focus/focus-tracker.ts} +1 -1
  537. package/src/base/model/glsp-model-source.ts +149 -0
  538. package/src/base/ranked.ts +42 -0
  539. package/src/{features/select → base}/selection-service.spec.ts +44 -123
  540. package/src/{features/select → base}/selection-service.ts +86 -33
  541. package/src/base/tool-manager/glsp-tool-manager.ts +4 -4
  542. package/src/{features/rank/model.ts → base/view/key-tool.ts} +9 -13
  543. package/src/{features/mouse-tool → base/view}/mouse-tool.ts +14 -15
  544. package/src/{base/container-modules.ts → default-modules.ts} +65 -48
  545. package/src/features/accessibility/README.md +7 -7
  546. package/src/features/accessibility/{di.config.ts → accessibility-module.ts} +8 -6
  547. package/src/features/accessibility/key-shortcut/accessible-key-shortcut-tool.ts +55 -0
  548. package/src/features/accessibility/key-shortcut/accessible-key-shortcut.ts +182 -0
  549. package/src/features/accessibility/key-shortcut/di.config.ts +35 -0
  550. package/src/features/accessibility/move-zoom/{di.config.ts → move-zoom-module.ts} +2 -3
  551. package/src/features/accessibility/resize-key-tool/{di.config.ts → resize-key-module.ts} +2 -3
  552. package/src/features/accessibility/resize-key-tool/resize-key-tool.ts +24 -3
  553. package/src/features/accessibility/search/{di.config.ts → search-palette-module.ts} +2 -3
  554. package/src/features/accessibility/search/search-palette.ts +1 -1
  555. package/src/features/accessibility/search/search-tool.ts +24 -5
  556. package/src/features/accessibility/view-key-tools/movement-key-tool.ts +20 -4
  557. package/src/features/accessibility/view-key-tools/{di.config.ts → view-key-tools-module.ts} +3 -4
  558. package/src/features/accessibility/view-key-tools/zoom-key-tool.ts +23 -2
  559. package/src/features/bounds/{di.config.ts → bounds-module.ts} +2 -4
  560. package/src/features/bounds/layouter-test-util.spec.ts +1 -1
  561. package/src/features/change-bounds/movement-restrictor.ts +1 -1
  562. package/src/features/command-palette/{di.config.ts → command-palette-module.ts} +2 -5
  563. package/src/features/context-menu/{di.config.ts → context-menu-module.ts} +4 -7
  564. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +2 -6
  565. package/src/features/copy-paste/copy-paste-context-menu.ts +1 -1
  566. package/src/features/copy-paste/{di.config.ts → copy-paste-modules.ts} +13 -11
  567. package/src/features/decoration/{di.config.ts → decoration-module.ts} +2 -5
  568. package/src/features/export/{di.config.ts → export-modules.ts} +27 -5
  569. package/src/features/export/export-svg-action-handler.ts +32 -0
  570. package/src/features/hints/{di.config.ts → type-hints-module.ts} +2 -5
  571. package/src/features/hints/type-hints.ts +2 -2
  572. package/src/features/hover/{di.config.ts → hover-module.ts} +3 -5
  573. package/src/features/hover/hover.ts +3 -2
  574. package/src/features/{edit-label → label-edit}/edit-label-tool.ts +4 -12
  575. package/src/features/{edit-label/di.config.ts → label-edit/label-edit-module.ts} +2 -5
  576. package/src/features/layout/layout-elements-action.spec.ts +3 -5
  577. package/src/features/layout/layout-elements-action.ts +2 -2
  578. package/src/features/layout/{di.config.ts → layout-module.ts} +2 -5
  579. package/src/features/navigation/navigation-action-handler.ts +1 -1
  580. package/src/features/navigation/{di.config.ts → navigation-module.ts} +2 -5
  581. package/src/features/routing/routing-module.ts +59 -0
  582. package/src/features/save/{di.config.ts → save-module.ts} +5 -7
  583. package/src/features/select/{select-feedback-action.ts → select-feedback-command.ts} +2 -25
  584. package/src/features/select/{di.config.ts → select-module.ts} +15 -8
  585. package/src/features/select/select-mouse-listener.ts +28 -80
  586. package/src/features/source-model-watcher/source-model-changed-action-handler.ts +1 -1
  587. package/src/features/source-model-watcher/{di.config.ts → source-model-wacher-module.ts} +2 -5
  588. package/src/features/status/status-module.ts +25 -0
  589. package/src/features/status/status-overlay.ts +108 -0
  590. package/src/features/svg-metadata/{di.config.ts → svg-metadata-module.ts} +2 -5
  591. package/src/features/tool-palette/{di.config.ts → tool-palette-module.ts} +2 -5
  592. package/src/features/tool-palette/tool-palette.ts +19 -14
  593. package/src/features/tools/base-glsp-creation-tool.ts +40 -0
  594. package/src/features/tools/base-glsp-tool.ts +32 -10
  595. package/src/features/tools/change-bounds/change-boounds-tool-module.ts +28 -0
  596. package/src/features/{tool-feedback → tools/change-bounds}/change-bounds-tool-feedback.ts +52 -21
  597. package/src/features/tools/{change-bounds-tool.ts → change-bounds/change-bounds-tool.ts} +64 -35
  598. package/src/features/{tool-feedback → tools/change-bounds}/view.tsx +2 -14
  599. package/src/features/tools/{delete-tool.ts → deletion/delete-tool.ts} +8 -18
  600. package/src/features/{save/model.ts → tools/deletion/deletion-tool-module.ts} +7 -10
  601. package/src/features/{tool-feedback/creation-tool-feedback.ts → tools/edge-creation/dangling-edge-feedback.ts} +18 -88
  602. package/src/features/tools/edge-creation/edege-creation-module.ts +25 -0
  603. package/src/features/tools/edge-creation/edge-creation-tool-feedback.ts +89 -0
  604. package/src/features/tools/{edge-creation-tool.ts → edge-creation/edge-creation-tool.ts} +26 -43
  605. package/src/features/tools/edge-creation/view.tsx +33 -0
  606. package/src/features/tools/edge-edit/edge-edit-module.ts +38 -0
  607. package/src/features/{tool-feedback → tools/edge-edit}/edge-edit-tool-feedback.ts +27 -15
  608. package/src/features/tools/{edge-edit-tool.ts → edge-edit/edge-edit-tool.ts} +29 -27
  609. package/src/features/tools/{marquee-behavior.ts → marquee-selection/marquee-behavior.ts} +9 -9
  610. package/src/features/tools/{marquee-mouse-tool.ts → marquee-selection/marquee-mouse-tool.ts} +12 -22
  611. package/src/features/tools/marquee-selection/marquee-selection-module.ts +32 -0
  612. package/src/features/{tool-feedback → tools/marquee-selection}/marquee-tool-feedback.ts +1 -1
  613. package/src/features/tools/{marquee-tool.ts → marquee-selection/marquee-tool.ts} +5 -11
  614. package/src/features/{mouse-tool/di.config.ts → tools/node-creation/node-creation-module.ts} +6 -9
  615. package/src/features/tools/{node-creation-tool.ts → node-creation/node-creation-tool.ts} +14 -31
  616. package/src/features/tools/{enable-default-tools-on-focus-loss.ts → tool-focus-loss-module.ts} +9 -3
  617. package/src/features/undo-redo/undo-redo-key-listener.ts +32 -0
  618. package/src/features/undo-redo/undo-redo-module.ts +28 -0
  619. package/src/features/validation/marker-navigator.spec.ts +4 -4
  620. package/src/features/validation/marker-navigator.ts +5 -5
  621. package/src/features/validation/validate.ts +2 -2
  622. package/src/features/validation/{di.config.ts → validation-modules.ts} +13 -11
  623. package/src/features/viewport/glsp-scroll-mouse-listener.ts +1 -1
  624. package/src/features/viewport/{di.config.ts → viewport-modules.ts} +14 -4
  625. package/src/glsp-sprotty/index.ts +30 -27
  626. package/src/glsp-sprotty/types.ts +2 -4
  627. package/src/index.ts +72 -90
  628. package/src/lib/model.ts +2 -3
  629. package/src/standalone-modules.ts +87 -0
  630. package/src/utils/smodel-util.spec.ts +222 -0
  631. package/src/utils/smodel-util.ts +27 -7
  632. package/src/utils/viewpoint-util.ts +32 -0
  633. package/src/views/base-view-module.ts +2 -4
  634. package/lib/base/actions/focus-change-action.d.ts.map +0 -1
  635. package/lib/base/actions/focus-change-action.js.map +0 -1
  636. package/lib/base/container-modules.d.ts.map +0 -1
  637. package/lib/base/container-modules.js +0 -135
  638. package/lib/base/container-modules.js.map +0 -1
  639. package/lib/base/di.config.d.ts.map +0 -1
  640. package/lib/base/di.config.js.map +0 -1
  641. package/lib/base/focus-tracker.d.ts.map +0 -1
  642. package/lib/base/focus-tracker.js.map +0 -1
  643. package/lib/base/model/update-model-command.d.ts.map +0 -1
  644. package/lib/base/model/update-model-command.js.map +0 -1
  645. package/lib/base/source-uri-aware.d.ts +0 -5
  646. package/lib/base/source-uri-aware.d.ts.map +0 -1
  647. package/lib/base/source-uri-aware.js.map +0 -1
  648. package/lib/features/accessibility/di.config.d.ts.map +0 -1
  649. package/lib/features/accessibility/di.config.js.map +0 -1
  650. package/lib/features/accessibility/move-zoom/di.config.d.ts.map +0 -1
  651. package/lib/features/accessibility/move-zoom/di.config.js.map +0 -1
  652. package/lib/features/accessibility/resize-key-tool/di.config.d.ts.map +0 -1
  653. package/lib/features/accessibility/resize-key-tool/di.config.js.map +0 -1
  654. package/lib/features/accessibility/search/di.config.d.ts.map +0 -1
  655. package/lib/features/accessibility/search/di.config.js.map +0 -1
  656. package/lib/features/accessibility/view-key-tools/di.config.d.ts.map +0 -1
  657. package/lib/features/accessibility/view-key-tools/di.config.js.map +0 -1
  658. package/lib/features/bounds/di.config.d.ts.map +0 -1
  659. package/lib/features/bounds/di.config.js.map +0 -1
  660. package/lib/features/command-palette/di.config.d.ts.map +0 -1
  661. package/lib/features/command-palette/di.config.js.map +0 -1
  662. package/lib/features/context-menu/di.config.d.ts.map +0 -1
  663. package/lib/features/context-menu/di.config.js.map +0 -1
  664. package/lib/features/copy-paste/di.config.d.ts.map +0 -1
  665. package/lib/features/copy-paste/di.config.js.map +0 -1
  666. package/lib/features/decoration/di.config.d.ts.map +0 -1
  667. package/lib/features/decoration/di.config.js.map +0 -1
  668. package/lib/features/edit-label/di.config.d.ts.map +0 -1
  669. package/lib/features/edit-label/di.config.js.map +0 -1
  670. package/lib/features/edit-label/edit-label-tool.d.ts.map +0 -1
  671. package/lib/features/edit-label/edit-label-tool.js.map +0 -1
  672. package/lib/features/edit-label/edit-label-validator.js.map +0 -1
  673. package/lib/features/export/di.config.d.ts.map +0 -1
  674. package/lib/features/export/di.config.js.map +0 -1
  675. package/lib/features/hints/di.config.d.ts.map +0 -1
  676. package/lib/features/hints/di.config.js.map +0 -1
  677. package/lib/features/hover/di.config.d.ts.map +0 -1
  678. package/lib/features/hover/di.config.js.map +0 -1
  679. package/lib/features/layout/di.config.d.ts.map +0 -1
  680. package/lib/features/layout/di.config.js.map +0 -1
  681. package/lib/features/mouse-tool/di.config.d.ts +0 -19
  682. package/lib/features/mouse-tool/di.config.d.ts.map +0 -1
  683. package/lib/features/mouse-tool/di.config.js.map +0 -1
  684. package/lib/features/mouse-tool/mouse-tool.d.ts +0 -22
  685. package/lib/features/mouse-tool/mouse-tool.d.ts.map +0 -1
  686. package/lib/features/mouse-tool/mouse-tool.js.map +0 -1
  687. package/lib/features/navigation/di.config.d.ts.map +0 -1
  688. package/lib/features/navigation/di.config.js.map +0 -1
  689. package/lib/features/rank/model.d.ts +0 -22
  690. package/lib/features/rank/model.d.ts.map +0 -1
  691. package/lib/features/rank/model.js +0 -28
  692. package/lib/features/rank/model.js.map +0 -1
  693. package/lib/features/save/di.config.d.ts.map +0 -1
  694. package/lib/features/save/di.config.js.map +0 -1
  695. package/lib/features/save/model.d.ts +0 -22
  696. package/lib/features/save/model.d.ts.map +0 -1
  697. package/lib/features/save/model.js +0 -9
  698. package/lib/features/save/model.js.map +0 -1
  699. package/lib/features/select/di.config.d.ts.map +0 -1
  700. package/lib/features/select/di.config.js.map +0 -1
  701. package/lib/features/select/select-feedback-action.d.ts +0 -22
  702. package/lib/features/select/select-feedback-action.d.ts.map +0 -1
  703. package/lib/features/select/select-feedback-action.js.map +0 -1
  704. package/lib/features/select/selection-service.d.ts.map +0 -1
  705. package/lib/features/select/selection-service.js.map +0 -1
  706. package/lib/features/source-model-watcher/di.config.d.ts +0 -19
  707. package/lib/features/source-model-watcher/di.config.d.ts.map +0 -1
  708. package/lib/features/source-model-watcher/di.config.js.map +0 -1
  709. package/lib/features/svg-metadata/di.config.d.ts.map +0 -1
  710. package/lib/features/svg-metadata/di.config.js.map +0 -1
  711. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +0 -1
  712. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +0 -1
  713. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +0 -1
  714. package/lib/features/tool-feedback/creation-tool-feedback.js.map +0 -1
  715. package/lib/features/tool-feedback/css-feedback.d.ts.map +0 -1
  716. package/lib/features/tool-feedback/css-feedback.js.map +0 -1
  717. package/lib/features/tool-feedback/di.config.d.ts.map +0 -1
  718. package/lib/features/tool-feedback/di.config.js +0 -53
  719. package/lib/features/tool-feedback/di.config.js.map +0 -1
  720. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +0 -1
  721. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +0 -1
  722. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +0 -1
  723. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +0 -1
  724. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +0 -1
  725. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +0 -1
  726. package/lib/features/tool-feedback/model.d.ts.map +0 -1
  727. package/lib/features/tool-feedback/model.js.map +0 -1
  728. package/lib/features/tool-feedback/view.d.ts +0 -16
  729. package/lib/features/tool-feedback/view.d.ts.map +0 -1
  730. package/lib/features/tool-feedback/view.js.map +0 -1
  731. package/lib/features/tool-palette/di.config.d.ts.map +0 -1
  732. package/lib/features/tool-palette/di.config.js.map +0 -1
  733. package/lib/features/tools/change-bounds-tool.d.ts.map +0 -1
  734. package/lib/features/tools/change-bounds-tool.js.map +0 -1
  735. package/lib/features/tools/delete-tool.d.ts.map +0 -1
  736. package/lib/features/tools/delete-tool.js.map +0 -1
  737. package/lib/features/tools/di.config.d.ts +0 -28
  738. package/lib/features/tools/di.config.d.ts.map +0 -1
  739. package/lib/features/tools/di.config.js +0 -66
  740. package/lib/features/tools/di.config.js.map +0 -1
  741. package/lib/features/tools/edge-creation-tool.d.ts.map +0 -1
  742. package/lib/features/tools/edge-creation-tool.js.map +0 -1
  743. package/lib/features/tools/edge-edit-tool.d.ts.map +0 -1
  744. package/lib/features/tools/edge-edit-tool.js.map +0 -1
  745. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts +0 -10
  746. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +0 -1
  747. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +0 -1
  748. package/lib/features/tools/glsp-manhattan-edge-router.d.ts.map +0 -1
  749. package/lib/features/tools/glsp-manhattan-edge-router.js.map +0 -1
  750. package/lib/features/tools/marquee-behavior.d.ts.map +0 -1
  751. package/lib/features/tools/marquee-behavior.js.map +0 -1
  752. package/lib/features/tools/marquee-mouse-tool.d.ts.map +0 -1
  753. package/lib/features/tools/marquee-mouse-tool.js.map +0 -1
  754. package/lib/features/tools/marquee-tool.d.ts +0 -14
  755. package/lib/features/tools/marquee-tool.d.ts.map +0 -1
  756. package/lib/features/tools/marquee-tool.js.map +0 -1
  757. package/lib/features/tools/model.d.ts.map +0 -1
  758. package/lib/features/tools/model.js.map +0 -1
  759. package/lib/features/tools/node-creation-tool.d.ts.map +0 -1
  760. package/lib/features/tools/node-creation-tool.js.map +0 -1
  761. package/lib/features/tools/view.d.ts.map +0 -1
  762. package/lib/features/tools/view.js.map +0 -1
  763. package/lib/features/validation/di.config.d.ts.map +0 -1
  764. package/lib/features/validation/di.config.js.map +0 -1
  765. package/lib/features/viewport/di.config.d.ts.map +0 -1
  766. package/lib/features/viewport/di.config.js.map +0 -1
  767. package/lib/model-source/glsp-diagram-server.d.ts +0 -20
  768. package/lib/model-source/glsp-diagram-server.d.ts.map +0 -1
  769. package/lib/model-source/glsp-diagram-server.js +0 -102
  770. package/lib/model-source/glsp-diagram-server.js.map +0 -1
  771. package/src/base/source-uri-aware.ts +0 -23
  772. package/src/features/tool-feedback/di.config.ts +0 -65
  773. package/src/features/tools/di.config.ts +0 -77
  774. package/src/model-source/glsp-diagram-server.ts +0 -115
  775. /package/lib/features/{edit-label → label-edit}/edit-label-validator.d.ts +0 -0
  776. /package/lib/features/{tools → routing}/glsp-manhattan-edge-router.d.ts +0 -0
  777. /package/lib/features/{tools → routing}/glsp-manhattan-edge-router.js +0 -0
  778. /package/src/{features/tool-feedback/model.ts → base/feedback/feedback-command.ts} +0 -0
  779. /package/src/base/{actions/focus-change-action.ts → focus/focus-state-change-action.ts} +0 -0
  780. /package/src/features/{edit-label → label-edit}/edit-label-validator.ts +0 -0
  781. /package/src/features/{tools → routing}/glsp-manhattan-edge-router.ts +0 -0
  782. /package/src/features/tools/{marquee-behavior.spec.ts → marquee-selection/marquee-behavior.spec.ts} +0 -0
  783. /package/src/features/tools/{model.ts → marquee-selection/model.ts} +0 -0
  784. /package/src/features/tools/{view.tsx → marquee-selection/view.tsx} +0 -0
@@ -34,9 +34,10 @@ import {
34
34
  matchesKeystroke
35
35
  } from '~glsp-sprotty';
36
36
  import { GLSPActionDispatcher } from '../../base/action-dispatcher';
37
- import { EditModeListener, EditorContextService } from '../../base/editor-context-service';
38
- import { MouseDeleteTool } from '../tools/delete-tool';
39
- import { MarqueeMouseTool } from '../tools/marquee-mouse-tool';
37
+ import { EditorContextService, IEditModeListener } from '../../base/editor-context-service';
38
+ import { FocusTracker } from '../../base/focus/focus-tracker';
39
+ import { MouseDeleteTool } from '../tools/deletion/delete-tool';
40
+ import { MarqueeMouseTool } from '../tools/marquee-selection/marquee-mouse-tool';
40
41
 
41
42
  const CLICKED_CSS_CLASS = 'clicked';
42
43
  const SEARCH_ICON_ID = 'search';
@@ -60,17 +61,18 @@ export namespace EnableToolPaletteAction {
60
61
  }
61
62
  }
62
63
  @injectable()
63
- export class ToolPalette extends AbstractUIExtension implements IActionHandler, EditModeListener {
64
+ export class ToolPalette extends AbstractUIExtension implements IActionHandler, IEditModeListener {
64
65
  static readonly ID = 'tool-palette';
65
66
 
66
67
  @inject(TYPES.IActionDispatcher) protected readonly actionDispatcher: GLSPActionDispatcher;
67
68
  @inject(TYPES.IToolManager) protected readonly toolManager: IToolManager;
68
69
  @inject(EditorContextService) protected readonly editorContext: EditorContextService;
70
+ @inject(FocusTracker) protected readonly focusTracker: FocusTracker;
69
71
 
70
72
  protected paletteItems: PaletteItem[];
71
73
  protected paletteItemsCopy: PaletteItem[] = [];
72
74
  protected bodyDiv?: HTMLElement;
73
- protected lastActivebutton?: HTMLElement;
75
+ protected lastActiveButton?: HTMLElement;
74
76
  protected defaultToolsButton: HTMLElement;
75
77
  protected searchField: HTMLInputElement;
76
78
  modelRootId: string;
@@ -84,7 +86,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
84
86
 
85
87
  @postConstruct()
86
88
  postConstruct(): void {
87
- this.editorContext.register(this);
89
+ this.editorContext.onEditModeChanged(change => this.editModeChanged(change.newValue, change.oldValue));
88
90
  }
89
91
 
90
92
  override initialize(): boolean {
@@ -97,7 +99,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
97
99
  protected initializeContents(_containerElement: HTMLElement): void {
98
100
  this.createHeader();
99
101
  this.createBody();
100
- this.lastActivebutton = this.defaultToolsButton;
102
+ this.lastActiveButton = this.defaultToolsButton;
101
103
  }
102
104
 
103
105
  protected override onBeforeShow(_containerElement: HTMLElement, root: Readonly<SModelRoot>): void {
@@ -305,15 +307,15 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
305
307
  }
306
308
 
307
309
  changeActiveButton(button?: HTMLElement): void {
308
- if (this.lastActivebutton) {
309
- this.lastActivebutton.classList.remove(CLICKED_CSS_CLASS);
310
+ if (this.lastActiveButton) {
311
+ this.lastActiveButton.classList.remove(CLICKED_CSS_CLASS);
310
312
  }
311
313
  if (button) {
312
314
  button.classList.add(CLICKED_CSS_CLASS);
313
- this.lastActivebutton = button;
314
- } else {
315
+ this.lastActiveButton = button;
316
+ } else if (this.defaultToolsButton) {
315
317
  this.defaultToolsButton.classList.add(CLICKED_CSS_CLASS);
316
- this.lastActivebutton = this.defaultToolsButton;
318
+ this.lastActiveButton = this.defaultToolsButton;
317
319
  }
318
320
  }
319
321
 
@@ -335,11 +337,14 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
335
337
  });
336
338
  } else if (action.kind === EnableDefaultToolsAction.KIND) {
337
339
  this.changeActiveButton();
338
- this.restoreFocus();
340
+ if (this.focusTracker.hasFocus) {
341
+ // if focus was deliberately taken do not restore focus to the palette
342
+ this.restoreFocus();
343
+ }
339
344
  }
340
345
  }
341
346
 
342
- editModeChanged(_oldValue: string, _newValue: string): void {
347
+ editModeChanged(_newValue: string, _oldValue: string): void {
343
348
  this.actionDispatcher.dispatch(
344
349
  SetUIExtensionVisibilityAction.create({ extensionId: ToolPalette.ID, visible: !this.editorContext.isReadonly })
345
350
  );
@@ -0,0 +1,40 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2023 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 { injectable } from 'inversify';
17
+ import { Action, EnableToolsAction, IActionHandler } from '~glsp-sprotty';
18
+ import { BaseGLSPTool } from './base-glsp-tool';
19
+
20
+ @injectable()
21
+ export abstract class BaseGLSPCreationTool<T extends Action> extends BaseGLSPTool implements IActionHandler {
22
+ protected abstract isTriggerAction: (obj: any) => obj is T;
23
+ protected triggerAction: T;
24
+
25
+ handle(action: Action): Action | void {
26
+ if (this.isTriggerAction(action)) {
27
+ this.triggerAction = action;
28
+ return EnableToolsAction.create([this.id]);
29
+ }
30
+ }
31
+
32
+ override enable(): void {
33
+ if (this.triggerAction === undefined) {
34
+ throw new TypeError(`Could not enable tool ${this.id}. The triggerAction cannot be undefined.`);
35
+ }
36
+ this.doEnable();
37
+ }
38
+
39
+ protected abstract doEnable(): void;
40
+ }
@@ -14,22 +14,28 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { inject, injectable } from 'inversify';
17
- import { Action, IActionDispatcher, KeyTool, TYPES } from '~glsp-sprotty';
17
+ import { Action, Disposable, DisposableCollection, IActionDispatcher, TYPES } from '~glsp-sprotty';
18
18
  import { EditorContextService } from '../../base/editor-context-service';
19
+ import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../../base/feedback/feedback-action-dispatcher';
19
20
  import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
20
- import { IMouseTool } from '../mouse-tool/mouse-tool';
21
- import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
21
+ import { GLSPKeyTool } from '../../base/view/key-tool';
22
+ import { GLSPMouseTool } from '../../base/view/mouse-tool';
22
23
 
23
24
  @injectable()
24
25
  export abstract class BaseGLSPTool implements GLSPTool {
25
26
  @inject(TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
26
27
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher;
27
- @inject(TYPES.MouseTool) protected mouseTool: IMouseTool;
28
- @inject(KeyTool) protected keyTool: KeyTool;
28
+ @inject(GLSPMouseTool) protected mouseTool: GLSPMouseTool;
29
+ @inject(GLSPKeyTool) protected keyTool: GLSPKeyTool;
29
30
  @inject(EditorContextService) protected readonly editorContext: EditorContextService;
30
31
 
32
+ protected readonly toDisposeOnDisable = new DisposableCollection();
33
+
31
34
  abstract enable(): void;
32
- abstract disable(): void;
35
+
36
+ disable(): void {
37
+ this.toDisposeOnDisable.dispose();
38
+ }
33
39
 
34
40
  abstract id: string;
35
41
 
@@ -41,11 +47,27 @@ export abstract class BaseGLSPTool implements GLSPTool {
41
47
  this.actionDispatcher.dispatchAll(actions);
42
48
  }
43
49
 
44
- dispatchFeedback(actions: Action[], feedbackEmitter?: IFeedbackEmitter): void {
45
- this.feedbackDispatcher.registerFeedback(feedbackEmitter ?? this, actions);
50
+ /**
51
+ * Registers `actions` to be sent out as feedback, i.e., changes that are re-established whenever the `SModelRoot`
52
+ * has been set or updated.
53
+ *
54
+ * @param feedbackActions the actions to be sent out.
55
+ * @param feedbackEmitter the emitter sending out feedback actions (this tool by default).
56
+ * @param cleanupActions the actions to be sent out when the feedback is de-registered through the returned Disposable.
57
+ * @returns A 'Disposable' that de-registers the feedback and cleans up any pending feedback with the given `cleanupActions`.
58
+ */
59
+ registerFeedback(feedbackActions: Action[], feedbackEmitter?: IFeedbackEmitter, cleanupActions?: Action[]): Disposable {
60
+ return this.feedbackDispatcher.registerFeedback(feedbackEmitter ?? this, feedbackActions, cleanupActions);
46
61
  }
47
62
 
48
- deregisterFeedback(actions: Action[], feedbackEmitter?: IFeedbackEmitter): void {
49
- this.feedbackDispatcher.deregisterFeedback(feedbackEmitter ?? this, actions);
63
+ /**
64
+ * De-registers all feedback from the given `feedbackEmitter` (this tool by default) and cleans up any pending feedback with the
65
+ * given `cleanupActions`.
66
+ *
67
+ * @param feedbackEmitter the emitter to be deregistered (this tool by default).
68
+ * @param cleanupActions the actions to be dispatched right after the deregistration to clean up any pending feedback.
69
+ */
70
+ deregisterFeedback(feedbackEmitter?: IFeedbackEmitter, cleanupActions?: Action[]): void {
71
+ this.feedbackDispatcher.deregisterFeedback(feedbackEmitter ?? this, cleanupActions);
50
72
  }
51
73
  }
@@ -0,0 +1,28 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2019-2023 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 { FeatureModule, TYPES, bindAsService, configureCommand, configureView } from '~glsp-sprotty';
17
+ import { SResizeHandle } from '../../change-bounds/model';
18
+ import { ChangeBoundsTool } from './change-bounds-tool';
19
+ import { HideChangeBoundsToolResizeFeedbackCommand, ShowChangeBoundsToolResizeFeedbackCommand } from './change-bounds-tool-feedback';
20
+ import { SResizeHandleView } from './view';
21
+
22
+ export const changeBoundsToolModule = new FeatureModule((bind, unbind, isBound, rebind) => {
23
+ const context = { bind, unbind, isBound, rebind };
24
+ bindAsService(context, TYPES.IDefaultTool, ChangeBoundsTool);
25
+ configureCommand(context, ShowChangeBoundsToolResizeFeedbackCommand);
26
+ configureCommand(context, HideChangeBoundsToolResizeFeedbackCommand);
27
+ configureView(context, SResizeHandle.TYPE, SResizeHandleView);
28
+ });
@@ -19,6 +19,7 @@ import {
19
19
  Action,
20
20
  CommandExecutionContext,
21
21
  CommandReturn,
22
+ Disposable,
22
23
  ElementMove,
23
24
  MouseListener,
24
25
  MoveAction,
@@ -33,12 +34,12 @@ import {
33
34
  isSelectable,
34
35
  isViewport
35
36
  } from '~glsp-sprotty';
36
- import { forEachElement } from '../../utils/smodel-util';
37
- import { SResizeHandle, addResizeHandles, isResizable, removeResizeHandles } from '../change-bounds/model';
38
- import { createMovementRestrictionFeedback, removeMovementRestrictionFeedback } from '../change-bounds/movement-restrictor';
39
- import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
40
- import { ChangeBoundsTool } from '../tools/change-bounds-tool';
41
- import { FeedbackCommand } from './model';
37
+ import { CursorCSS, cursorFeedbackAction } from '../../../base/feedback/css-feedback';
38
+ import { FeedbackCommand } from '../../../base/feedback/feedback-command';
39
+ import { forEachElement } from '../../../utils/smodel-util';
40
+ import { SResizeHandle, addResizeHandles, isResizable, removeResizeHandles } from '../../change-bounds/model';
41
+ import { createMovementRestrictionFeedback, removeMovementRestrictionFeedback } from '../../change-bounds/movement-restrictor';
42
+ import { ChangeBoundsTool } from './change-bounds-tool';
42
43
 
43
44
  export interface ShowChangeBoundsToolResizeFeedbackAction extends Action {
44
45
  kind: typeof ShowChangeBoundsToolResizeFeedbackAction.KIND;
@@ -118,9 +119,10 @@ export class HideChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
118
119
  * the visual feedback but also the basis for sending the change to the server
119
120
  * (see also `tools/MoveTool`).
120
121
  */
121
- export class FeedbackMoveMouseListener extends MouseListener {
122
+ export class FeedbackMoveMouseListener extends MouseListener implements Disposable {
122
123
  protected hasDragged = false;
123
- protected startDragPosition: Point | undefined;
124
+ protected rootElement?: SModelRoot;
125
+ protected startDragPosition?: Point;
124
126
  protected elementId2startPos = new Map<string, Point>();
125
127
 
126
128
  constructor(protected tool: ChangeBoundsTool) {
@@ -155,10 +157,12 @@ export class FeedbackMoveMouseListener extends MouseListener {
155
157
  result.push(cursorFeedbackAction(CursorCSS.MOVE));
156
158
  }
157
159
  }
158
- return result;
160
+ this.tool.registerFeedback(result, this);
161
+ return [];
159
162
  }
160
163
 
161
164
  protected collectStartPositions(root: SModelRoot): void {
165
+ this.rootElement = root;
162
166
  const selectedElements = root.index.all().filter(element => isSelectable(element) && element.selected);
163
167
  const elementsSet = new Set(selectedElements);
164
168
  selectedElements
@@ -184,13 +188,29 @@ export class FeedbackMoveMouseListener extends MouseListener {
184
188
  if (!this.startDragPosition) {
185
189
  return undefined;
186
190
  }
187
- const elementMoves: ElementMove[] = [];
191
+
188
192
  const viewport = findParentByFeature(target, isViewport);
189
193
  const zoom = viewport ? viewport.zoom : 1;
190
194
  const delta = {
191
195
  x: (event.pageX - this.startDragPosition.x) / zoom,
192
196
  y: (event.pageY - this.startDragPosition.y) / zoom
193
197
  };
198
+
199
+ const elementMoves: ElementMove[] = this.getElementMovesForDelta(target, delta, !event.shiftKey, finished);
200
+ if (elementMoves.length > 0) {
201
+ return MoveAction.create(elementMoves, { animate: false, finished });
202
+ } else {
203
+ return undefined;
204
+ }
205
+ }
206
+
207
+ protected getElementMovesForDelta(
208
+ target: SModelElement,
209
+ delta: { x: number; y: number },
210
+ isSnap: boolean,
211
+ finished: boolean
212
+ ): ElementMove[] {
213
+ const elementMoves: ElementMove[] = [];
194
214
  this.elementId2startPos.forEach((startPosition, elementId) => {
195
215
  const element = target.root.index.getById(elementId);
196
216
  if (element) {
@@ -200,7 +220,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
200
220
  y: startPosition.y + delta.y
201
221
  },
202
222
  element,
203
- !event.shiftKey
223
+ isSnap
204
224
  );
205
225
 
206
226
  if (isMoveable(element)) {
@@ -216,11 +236,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
216
236
  }
217
237
  }
218
238
  });
219
- if (elementMoves.length > 0) {
220
- return MoveAction.create(elementMoves, { animate: false, finished });
221
- } else {
222
- return undefined;
223
- }
239
+ return elementMoves;
224
240
  }
225
241
 
226
242
  protected validateMove(startPosition: Point, toPosition: Point, element: SModelElement, isFinished: boolean): Point {
@@ -237,8 +253,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
237
253
  } else {
238
254
  action = removeMovementRestrictionFeedback(element, this.tool.movementRestrictor);
239
255
  }
240
-
241
- this.tool.dispatchFeedback([action], this);
256
+ this.tool.registerFeedback([action], this);
242
257
  }
243
258
  return newPosition;
244
259
  }
@@ -265,18 +280,34 @@ export class FeedbackMoveMouseListener extends MouseListener {
265
280
  if (moveAction) {
266
281
  result.push(moveAction);
267
282
  }
283
+ const resetFeedback: Action[] = [];
268
284
  if (this.tool.movementRestrictor) {
269
- this.tool.deregisterFeedback([removeMovementRestrictionFeedback(target, this.tool.movementRestrictor)], this);
285
+ resetFeedback.push(removeMovementRestrictionFeedback(target, this.tool.movementRestrictor));
270
286
  }
271
- result.push(cursorFeedbackAction(CursorCSS.DEFAULT));
287
+ resetFeedback.push(cursorFeedbackAction(CursorCSS.DEFAULT));
288
+ this.tool.deregisterFeedback(this, resetFeedback);
289
+ }
290
+ this.reset();
291
+ return result;
292
+ }
293
+
294
+ protected reset(resetFeedback = false): void {
295
+ if (this.rootElement && resetFeedback) {
296
+ const elementMoves: ElementMove[] = this.getElementMovesForDelta(this.rootElement, { x: 0, y: 0 }, true, true);
297
+ const moveAction = MoveAction.create(elementMoves, { animate: false, finished: true });
298
+ this.tool.deregisterFeedback(this, [moveAction]);
272
299
  }
273
300
  this.hasDragged = false;
274
301
  this.startDragPosition = undefined;
302
+ this.rootElement = undefined;
275
303
  this.elementId2startPos.clear();
276
- return result;
277
304
  }
278
305
 
279
306
  override decorate(vnode: VNode, _element: SModelElement): VNode {
280
307
  return vnode;
281
308
  }
309
+
310
+ dispose(): void {
311
+ this.reset(true);
312
+ }
282
313
  }
@@ -14,6 +14,7 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { inject, injectable, optional } from 'inversify';
17
+
17
18
  import {
18
19
  Action,
19
20
  Bounds,
@@ -22,6 +23,7 @@ import {
22
23
  ChangeRoutingPointsOperation,
23
24
  CompoundOperation,
24
25
  Dimension,
26
+ Disposable,
25
27
  EdgeRouterRegistry,
26
28
  ElementAndBounds,
27
29
  ElementAndRoutingPoints,
@@ -39,29 +41,29 @@ import {
39
41
  findParentByFeature,
40
42
  isSelected
41
43
  } from '~glsp-sprotty';
42
- import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
43
- import { isValidMove, isValidSize } from '../../utils/layout-utils';
44
+ import { DragAwareMouseListener } from '../../../base/drag-aware-mouse-listener';
45
+ import { CursorCSS, applyCssClasses, cursorFeedbackAction, deleteCssClasses } from '../../../base/feedback/css-feedback';
46
+ import { ISelectionListener, SelectionService } from '../../../base/selection-service';
47
+ import { PointPositionUpdater } from '../../../features/change-bounds/snap';
48
+ import { isValidMove, isValidSize } from '../../../utils/layout-utils';
44
49
  import {
45
50
  calcElementAndRoutingPoints,
46
51
  forEachElement,
47
52
  isNonRoutableSelectedMovableBoundsAware,
48
53
  toElementAndBounds
49
- } from '../../utils/smodel-util';
50
- import { Resizable, ResizeHandleLocation, SResizeHandle, isBoundsAwareMoveable, isResizable } from '../change-bounds/model';
54
+ } from '../../../utils/smodel-util';
55
+ import { Resizable, ResizeHandleLocation, SResizeHandle, isBoundsAwareMoveable, isResizable } from '../../change-bounds/model';
51
56
  import {
52
57
  IMovementRestrictor,
53
58
  createMovementRestrictionFeedback,
54
59
  removeMovementRestrictionFeedback
55
- } from '../change-bounds/movement-restrictor';
56
- import { PointPositionUpdater } from '../change-bounds/snap';
57
- import { SelectionListener, SelectionService } from '../select/selection-service';
60
+ } from '../../change-bounds/movement-restrictor';
61
+ import { BaseGLSPTool } from '../base-glsp-tool';
58
62
  import {
59
63
  FeedbackMoveMouseListener,
60
64
  HideChangeBoundsToolResizeFeedbackAction,
61
65
  ShowChangeBoundsToolResizeFeedbackAction
62
- } from '../tool-feedback/change-bounds-tool-feedback';
63
- import { CursorCSS, applyCssClasses, cursorFeedbackAction, deleteCssClasses } from '../tool-feedback/css-feedback';
64
- import { BaseGLSPTool } from './base-glsp-tool';
66
+ } from './change-bounds-tool-feedback';
65
67
 
66
68
  /**
67
69
  * The change bounds tool has the license to move multiple elements or resize a single element by implementing the ChangeBounds operation.
@@ -80,12 +82,10 @@ import { BaseGLSPTool } from './base-glsp-tool';
80
82
  export class ChangeBoundsTool extends BaseGLSPTool {
81
83
  static ID = 'glsp.change-bounds-tool';
82
84
 
83
- @inject(TYPES.SelectionService) protected selectionService: SelectionService;
85
+ @inject(SelectionService) protected selectionService: SelectionService;
84
86
  @inject(EdgeRouterRegistry) @optional() readonly edgeRouterRegistry?: EdgeRouterRegistry;
85
87
  @inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
86
88
  @inject(TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor;
87
- protected feedbackMoveMouseListener: MouseListener;
88
- protected changeBoundsListener: MouseListener & SelectionListener;
89
89
 
90
90
  get id(): string {
91
91
  return ChangeBoundsTool.ID;
@@ -93,33 +93,36 @@ export class ChangeBoundsTool extends BaseGLSPTool {
93
93
 
94
94
  enable(): void {
95
95
  // install feedback move mouse listener for client-side move updates
96
- this.feedbackMoveMouseListener = this.createMoveMouseListener();
97
- this.mouseTool.register(this.feedbackMoveMouseListener);
96
+ const feedbackMoveMouseListener = this.createMoveMouseListener();
97
+ if (Disposable.is(feedbackMoveMouseListener)) {
98
+ this.toDisposeOnDisable.push(feedbackMoveMouseListener);
99
+ }
98
100
 
99
101
  // install change bounds listener for client-side resize updates and server-side updates
100
- this.changeBoundsListener = this.createChangeBoundsListener();
101
- this.mouseTool.register(this.changeBoundsListener);
102
- this.selectionService.register(this.changeBoundsListener);
102
+ const changeBoundsListener = this.createChangeBoundsListener();
103
+ if (Disposable.is(changeBoundsListener)) {
104
+ this.toDisposeOnDisable.push(changeBoundsListener);
105
+ }
106
+
107
+ this.toDisposeOnDisable.push(
108
+ this.mouseTool.registerListener(feedbackMoveMouseListener),
109
+ this.mouseTool.registerListener(changeBoundsListener),
110
+ Disposable.create(() => this.deregisterFeedback(feedbackMoveMouseListener)),
111
+ Disposable.create(() => this.deregisterFeedback(changeBoundsListener, [HideChangeBoundsToolResizeFeedbackAction.create()])),
112
+ this.selectionService.onSelectionChanged(change => changeBoundsListener.selectionChanged(change.root, change.selectedElements))
113
+ );
103
114
  }
104
115
 
105
116
  protected createMoveMouseListener(): MouseListener {
106
117
  return new FeedbackMoveMouseListener(this);
107
118
  }
108
119
 
109
- protected createChangeBoundsListener(): MouseListener & SelectionListener {
120
+ protected createChangeBoundsListener(): MouseListener & ISelectionListener {
110
121
  return new ChangeBoundsListener(this);
111
122
  }
112
-
113
- disable(): void {
114
- this.mouseTool.deregister(this.changeBoundsListener);
115
- this.selectionService.deregister(this.changeBoundsListener);
116
- this.mouseTool.deregister(this.feedbackMoveMouseListener);
117
- this.deregisterFeedback([], this.feedbackMoveMouseListener);
118
- this.deregisterFeedback([HideChangeBoundsToolResizeFeedbackAction.create()], this.changeBoundsListener);
119
- }
120
123
  }
121
124
 
122
- export class ChangeBoundsListener extends DragAwareMouseListener implements SelectionListener {
125
+ export class ChangeBoundsListener extends DragAwareMouseListener implements ISelectionListener, Disposable {
123
126
  static readonly CSS_CLASS_ACTIVE = 'active';
124
127
 
125
128
  // members for calculating the correct position change
@@ -170,12 +173,12 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
170
173
  const resizeActions = this.handleResizeOnClient(positionUpdate);
171
174
  actions.push(...resizeActions);
172
175
  }
173
- return actions;
176
+ this.tool.registerFeedback(actions, this);
174
177
  }
175
178
  return [];
176
179
  }
177
180
 
178
- override draggingMouseUp(target: SModelElement, event: MouseEvent): Action[] {
181
+ override draggingMouseUp(target: SModelElement, _event: MouseEvent): Action[] {
179
182
  if (this.pointPositionUpdater.isLastDragPositionUndefined()) {
180
183
  this.resetPosition();
181
184
  return [];
@@ -190,6 +193,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
190
193
  actions.push(...this.handleMoveOnServer(target));
191
194
  }
192
195
  this.resetPosition();
196
+ this.tool.deregisterFeedback(this, [cursorFeedbackAction(CursorCSS.DEFAULT)]);
193
197
  return actions;
194
198
  }
195
199
 
@@ -289,7 +293,10 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
289
293
  // only allow one element to have the element resize handles
290
294
  this.activeResizeElement = moveableElement;
291
295
  if (isResizable(this.activeResizeElement)) {
292
- this.tool.dispatchFeedback([ShowChangeBoundsToolResizeFeedbackAction.create(this.activeResizeElement.id)], this);
296
+ this.tool.registerFeedback(
297
+ [ShowChangeBoundsToolResizeFeedbackAction.create(this.activeResizeElement.id)],
298
+ this.activeResizeElement
299
+ );
293
300
  }
294
301
  return true;
295
302
  }
@@ -313,12 +320,34 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
313
320
  }
314
321
  }
315
322
 
316
- protected reset(): void {
323
+ dispose(): void {
324
+ this.reset(true);
325
+ }
326
+
327
+ protected reset(resetBounds = false): void {
328
+ this.resetFeedback(resetBounds);
329
+ this.resetPosition();
330
+ }
331
+
332
+ protected resetFeedback(resetBounds = false): void {
333
+ const resetFeedback: Action[] = [];
317
334
  if (this.activeResizeElement && isResizable(this.activeResizeElement)) {
318
- this.tool.dispatchFeedback([HideChangeBoundsToolResizeFeedbackAction.create()], this);
335
+ if (this.initialBounds && this.activeResizeHandle && resetBounds) {
336
+ // we only reset the bounds if an active resize operation was cancelled due to the tool being disabled
337
+ resetFeedback.push(
338
+ SetBoundsAction.create([
339
+ {
340
+ elementId: this.activeResizeElement.id,
341
+ newPosition: this.initialBounds,
342
+ newSize: this.initialBounds
343
+ }
344
+ ])
345
+ );
346
+ }
347
+ this.tool.deregisterFeedback(this.activeResizeElement, [HideChangeBoundsToolResizeFeedbackAction.create()]);
319
348
  }
320
- this.tool.dispatchActions([cursorFeedbackAction(CursorCSS.DEFAULT)]);
321
- this.resetPosition();
349
+ resetFeedback.push(cursorFeedbackAction(CursorCSS.DEFAULT));
350
+ this.tool.deregisterFeedback(this, resetFeedback);
322
351
  }
323
352
 
324
353
  protected resetPosition(): void {
@@ -15,24 +15,12 @@
15
15
  ********************************************************************************/
16
16
  import { injectable } from 'inversify';
17
17
  import { VNode } from 'snabbdom';
18
- import { IView, Point, RenderingContext, setAttr, SModelElement, svg } from '~glsp-sprotty';
19
- import { isResizable, ResizeHandleLocation, SResizeHandle } from '../change-bounds/model';
18
+ import { IView, Point, RenderingContext, setAttr, svg } from '~glsp-sprotty';
19
+ import { ResizeHandleLocation, SResizeHandle, isResizable } from '../../change-bounds/model';
20
20
 
21
21
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
22
22
  const JSX = { createElement: svg };
23
23
 
24
- /**
25
- * This view is used for the invisible end of the feedback edge.
26
- * A feedback edge is shown as a visual feedback when creating edges.
27
- */
28
- @injectable()
29
- export class FeedbackEdgeEndView implements IView {
30
- render(model: Readonly<SModelElement>, context: RenderingContext): VNode {
31
- const position: Point = (model as any).position ?? Point.ORIGIN;
32
- return <g x={position.x} y={position.y} />;
33
- }
34
- }
35
-
36
24
  @injectable()
37
25
  export class SResizeHandleView implements IView {
38
26
  render(handle: SResizeHandle, context: RenderingContext): VNode {
@@ -22,17 +22,15 @@ import {
22
22
  KeyTool,
23
23
  MouseListener,
24
24
  SModelElement,
25
- TYPES,
26
25
  findParentByFeature,
27
26
  isCtrlOrCmd,
28
27
  isDeletable,
29
28
  isSelectable,
30
29
  matchesKeystroke
31
30
  } from '~glsp-sprotty';
32
- import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
33
- import { IMouseTool } from '../mouse-tool/mouse-tool';
34
- import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
35
- import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
31
+ import { CursorCSS, cursorFeedbackAction } from '../../../base/feedback/css-feedback';
32
+ import { GLSPTool } from '../../../base/tool-manager/glsp-tool-manager';
33
+ import { BaseGLSPTool } from '../base-glsp-tool';
36
34
 
37
35
  /**
38
36
  * Deletes selected elements when hitting the `Del` key.
@@ -82,28 +80,20 @@ export class DeleteKeyListener extends KeyListener {
82
80
  * Deletes selected elements when clicking on them.
83
81
  */
84
82
  @injectable()
85
- export class MouseDeleteTool implements GLSPTool {
83
+ export class MouseDeleteTool extends BaseGLSPTool {
86
84
  static ID = 'glsp.delete-mouse';
87
85
 
88
- isEditTool = true;
89
-
90
86
  protected deleteToolMouseListener: DeleteToolMouseListener = new DeleteToolMouseListener();
91
87
 
92
- @inject(TYPES.MouseTool) protected mouseTool: IMouseTool;
93
- @inject(TYPES.IFeedbackActionDispatcher) protected readonly feedbackDispatcher: IFeedbackActionDispatcher;
94
-
95
88
  get id(): string {
96
89
  return MouseDeleteTool.ID;
97
90
  }
98
91
 
99
92
  enable(): void {
100
- this.mouseTool.register(this.deleteToolMouseListener);
101
- this.feedbackDispatcher.registerFeedback(this, [cursorFeedbackAction(CursorCSS.ELEMENT_DELETION)]);
102
- }
103
-
104
- disable(): void {
105
- this.mouseTool.deregister(this.deleteToolMouseListener);
106
- this.feedbackDispatcher.registerFeedback(this, [cursorFeedbackAction()]);
93
+ this.toDisposeOnDisable.push(
94
+ this.mouseTool.registerListener(this.deleteToolMouseListener),
95
+ this.registerFeedback([cursorFeedbackAction(CursorCSS.ELEMENT_DELETION)], this, [cursorFeedbackAction()])
96
+ );
107
97
  }
108
98
  }
109
99