@eclipse-glsp/client 1.1.0-next.6ec1da0.211 → 1.1.0-next.7be33cd.257

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 (772) hide show
  1. package/README.md +2 -2
  2. package/{lib/features/rank/model.d.ts → css/autocomplete-palette.css} +7 -7
  3. package/css/decoration.css +1 -1
  4. package/css/glsp-sprotty.css +16 -1
  5. package/lib/base/action-dispatcher.d.ts +1 -17
  6. package/lib/base/action-dispatcher.d.ts.map +1 -1
  7. package/lib/base/action-dispatcher.js +7 -8
  8. package/lib/base/action-dispatcher.js.map +1 -1
  9. package/lib/base/actions/focus-change-action.d.ts +2 -2
  10. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  11. package/lib/base/actions/focus-change-action.js +4 -4
  12. package/lib/base/actions/focus-change-action.js.map +1 -1
  13. package/lib/base/argumentable.d.ts +2 -3
  14. package/lib/base/argumentable.d.ts.map +1 -1
  15. package/lib/base/argumentable.js.map +1 -1
  16. package/lib/base/auto-complete/auto-complete-actions.d.ts +2 -2
  17. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  18. package/lib/base/auto-complete/auto-complete-actions.js +4 -4
  19. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  20. package/lib/base/auto-complete/auto-complete-widget.d.ts +11 -6
  21. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  22. package/lib/base/auto-complete/auto-complete-widget.js +35 -34
  23. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  24. package/lib/base/auto-complete/validation-decorator.d.ts +16 -1
  25. package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
  26. package/lib/base/auto-complete/validation-decorator.js +7 -8
  27. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  28. package/lib/base/command-stack.d.ts +17 -3
  29. package/lib/base/command-stack.d.ts.map +1 -1
  30. package/lib/base/command-stack.js +45 -14
  31. package/lib/base/command-stack.js.map +1 -1
  32. package/lib/base/di.config.d.ts +2 -2
  33. package/lib/base/di.config.d.ts.map +1 -1
  34. package/lib/base/di.config.js +22 -18
  35. package/lib/base/di.config.js.map +1 -1
  36. package/lib/base/drag-aware-mouse-listener.d.ts +2 -3
  37. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  38. package/lib/base/drag-aware-mouse-listener.js +17 -2
  39. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  40. package/lib/base/editor-context-service.d.ts +12 -25
  41. package/lib/base/editor-context-service.d.ts.map +1 -1
  42. package/lib/base/editor-context-service.js +37 -22
  43. package/lib/base/editor-context-service.js.map +1 -1
  44. package/lib/{features/tool-feedback/model.d.ts → base/feedback/feeback-command.d.ts} +3 -3
  45. package/lib/base/feedback/feeback-command.d.ts.map +1 -0
  46. package/lib/{features/tool-feedback/model.js → base/feedback/feeback-command.js} +4 -4
  47. package/lib/base/feedback/feeback-command.js.map +1 -0
  48. package/lib/{features/tool-feedback → base/feedback}/feedback-action-dispatcher.d.ts +1 -17
  49. package/lib/base/feedback/feedback-action-dispatcher.d.ts.map +1 -0
  50. package/lib/{features/tool-feedback → base/feedback}/feedback-action-dispatcher.js +20 -6
  51. package/lib/base/feedback/feedback-action-dispatcher.js.map +1 -0
  52. package/lib/base/feedback/update-model-command.d.ts +19 -0
  53. package/lib/base/feedback/update-model-command.d.ts.map +1 -0
  54. package/lib/base/{model → feedback}/update-model-command.js +11 -37
  55. package/lib/base/feedback/update-model-command.js.map +1 -0
  56. package/lib/base/focus-tracker.d.ts +1 -17
  57. package/lib/base/focus-tracker.d.ts.map +1 -1
  58. package/lib/base/focus-tracker.js +19 -5
  59. package/lib/base/focus-tracker.js.map +1 -1
  60. package/lib/base/model/model-registry.d.ts +1 -1
  61. package/lib/base/model/model-registry.d.ts.map +1 -1
  62. package/lib/base/model/model-registry.js +4 -5
  63. package/lib/base/model/model-registry.js.map +1 -1
  64. package/lib/base/model-initialization-constraint.d.ts +1 -16
  65. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  66. package/lib/base/model-initialization-constraint.js +9 -12
  67. package/lib/base/model-initialization-constraint.js.map +1 -1
  68. package/lib/base/ranked.d.ts +34 -0
  69. package/lib/base/ranked.d.ts.map +1 -0
  70. package/lib/base/ranked.js +38 -0
  71. package/lib/base/ranked.js.map +1 -0
  72. package/lib/base/selection-clearing-mouse-listener.d.ts +1 -1
  73. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  74. package/lib/base/selection-clearing-mouse-listener.js +4 -5
  75. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  76. package/lib/{features/select → base}/selection-service.d.ts +34 -29
  77. package/lib/base/selection-service.d.ts.map +1 -0
  78. package/lib/{features/select → base}/selection-service.js +88 -44
  79. package/lib/base/selection-service.js.map +1 -0
  80. package/lib/base/selection-service.spec.d.ts.map +1 -0
  81. package/lib/{features/select → base}/selection-service.spec.js +52 -119
  82. package/lib/base/selection-service.spec.js.map +1 -0
  83. package/lib/base/source-uri-aware.js +3 -3
  84. package/lib/base/source-uri-aware.js.map +1 -1
  85. package/lib/base/tool-manager/glsp-tool-manager.d.ts +7 -8
  86. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  87. package/lib/base/tool-manager/glsp-tool-manager.js +27 -23
  88. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  89. package/lib/{features/mouse-tool → base/view}/mouse-tool.d.ts +4 -8
  90. package/lib/base/view/mouse-tool.d.ts.map +1 -0
  91. package/lib/{features/mouse-tool → base/view}/mouse-tool.js +12 -15
  92. package/lib/base/view/mouse-tool.js.map +1 -0
  93. package/lib/base/view/view-registry.d.ts +1 -1
  94. package/lib/base/view/view-registry.d.ts.map +1 -1
  95. package/lib/base/view/view-registry.js +4 -5
  96. package/lib/base/view/view-registry.js.map +1 -1
  97. package/lib/container-modules.d.ts +70 -0
  98. package/lib/container-modules.d.ts.map +1 -0
  99. package/lib/container-modules.js +133 -0
  100. package/lib/container-modules.js.map +1 -0
  101. package/{src/features/rank/model.ts → lib/features/accessibility/di.config.d.ts} +7 -15
  102. package/lib/features/accessibility/di.config.d.ts.map +1 -0
  103. package/lib/features/{mouse-tool → accessibility}/di.config.js +16 -10
  104. package/lib/features/accessibility/di.config.js.map +1 -0
  105. package/lib/features/accessibility/move-zoom/di.config.d.ts +23 -0
  106. package/lib/features/accessibility/move-zoom/di.config.d.ts.map +1 -0
  107. package/lib/features/accessibility/move-zoom/di.config.js +41 -0
  108. package/lib/features/accessibility/move-zoom/di.config.js.map +1 -0
  109. package/lib/features/accessibility/move-zoom/move-handler.d.ts +80 -0
  110. package/lib/features/accessibility/move-zoom/move-handler.d.ts.map +1 -0
  111. package/lib/features/accessibility/move-zoom/move-handler.js +169 -0
  112. package/lib/features/accessibility/move-zoom/move-handler.js.map +1 -0
  113. package/lib/features/accessibility/move-zoom/zoom-handler.d.ts +73 -0
  114. package/lib/features/accessibility/move-zoom/zoom-handler.d.ts.map +1 -0
  115. package/lib/features/accessibility/move-zoom/zoom-handler.js +155 -0
  116. package/lib/features/accessibility/move-zoom/zoom-handler.js.map +1 -0
  117. package/lib/features/accessibility/resize-key-tool/di.config.d.ts +23 -0
  118. package/lib/features/accessibility/resize-key-tool/di.config.d.ts.map +1 -0
  119. package/lib/features/accessibility/resize-key-tool/di.config.js +36 -0
  120. package/lib/features/accessibility/resize-key-tool/di.config.js.map +1 -0
  121. package/lib/features/accessibility/resize-key-tool/resize-key-handler.d.ts +54 -0
  122. package/lib/features/accessibility/resize-key-tool/resize-key-handler.d.ts.map +1 -0
  123. package/lib/features/accessibility/resize-key-tool/resize-key-handler.js +123 -0
  124. package/lib/features/accessibility/resize-key-tool/resize-key-handler.js.map +1 -0
  125. package/lib/features/accessibility/resize-key-tool/resize-key-tool.d.ts +43 -0
  126. package/lib/features/accessibility/resize-key-tool/resize-key-tool.d.ts.map +1 -0
  127. package/lib/features/accessibility/resize-key-tool/resize-key-tool.js +124 -0
  128. package/lib/features/accessibility/resize-key-tool/resize-key-tool.js.map +1 -0
  129. package/lib/features/accessibility/search/di.config.d.ts +20 -0
  130. package/lib/features/accessibility/search/di.config.d.ts.map +1 -0
  131. package/lib/features/accessibility/search/di.config.js +32 -0
  132. package/lib/features/accessibility/search/di.config.js.map +1 -0
  133. package/lib/features/accessibility/search/search-palette.d.ts +46 -0
  134. package/lib/features/accessibility/search/search-palette.d.ts.map +1 -0
  135. package/lib/features/accessibility/search/search-palette.js +161 -0
  136. package/lib/features/accessibility/search/search-palette.js.map +1 -0
  137. package/lib/features/accessibility/search/search-tool.d.ts +29 -0
  138. package/lib/features/accessibility/search/search-tool.d.ts.map +1 -0
  139. package/lib/features/accessibility/search/search-tool.js +72 -0
  140. package/lib/features/accessibility/search/search-tool.js.map +1 -0
  141. package/lib/features/accessibility/view-key-tools/deselect-key-tool.d.ts +34 -0
  142. package/lib/features/accessibility/view-key-tools/deselect-key-tool.d.ts.map +1 -0
  143. package/lib/features/accessibility/view-key-tools/deselect-key-tool.js +85 -0
  144. package/lib/features/accessibility/view-key-tools/deselect-key-tool.js.map +1 -0
  145. package/lib/features/accessibility/view-key-tools/di.config.d.ts +20 -0
  146. package/lib/features/accessibility/view-key-tools/di.config.d.ts.map +1 -0
  147. package/lib/features/accessibility/view-key-tools/di.config.js +34 -0
  148. package/lib/features/accessibility/view-key-tools/di.config.js.map +1 -0
  149. package/lib/features/accessibility/view-key-tools/movement-key-tool.d.ts +48 -0
  150. package/lib/features/accessibility/view-key-tools/movement-key-tool.d.ts.map +1 -0
  151. package/lib/features/accessibility/view-key-tools/movement-key-tool.js +129 -0
  152. package/lib/features/accessibility/view-key-tools/movement-key-tool.js.map +1 -0
  153. package/lib/features/accessibility/view-key-tools/zoom-key-tool.d.ts +42 -0
  154. package/lib/features/accessibility/view-key-tools/zoom-key-tool.d.ts.map +1 -0
  155. package/lib/features/accessibility/view-key-tools/zoom-key-tool.js +106 -0
  156. package/lib/features/accessibility/view-key-tools/zoom-key-tool.js.map +1 -0
  157. package/lib/features/autocomplete-palette/autocomplete-suggestion-providers.d.ts +35 -0
  158. package/lib/features/autocomplete-palette/autocomplete-suggestion-providers.d.ts.map +1 -0
  159. package/lib/{base/actions/sprotty-actions.js → features/autocomplete-palette/autocomplete-suggestion-providers.js} +3 -6
  160. package/lib/features/autocomplete-palette/autocomplete-suggestion-providers.js.map +1 -0
  161. package/lib/features/autocomplete-palette/base-autocomplete-palette.d.ts +40 -0
  162. package/lib/features/autocomplete-palette/base-autocomplete-palette.d.ts.map +1 -0
  163. package/lib/features/autocomplete-palette/base-autocomplete-palette.js +82 -0
  164. package/lib/features/autocomplete-palette/base-autocomplete-palette.js.map +1 -0
  165. package/lib/features/bounds/di.config.d.ts +1 -2
  166. package/lib/features/bounds/di.config.d.ts.map +1 -1
  167. package/lib/features/bounds/di.config.js +15 -14
  168. package/lib/features/bounds/di.config.js.map +1 -1
  169. package/lib/features/bounds/freeform-layout.d.ts +14 -0
  170. package/lib/features/bounds/freeform-layout.d.ts.map +1 -0
  171. package/lib/features/{layout → bounds}/freeform-layout.js +6 -8
  172. package/lib/features/bounds/freeform-layout.js.map +1 -0
  173. package/lib/features/bounds/freeform-layout.spec.d.ts.map +1 -0
  174. package/lib/features/{layout/tests → bounds}/freeform-layout.spec.js +39 -39
  175. package/lib/features/bounds/freeform-layout.spec.js.map +1 -0
  176. package/lib/features/bounds/glsp-hidden-bounds-updater.d.ts +2 -3
  177. package/lib/features/bounds/glsp-hidden-bounds-updater.d.ts.map +1 -1
  178. package/lib/features/bounds/glsp-hidden-bounds-updater.js +9 -10
  179. package/lib/features/bounds/glsp-hidden-bounds-updater.js.map +1 -1
  180. package/lib/features/{layout → bounds}/hbox-layout.d.ts +1 -17
  181. package/lib/features/bounds/hbox-layout.d.ts.map +1 -0
  182. package/lib/features/{layout → bounds}/hbox-layout.js +11 -13
  183. package/lib/features/bounds/hbox-layout.js.map +1 -0
  184. package/lib/features/bounds/hbox-layout.spec.d.ts.map +1 -0
  185. package/lib/features/{layout/tests → bounds}/hbox-layout.spec.js +20 -21
  186. package/lib/features/bounds/hbox-layout.spec.js.map +1 -0
  187. package/lib/features/{layout/tests/layouter-test-util.d.ts → bounds/layouter-test-util.spec.d.ts} +4 -6
  188. package/lib/features/bounds/layouter-test-util.spec.d.ts.map +1 -0
  189. package/lib/features/{layout/tests/layouter-test-util.js → bounds/layouter-test-util.spec.js} +16 -16
  190. package/lib/features/bounds/layouter-test-util.spec.js.map +1 -0
  191. package/lib/features/bounds/layouter.d.ts +21 -0
  192. package/lib/features/bounds/layouter.d.ts.map +1 -0
  193. package/lib/features/{layout → bounds}/layouter.js +10 -12
  194. package/lib/features/bounds/layouter.js.map +1 -0
  195. package/lib/features/{layout → bounds}/vbox-layout.d.ts +1 -17
  196. package/lib/features/bounds/vbox-layout.d.ts.map +1 -0
  197. package/lib/features/{layout → bounds}/vbox-layout.js +11 -13
  198. package/lib/features/bounds/vbox-layout.js.map +1 -0
  199. package/lib/features/bounds/vbox-layout.spec.d.ts.map +1 -0
  200. package/lib/features/{layout/tests → bounds}/vbox-layout.spec.js +20 -21
  201. package/lib/features/bounds/vbox-layout.spec.js.map +1 -0
  202. package/lib/features/change-bounds/model.d.ts +2 -2
  203. package/lib/features/change-bounds/model.d.ts.map +1 -1
  204. package/lib/features/change-bounds/model.js +7 -7
  205. package/lib/features/change-bounds/model.js.map +1 -1
  206. package/lib/features/change-bounds/movement-restrictor.d.ts +1 -17
  207. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  208. package/lib/features/change-bounds/movement-restrictor.js +21 -7
  209. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  210. package/lib/features/change-bounds/snap.d.ts +1 -17
  211. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  212. package/lib/features/change-bounds/snap.js +19 -5
  213. package/lib/features/change-bounds/snap.js.map +1 -1
  214. package/lib/features/change-bounds/snap.spec.d.ts +1 -1
  215. package/lib/features/change-bounds/snap.spec.js +6 -6
  216. package/lib/features/change-bounds/snap.spec.js.map +1 -1
  217. package/lib/features/command-palette/command-palette-tool.d.ts +2 -2
  218. package/lib/features/command-palette/command-palette-tool.d.ts.map +1 -1
  219. package/lib/features/command-palette/command-palette-tool.js +9 -10
  220. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  221. package/lib/features/command-palette/di.config.d.ts +1 -1
  222. package/lib/features/command-palette/di.config.d.ts.map +1 -1
  223. package/lib/features/command-palette/di.config.js +6 -9
  224. package/lib/features/command-palette/di.config.js.map +1 -1
  225. package/lib/features/command-palette/server-command-palette-provider.d.ts +1 -17
  226. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  227. package/lib/features/command-palette/server-command-palette-provider.js +8 -10
  228. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  229. package/lib/features/context-menu/delete-element-context-menu.d.ts +1 -17
  230. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  231. package/lib/features/context-menu/delete-element-context-menu.js +6 -8
  232. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  233. package/lib/features/context-menu/di.config.d.ts +1 -1
  234. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  235. package/lib/features/context-menu/di.config.js +8 -9
  236. package/lib/features/context-menu/di.config.js.map +1 -1
  237. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +2 -18
  238. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  239. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +23 -10
  240. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  241. package/lib/features/context-menu/server-context-menu-provider.d.ts +1 -17
  242. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  243. package/lib/features/context-menu/server-context-menu-provider.js +9 -12
  244. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  245. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +1 -17
  246. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  247. package/lib/features/copy-paste/copy-paste-context-menu.js +12 -16
  248. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  249. package/lib/features/copy-paste/copy-paste-handler.d.ts +2 -18
  250. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  251. package/lib/features/copy-paste/copy-paste-handler.js +16 -19
  252. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  253. package/lib/features/copy-paste/di.config.d.ts +1 -1
  254. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  255. package/lib/features/copy-paste/di.config.js +6 -7
  256. package/lib/features/copy-paste/di.config.js.map +1 -1
  257. package/lib/features/decoration/decoration-placer.d.ts +1 -17
  258. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  259. package/lib/features/decoration/decoration-placer.js +7 -9
  260. package/lib/features/decoration/decoration-placer.js.map +1 -1
  261. package/lib/features/decoration/di.config.d.ts +1 -1
  262. package/lib/features/decoration/di.config.d.ts.map +1 -1
  263. package/lib/features/decoration/di.config.js +4 -5
  264. package/lib/features/decoration/di.config.js.map +1 -1
  265. package/lib/features/edit-label/di.config.d.ts +1 -1
  266. package/lib/features/edit-label/di.config.d.ts.map +1 -1
  267. package/lib/features/edit-label/di.config.js +6 -7
  268. package/lib/features/edit-label/di.config.js.map +1 -1
  269. package/lib/features/edit-label/edit-label-tool.d.ts +1 -1
  270. package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -1
  271. package/lib/features/edit-label/edit-label-tool.js +6 -7
  272. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  273. package/lib/features/edit-label/edit-label-validator.d.ts +1 -17
  274. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  275. package/lib/features/edit-label/edit-label-validator.js +12 -15
  276. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  277. package/lib/features/{mouse-tool → export}/di.config.d.ts +3 -3
  278. package/lib/features/export/di.config.d.ts.map +1 -0
  279. package/lib/features/export/di.config.js +29 -0
  280. package/lib/features/export/di.config.js.map +1 -0
  281. package/lib/features/export/glsp-svg-exporter.d.ts +1 -17
  282. package/lib/features/export/glsp-svg-exporter.d.ts.map +1 -1
  283. package/lib/features/export/glsp-svg-exporter.js +20 -7
  284. package/lib/features/export/glsp-svg-exporter.js.map +1 -1
  285. package/lib/features/hints/di.config.d.ts +15 -0
  286. package/lib/features/hints/di.config.d.ts.map +1 -1
  287. package/lib/features/hints/di.config.js +5 -7
  288. package/lib/features/hints/di.config.js.map +1 -1
  289. package/lib/features/hints/model.d.ts +2 -3
  290. package/lib/features/hints/model.d.ts.map +1 -1
  291. package/lib/features/hints/model.js.map +1 -1
  292. package/lib/features/hints/type-hints.d.ts +3 -19
  293. package/lib/features/hints/type-hints.d.ts.map +1 -1
  294. package/lib/features/hints/type-hints.js +23 -27
  295. package/lib/features/hints/type-hints.js.map +1 -1
  296. package/lib/features/hover/di.config.d.ts +1 -1
  297. package/lib/features/hover/di.config.d.ts.map +1 -1
  298. package/lib/features/hover/di.config.js +20 -22
  299. package/lib/features/hover/di.config.js.map +1 -1
  300. package/lib/features/hover/hover.d.ts +1 -17
  301. package/lib/features/hover/hover.d.ts.map +1 -1
  302. package/lib/features/hover/hover.js +10 -14
  303. package/lib/features/hover/hover.js.map +1 -1
  304. package/lib/features/layout/di.config.d.ts +1 -1
  305. package/lib/features/layout/di.config.d.ts.map +1 -1
  306. package/lib/features/layout/di.config.js +4 -12
  307. package/lib/features/layout/di.config.js.map +1 -1
  308. package/lib/features/layout/layout-elements-action.d.ts +2 -18
  309. package/lib/features/layout/layout-elements-action.d.ts.map +1 -1
  310. package/lib/features/layout/layout-elements-action.js +28 -35
  311. package/lib/features/layout/layout-elements-action.js.map +1 -1
  312. package/lib/features/layout/layout-elements-action.spec.d.ts.map +1 -1
  313. package/lib/features/layout/layout-elements-action.spec.js +14 -16
  314. package/lib/features/layout/layout-elements-action.spec.js.map +1 -1
  315. package/lib/features/navigation/di.config.d.ts +17 -1
  316. package/lib/features/navigation/di.config.d.ts.map +1 -1
  317. package/lib/features/navigation/di.config.js +8 -9
  318. package/lib/features/navigation/di.config.js.map +1 -1
  319. package/lib/features/navigation/navigation-action-handler.d.ts +2 -18
  320. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  321. package/lib/features/navigation/navigation-action-handler.js +25 -27
  322. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  323. package/lib/features/navigation/navigation-target-resolver.d.ts +1 -17
  324. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  325. package/lib/features/navigation/navigation-target-resolver.js +11 -13
  326. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  327. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  328. package/lib/features/navigation/navigation-target-resolver.spec.js +16 -17
  329. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  330. package/lib/features/reconnect/model.d.ts +2 -2
  331. package/lib/features/reconnect/model.d.ts.map +1 -1
  332. package/lib/features/reconnect/model.js +7 -7
  333. package/lib/features/reconnect/model.js.map +1 -1
  334. package/lib/features/save/di.config.d.ts +1 -1
  335. package/lib/features/save/di.config.js +3 -3
  336. package/lib/features/save/di.config.js.map +1 -1
  337. package/lib/features/save/model.d.ts +2 -2
  338. package/lib/features/save/model.d.ts.map +1 -1
  339. package/lib/features/save/save-keylistener.d.ts +2 -3
  340. package/lib/features/save/save-keylistener.d.ts.map +1 -1
  341. package/lib/features/save/save-keylistener.js +5 -7
  342. package/lib/features/save/save-keylistener.js.map +1 -1
  343. package/lib/features/select/di.config.d.ts +1 -1
  344. package/lib/features/select/di.config.d.ts.map +1 -1
  345. package/lib/features/select/di.config.js +9 -12
  346. package/lib/features/select/di.config.js.map +1 -1
  347. package/lib/features/select/select-feedback-command.d.ts +12 -0
  348. package/lib/features/select/select-feedback-command.d.ts.map +1 -0
  349. package/lib/features/select/{select-feedback-action.js → select-feedback-command.js} +10 -24
  350. package/lib/features/select/select-feedback-command.js.map +1 -0
  351. package/lib/features/select/select-mouse-listener.d.ts +3 -4
  352. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  353. package/lib/features/select/select-mouse-listener.js +25 -28
  354. package/lib/features/select/select-mouse-listener.js.map +1 -1
  355. package/lib/features/source-model-watcher/di.config.d.ts +15 -0
  356. package/lib/features/source-model-watcher/di.config.d.ts.map +1 -1
  357. package/lib/features/source-model-watcher/di.config.js +3 -4
  358. package/lib/features/source-model-watcher/di.config.js.map +1 -1
  359. package/lib/features/source-model-watcher/source-model-changed-action-handler.d.ts +1 -17
  360. package/lib/features/source-model-watcher/source-model-changed-action-handler.d.ts.map +1 -1
  361. package/lib/features/source-model-watcher/source-model-changed-action-handler.js +11 -14
  362. package/lib/features/source-model-watcher/source-model-changed-action-handler.js.map +1 -1
  363. package/lib/features/svg-metadata/di.config.d.ts +19 -0
  364. package/lib/features/svg-metadata/di.config.d.ts.map +1 -0
  365. package/lib/features/{rank/model.js → svg-metadata/di.config.js} +10 -12
  366. package/lib/features/svg-metadata/di.config.js.map +1 -0
  367. package/lib/features/svg-metadata/metadata-placer.d.ts +23 -0
  368. package/lib/features/svg-metadata/metadata-placer.d.ts.map +1 -0
  369. package/lib/features/svg-metadata/metadata-placer.js +60 -0
  370. package/lib/features/svg-metadata/metadata-placer.js.map +1 -0
  371. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +12 -22
  372. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  373. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +51 -37
  374. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  375. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +6 -22
  376. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  377. package/lib/features/tool-feedback/creation-tool-feedback.js +33 -41
  378. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  379. package/lib/features/tool-feedback/css-feedback.d.ts +2 -18
  380. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  381. package/lib/features/tool-feedback/css-feedback.js +9 -12
  382. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  383. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  384. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  385. package/lib/features/tool-feedback/di.config.js +20 -22
  386. package/lib/features/tool-feedback/di.config.js.map +1 -1
  387. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +3 -20
  388. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  389. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +41 -53
  390. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  391. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +2 -18
  392. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  393. package/lib/features/tool-feedback/marquee-tool-feedback.js +14 -17
  394. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  395. package/lib/features/tool-feedback/view.d.ts +1 -17
  396. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  397. package/lib/features/tool-feedback/view.js +9 -12
  398. package/lib/features/tool-feedback/view.js.map +1 -1
  399. package/lib/features/tool-palette/di.config.d.ts +1 -1
  400. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  401. package/lib/features/tool-palette/di.config.js +6 -8
  402. package/lib/features/tool-palette/di.config.js.map +1 -1
  403. package/lib/features/tool-palette/tool-palette.d.ts +7 -21
  404. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  405. package/lib/features/tool-palette/tool-palette.js +39 -35
  406. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  407. package/lib/features/tools/base-glsp-tool.d.ts +3 -20
  408. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  409. package/lib/features/tools/base-glsp-tool.js +24 -11
  410. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  411. package/lib/features/tools/change-bounds-tool.d.ts +7 -21
  412. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  413. package/lib/features/tools/change-bounds-tool.js +56 -36
  414. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  415. package/lib/features/tools/delete-tool.d.ts +3 -20
  416. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  417. package/lib/features/tools/delete-tool.js +22 -29
  418. package/lib/features/tools/delete-tool.js.map +1 -1
  419. package/lib/features/tools/di.config.d.ts +18 -5
  420. package/lib/features/tools/di.config.d.ts.map +1 -1
  421. package/lib/features/tools/di.config.js +18 -24
  422. package/lib/features/tools/di.config.js.map +1 -1
  423. package/lib/features/tools/edge-creation-tool.d.ts +1 -17
  424. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  425. package/lib/features/tools/edge-creation-tool.js +18 -21
  426. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  427. package/lib/features/tools/edge-edit-tool.d.ts +4 -19
  428. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  429. package/lib/features/tools/edge-edit-tool.js +27 -26
  430. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  431. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts +1 -17
  432. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -1
  433. package/lib/features/tools/enable-default-tools-on-focus-loss.js +19 -5
  434. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -1
  435. package/lib/features/tools/glsp-manhattan-edge-router.d.ts +3 -3
  436. package/lib/features/tools/glsp-manhattan-edge-router.d.ts.map +1 -1
  437. package/lib/features/tools/glsp-manhattan-edge-router.js +8 -9
  438. package/lib/features/tools/glsp-manhattan-edge-router.js.map +1 -1
  439. package/lib/features/tools/marquee-behavior.d.ts +2 -2
  440. package/lib/features/tools/marquee-behavior.d.ts.map +1 -1
  441. package/lib/features/tools/marquee-behavior.js +4 -4
  442. package/lib/features/tools/marquee-behavior.js.map +1 -1
  443. package/lib/features/tools/marquee-mouse-tool.d.ts +1 -18
  444. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  445. package/lib/features/tools/marquee-mouse-tool.js +17 -26
  446. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  447. package/lib/features/tools/marquee-tool.d.ts +1 -17
  448. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  449. package/lib/features/tools/marquee-tool.js +23 -10
  450. package/lib/features/tools/marquee-tool.js.map +1 -1
  451. package/lib/features/tools/model.d.ts +2 -3
  452. package/lib/features/tools/model.d.ts.map +1 -1
  453. package/lib/features/tools/model.js +18 -3
  454. package/lib/features/tools/model.js.map +1 -1
  455. package/lib/features/tools/node-creation-tool.d.ts +1 -17
  456. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  457. package/lib/features/tools/node-creation-tool.js +14 -17
  458. package/lib/features/tools/node-creation-tool.js.map +1 -1
  459. package/lib/features/tools/view.d.ts +1 -1
  460. package/lib/features/tools/view.d.ts.map +1 -1
  461. package/lib/features/tools/view.js +5 -6
  462. package/lib/features/tools/view.js.map +1 -1
  463. package/lib/features/validation/di.config.d.ts +15 -0
  464. package/lib/features/validation/di.config.d.ts.map +1 -1
  465. package/lib/features/validation/di.config.js +9 -11
  466. package/lib/features/validation/di.config.js.map +1 -1
  467. package/lib/features/validation/issue-marker.d.ts +2 -3
  468. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  469. package/lib/features/validation/issue-marker.js +9 -10
  470. package/lib/features/validation/issue-marker.js.map +1 -1
  471. package/lib/features/validation/marker-navigator.d.ts +2 -18
  472. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  473. package/lib/features/validation/marker-navigator.js +28 -36
  474. package/lib/features/validation/marker-navigator.js.map +1 -1
  475. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  476. package/lib/features/validation/marker-navigator.spec.js +23 -10
  477. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  478. package/lib/features/validation/validate.d.ts +8 -24
  479. package/lib/features/validation/validate.d.ts.map +1 -1
  480. package/lib/features/validation/validate.js +40 -46
  481. package/lib/features/validation/validate.js.map +1 -1
  482. package/lib/features/viewport/di.config.d.ts +1 -1
  483. package/lib/features/viewport/di.config.d.ts.map +1 -1
  484. package/lib/features/viewport/di.config.js +12 -12
  485. package/lib/features/viewport/di.config.js.map +1 -1
  486. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +1 -17
  487. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  488. package/lib/features/viewport/glsp-scroll-mouse-listener.js +20 -6
  489. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  490. package/lib/{base/tool-manager/tool-actions.d.ts → glsp-sprotty/augmented-actions.d.ts} +7 -2
  491. package/lib/glsp-sprotty/augmented-actions.d.ts.map +1 -0
  492. package/lib/{base/tool-manager/tool-actions.js → glsp-sprotty/augmented-actions.js} +6 -2
  493. package/lib/glsp-sprotty/augmented-actions.js.map +1 -0
  494. package/lib/{sprotty-reexport.d.ts → glsp-sprotty/index.d.ts} +33 -17
  495. package/lib/glsp-sprotty/index.d.ts.map +1 -0
  496. package/lib/{sprotty-reexport.js → glsp-sprotty/index.js} +73 -39
  497. package/lib/glsp-sprotty/index.js.map +1 -0
  498. package/lib/{base → glsp-sprotty}/types.d.ts +4 -8
  499. package/lib/glsp-sprotty/types.d.ts.map +1 -0
  500. package/lib/{base → glsp-sprotty}/types.js +3 -2
  501. package/lib/glsp-sprotty/types.js.map +1 -0
  502. package/lib/index.d.ts +46 -14
  503. package/lib/index.d.ts.map +1 -1
  504. package/lib/index.js +96 -52
  505. package/lib/index.js.map +1 -1
  506. package/lib/lib/model.d.ts +6 -3
  507. package/lib/lib/model.d.ts.map +1 -1
  508. package/lib/lib/model.js +50 -4
  509. package/lib/lib/model.js.map +1 -1
  510. package/lib/model-source/glsp-diagram-server.d.ts +1 -17
  511. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  512. package/lib/model-source/glsp-diagram-server.js +11 -13
  513. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  514. package/lib/utils/argument-utils.d.ts +2 -2
  515. package/lib/utils/argument-utils.d.ts.map +1 -1
  516. package/lib/utils/argument-utils.js +2 -2
  517. package/lib/utils/argument-utils.js.map +1 -1
  518. package/lib/utils/html-utils.d.ts +1 -1
  519. package/lib/utils/html-utils.js +1 -1
  520. package/lib/utils/layout-utils.d.ts +2 -3
  521. package/lib/utils/layout-utils.d.ts.map +1 -1
  522. package/lib/utils/layout-utils.js.map +1 -1
  523. package/lib/utils/marker.d.ts +16 -1
  524. package/lib/utils/marker.d.ts.map +1 -1
  525. package/lib/utils/marker.js +7 -8
  526. package/lib/utils/marker.js.map +1 -1
  527. package/lib/utils/smodel-util.d.ts +7 -6
  528. package/lib/utils/smodel-util.d.ts.map +1 -1
  529. package/lib/utils/smodel-util.js +33 -17
  530. package/lib/utils/smodel-util.js.map +1 -1
  531. package/lib/utils/smodel-util.spec.d.ts +2 -0
  532. package/lib/utils/smodel-util.spec.d.ts.map +1 -0
  533. package/lib/utils/smodel-util.spec.js +184 -0
  534. package/lib/utils/smodel-util.spec.js.map +1 -0
  535. package/lib/utils/viewpoint-util.d.ts +2 -3
  536. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  537. package/lib/utils/viewpoint-util.js +5 -6
  538. package/lib/utils/viewpoint-util.js.map +1 -1
  539. package/lib/views/base-view-module.d.ts +18 -6
  540. package/lib/views/base-view-module.d.ts.map +1 -1
  541. package/lib/views/base-view-module.js +22 -23
  542. package/lib/views/base-view-module.js.map +1 -1
  543. package/lib/views/compartments.d.ts +1 -1
  544. package/lib/views/compartments.d.ts.map +1 -1
  545. package/lib/views/compartments.js +5 -6
  546. package/lib/views/compartments.js.map +1 -1
  547. package/lib/views/glsp-edge-view.d.ts +2 -18
  548. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  549. package/lib/views/glsp-edge-view.js +21 -7
  550. package/lib/views/glsp-edge-view.js.map +1 -1
  551. package/lib/views/glsp-projection-view.d.ts +2 -4
  552. package/lib/views/glsp-projection-view.d.ts.map +1 -1
  553. package/lib/views/glsp-projection-view.js +12 -11
  554. package/lib/views/glsp-projection-view.js.map +1 -1
  555. package/lib/views/index.d.ts +1 -1
  556. package/lib/views/index.js +1 -1
  557. package/lib/views/issue-marker-view.d.ts +1 -1
  558. package/lib/views/issue-marker-view.d.ts.map +1 -1
  559. package/lib/views/issue-marker-view.js +6 -7
  560. package/lib/views/issue-marker-view.js.map +1 -1
  561. package/lib/views/rounded-corner-view.d.ts +1 -1
  562. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  563. package/lib/views/rounded-corner-view.js +7 -8
  564. package/lib/views/rounded-corner-view.js.map +1 -1
  565. package/lib/views/rounded-corner.d.ts +2 -3
  566. package/lib/views/rounded-corner.d.ts.map +1 -1
  567. package/lib/views/rounded-corner.js +1 -1
  568. package/lib/views/rounded-corner.js.map +1 -1
  569. package/package.json +21 -18
  570. package/src/base/action-dispatcher.ts +2 -3
  571. package/src/base/actions/focus-change-action.ts +2 -2
  572. package/src/base/argumentable.ts +2 -3
  573. package/src/base/auto-complete/auto-complete-actions.ts +2 -2
  574. package/src/base/auto-complete/auto-complete-widget.ts +35 -14
  575. package/src/base/auto-complete/validation-decorator.ts +2 -3
  576. package/src/base/command-stack.ts +65 -11
  577. package/src/base/di.config.ts +29 -12
  578. package/src/base/drag-aware-mouse-listener.ts +2 -3
  579. package/src/base/editor-context-service.ts +45 -18
  580. package/src/{features/tool-feedback/model.ts → base/feedback/feeback-command.ts} +2 -2
  581. package/src/{features/tool-feedback → base/feedback}/feedback-action-dispatcher.ts +2 -4
  582. package/src/base/{model → feedback}/update-model-command.ts +9 -32
  583. package/src/base/focus-tracker.ts +2 -4
  584. package/src/base/model/model-registry.ts +2 -2
  585. package/src/base/model-initialization-constraint.ts +2 -3
  586. package/src/base/ranked.ts +42 -0
  587. package/src/base/selection-clearing-mouse-listener.ts +2 -2
  588. package/src/{features/select → base}/selection-service.spec.ts +42 -127
  589. package/src/{features/select → base}/selection-service.ts +98 -40
  590. package/src/base/source-uri-aware.ts +2 -2
  591. package/src/base/tool-manager/glsp-tool-manager.ts +18 -17
  592. package/src/{features/mouse-tool → base/view}/mouse-tool.ts +10 -18
  593. package/src/base/view/view-registry.ts +2 -2
  594. package/src/container-modules.ts +145 -0
  595. package/src/features/accessibility/README.md +65 -0
  596. package/src/features/accessibility/di.config.ts +32 -0
  597. package/src/features/accessibility/move-zoom/di.config.ts +42 -0
  598. package/src/features/accessibility/move-zoom/move-handler.ts +209 -0
  599. package/src/features/accessibility/move-zoom/zoom-handler.ts +182 -0
  600. package/src/features/accessibility/resize-key-tool/di.config.ts +35 -0
  601. package/src/features/accessibility/resize-key-tool/resize-key-handler.ts +129 -0
  602. package/src/features/accessibility/resize-key-tool/resize-key-tool.ts +106 -0
  603. package/src/features/accessibility/search/di.config.ts +30 -0
  604. package/src/features/accessibility/search/search-palette.ts +193 -0
  605. package/src/features/accessibility/search/search-tool.ts +59 -0
  606. package/src/features/accessibility/view-key-tools/deselect-key-tool.ts +88 -0
  607. package/src/features/accessibility/view-key-tools/di.config.ts +32 -0
  608. package/src/features/accessibility/view-key-tools/movement-key-tool.ts +113 -0
  609. package/src/features/accessibility/view-key-tools/zoom-key-tool.ts +92 -0
  610. package/src/{base/actions/sprotty-actions.ts → features/autocomplete-palette/autocomplete-suggestion-providers.ts} +21 -10
  611. package/src/features/autocomplete-palette/base-autocomplete-palette.ts +87 -0
  612. package/src/features/bounds/di.config.ts +23 -13
  613. package/src/features/{layout/tests → bounds}/freeform-layout.spec.ts +3 -3
  614. package/src/features/{layout → bounds}/freeform-layout.ts +14 -6
  615. package/src/features/bounds/glsp-hidden-bounds-updater.ts +16 -8
  616. package/src/features/{layout/tests → bounds}/hbox-layout.spec.ts +3 -4
  617. package/src/features/{layout → bounds}/hbox-layout.ts +9 -7
  618. package/src/features/{layout/tests/layouter-test-util.ts → bounds/layouter-test-util.spec.ts} +12 -11
  619. package/src/features/{layout → bounds}/layouter.ts +7 -7
  620. package/src/features/{layout/tests → bounds}/vbox-layout.spec.ts +3 -4
  621. package/src/features/{layout → bounds}/vbox-layout.ts +8 -6
  622. package/src/features/change-bounds/model.ts +2 -2
  623. package/src/features/change-bounds/movement-restrictor.ts +3 -4
  624. package/src/features/change-bounds/snap.spec.ts +2 -2
  625. package/src/features/change-bounds/snap.ts +2 -3
  626. package/src/features/command-palette/command-palette-tool.ts +4 -4
  627. package/src/features/command-palette/di.config.ts +6 -9
  628. package/src/features/command-palette/server-command-palette-provider.ts +11 -4
  629. package/src/features/context-menu/delete-element-context-menu.ts +2 -4
  630. package/src/features/context-menu/di.config.ts +4 -5
  631. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +4 -6
  632. package/src/features/context-menu/server-context-menu-provider.ts +12 -4
  633. package/src/features/copy-paste/copy-paste-context-menu.ts +15 -4
  634. package/src/features/copy-paste/copy-paste-handler.ts +14 -8
  635. package/src/features/copy-paste/di.config.ts +2 -3
  636. package/src/features/decoration/decoration-placer.ts +2 -3
  637. package/src/features/decoration/di.config.ts +4 -5
  638. package/src/features/edit-label/di.config.ts +3 -4
  639. package/src/features/edit-label/edit-label-tool.ts +2 -2
  640. package/src/features/edit-label/edit-label-validator.ts +9 -6
  641. package/src/features/{mouse-tool → export}/di.config.ts +10 -9
  642. package/src/features/export/glsp-svg-exporter.ts +9 -9
  643. package/src/features/hints/di.config.ts +2 -4
  644. package/src/features/hints/model.ts +2 -3
  645. package/src/features/hints/type-hints.ts +15 -11
  646. package/src/features/hover/di.config.ts +13 -12
  647. package/src/features/hover/hover.ts +14 -9
  648. package/src/features/layout/di.config.ts +2 -11
  649. package/src/features/layout/layout-elements-action.spec.ts +15 -17
  650. package/src/features/layout/layout-elements-action.ts +15 -13
  651. package/src/features/navigation/di.config.ts +5 -4
  652. package/src/features/navigation/navigation-action-handler.ts +13 -9
  653. package/src/features/navigation/navigation-target-resolver.spec.ts +2 -3
  654. package/src/features/navigation/navigation-target-resolver.ts +10 -4
  655. package/src/features/reconnect/model.ts +2 -2
  656. package/src/features/save/di.config.ts +3 -3
  657. package/src/features/save/model.ts +2 -2
  658. package/src/features/save/save-keylistener.ts +2 -4
  659. package/src/features/select/di.config.ts +9 -12
  660. package/src/features/select/{select-feedback-action.ts → select-feedback-command.ts} +3 -19
  661. package/src/features/select/select-mouse-listener.ts +13 -12
  662. package/src/features/source-model-watcher/di.config.ts +2 -3
  663. package/src/features/source-model-watcher/source-model-changed-action-handler.ts +11 -4
  664. package/src/features/svg-metadata/di.config.ts +26 -0
  665. package/src/features/svg-metadata/metadata-placer.ts +49 -0
  666. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +56 -25
  667. package/src/features/tool-feedback/creation-tool-feedback.ts +32 -23
  668. package/src/features/tool-feedback/css-feedback.ts +3 -6
  669. package/src/features/tool-feedback/di.config.ts +20 -22
  670. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +16 -21
  671. package/src/features/tool-feedback/marquee-tool-feedback.ts +7 -5
  672. package/src/features/tool-feedback/view.tsx +2 -3
  673. package/src/features/tool-palette/di.config.ts +4 -6
  674. package/src/features/tool-palette/tool-palette.ts +30 -20
  675. package/src/features/tools/base-glsp-tool.ts +4 -7
  676. package/src/features/tools/change-bounds-tool.ts +57 -32
  677. package/src/features/tools/delete-tool.ts +13 -12
  678. package/src/features/tools/di.config.ts +29 -26
  679. package/src/features/tools/edge-creation-tool.ts +9 -7
  680. package/src/features/tools/edge-edit-tool.ts +22 -16
  681. package/src/features/tools/enable-default-tools-on-focus-loss.ts +2 -3
  682. package/src/features/tools/glsp-manhattan-edge-router.ts +9 -7
  683. package/src/features/tools/marquee-behavior.ts +2 -3
  684. package/src/features/tools/marquee-mouse-tool.ts +10 -13
  685. package/src/features/tools/marquee-tool.ts +2 -3
  686. package/src/features/tools/model.ts +2 -3
  687. package/src/features/tools/node-creation-tool.ts +8 -6
  688. package/src/features/tools/view.tsx +2 -2
  689. package/src/features/validation/di.config.ts +5 -7
  690. package/src/features/validation/issue-marker.ts +13 -3
  691. package/src/features/validation/marker-navigator.spec.ts +7 -8
  692. package/src/features/validation/marker-navigator.ts +19 -14
  693. package/src/features/validation/validate.ts +34 -25
  694. package/src/features/viewport/di.config.ts +14 -12
  695. package/src/features/viewport/glsp-scroll-mouse-listener.ts +10 -3
  696. package/src/{base/tool-manager/tool-actions.ts → glsp-sprotty/augmented-actions.ts} +14 -3
  697. package/src/{sprotty-reexport.ts → glsp-sprotty/index.ts} +97 -47
  698. package/src/{base → glsp-sprotty}/types.ts +4 -5
  699. package/src/index.ts +74 -29
  700. package/src/lib/model.ts +45 -3
  701. package/src/model-source/glsp-diagram-server.ts +10 -5
  702. package/src/utils/argument-utils.ts +2 -2
  703. package/src/utils/html-utils.ts +1 -1
  704. package/src/utils/layout-utils.ts +2 -3
  705. package/src/utils/marker.ts +2 -3
  706. package/src/utils/smodel-util.spec.ts +222 -0
  707. package/src/utils/smodel-util.ts +40 -15
  708. package/src/utils/viewpoint-util.ts +13 -3
  709. package/src/views/base-view-module.ts +11 -15
  710. package/src/views/compartments.tsx +2 -2
  711. package/src/views/glsp-edge-view.tsx +4 -5
  712. package/src/views/glsp-projection-view.tsx +6 -5
  713. package/src/views/index.ts +1 -2
  714. package/src/views/issue-marker-view.tsx +2 -2
  715. package/src/views/rounded-corner-view.tsx +3 -3
  716. package/src/views/rounded-corner.ts +3 -4
  717. package/lib/base/actions/sprotty-actions.d.ts +0 -7
  718. package/lib/base/actions/sprotty-actions.d.ts.map +0 -1
  719. package/lib/base/actions/sprotty-actions.js.map +0 -1
  720. package/lib/base/container-modules.d.ts +0 -40
  721. package/lib/base/container-modules.d.ts.map +0 -1
  722. package/lib/base/container-modules.js +0 -102
  723. package/lib/base/container-modules.js.map +0 -1
  724. package/lib/base/model/update-model-command.d.ts +0 -47
  725. package/lib/base/model/update-model-command.d.ts.map +0 -1
  726. package/lib/base/model/update-model-command.js.map +0 -1
  727. package/lib/base/tool-manager/tool-actions.d.ts.map +0 -1
  728. package/lib/base/tool-manager/tool-actions.js.map +0 -1
  729. package/lib/base/types.d.ts.map +0 -1
  730. package/lib/base/types.js.map +0 -1
  731. package/lib/features/layout/freeform-layout.d.ts +0 -32
  732. package/lib/features/layout/freeform-layout.d.ts.map +0 -1
  733. package/lib/features/layout/freeform-layout.js.map +0 -1
  734. package/lib/features/layout/hbox-layout.d.ts.map +0 -1
  735. package/lib/features/layout/hbox-layout.js.map +0 -1
  736. package/lib/features/layout/layouter.d.ts +0 -37
  737. package/lib/features/layout/layouter.d.ts.map +0 -1
  738. package/lib/features/layout/layouter.js.map +0 -1
  739. package/lib/features/layout/tests/freeform-layout.spec.d.ts.map +0 -1
  740. package/lib/features/layout/tests/freeform-layout.spec.js.map +0 -1
  741. package/lib/features/layout/tests/hbox-layout.spec.d.ts.map +0 -1
  742. package/lib/features/layout/tests/hbox-layout.spec.js.map +0 -1
  743. package/lib/features/layout/tests/layouter-test-util.d.ts.map +0 -1
  744. package/lib/features/layout/tests/layouter-test-util.js.map +0 -1
  745. package/lib/features/layout/tests/vbox-layout.spec.d.ts.map +0 -1
  746. package/lib/features/layout/tests/vbox-layout.spec.js.map +0 -1
  747. package/lib/features/layout/vbox-layout.d.ts.map +0 -1
  748. package/lib/features/layout/vbox-layout.js.map +0 -1
  749. package/lib/features/mouse-tool/di.config.d.ts.map +0 -1
  750. package/lib/features/mouse-tool/di.config.js.map +0 -1
  751. package/lib/features/mouse-tool/mouse-tool.d.ts.map +0 -1
  752. package/lib/features/mouse-tool/mouse-tool.js.map +0 -1
  753. package/lib/features/rank/model.d.ts.map +0 -1
  754. package/lib/features/rank/model.js.map +0 -1
  755. package/lib/features/select/select-feedback-action.d.ts +0 -38
  756. package/lib/features/select/select-feedback-action.d.ts.map +0 -1
  757. package/lib/features/select/select-feedback-action.js.map +0 -1
  758. package/lib/features/select/selection-service.d.ts.map +0 -1
  759. package/lib/features/select/selection-service.js.map +0 -1
  760. package/lib/features/select/selection-service.spec.d.ts.map +0 -1
  761. package/lib/features/select/selection-service.spec.js.map +0 -1
  762. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +0 -1
  763. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +0 -1
  764. package/lib/features/tool-feedback/model.d.ts.map +0 -1
  765. package/lib/features/tool-feedback/model.js.map +0 -1
  766. package/lib/sprotty-reexport.d.ts.map +0 -1
  767. package/lib/sprotty-reexport.js.map +0 -1
  768. package/src/base/container-modules.ts +0 -113
  769. /package/lib/{features/select → base}/selection-service.spec.d.ts +0 -0
  770. /package/lib/features/{layout/tests → bounds}/freeform-layout.spec.d.ts +0 -0
  771. /package/lib/features/{layout/tests → bounds}/hbox-layout.spec.d.ts +0 -0
  772. /package/lib/features/{layout/tests → bounds}/vbox-layout.spec.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020-2022 EclipseSource and others.
2
+ * Copyright (c) 2020-2023 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,16 +13,12 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- /* eslint-disable import/no-deprecated,no-unused-expressions */
17
- import { Action, SModelElementSchema } from '@eclipse-glsp/protocol';
18
16
  import { AssertionError, expect } from 'chai';
19
17
  import { Container, injectable } from 'inversify';
20
- import { defaultModule, SGraphFactory, SModelRoot } from 'sprotty';
21
- import { TYPES } from '../../base/types';
22
- import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
23
- import { SelectFeedbackAction } from './select-feedback-action';
24
- import { SelectionListener, SelectionService } from './selection-service';
25
-
18
+ import * as sinon from 'sinon';
19
+ import { Action, SGraphFactory, SModelElementSchema, SModelRoot, TYPES, defaultModule, initializeContainer } from '~glsp-sprotty';
20
+ import { IFeedbackActionDispatcher, IFeedbackEmitter } from './feedback/feedback-action-dispatcher';
21
+ import { ISelectionListener, SelectFeedbackAction, SelectionService } from './selection-service';
26
22
  @injectable()
27
23
  class MockFeedbackActionDispatcher implements IFeedbackActionDispatcher {
28
24
  protected feedbackEmitters: Map<IFeedbackEmitter, Action[]> = new Map();
@@ -47,38 +43,18 @@ class MockFeedbackActionDispatcher implements IFeedbackActionDispatcher {
47
43
  }
48
44
  }
49
45
 
50
- class MockSelectionListener implements SelectionListener {
51
- private called = 0;
52
- private root: SModelRoot;
53
- private selectedElements: string[] = [];
54
-
55
- selectionChanged(newRoot: Readonly<SModelRoot>, selectedElements: string[]): void {
56
- this.called++;
57
- this.root = newRoot;
58
- this.selectedElements = selectedElements;
59
- }
60
-
61
- getRoot(): SModelRoot {
62
- return this.root;
63
- }
64
-
65
- getSelectedElements(): string[] {
66
- return this.selectedElements;
67
- }
68
-
69
- getCalled(): number {
70
- return this.called;
46
+ class MockSelectionListener implements ISelectionListener {
47
+ selectionChanged(root: Readonly<SModelRoot>, selectedElements: string[], deselectedElements: string[] | undefined): void {
48
+ // no.op
71
49
  }
72
50
  }
73
51
 
74
52
  function createContainer(): Container {
75
- const container = new Container();
76
- container.load(defaultModule);
53
+ const container = initializeContainer(new Container(), defaultModule);
77
54
  // eslint-disable-next-line deprecation/deprecation
78
55
  container.rebind(TYPES.IModelFactory).to(SGraphFactory).inSingletonScope();
79
56
  container.bind(TYPES.IFeedbackActionDispatcher).to(MockFeedbackActionDispatcher).inSingletonScope();
80
57
  container.bind(SelectionService).toSelf().inSingletonScope();
81
- container.bind(TYPES.SelectionService).toService(SelectionService);
82
58
  return container;
83
59
  }
84
60
 
@@ -94,7 +70,7 @@ describe('SelectionService', () => {
94
70
  // eslint-disable-next-line deprecation/deprecation
95
71
  graphFactory = container.get<SGraphFactory>(TYPES.IModelFactory);
96
72
  root = createRoot('node1', 'node2', 'node3', 'node4', 'node5');
97
- selectionService = container.get<SelectionService>(TYPES.SelectionService);
73
+ selectionService = container.get<SelectionService>(SelectionService);
98
74
  feedbackDispatcher = container.get<MockFeedbackActionDispatcher>(TYPES.IFeedbackActionDispatcher);
99
75
  });
100
76
 
@@ -200,7 +176,7 @@ describe('SelectionService', () => {
200
176
  selectionService.modelRootChanged(newRoot);
201
177
  assertSelectionAndFeedback(['node1'], ['node2']);
202
178
  });
203
- it('Changing root with new selection correctly selects matchting elements and deselects not matching elements.', () => {
179
+ it('Changing root with new selection correctly selects matching elements and deselects not matching elements.', () => {
204
180
  assertSelectionAndFeedback([], []);
205
181
  selectionService.updateSelection(root, ['node1', 'node2'], []);
206
182
  assertSelectionAndFeedback(['node1', 'node2'], []);
@@ -211,118 +187,56 @@ describe('SelectionService', () => {
211
187
  });
212
188
  });
213
189
  describe('Listeners', () => {
190
+ const sandbox = sinon.createSandbox();
191
+ const listener = sandbox.createStubInstance(MockSelectionListener);
192
+
193
+ beforeEach(() => {
194
+ selectionService.onSelectionChanged(change =>
195
+ listener.selectionChanged(change.root, change.selectedElements, change.deselectedElements)
196
+ );
197
+ });
198
+
199
+ afterEach(() => {
200
+ selectionService.dispose();
201
+ sandbox.reset();
202
+ });
214
203
  it('A registered listener should be notified of a single selection change.', () => {
215
- const listener: MockSelectionListener = new MockSelectionListener();
216
- selectionService.register(listener);
217
- assertListener(listener, undefined, [], 0);
218
204
  selectionService.updateSelection(root, ['node1', 'node1'], []);
219
- assertListener(listener, root, ['node1'], 1);
205
+ assertListener(listener, root, ['node1'], [], 1);
220
206
  });
221
207
  it('A registered listener should be notified of a multi-selection change.', () => {
222
- const listener: MockSelectionListener = new MockSelectionListener();
223
- selectionService.register(listener);
224
- assertListener(listener, undefined, [], 0);
225
208
  selectionService.updateSelection(root, ['node1', 'node2', 'node3'], []);
226
- assertListener(listener, root, ['node1', 'node2', 'node3'], 1);
209
+ assertListener(listener, root, ['node1', 'node2', 'node3'], [], 1);
227
210
  });
228
211
  it('A registered listener should be notified of series of selection changes.', () => {
229
- const listener: MockSelectionListener = new MockSelectionListener();
230
- selectionService.register(listener);
231
- assertListener(listener, undefined, [], 0);
232
212
  selectionService.updateSelection(root, ['node1'], []);
233
- assertListener(listener, root, ['node1'], 1);
213
+ assertListener(listener, root, ['node1'], [], 1);
234
214
  selectionService.updateSelection(root, ['node2'], ['node1']);
235
- assertListener(listener, root, ['node2'], 2);
215
+ assertListener(listener, root, ['node2'], ['node1'], 2);
236
216
  selectionService.updateSelection(root, ['node3', 'node4'], []);
237
- assertListener(listener, root, ['node2', 'node3', 'node4'], 3);
217
+ assertListener(listener, root, ['node2', 'node3', 'node4'], [], 3);
238
218
  selectionService.updateSelection(root, [], ['node4']);
239
- assertListener(listener, root, ['node2', 'node3'], 4);
240
- });
241
- it('A registered listener should receive the selected elements in the right order.', () => {
242
- const listener: MockSelectionListener = new MockSelectionListener();
243
- selectionService.register(listener);
244
- assertListener(listener, undefined, [], 0);
245
- selectionService.updateSelection(root, ['node2', 'node1'], []);
246
- expect(() => assertListener(listener, root, ['node1', 'node2'], 1)).to.throw(AssertionError, 'ordered members');
219
+ assertListener(listener, root, ['node2', 'node3'], ['node4'], 4);
247
220
  });
248
221
  it('A registered listener should be notified of root changes.', () => {
249
- const listener: MockSelectionListener = new MockSelectionListener();
250
- selectionService.register(listener);
251
- assertListener(listener, undefined, [], 0);
252
222
  selectionService.updateSelection(root, [], []);
253
- assertListener(listener, root, [], 1);
223
+ assertListener(listener, root, [], [], 1);
254
224
 
255
225
  const newRoot = createRoot('node1', 'newNode2', 'newNode3');
256
226
  selectionService.updateSelection(newRoot, [], []);
257
- assertListener(listener, newRoot, [], 2);
258
- });
259
- it('Registering an already registered listener should have no effect.', () => {
260
- const listener: MockSelectionListener = new MockSelectionListener();
261
- selectionService.register(listener);
262
- selectionService.register(listener);
263
- selectionService.register(listener);
264
- assertListener(listener, undefined, [], 0);
265
- selectionService.updateSelection(root, ['node1', 'node2', 'node3'], []);
266
- assertListener(listener, root, ['node1', 'node2', 'node3'], 1);
267
- selectionService.register(listener);
268
- selectionService.updateSelection(root, [], ['node2']);
269
- assertListener(listener, root, ['node1', 'node3'], 2);
227
+ assertListener(listener, newRoot, [], [], 2);
270
228
  });
271
229
  it('Selecting the same elements consecutively should not trigger a listener update.', () => {
272
- const listener: MockSelectionListener = new MockSelectionListener();
273
- selectionService.register(listener);
274
- assertListener(listener, undefined, [], 0);
275
230
  selectionService.updateSelection(root, ['node1'], []);
276
- assertListener(listener, root, ['node1'], 1);
231
+ assertListener(listener, root, ['node1'], [], 1);
277
232
  selectionService.updateSelection(root, ['node1'], []);
278
- assertListener(listener, root, ['node1'], 1);
233
+ assertListener(listener, root, ['node1'], [], 1);
279
234
  });
280
235
  it('Selecting a not-existing elements should not trigger a listener update.', () => {
281
- const listener: MockSelectionListener = new MockSelectionListener();
282
- selectionService.register(listener);
283
- assertListener(listener, undefined, [], 0);
284
236
  selectionService.updateSelection(root, ['node1'], []);
285
- assertListener(listener, root, ['node1'], 1);
237
+ assertListener(listener, root, ['node1'], [], 1);
286
238
  selectionService.updateSelection(root, ['not-existing'], []);
287
- assertListener(listener, root, ['node1'], 1);
288
- });
289
- it('All registered listeners should be called on selection changes.', () => {
290
- const listener: MockSelectionListener = new MockSelectionListener();
291
- const listener2: MockSelectionListener = new MockSelectionListener();
292
- selectionService.register(listener);
293
- selectionService.register(listener2);
294
- assertListener(listener, undefined, [], 0);
295
- assertListener(listener2, undefined, [], 0);
296
- selectionService.updateSelection(root, ['node1'], []);
297
- assertListener(listener, root, ['node1'], 1);
298
- assertListener(listener2, root, ['node1'], 1);
299
- selectionService.updateSelection(root, ['node2'], ['node1']);
300
- assertListener(listener, root, ['node2'], 2);
301
- assertListener(listener2, root, ['node2'], 2);
302
- selectionService.updateSelection(root, ['node3', 'node4'], []);
303
- assertListener(listener, root, ['node2', 'node3', 'node4'], 3);
304
- assertListener(listener2, root, ['node2', 'node3', 'node4'], 3);
305
- selectionService.updateSelection(root, [], ['node4']);
306
- assertListener(listener, root, ['node2', 'node3'], 4);
307
- assertListener(listener2, root, ['node2', 'node3'], 4);
308
- });
309
- it('A deregistered listener should not receive further updates.', () => {
310
- const listener: MockSelectionListener = new MockSelectionListener();
311
- selectionService.register(listener);
312
- assertListener(listener, undefined, [], 0);
313
- selectionService.updateSelection(root, ['node1'], []);
314
- assertListener(listener, root, ['node1'], 1);
315
- selectionService.deregister(listener);
316
- selectionService.updateSelection(root, ['node2'], ['node1']);
317
- assertListener(listener, root, ['node1'], 1);
318
- selectionService.updateSelection(root, ['node3', 'node4'], []);
319
- assertListener(listener, root, ['node1'], 1);
320
- selectionService.updateSelection(root, [], ['node4']);
321
- assertListener(listener, root, ['node1'], 1);
322
-
323
- const newRoot = createRoot('node1', 'newNode2', 'newNode3');
324
- selectionService.updateSelection(newRoot, [], []);
325
- assertListener(listener, root, ['node1'], 1);
239
+ assertListener(listener, root, ['node1'], [], 1);
326
240
  });
327
241
  });
328
242
 
@@ -367,14 +281,15 @@ describe('SelectionService', () => {
367
281
  }
368
282
 
369
283
  function assertListener(
370
- listener: MockSelectionListener,
284
+ listener: sinon.SinonStubbedInstance<MockSelectionListener>,
371
285
  expectedRoot: SModelRoot | undefined,
372
286
  expectedSelection: string[],
287
+ expectedDeselection: string[],
373
288
  expectedCalled: number
374
289
  ): void {
375
- expect(listener.getRoot()).to.equal(expectedRoot);
376
- expect(listener.getSelectedElements()).to.have.lengthOf(expectedSelection.length);
377
- expect(listener.getSelectedElements()).to.have.ordered.members(expectedSelection);
378
- expect(listener.getCalled()).to.equal(expectedCalled);
290
+ expect(listener.selectionChanged.callCount).to.be.equal(expectedCalled);
291
+ expect(listener.selectionChanged.lastCall.args[0]).to.be.deep.equals(expectedRoot);
292
+ expect(listener.selectionChanged.lastCall.args[1]).to.be.deep.equals(expectedSelection);
293
+ expect(listener.selectionChanged.lastCall.args[2]).to.be.deep.equals(expectedDeselection);
379
294
  }
380
295
  });
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2022 EclipseSource and others.
2
+ * Copyright (c) 2019-2023 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,46 +13,76 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, distinctAdd, pluck, remove, SelectAction, SelectAllAction } from '@eclipse-glsp/protocol';
17
- import { inject, injectable, multiInject, optional } from 'inversify';
16
+ import { inject, injectable, multiInject, optional, postConstruct, preDestroy } from 'inversify';
18
17
  import {
18
+ Action,
19
19
  Command,
20
20
  CommandExecutionContext,
21
+ Disposable,
22
+ DisposableCollection,
23
+ Emitter,
24
+ Event,
21
25
  ILogger,
22
- isSelectable,
23
26
  SChildElement,
24
- Selectable,
25
- SelectAllCommand as SprottySelectAllCommand,
26
- SelectCommand as SprottySelectCommand,
27
27
  SModelElement,
28
- SModelRoot
29
- } from 'sprotty';
30
- import { SModelRootListener } from '../../base/model/update-model-command';
31
- import { TYPES } from '../../base/types';
32
- import { getElements, getMatchingElements } from '../../utils/smodel-util';
33
- import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
34
- import { SelectFeedbackAction } from './select-feedback-action';
35
-
36
- export interface SelectionListener {
37
- selectionChanged(root: Readonly<SModelRoot>, selectedElements: string[]): void;
28
+ SModelRoot,
29
+ SelectAction,
30
+ SelectAllAction,
31
+ Selectable,
32
+ SprottySelectAllCommand,
33
+ SprottySelectCommand,
34
+ TYPES,
35
+ hasArrayProp,
36
+ isSelectable,
37
+ pluck
38
+ } from '~glsp-sprotty';
39
+ import { getElements, getMatchingElements } from '../utils/smodel-util';
40
+ import { ISModelRootListener } from './command-stack';
41
+ import { IFeedbackActionDispatcher } from './feedback/feedback-action-dispatcher';
42
+
43
+ export interface ISelectionListener {
44
+ selectionChanged(root: Readonly<SModelRoot>, selectedElements: string[], deselectedElements?: string[]): void;
45
+ }
46
+
47
+ export interface SelectionChange {
48
+ root: Readonly<SModelRoot>;
49
+ selectedElements: string[];
50
+ deselectedElements: string[];
38
51
  }
39
52
 
40
53
  @injectable()
41
- export class SelectionService implements SModelRootListener {
42
- private root: Readonly<SModelRoot>;
43
- private selectedElementIDs: Set<string> = new Set();
54
+ export class SelectionService implements ISModelRootListener, Disposable {
55
+ protected root: Readonly<SModelRoot>;
56
+ protected selectedElementIDs: Set<string> = new Set();
44
57
 
45
- @inject(TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
46
- @inject(TYPES.ILogger) protected logger: ILogger;
58
+ @inject(TYPES.IFeedbackActionDispatcher)
59
+ protected feedbackDispatcher: IFeedbackActionDispatcher;
47
60
 
48
- constructor(@multiInject(TYPES.SelectionListener) @optional() protected selectionListeners: SelectionListener[] = []) {}
61
+ @inject(TYPES.ILogger)
62
+ protected logger: ILogger;
49
63
 
50
- register(selectionListener: SelectionListener): void {
51
- distinctAdd(this.selectionListeners, selectionListener);
64
+ @multiInject(TYPES.ISelectionListener)
65
+ @optional()
66
+ protected selectionListeners: ISelectionListener[] = [];
67
+
68
+ protected toDispose = new DisposableCollection();
69
+
70
+ @postConstruct()
71
+ protected initialize(): void {
72
+ this.toDispose.push(this.onSelectionChangedEmitter);
73
+ this.selectionListeners.forEach(listener =>
74
+ this.onSelectionChanged(change => listener.selectionChanged(change.root, change.selectedElements, change.deselectedElements))
75
+ );
76
+ }
77
+
78
+ @preDestroy()
79
+ dispose(): void {
80
+ this.toDispose.dispose();
52
81
  }
53
82
 
54
- deregister(selectionListener: SelectionListener): void {
55
- remove(this.selectionListeners, selectionListener);
83
+ protected onSelectionChangedEmitter = new Emitter<SelectionChange>();
84
+ get onSelectionChanged(): Event<SelectionChange> {
85
+ return this.onSelectionChangedEmitter.event;
56
86
  }
57
87
 
58
88
  modelRootChanged(root: Readonly<SModelRoot>): void {
@@ -110,7 +140,7 @@ export class SelectionService implements SModelRootListener {
110
140
  const rootChanged = prevRoot !== root;
111
141
  if (rootChanged || selectionChanged) {
112
142
  // notify listeners after the feedback action
113
- this.notifyListeners(this.root, this.selectedElementIDs);
143
+ this.notifyListeners(this.root, this.selectedElementIDs, deselectedElementIDs);
114
144
  }
115
145
  }
116
146
 
@@ -118,8 +148,12 @@ export class SelectionService implements SModelRootListener {
118
148
  this.feedbackDispatcher.registerFeedback(this, actions);
119
149
  }
120
150
 
121
- notifyListeners(root: SModelRoot, selectedElementIDs: Set<string>): void {
122
- this.selectionListeners.forEach(listener => listener.selectionChanged(root, Array.from(selectedElementIDs)));
151
+ notifyListeners(root: SModelRoot, selectedElementIDs: Set<string>, deselectedElementIDs: Set<string>): void {
152
+ this.onSelectionChangedEmitter.fire({
153
+ root,
154
+ selectedElements: Array.from(selectedElementIDs),
155
+ deselectedElements: Array.from(deselectedElementIDs)
156
+ });
123
157
  }
124
158
 
125
159
  getModelRoot(): Readonly<SModelRoot> {
@@ -127,7 +161,7 @@ export class SelectionService implements SModelRootListener {
127
161
  }
128
162
 
129
163
  getSelectedElements(): Readonly<SModelElement & Selectable>[] {
130
- return getElements(this.root.index, Array.from(this.selectedElementIDs), isSelectable);
164
+ return !this.root ? [] : getElements(this.root.index, Array.from(this.selectedElementIDs), isSelectable);
131
165
  }
132
166
 
133
167
  /**
@@ -163,10 +197,7 @@ export class SelectCommand extends Command {
163
197
  protected selected: SModelElement[] = [];
164
198
  protected deselected: SModelElement[] = [];
165
199
 
166
- constructor(
167
- @inject(TYPES.Action) public action: SelectAction,
168
- @inject(TYPES.SelectionService) public selectionService: SelectionService
169
- ) {
200
+ constructor(@inject(TYPES.Action) public action: SelectAction, @inject(SelectionService) public selectionService: SelectionService) {
170
201
  super();
171
202
  }
172
203
 
@@ -174,7 +205,9 @@ export class SelectCommand extends Command {
174
205
  const model = context.root;
175
206
  const selectionGuard = (element: any): element is SModelElement => element instanceof SChildElement && isSelectable(element);
176
207
  const selectedElements = getElements(model.index, this.action.selectedElementsIDs, selectionGuard);
177
- const deselectedElements = getElements(model.index, this.action.deselectedElementsIDs, selectionGuard);
208
+ const deselectedElements = this.action.deselectAll
209
+ ? this.selectionService.getSelectedElements()
210
+ : getElements(model.index, this.action.deselectedElementsIDs, selectionGuard);
178
211
 
179
212
  this.selectionService.updateSelection(model, pluck(selectedElements, 'id'), pluck(deselectedElements, 'id'));
180
213
  return model;
@@ -201,10 +234,7 @@ export class SelectAllCommand extends Command {
201
234
  static readonly KIND = SprottySelectAllCommand.KIND;
202
235
  protected previousSelection: Map<string, boolean> = new Map<string, boolean>();
203
236
 
204
- constructor(
205
- @inject(TYPES.Action) public action: SelectAllAction,
206
- @inject(TYPES.SelectionService) public selectionService: SelectionService
207
- ) {
237
+ constructor(@inject(TYPES.Action) public action: SelectAllAction, @inject(SelectionService) public selectionService: SelectionService) {
208
238
  super();
209
239
  }
210
240
 
@@ -233,3 +263,31 @@ export class SelectAllCommand extends Command {
233
263
  return context.root;
234
264
  }
235
265
  }
266
+
267
+ export interface SelectFeedbackAction extends Omit<SelectAction, 'kind'>, Action {
268
+ kind: typeof SelectFeedbackAction.KIND;
269
+ }
270
+
271
+ export namespace SelectFeedbackAction {
272
+ export const KIND = 'selectFeedback';
273
+
274
+ export function is(object: any): object is SelectFeedbackAction {
275
+ return Action.hasKind(object, KIND) && hasArrayProp(object, 'selectedElementsIDs') && hasArrayProp(object, 'deselectedElementsIDs');
276
+ }
277
+
278
+ export function create(options?: { selectedElementsIDs?: string[]; deselectedElementsIDs?: string[] | boolean }): SelectFeedbackAction {
279
+ return { ...SelectAction.create(options), kind: KIND };
280
+ }
281
+
282
+ export function addSelection(selectedElementsIDs: string[]): SelectFeedbackAction {
283
+ return { ...SelectAction.addSelection(selectedElementsIDs), kind: KIND };
284
+ }
285
+
286
+ export function removeSelection(deselectedElementsIDs: string[]): SelectFeedbackAction {
287
+ return { ...SelectAction.removeSelection(deselectedElementsIDs), kind: KIND };
288
+ }
289
+
290
+ export function setSelection(selectedElementsIDs: string[]): SelectFeedbackAction {
291
+ return { ...SelectAction.setSelection(selectedElementsIDs), kind: KIND };
292
+ }
293
+ }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020-2022 EclipseSource and others.
2
+ * Copyright (c) 2020-2023 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,7 +13,7 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { AnyObject, hasStringProp } from '@eclipse-glsp/protocol';
16
+ import { AnyObject, hasStringProp } from '~glsp-sprotty';
17
17
  export interface SourceUriAware {
18
18
  sourceURI: string;
19
19
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020-2022 EclipseSource and others.
2
+ * Copyright (c) 2020-2023 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,19 +13,12 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { distinctAdd, EditMode } from '@eclipse-glsp/protocol';
17
16
  import { inject, injectable, multiInject, optional, postConstruct } from 'inversify';
18
- import { Tool, ToolManager } from 'sprotty';
19
- import { EditModeListener, EditorContextService, EditorContextServiceProvider } from '../editor-context-service';
20
- import { TYPES } from '../types';
21
-
22
- export interface IGLSPToolManager extends ToolManager {
23
- /* Disables all actives tools and activates only default tool with non-edit function*/
24
- disableEditTools(): void;
25
- }
17
+ import { AnyObject, EditMode, TYPES, Tool, ToolManager, distinctAdd, hasBooleanProp, hasFunctionProp, hasStringProp } from '~glsp-sprotty';
18
+ import { EditorContextService, EditorContextServiceProvider, IEditModeListener } from '../editor-context-service';
26
19
 
27
20
  @injectable()
28
- export class GLSPToolManager extends ToolManager implements IGLSPToolManager, EditModeListener {
21
+ export class GLSPToolManager extends ToolManager implements IEditModeListener {
29
22
  protected editorContext?: EditorContextService;
30
23
 
31
24
  @multiInject(TYPES.ITool) @optional() override tools: Tool[];
@@ -38,7 +31,7 @@ export class GLSPToolManager extends ToolManager implements IGLSPToolManager, Ed
38
31
  this.registerDefaultTools(...this.defaultTools);
39
32
  this.enableDefaultTools();
40
33
  this.contextServiceProvider().then(editorContext => {
41
- editorContext.register(this);
34
+ editorContext.onEditModeChanged(change => this.editModeChanged(change.newValue, change.oldValue));
42
35
  this.editorContext = editorContext;
43
36
  });
44
37
  }
@@ -59,7 +52,7 @@ export class GLSPToolManager extends ToolManager implements IGLSPToolManager, Ed
59
52
  this.disableActiveTools();
60
53
  let tools = toolIds.map(id => this.tool(id));
61
54
  if (this.editorContext && this.editorContext.isReadonly) {
62
- tools = tools.filter(tool => tool && (!isGLSPTool(tool) || tool.isEditTool === false));
55
+ tools = tools.filter(tool => tool && (!GLSPTool.is(tool) || tool.isEditTool === false));
63
56
  }
64
57
  tools.forEach(tool => {
65
58
  if (tool !== undefined) {
@@ -71,10 +64,10 @@ export class GLSPToolManager extends ToolManager implements IGLSPToolManager, Ed
71
64
 
72
65
  disableEditTools(): void {
73
66
  this.disableActiveTools();
74
- this.enable(this.defaultTools.filter(tool => !isGLSPTool(tool) || tool.isEditTool === false).map(tool => tool.id));
67
+ this.enable(this.defaultTools.filter(tool => !GLSPTool.is(tool) || tool.isEditTool === false).map(tool => tool.id));
75
68
  }
76
69
 
77
- editModeChanged(oldValue: string, newValue: string): void {
70
+ editModeChanged(newValue: string, oldValue: string): void {
78
71
  if (oldValue === newValue) {
79
72
  return;
80
73
  }
@@ -90,6 +83,14 @@ export interface GLSPTool extends Tool {
90
83
  isEditTool: boolean;
91
84
  }
92
85
 
93
- export function isGLSPTool(tool: any): tool is GLSPTool {
94
- return 'isEditTool' in tool && typeof tool['isEditTool'] === 'boolean';
86
+ export namespace GLSPTool {
87
+ export function is(object: unknown): object is GLSPTool {
88
+ return (
89
+ AnyObject.is(object) &&
90
+ hasStringProp(object, 'id') &&
91
+ hasFunctionProp(object, 'enable') &&
92
+ hasFunctionProp(object, 'disable') &&
93
+ hasBooleanProp(object, 'isEditTool')
94
+ );
95
+ }
95
96
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2022 EclipseSource and others.
2
+ * Copyright (c) 2019-2023 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,16 +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 { Action } from '@eclipse-glsp/protocol';
17
16
  import { injectable, multiInject, optional } from 'inversify';
18
- import { MouseListener, MouseTool, SModelElement, SModelRoot } from 'sprotty';
19
- import { TYPES } from '../../base/types';
20
- import { getRank } from '../rank/model';
21
-
22
- export interface IMouseTool {
23
- register(mouseListener: MouseListener): void;
24
- deregister(mouseListener: MouseListener): void;
25
- }
17
+ import { Action, MouseListener, MouseTool, SModelElement, SModelRoot, TYPES } from '~glsp-sprotty';
18
+ import { Ranked } from '../ranked';
26
19
 
27
20
  /**
28
21
  * Custom helper type to declare the explicit mouse listener methods
@@ -31,22 +24,22 @@ export interface IMouseTool {
31
24
  type MouseListenerMethods = keyof Omit<MouseListener, 'decorate'>;
32
25
 
33
26
  @injectable()
34
- export class RankingMouseTool extends MouseTool implements IMouseTool {
27
+ export class RankingMouseTool extends MouseTool {
35
28
  protected rankedMouseListeners: Map<number, MouseListener[]>;
36
29
 
37
30
  constructor(@multiInject(TYPES.MouseListener) @optional() protected override mouseListeners: MouseListener[] = []) {
38
31
  super(mouseListeners);
39
- this.rankedMouseListeners = groupBy(mouseListeners, listener => getRank(listener));
32
+ this.rankedMouseListeners = groupBy(mouseListeners, listener => Ranked.getRank(listener));
40
33
  }
41
34
 
42
35
  override register(mouseListener: MouseListener): void {
43
36
  super.register(mouseListener);
44
- this.rankedMouseListeners = groupBy(this.mouseListeners, listener => getRank(listener));
37
+ this.rankedMouseListeners = groupBy(this.mouseListeners, listener => Ranked.getRank(listener));
45
38
  }
46
39
 
47
40
  override deregister(mouseListener: MouseListener): void {
48
41
  super.deregister(mouseListener);
49
- this.rankedMouseListeners = groupBy(this.mouseListeners, listener => getRank(listener));
42
+ this.rankedMouseListeners = groupBy(this.mouseListeners, listener => Ranked.getRank(listener));
50
43
  }
51
44
 
52
45
  protected override handleEvent<K extends MouseListenerMethods>(methodName: K, model: SModelRoot, event: MouseEvent): void {
@@ -55,13 +48,12 @@ export class RankingMouseTool extends MouseTool implements IMouseTool {
55
48
  if (!element) {
56
49
  return;
57
50
  }
58
- this.notifyListenersByRank(element, methodName, model, event);
51
+ this.notifyListenersByRank(element, methodName, event);
59
52
  }
60
53
 
61
- async notifyListenersByRank<K extends MouseListenerMethods>(
54
+ protected async notifyListenersByRank<K extends MouseListenerMethods>(
62
55
  element: SModelElement,
63
56
  methodName: K,
64
- model: SModelRoot,
65
57
  event: MouseEvent
66
58
  ): Promise<void> {
67
59
  for (const rank of this.rankedMouseListeners) {
@@ -69,7 +61,7 @@ export class RankingMouseTool extends MouseTool implements IMouseTool {
69
61
  }
70
62
  }
71
63
 
72
- async dispatchActions<K extends MouseListenerMethods>(
64
+ protected async dispatchActions<K extends MouseListenerMethods>(
73
65
  mouseListeners: MouseListener[],
74
66
  methodName: K,
75
67
  element: SModelElement,
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2021-2022 EclipseSource and others.
2
+ * Copyright (c) 2019-2023 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
@@ -14,7 +14,7 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { injectable } from 'inversify';
17
- import { IView, ViewRegistry } from 'sprotty';
17
+ import { IView, ViewRegistry } from '~glsp-sprotty';
18
18
 
19
19
  @injectable()
20
20
  export class GLSPViewRegistry extends ViewRegistry {