@eclipse-glsp/client 1.1.0-next.6efef44.226 → 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 (766) hide show
  1. package/README.md +1 -1
  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/{base/container-modules.d.ts → container-modules.d.ts} +15 -15
  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} +3 -5
  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} +15 -15
  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/export/di.config.d.ts +1 -1
  278. package/lib/features/export/di.config.js +7 -7
  279. package/lib/features/export/di.config.js.map +1 -1
  280. package/lib/features/export/glsp-svg-exporter.d.ts +1 -17
  281. package/lib/features/export/glsp-svg-exporter.d.ts.map +1 -1
  282. package/lib/features/export/glsp-svg-exporter.js +20 -7
  283. package/lib/features/export/glsp-svg-exporter.js.map +1 -1
  284. package/lib/features/hints/di.config.d.ts +15 -0
  285. package/lib/features/hints/di.config.d.ts.map +1 -1
  286. package/lib/features/hints/di.config.js +5 -7
  287. package/lib/features/hints/di.config.js.map +1 -1
  288. package/lib/features/hints/model.d.ts +2 -3
  289. package/lib/features/hints/model.d.ts.map +1 -1
  290. package/lib/features/hints/model.js.map +1 -1
  291. package/lib/features/hints/type-hints.d.ts +3 -19
  292. package/lib/features/hints/type-hints.d.ts.map +1 -1
  293. package/lib/features/hints/type-hints.js +23 -27
  294. package/lib/features/hints/type-hints.js.map +1 -1
  295. package/lib/features/hover/di.config.d.ts +1 -1
  296. package/lib/features/hover/di.config.d.ts.map +1 -1
  297. package/lib/features/hover/di.config.js +20 -22
  298. package/lib/features/hover/di.config.js.map +1 -1
  299. package/lib/features/hover/hover.d.ts +1 -17
  300. package/lib/features/hover/hover.d.ts.map +1 -1
  301. package/lib/features/hover/hover.js +10 -14
  302. package/lib/features/hover/hover.js.map +1 -1
  303. package/lib/features/layout/di.config.d.ts +1 -1
  304. package/lib/features/layout/di.config.d.ts.map +1 -1
  305. package/lib/features/layout/di.config.js +4 -12
  306. package/lib/features/layout/di.config.js.map +1 -1
  307. package/lib/features/layout/layout-elements-action.d.ts +2 -18
  308. package/lib/features/layout/layout-elements-action.d.ts.map +1 -1
  309. package/lib/features/layout/layout-elements-action.js +28 -35
  310. package/lib/features/layout/layout-elements-action.js.map +1 -1
  311. package/lib/features/layout/layout-elements-action.spec.d.ts.map +1 -1
  312. package/lib/features/layout/layout-elements-action.spec.js +14 -16
  313. package/lib/features/layout/layout-elements-action.spec.js.map +1 -1
  314. package/lib/features/navigation/di.config.d.ts +17 -1
  315. package/lib/features/navigation/di.config.d.ts.map +1 -1
  316. package/lib/features/navigation/di.config.js +8 -9
  317. package/lib/features/navigation/di.config.js.map +1 -1
  318. package/lib/features/navigation/navigation-action-handler.d.ts +2 -18
  319. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  320. package/lib/features/navigation/navigation-action-handler.js +25 -27
  321. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  322. package/lib/features/navigation/navigation-target-resolver.d.ts +1 -17
  323. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  324. package/lib/features/navigation/navigation-target-resolver.js +11 -13
  325. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  326. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  327. package/lib/features/navigation/navigation-target-resolver.spec.js +16 -17
  328. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  329. package/lib/features/reconnect/model.d.ts +2 -2
  330. package/lib/features/reconnect/model.d.ts.map +1 -1
  331. package/lib/features/reconnect/model.js +7 -7
  332. package/lib/features/reconnect/model.js.map +1 -1
  333. package/lib/features/save/di.config.d.ts +1 -1
  334. package/lib/features/save/di.config.js +3 -3
  335. package/lib/features/save/di.config.js.map +1 -1
  336. package/lib/features/save/model.d.ts +2 -2
  337. package/lib/features/save/model.d.ts.map +1 -1
  338. package/lib/features/save/save-keylistener.d.ts +2 -3
  339. package/lib/features/save/save-keylistener.d.ts.map +1 -1
  340. package/lib/features/save/save-keylistener.js +5 -7
  341. package/lib/features/save/save-keylistener.js.map +1 -1
  342. package/lib/features/select/di.config.d.ts +1 -1
  343. package/lib/features/select/di.config.d.ts.map +1 -1
  344. package/lib/features/select/di.config.js +9 -12
  345. package/lib/features/select/di.config.js.map +1 -1
  346. package/lib/features/select/select-feedback-command.d.ts +12 -0
  347. package/lib/features/select/select-feedback-command.d.ts.map +1 -0
  348. package/lib/features/select/{select-feedback-action.js → select-feedback-command.js} +10 -24
  349. package/lib/features/select/select-feedback-command.js.map +1 -0
  350. package/lib/features/select/select-mouse-listener.d.ts +3 -4
  351. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  352. package/lib/features/select/select-mouse-listener.js +25 -28
  353. package/lib/features/select/select-mouse-listener.js.map +1 -1
  354. package/lib/features/source-model-watcher/di.config.d.ts +15 -0
  355. package/lib/features/source-model-watcher/di.config.d.ts.map +1 -1
  356. package/lib/features/source-model-watcher/di.config.js +3 -4
  357. package/lib/features/source-model-watcher/di.config.js.map +1 -1
  358. package/lib/features/source-model-watcher/source-model-changed-action-handler.d.ts +1 -17
  359. package/lib/features/source-model-watcher/source-model-changed-action-handler.d.ts.map +1 -1
  360. package/lib/features/source-model-watcher/source-model-changed-action-handler.js +11 -14
  361. package/lib/features/source-model-watcher/source-model-changed-action-handler.js.map +1 -1
  362. package/lib/features/{mouse-tool → svg-metadata}/di.config.d.ts +3 -3
  363. package/lib/features/svg-metadata/di.config.d.ts.map +1 -0
  364. package/lib/features/{rank/model.js → svg-metadata/di.config.js} +10 -12
  365. package/lib/features/svg-metadata/di.config.js.map +1 -0
  366. package/lib/features/svg-metadata/metadata-placer.d.ts +23 -0
  367. package/lib/features/svg-metadata/metadata-placer.d.ts.map +1 -0
  368. package/lib/features/svg-metadata/metadata-placer.js +60 -0
  369. package/lib/features/svg-metadata/metadata-placer.js.map +1 -0
  370. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +12 -22
  371. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  372. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +51 -37
  373. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  374. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +4 -20
  375. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  376. package/lib/features/tool-feedback/creation-tool-feedback.js +29 -33
  377. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  378. package/lib/features/tool-feedback/css-feedback.d.ts +2 -18
  379. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  380. package/lib/features/tool-feedback/css-feedback.js +9 -12
  381. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  382. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  383. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  384. package/lib/features/tool-feedback/di.config.js +20 -22
  385. package/lib/features/tool-feedback/di.config.js.map +1 -1
  386. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +2 -18
  387. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  388. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +40 -46
  389. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  390. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +2 -18
  391. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  392. package/lib/features/tool-feedback/marquee-tool-feedback.js +14 -17
  393. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  394. package/lib/features/tool-feedback/view.d.ts +1 -17
  395. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  396. package/lib/features/tool-feedback/view.js +9 -12
  397. package/lib/features/tool-feedback/view.js.map +1 -1
  398. package/lib/features/tool-palette/di.config.d.ts +1 -1
  399. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  400. package/lib/features/tool-palette/di.config.js +6 -8
  401. package/lib/features/tool-palette/di.config.js.map +1 -1
  402. package/lib/features/tool-palette/tool-palette.d.ts +7 -21
  403. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  404. package/lib/features/tool-palette/tool-palette.js +39 -35
  405. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  406. package/lib/features/tools/base-glsp-tool.d.ts +3 -20
  407. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  408. package/lib/features/tools/base-glsp-tool.js +24 -11
  409. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  410. package/lib/features/tools/change-bounds-tool.d.ts +7 -21
  411. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  412. package/lib/features/tools/change-bounds-tool.js +56 -36
  413. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  414. package/lib/features/tools/delete-tool.d.ts +3 -20
  415. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  416. package/lib/features/tools/delete-tool.js +22 -29
  417. package/lib/features/tools/delete-tool.js.map +1 -1
  418. package/lib/features/tools/di.config.d.ts +18 -5
  419. package/lib/features/tools/di.config.d.ts.map +1 -1
  420. package/lib/features/tools/di.config.js +17 -20
  421. package/lib/features/tools/di.config.js.map +1 -1
  422. package/lib/features/tools/edge-creation-tool.d.ts +1 -17
  423. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  424. package/lib/features/tools/edge-creation-tool.js +18 -21
  425. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  426. package/lib/features/tools/edge-edit-tool.d.ts +4 -19
  427. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  428. package/lib/features/tools/edge-edit-tool.js +27 -26
  429. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  430. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts +1 -17
  431. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -1
  432. package/lib/features/tools/enable-default-tools-on-focus-loss.js +19 -5
  433. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -1
  434. package/lib/features/tools/glsp-manhattan-edge-router.d.ts +3 -3
  435. package/lib/features/tools/glsp-manhattan-edge-router.d.ts.map +1 -1
  436. package/lib/features/tools/glsp-manhattan-edge-router.js +8 -9
  437. package/lib/features/tools/glsp-manhattan-edge-router.js.map +1 -1
  438. package/lib/features/tools/marquee-behavior.d.ts +2 -2
  439. package/lib/features/tools/marquee-behavior.d.ts.map +1 -1
  440. package/lib/features/tools/marquee-behavior.js +4 -4
  441. package/lib/features/tools/marquee-behavior.js.map +1 -1
  442. package/lib/features/tools/marquee-mouse-tool.d.ts +1 -18
  443. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  444. package/lib/features/tools/marquee-mouse-tool.js +17 -26
  445. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  446. package/lib/features/tools/marquee-tool.d.ts +1 -17
  447. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  448. package/lib/features/tools/marquee-tool.js +23 -10
  449. package/lib/features/tools/marquee-tool.js.map +1 -1
  450. package/lib/features/tools/model.d.ts +2 -3
  451. package/lib/features/tools/model.d.ts.map +1 -1
  452. package/lib/features/tools/model.js +18 -3
  453. package/lib/features/tools/model.js.map +1 -1
  454. package/lib/features/tools/node-creation-tool.d.ts +1 -17
  455. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  456. package/lib/features/tools/node-creation-tool.js +14 -17
  457. package/lib/features/tools/node-creation-tool.js.map +1 -1
  458. package/lib/features/tools/view.d.ts +1 -1
  459. package/lib/features/tools/view.d.ts.map +1 -1
  460. package/lib/features/tools/view.js +5 -6
  461. package/lib/features/tools/view.js.map +1 -1
  462. package/lib/features/validation/di.config.d.ts +15 -0
  463. package/lib/features/validation/di.config.d.ts.map +1 -1
  464. package/lib/features/validation/di.config.js +9 -11
  465. package/lib/features/validation/di.config.js.map +1 -1
  466. package/lib/features/validation/issue-marker.d.ts +2 -3
  467. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  468. package/lib/features/validation/issue-marker.js +9 -10
  469. package/lib/features/validation/issue-marker.js.map +1 -1
  470. package/lib/features/validation/marker-navigator.d.ts +2 -18
  471. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  472. package/lib/features/validation/marker-navigator.js +28 -36
  473. package/lib/features/validation/marker-navigator.js.map +1 -1
  474. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  475. package/lib/features/validation/marker-navigator.spec.js +23 -10
  476. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  477. package/lib/features/validation/validate.d.ts +8 -24
  478. package/lib/features/validation/validate.d.ts.map +1 -1
  479. package/lib/features/validation/validate.js +40 -46
  480. package/lib/features/validation/validate.js.map +1 -1
  481. package/lib/features/viewport/di.config.d.ts +1 -1
  482. package/lib/features/viewport/di.config.d.ts.map +1 -1
  483. package/lib/features/viewport/di.config.js +12 -12
  484. package/lib/features/viewport/di.config.js.map +1 -1
  485. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +1 -17
  486. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  487. package/lib/features/viewport/glsp-scroll-mouse-listener.js +20 -6
  488. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  489. package/lib/{base/tool-manager/tool-actions.d.ts → glsp-sprotty/augmented-actions.d.ts} +7 -2
  490. package/lib/glsp-sprotty/augmented-actions.d.ts.map +1 -0
  491. package/lib/{base/tool-manager/tool-actions.js → glsp-sprotty/augmented-actions.js} +6 -2
  492. package/lib/glsp-sprotty/augmented-actions.js.map +1 -0
  493. package/lib/{sprotty-reexport.d.ts → glsp-sprotty/index.d.ts} +33 -17
  494. package/lib/glsp-sprotty/index.d.ts.map +1 -0
  495. package/lib/{sprotty-reexport.js → glsp-sprotty/index.js} +73 -39
  496. package/lib/glsp-sprotty/index.js.map +1 -0
  497. package/lib/{base → glsp-sprotty}/types.d.ts +4 -8
  498. package/lib/glsp-sprotty/types.d.ts.map +1 -0
  499. package/lib/{base → glsp-sprotty}/types.js +3 -2
  500. package/lib/glsp-sprotty/types.js.map +1 -0
  501. package/lib/index.d.ts +46 -14
  502. package/lib/index.d.ts.map +1 -1
  503. package/lib/index.js +96 -52
  504. package/lib/index.js.map +1 -1
  505. package/lib/lib/model.d.ts +1 -2
  506. package/lib/lib/model.d.ts.map +1 -1
  507. package/lib/lib/model.js +8 -9
  508. package/lib/lib/model.js.map +1 -1
  509. package/lib/model-source/glsp-diagram-server.d.ts +1 -17
  510. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  511. package/lib/model-source/glsp-diagram-server.js +11 -13
  512. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  513. package/lib/utils/argument-utils.d.ts +2 -2
  514. package/lib/utils/argument-utils.d.ts.map +1 -1
  515. package/lib/utils/argument-utils.js +2 -2
  516. package/lib/utils/argument-utils.js.map +1 -1
  517. package/lib/utils/layout-utils.d.ts +2 -3
  518. package/lib/utils/layout-utils.d.ts.map +1 -1
  519. package/lib/utils/layout-utils.js.map +1 -1
  520. package/lib/utils/marker.d.ts +16 -1
  521. package/lib/utils/marker.d.ts.map +1 -1
  522. package/lib/utils/marker.js +7 -8
  523. package/lib/utils/marker.js.map +1 -1
  524. package/lib/utils/smodel-util.d.ts +7 -6
  525. package/lib/utils/smodel-util.d.ts.map +1 -1
  526. package/lib/utils/smodel-util.js +33 -17
  527. package/lib/utils/smodel-util.js.map +1 -1
  528. package/lib/utils/smodel-util.spec.d.ts +2 -0
  529. package/lib/utils/smodel-util.spec.d.ts.map +1 -0
  530. package/lib/utils/smodel-util.spec.js +184 -0
  531. package/lib/utils/smodel-util.spec.js.map +1 -0
  532. package/lib/utils/viewpoint-util.d.ts +2 -3
  533. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  534. package/lib/utils/viewpoint-util.js +5 -6
  535. package/lib/utils/viewpoint-util.js.map +1 -1
  536. package/lib/views/base-view-module.d.ts +18 -6
  537. package/lib/views/base-view-module.d.ts.map +1 -1
  538. package/lib/views/base-view-module.js +22 -23
  539. package/lib/views/base-view-module.js.map +1 -1
  540. package/lib/views/compartments.d.ts +1 -1
  541. package/lib/views/compartments.d.ts.map +1 -1
  542. package/lib/views/compartments.js +5 -6
  543. package/lib/views/compartments.js.map +1 -1
  544. package/lib/views/glsp-edge-view.d.ts +2 -18
  545. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  546. package/lib/views/glsp-edge-view.js +21 -7
  547. package/lib/views/glsp-edge-view.js.map +1 -1
  548. package/lib/views/glsp-projection-view.d.ts +2 -4
  549. package/lib/views/glsp-projection-view.d.ts.map +1 -1
  550. package/lib/views/glsp-projection-view.js +12 -11
  551. package/lib/views/glsp-projection-view.js.map +1 -1
  552. package/lib/views/index.d.ts +1 -1
  553. package/lib/views/index.js +1 -1
  554. package/lib/views/issue-marker-view.d.ts +1 -1
  555. package/lib/views/issue-marker-view.d.ts.map +1 -1
  556. package/lib/views/issue-marker-view.js +6 -7
  557. package/lib/views/issue-marker-view.js.map +1 -1
  558. package/lib/views/rounded-corner-view.d.ts +1 -1
  559. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  560. package/lib/views/rounded-corner-view.js +7 -8
  561. package/lib/views/rounded-corner-view.js.map +1 -1
  562. package/lib/views/rounded-corner.d.ts +2 -3
  563. package/lib/views/rounded-corner.d.ts.map +1 -1
  564. package/lib/views/rounded-corner.js +1 -1
  565. package/lib/views/rounded-corner.js.map +1 -1
  566. package/package.json +9 -6
  567. package/src/base/action-dispatcher.ts +2 -3
  568. package/src/base/actions/focus-change-action.ts +2 -2
  569. package/src/base/argumentable.ts +2 -3
  570. package/src/base/auto-complete/auto-complete-actions.ts +2 -2
  571. package/src/base/auto-complete/auto-complete-widget.ts +35 -14
  572. package/src/base/auto-complete/validation-decorator.ts +2 -3
  573. package/src/base/command-stack.ts +65 -11
  574. package/src/base/di.config.ts +29 -12
  575. package/src/base/drag-aware-mouse-listener.ts +2 -3
  576. package/src/base/editor-context-service.ts +45 -18
  577. package/src/{features/tool-feedback/model.ts → base/feedback/feeback-command.ts} +2 -2
  578. package/src/{features/tool-feedback → base/feedback}/feedback-action-dispatcher.ts +2 -4
  579. package/src/base/{model → feedback}/update-model-command.ts +9 -32
  580. package/src/base/focus-tracker.ts +2 -4
  581. package/src/base/model/model-registry.ts +2 -2
  582. package/src/base/model-initialization-constraint.ts +2 -3
  583. package/src/base/ranked.ts +42 -0
  584. package/src/base/selection-clearing-mouse-listener.ts +2 -2
  585. package/src/{features/select → base}/selection-service.spec.ts +42 -127
  586. package/src/{features/select → base}/selection-service.ts +98 -40
  587. package/src/base/source-uri-aware.ts +2 -2
  588. package/src/base/tool-manager/glsp-tool-manager.ts +18 -17
  589. package/src/{features/mouse-tool → base/view}/mouse-tool.ts +10 -18
  590. package/src/base/view/view-registry.ts +2 -2
  591. package/src/{base/container-modules.ts → container-modules.ts} +41 -53
  592. package/src/features/accessibility/README.md +65 -0
  593. package/src/features/{mouse-tool → accessibility}/di.config.ts +15 -10
  594. package/src/features/accessibility/move-zoom/di.config.ts +42 -0
  595. package/src/features/accessibility/move-zoom/move-handler.ts +209 -0
  596. package/src/features/accessibility/move-zoom/zoom-handler.ts +182 -0
  597. package/src/features/accessibility/resize-key-tool/di.config.ts +35 -0
  598. package/src/features/accessibility/resize-key-tool/resize-key-handler.ts +129 -0
  599. package/src/features/accessibility/resize-key-tool/resize-key-tool.ts +106 -0
  600. package/src/features/accessibility/search/di.config.ts +30 -0
  601. package/src/features/accessibility/search/search-palette.ts +193 -0
  602. package/src/features/accessibility/search/search-tool.ts +59 -0
  603. package/src/features/accessibility/view-key-tools/deselect-key-tool.ts +88 -0
  604. package/src/features/accessibility/view-key-tools/di.config.ts +32 -0
  605. package/src/features/accessibility/view-key-tools/movement-key-tool.ts +113 -0
  606. package/src/features/accessibility/view-key-tools/zoom-key-tool.ts +92 -0
  607. package/src/{base/actions/sprotty-actions.ts → features/autocomplete-palette/autocomplete-suggestion-providers.ts} +21 -10
  608. package/src/features/autocomplete-palette/base-autocomplete-palette.ts +87 -0
  609. package/src/features/bounds/di.config.ts +23 -13
  610. package/src/features/{layout/tests → bounds}/freeform-layout.spec.ts +3 -3
  611. package/src/features/{layout → bounds}/freeform-layout.ts +14 -6
  612. package/src/features/bounds/glsp-hidden-bounds-updater.ts +16 -8
  613. package/src/features/{layout/tests → bounds}/hbox-layout.spec.ts +3 -4
  614. package/src/features/{layout → bounds}/hbox-layout.ts +9 -7
  615. package/src/features/{layout/tests/layouter-test-util.ts → bounds/layouter-test-util.spec.ts} +11 -10
  616. package/src/features/{layout → bounds}/layouter.ts +7 -7
  617. package/src/features/{layout/tests → bounds}/vbox-layout.spec.ts +3 -4
  618. package/src/features/{layout → bounds}/vbox-layout.ts +8 -6
  619. package/src/features/change-bounds/model.ts +2 -2
  620. package/src/features/change-bounds/movement-restrictor.ts +3 -4
  621. package/src/features/change-bounds/snap.spec.ts +2 -2
  622. package/src/features/change-bounds/snap.ts +2 -3
  623. package/src/features/command-palette/command-palette-tool.ts +4 -4
  624. package/src/features/command-palette/di.config.ts +6 -9
  625. package/src/features/command-palette/server-command-palette-provider.ts +11 -4
  626. package/src/features/context-menu/delete-element-context-menu.ts +2 -4
  627. package/src/features/context-menu/di.config.ts +4 -5
  628. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +4 -6
  629. package/src/features/context-menu/server-context-menu-provider.ts +12 -4
  630. package/src/features/copy-paste/copy-paste-context-menu.ts +15 -4
  631. package/src/features/copy-paste/copy-paste-handler.ts +14 -8
  632. package/src/features/copy-paste/di.config.ts +2 -3
  633. package/src/features/decoration/decoration-placer.ts +2 -3
  634. package/src/features/decoration/di.config.ts +4 -5
  635. package/src/features/edit-label/di.config.ts +3 -4
  636. package/src/features/edit-label/edit-label-tool.ts +2 -2
  637. package/src/features/edit-label/edit-label-validator.ts +9 -6
  638. package/src/features/export/di.config.ts +6 -6
  639. package/src/features/export/glsp-svg-exporter.ts +9 -9
  640. package/src/features/hints/di.config.ts +2 -4
  641. package/src/features/hints/model.ts +2 -3
  642. package/src/features/hints/type-hints.ts +15 -11
  643. package/src/features/hover/di.config.ts +13 -12
  644. package/src/features/hover/hover.ts +14 -9
  645. package/src/features/layout/di.config.ts +2 -11
  646. package/src/features/layout/layout-elements-action.spec.ts +15 -17
  647. package/src/features/layout/layout-elements-action.ts +15 -13
  648. package/src/features/navigation/di.config.ts +5 -4
  649. package/src/features/navigation/navigation-action-handler.ts +13 -9
  650. package/src/features/navigation/navigation-target-resolver.spec.ts +2 -3
  651. package/src/features/navigation/navigation-target-resolver.ts +10 -4
  652. package/src/features/reconnect/model.ts +2 -2
  653. package/src/features/save/di.config.ts +3 -3
  654. package/src/features/save/model.ts +2 -2
  655. package/src/features/save/save-keylistener.ts +2 -4
  656. package/src/features/select/di.config.ts +9 -12
  657. package/src/features/select/{select-feedback-action.ts → select-feedback-command.ts} +3 -19
  658. package/src/features/select/select-mouse-listener.ts +13 -12
  659. package/src/features/source-model-watcher/di.config.ts +2 -3
  660. package/src/features/source-model-watcher/source-model-changed-action-handler.ts +11 -4
  661. package/src/features/svg-metadata/di.config.ts +26 -0
  662. package/src/features/svg-metadata/metadata-placer.ts +49 -0
  663. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +56 -25
  664. package/src/features/tool-feedback/creation-tool-feedback.ts +19 -12
  665. package/src/features/tool-feedback/css-feedback.ts +3 -6
  666. package/src/features/tool-feedback/di.config.ts +20 -22
  667. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +15 -12
  668. package/src/features/tool-feedback/marquee-tool-feedback.ts +7 -5
  669. package/src/features/tool-feedback/view.tsx +2 -3
  670. package/src/features/tool-palette/di.config.ts +4 -6
  671. package/src/features/tool-palette/tool-palette.ts +30 -20
  672. package/src/features/tools/base-glsp-tool.ts +4 -7
  673. package/src/features/tools/change-bounds-tool.ts +57 -32
  674. package/src/features/tools/delete-tool.ts +13 -12
  675. package/src/features/tools/di.config.ts +28 -21
  676. package/src/features/tools/edge-creation-tool.ts +9 -7
  677. package/src/features/tools/edge-edit-tool.ts +22 -16
  678. package/src/features/tools/enable-default-tools-on-focus-loss.ts +2 -3
  679. package/src/features/tools/glsp-manhattan-edge-router.ts +9 -7
  680. package/src/features/tools/marquee-behavior.ts +2 -3
  681. package/src/features/tools/marquee-mouse-tool.ts +10 -13
  682. package/src/features/tools/marquee-tool.ts +2 -3
  683. package/src/features/tools/model.ts +2 -3
  684. package/src/features/tools/node-creation-tool.ts +8 -6
  685. package/src/features/tools/view.tsx +2 -2
  686. package/src/features/validation/di.config.ts +5 -7
  687. package/src/features/validation/issue-marker.ts +13 -3
  688. package/src/features/validation/marker-navigator.spec.ts +7 -8
  689. package/src/features/validation/marker-navigator.ts +19 -14
  690. package/src/features/validation/validate.ts +34 -25
  691. package/src/features/viewport/di.config.ts +14 -12
  692. package/src/features/viewport/glsp-scroll-mouse-listener.ts +10 -3
  693. package/src/{base/tool-manager/tool-actions.ts → glsp-sprotty/augmented-actions.ts} +14 -3
  694. package/src/{sprotty-reexport.ts → glsp-sprotty/index.ts} +97 -47
  695. package/src/{base → glsp-sprotty}/types.ts +4 -5
  696. package/src/index.ts +74 -29
  697. package/src/lib/model.ts +12 -2
  698. package/src/model-source/glsp-diagram-server.ts +10 -5
  699. package/src/utils/argument-utils.ts +2 -2
  700. package/src/utils/layout-utils.ts +2 -3
  701. package/src/utils/marker.ts +2 -3
  702. package/src/utils/smodel-util.spec.ts +222 -0
  703. package/src/utils/smodel-util.ts +40 -15
  704. package/src/utils/viewpoint-util.ts +13 -3
  705. package/src/views/base-view-module.ts +11 -15
  706. package/src/views/compartments.tsx +2 -2
  707. package/src/views/glsp-edge-view.tsx +4 -5
  708. package/src/views/glsp-projection-view.tsx +6 -5
  709. package/src/views/index.ts +1 -2
  710. package/src/views/issue-marker-view.tsx +2 -2
  711. package/src/views/rounded-corner-view.tsx +3 -3
  712. package/src/views/rounded-corner.ts +3 -4
  713. package/lib/base/actions/sprotty-actions.d.ts +0 -7
  714. package/lib/base/actions/sprotty-actions.d.ts.map +0 -1
  715. package/lib/base/actions/sprotty-actions.js.map +0 -1
  716. package/lib/base/container-modules.d.ts.map +0 -1
  717. package/lib/base/container-modules.js +0 -140
  718. package/lib/base/container-modules.js.map +0 -1
  719. package/lib/base/model/update-model-command.d.ts +0 -47
  720. package/lib/base/model/update-model-command.d.ts.map +0 -1
  721. package/lib/base/model/update-model-command.js.map +0 -1
  722. package/lib/base/tool-manager/tool-actions.d.ts.map +0 -1
  723. package/lib/base/tool-manager/tool-actions.js.map +0 -1
  724. package/lib/base/types.d.ts.map +0 -1
  725. package/lib/base/types.js.map +0 -1
  726. package/lib/features/layout/freeform-layout.d.ts +0 -32
  727. package/lib/features/layout/freeform-layout.d.ts.map +0 -1
  728. package/lib/features/layout/freeform-layout.js.map +0 -1
  729. package/lib/features/layout/hbox-layout.d.ts.map +0 -1
  730. package/lib/features/layout/hbox-layout.js.map +0 -1
  731. package/lib/features/layout/layouter.d.ts +0 -37
  732. package/lib/features/layout/layouter.d.ts.map +0 -1
  733. package/lib/features/layout/layouter.js.map +0 -1
  734. package/lib/features/layout/tests/freeform-layout.spec.d.ts.map +0 -1
  735. package/lib/features/layout/tests/freeform-layout.spec.js.map +0 -1
  736. package/lib/features/layout/tests/hbox-layout.spec.d.ts.map +0 -1
  737. package/lib/features/layout/tests/hbox-layout.spec.js.map +0 -1
  738. package/lib/features/layout/tests/layouter-test-util.d.ts.map +0 -1
  739. package/lib/features/layout/tests/layouter-test-util.js.map +0 -1
  740. package/lib/features/layout/tests/vbox-layout.spec.d.ts.map +0 -1
  741. package/lib/features/layout/tests/vbox-layout.spec.js.map +0 -1
  742. package/lib/features/layout/vbox-layout.d.ts.map +0 -1
  743. package/lib/features/layout/vbox-layout.js.map +0 -1
  744. package/lib/features/mouse-tool/di.config.d.ts.map +0 -1
  745. package/lib/features/mouse-tool/di.config.js.map +0 -1
  746. package/lib/features/mouse-tool/mouse-tool.d.ts.map +0 -1
  747. package/lib/features/mouse-tool/mouse-tool.js.map +0 -1
  748. package/lib/features/rank/model.d.ts.map +0 -1
  749. package/lib/features/rank/model.js.map +0 -1
  750. package/lib/features/select/select-feedback-action.d.ts +0 -38
  751. package/lib/features/select/select-feedback-action.d.ts.map +0 -1
  752. package/lib/features/select/select-feedback-action.js.map +0 -1
  753. package/lib/features/select/selection-service.d.ts.map +0 -1
  754. package/lib/features/select/selection-service.js.map +0 -1
  755. package/lib/features/select/selection-service.spec.d.ts.map +0 -1
  756. package/lib/features/select/selection-service.spec.js.map +0 -1
  757. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +0 -1
  758. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +0 -1
  759. package/lib/features/tool-feedback/model.d.ts.map +0 -1
  760. package/lib/features/tool-feedback/model.js.map +0 -1
  761. package/lib/sprotty-reexport.d.ts.map +0 -1
  762. package/lib/sprotty-reexport.js.map +0 -1
  763. /package/lib/{features/select → base}/selection-service.spec.d.ts +0 -0
  764. /package/lib/features/{layout/tests → bounds}/freeform-layout.spec.d.ts +0 -0
  765. /package/lib/features/{layout/tests → bounds}/hbox-layout.spec.d.ts +0 -0
  766. /package/lib/features/{layout/tests → bounds}/vbox-layout.spec.d.ts +0 -0
@@ -0,0 +1,209 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2023 Business Informatics Group (TU Wien) 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
+
17
+ import { inject, injectable } from 'inversify';
18
+ import { throttle } from 'lodash';
19
+ import {
20
+ Action,
21
+ ChangeBoundsOperation,
22
+ IActionDispatcher,
23
+ IActionHandler,
24
+ ICommand,
25
+ Point,
26
+ SModelRoot,
27
+ SetViewportAction,
28
+ TYPES,
29
+ Viewport,
30
+ findParentByFeature,
31
+ isViewport
32
+ } from '~glsp-sprotty';
33
+ import { EditorContextService } from '../../../base/editor-context-service';
34
+ import { SelectableBoundsAware, getElements, isSelectableAndBoundsAware } from '../../../utils/smodel-util';
35
+
36
+ /**
37
+ * Action for triggering moving of the viewport.
38
+ */
39
+ export interface MoveViewportAction extends Action {
40
+ kind: typeof MoveViewportAction.KIND;
41
+ /**
42
+ * used to specify the amount to be moved in the x-axis
43
+ */
44
+ moveX: number;
45
+ /**
46
+ * used to specify the amount to be moved in the y-axis
47
+ */
48
+ moveY: number;
49
+ }
50
+
51
+ export namespace MoveViewportAction {
52
+ export const KIND = 'moveViewportAction';
53
+
54
+ export function is(object: any): object is MoveViewportAction {
55
+ return Action.hasKind(object, KIND);
56
+ }
57
+
58
+ export function create(moveX: number, moveY: number): MoveViewportAction {
59
+ return { kind: KIND, moveX, moveY };
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Action for triggering moving of elements.
65
+ */
66
+ export interface MoveElementAction extends Action {
67
+ kind: typeof MoveElementAction.KIND;
68
+ /**
69
+ * used to specify the elements to be zoomed in/out
70
+ */
71
+ elementIds: string[];
72
+ /**
73
+ * used to specify the amount to be moved in the x-axis
74
+ */
75
+ moveX: number;
76
+ /**
77
+ * used to specify the amount to be moved in the y-axis
78
+ */
79
+ moveY: number;
80
+ }
81
+
82
+ export namespace MoveElementAction {
83
+ export const KIND = 'moveElementAction';
84
+
85
+ export function is(object: any): object is MoveElementAction {
86
+ return Action.hasKind(object, KIND);
87
+ }
88
+
89
+ export function create(elementIds: string[], moveX: number, moveY: number): MoveElementAction {
90
+ return { kind: KIND, elementIds, moveX, moveY };
91
+ }
92
+ }
93
+
94
+ /* The MoveViewportHandler class is an implementation of the IActionHandler interface that handles
95
+ moving of the viewport. */
96
+ @injectable()
97
+ export class MoveViewportHandler implements IActionHandler {
98
+ @inject(EditorContextService)
99
+ protected editorContextService: EditorContextService;
100
+
101
+ @inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
102
+ protected readonly throttledHandleViewportMove = throttle((action: MoveViewportAction) => this.handleMoveViewport(action), 150);
103
+
104
+ handle(action: Action): void | Action | ICommand {
105
+ if (MoveViewportAction.is(action)) {
106
+ this.throttledHandleViewportMove(action);
107
+ }
108
+ }
109
+
110
+ handleMoveViewport(action: MoveViewportAction): void {
111
+ const viewport = findParentByFeature(this.editorContextService.modelRoot, isViewport);
112
+ if (!viewport) {
113
+ return;
114
+ }
115
+ this.dispatcher.dispatch(this.moveViewport(viewport, action.moveX, action.moveY));
116
+ }
117
+
118
+ protected moveViewport(viewport: SModelRoot & Viewport, offsetX: number, offSetY: number): SetViewportAction {
119
+ const newViewport: Viewport = {
120
+ scroll: {
121
+ x: viewport.scroll.x + offsetX,
122
+ y: viewport.scroll.y + offSetY
123
+ },
124
+ zoom: viewport.zoom
125
+ };
126
+
127
+ return SetViewportAction.create(viewport.id, newViewport, { animate: true });
128
+ }
129
+ }
130
+
131
+ /* The MoveElementHandler class is an implementation of the IActionHandler interface that handles
132
+ moving elements. */
133
+ @injectable()
134
+ export class MoveElementHandler implements IActionHandler {
135
+ @inject(EditorContextService)
136
+ protected editorContextService: EditorContextService;
137
+ @inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
138
+ protected readonly throttledHandleElementMove = throttle((action: MoveElementAction) => this.handleMoveElement(action), 150);
139
+
140
+ handle(action: Action): void | Action | ICommand {
141
+ if (MoveElementAction.is(action)) {
142
+ this.throttledHandleElementMove(action);
143
+ }
144
+ }
145
+
146
+ handleMoveElement(action: MoveElementAction): void {
147
+ const viewport = findParentByFeature(this.editorContextService.modelRoot, isViewport);
148
+ if (!viewport) {
149
+ return;
150
+ }
151
+
152
+ const elements = getElements(this.editorContextService.modelRoot.index, action.elementIds, isSelectableAndBoundsAware);
153
+
154
+ this.dispatcher.dispatchAll(this.move(viewport, elements, action.moveX, action.moveY));
155
+ }
156
+
157
+ protected getBounds(element: SelectableBoundsAware, offSetX: number, offSetY: number): Point {
158
+ return { x: element.bounds.x + offSetX, y: element.bounds.y + offSetY };
159
+ }
160
+
161
+ protected adaptViewport(
162
+ viewport: SModelRoot & Viewport,
163
+ newPoint: Point,
164
+ moveX: number,
165
+ moveY: number
166
+ ): MoveViewportAction | undefined {
167
+ if (
168
+ newPoint.x < viewport.scroll.x ||
169
+ newPoint.x > viewport.scroll.x + viewport.canvasBounds.width ||
170
+ newPoint.y < viewport.scroll.y ||
171
+ newPoint.y > viewport.scroll.y + viewport.canvasBounds.height
172
+ ) {
173
+ return MoveViewportAction.create(moveX, moveY);
174
+ }
175
+ return;
176
+ }
177
+
178
+ protected moveElement(element: SelectableBoundsAware, offSetX: number, offSetY: number): ChangeBoundsOperation {
179
+ return ChangeBoundsOperation.create([
180
+ {
181
+ elementId: element.id,
182
+ newSize: {
183
+ width: element.bounds.width,
184
+ height: element.bounds.height
185
+ },
186
+ newPosition: {
187
+ x: element.bounds.x + offSetX,
188
+ y: element.bounds.y + offSetY
189
+ }
190
+ }
191
+ ]);
192
+ }
193
+
194
+ protected move(viewport: SModelRoot & Viewport, selectedElements: SelectableBoundsAware[], deltaX: number, deltaY: number): Action[] {
195
+ const results: Action[] = [];
196
+
197
+ if (selectedElements.length !== 0) {
198
+ selectedElements.forEach(currentElement => {
199
+ results.push(this.moveElement(currentElement, deltaX, deltaY));
200
+ const newPosition = this.getBounds(currentElement, deltaX, deltaY);
201
+ const viewportAction = this.adaptViewport(viewport, newPosition, deltaX, deltaY);
202
+ if (viewportAction) {
203
+ results.push(viewportAction);
204
+ }
205
+ });
206
+ }
207
+ return results;
208
+ }
209
+ }
@@ -0,0 +1,182 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2023 Business Informatics Group (TU Wien) 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
+
17
+ import { inject, injectable } from 'inversify';
18
+ import { throttle } from 'lodash';
19
+ import {
20
+ Action,
21
+ Bounds,
22
+ IActionDispatcher,
23
+ IActionHandler,
24
+ ICommand,
25
+ Point,
26
+ SChildElement,
27
+ SModelElement,
28
+ SModelRoot,
29
+ SetViewportAction,
30
+ TYPES,
31
+ Viewport,
32
+ findParentByFeature,
33
+ isViewport
34
+ } from '~glsp-sprotty';
35
+ import { EditorContextService } from '../../../base/editor-context-service';
36
+ import { SelectableBoundsAware, getElements, isSelectableAndBoundsAware } from '../../../utils/smodel-util';
37
+
38
+ /**
39
+ * Action for triggering zooming of the viewport.
40
+ */
41
+ export interface ZoomViewportAction extends Action {
42
+ kind: typeof ZoomViewportAction.KIND;
43
+ /**
44
+ * used to specify the amount by which the viewport should be zoomed
45
+ */
46
+ zoomFactor: number;
47
+ }
48
+
49
+ export namespace ZoomViewportAction {
50
+ export const KIND = 'zoomViewportAction';
51
+
52
+ export function is(object: any): object is ZoomViewportAction {
53
+ return Action.hasKind(object, KIND);
54
+ }
55
+
56
+ export function create(zoomFactor: number): ZoomViewportAction {
57
+ return { kind: KIND, zoomFactor };
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Action for triggering zooming of the elements..
63
+ */
64
+ export interface ZoomElementAction extends Action {
65
+ kind: typeof ZoomElementAction.KIND;
66
+ /**
67
+ * used to specify the elements to be zoomed in/out
68
+ */
69
+ elementIds: string[];
70
+ /**
71
+ * used to specify the amount by which the viewport should be zoomed
72
+ */
73
+ zoomFactor: number;
74
+ }
75
+
76
+ export namespace ZoomElementAction {
77
+ export const KIND = 'zoomElementAction';
78
+
79
+ export function is(object: any): object is ZoomElementAction {
80
+ return Action.hasKind(object, KIND);
81
+ }
82
+
83
+ export function create(elementIds: string[], zoomFactor: number): ZoomElementAction {
84
+ return { kind: KIND, elementIds, zoomFactor };
85
+ }
86
+ }
87
+
88
+ /* The ZoomViewportHandler class is an implementation of the IActionHandler interface that handles
89
+ zooming in and out of a viewport. */
90
+ @injectable()
91
+ export class ZoomViewportHandler implements IActionHandler {
92
+ @inject(EditorContextService)
93
+ protected editorContextService: EditorContextService;
94
+
95
+ static readonly defaultZoomInFactor = 1.1;
96
+ static readonly defaultZoomOutFactor = 0.9;
97
+
98
+ @inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
99
+ protected readonly throttledHandleViewportZoom = throttle((action: ZoomViewportAction) => this.handleZoomViewport(action), 150);
100
+
101
+ handle(action: Action): void {
102
+ if (ZoomViewportAction.is(action)) {
103
+ this.throttledHandleViewportZoom(action);
104
+ }
105
+ }
106
+
107
+ handleZoomViewport(action: ZoomViewportAction): void {
108
+ const viewport = findParentByFeature(this.editorContextService.modelRoot, isViewport);
109
+ if (!viewport) {
110
+ return;
111
+ }
112
+ this.dispatcher.dispatch(this.setNewZoomFactor(viewport, action.zoomFactor));
113
+ }
114
+
115
+ protected setNewZoomFactor(viewport: SModelRoot & Viewport, zoomFactor: number): SetViewportAction {
116
+ const newZoom = viewport.zoom * zoomFactor;
117
+
118
+ const newViewport = {
119
+ scroll: viewport.scroll,
120
+ zoom: newZoom
121
+ };
122
+
123
+ return SetViewportAction.create(viewport.id, newViewport, { animate: true });
124
+ }
125
+ }
126
+
127
+ /* The ZoomElementHandler class is an implementation of the IActionHandler interface that handles
128
+ zooming in and out of elements. */
129
+ @injectable()
130
+ export class ZoomElementHandler implements IActionHandler {
131
+ @inject(EditorContextService)
132
+ protected editorContextService: EditorContextService;
133
+ @inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
134
+ protected readonly throttledHandleElementZoom = throttle((action: ZoomElementAction) => this.handleZoomElement(action), 150);
135
+
136
+ handle(action: Action): void | Action | ICommand {
137
+ if (ZoomElementAction.is(action)) {
138
+ this.throttledHandleElementZoom(action);
139
+ }
140
+ }
141
+
142
+ handleZoomElement(action: ZoomElementAction): void {
143
+ const viewport = findParentByFeature(this.editorContextService.modelRoot, isViewport);
144
+ if (!viewport) {
145
+ return;
146
+ }
147
+
148
+ const elements = getElements(this.editorContextService.modelRoot.index, action.elementIds, isSelectableAndBoundsAware);
149
+ const center = this.getCenter(viewport, elements);
150
+ this.dispatcher.dispatch(this.setNewZoomFactor(viewport, action.zoomFactor, center));
151
+ }
152
+
153
+ protected getCenter(viewport: SModelRoot & Viewport, selectedElements: SelectableBoundsAware[]): Point {
154
+ // Get bounds of elements based on the viewport
155
+ const allBounds = selectedElements.map(e => this.boundsInViewport(viewport, e, e.bounds));
156
+ const mergedBounds = allBounds.reduce((b0, b1) => Bounds.combine(b0, b1));
157
+ return Bounds.center(mergedBounds);
158
+ }
159
+
160
+ // copy from center-fit.ts, translates the children bounds to the viewport bounds
161
+ protected boundsInViewport(viewport: SModelRoot & Viewport, element: SModelElement, bounds: Bounds): Bounds {
162
+ if (element instanceof SChildElement && element.parent !== viewport) {
163
+ return this.boundsInViewport(viewport, element.parent, element.parent.localToParent(bounds) as Bounds);
164
+ } else {
165
+ return bounds;
166
+ }
167
+ }
168
+
169
+ protected setNewZoomFactor(viewport: SModelRoot & Viewport, zoomFactor: number, point: Point): SetViewportAction {
170
+ const newZoom = viewport.zoom * zoomFactor;
171
+
172
+ const newViewport = {
173
+ scroll: {
174
+ x: point.x - (0.5 * viewport.canvasBounds.width) / newZoom,
175
+ y: point.y - (0.5 * viewport.canvasBounds.height) / newZoom
176
+ },
177
+ zoom: newZoom
178
+ };
179
+
180
+ return SetViewportAction.create(viewport.id, newViewport, { animate: true });
181
+ }
182
+ }
@@ -0,0 +1,35 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2023 Business Informatics Group (TU Wien) 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
+
17
+ import { ContainerModule } from 'inversify';
18
+ import { bindAsService, BindingContext, configureActionHandler, TYPES } from '~glsp-sprotty';
19
+ import { ResizeElementAction, ResizeElementHandler } from './resize-key-handler';
20
+ import { ResizeKeyTool } from './resize-key-tool';
21
+
22
+ /**
23
+ * Handles resize actions.
24
+ */
25
+ export const glspResizeKeyModule = new ContainerModule((bind, unbind, isBound, rebind) => {
26
+ const context = { bind, unbind, isBound, rebind };
27
+ configureResizeTools(context);
28
+ });
29
+
30
+ export function configureResizeTools(context: BindingContext): void {
31
+ context.bind(ResizeElementHandler).toSelf().inSingletonScope();
32
+
33
+ configureActionHandler(context, ResizeElementAction.KIND, ResizeElementHandler);
34
+ bindAsService(context, TYPES.IDefaultTool, ResizeKeyTool);
35
+ }
@@ -0,0 +1,129 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2023 Business Informatics Group (TU Wien) 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
+
17
+ import { inject, injectable, optional } from 'inversify';
18
+ import {
19
+ Action,
20
+ ChangeBoundsOperation,
21
+ Dimension,
22
+ IActionDispatcher,
23
+ IActionHandler,
24
+ ICommand,
25
+ ISnapper,
26
+ Point,
27
+ SModelElement,
28
+ SParentElement,
29
+ TYPES
30
+ } from '~glsp-sprotty';
31
+ import { EditorContextService } from '../../../base/editor-context-service';
32
+ import { isValidMove, isValidSize, minHeight, minWidth } from '../../../utils/layout-utils';
33
+ import { SelectableBoundsAware, getElements, isSelectableAndBoundsAware, toElementAndBounds } from '../../../utils/smodel-util';
34
+ import { Resizable } from '../../change-bounds/model';
35
+ import { GridSnapper } from '../../change-bounds/snap';
36
+
37
+ export enum ResizeType {
38
+ Increase,
39
+ Decrease,
40
+ MinSize
41
+ }
42
+
43
+ /**
44
+ * Action for triggering resizing of elements.
45
+ */
46
+ export interface ResizeElementAction extends Action {
47
+ kind: typeof ResizeElementAction.KIND;
48
+ elementIds: string[];
49
+ resizeType: ResizeType;
50
+ }
51
+ export namespace ResizeElementAction {
52
+ export const KIND = 'resizeElementAction';
53
+
54
+ export function is(object: any): object is ResizeElementAction {
55
+ return Action.hasKind(object, KIND);
56
+ }
57
+
58
+ export function create(elementIds: string[], resizeType: ResizeType): ResizeElementAction {
59
+ return { kind: KIND, elementIds, resizeType };
60
+ }
61
+ }
62
+
63
+ /* The ResizeElementHandler class is an implementation of the IActionHandler interface that handles
64
+ resizing of elements. */
65
+ @injectable()
66
+ export class ResizeElementHandler implements IActionHandler {
67
+ @inject(EditorContextService)
68
+ protected editorContextService: EditorContextService;
69
+
70
+ @inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
71
+
72
+ // Default x resize used if GridSnapper is not provided
73
+ static readonly defaultResizeX = 20;
74
+
75
+ // Default y resize used if GridSnapper is not provided
76
+ static readonly defaultResizeY = 20;
77
+ protected grid = { x: ResizeElementHandler.defaultResizeX, y: ResizeElementHandler.defaultResizeY };
78
+
79
+ protected isEditMode = false;
80
+
81
+ constructor(@inject(TYPES.ISnapper) @optional() protected readonly snapper?: ISnapper) {
82
+ if (snapper instanceof GridSnapper) {
83
+ this.grid = snapper.grid;
84
+ }
85
+ }
86
+
87
+ handle(action: Action): void | Action | ICommand {
88
+ if (ResizeElementAction.is(action)) {
89
+ this.handleResizeElement(action);
90
+ }
91
+ }
92
+
93
+ handleResizeElement(action: ResizeElementAction): void {
94
+ const elements = getElements(this.editorContextService.modelRoot.index, action.elementIds, isSelectableAndBoundsAware);
95
+ this.dispatcher.dispatchAll(this.resize(elements, action));
96
+ }
97
+
98
+ protected resize(elements: SelectableBoundsAware[], action: ResizeElementAction): Action[] {
99
+ const actions: Action[] = [];
100
+
101
+ elements.forEach(element => {
102
+ const { x, y, width: oldWidth, height: oldHeight } = element.bounds;
103
+ let width = 0;
104
+ let height = 0;
105
+
106
+ if (action.resizeType === ResizeType.Decrease) {
107
+ width = oldWidth - this.grid.x;
108
+ height = oldHeight - this.grid.y;
109
+ } else if (action.resizeType === ResizeType.Increase) {
110
+ width = oldWidth + this.grid.x;
111
+ height = oldHeight + this.grid.y;
112
+ } else if (action.resizeType === ResizeType.MinSize) {
113
+ width = minWidth(element);
114
+ height = minHeight(element);
115
+ }
116
+
117
+ if (this.isValidBoundChange(element, { x, y }, { width, height })) {
118
+ const resizeElement = { id: element.id, bounds: { x, y, width, height } } as SModelElement & SParentElement & Resizable;
119
+ actions.push(ChangeBoundsOperation.create([toElementAndBounds(resizeElement)]));
120
+ }
121
+ });
122
+
123
+ return actions;
124
+ }
125
+
126
+ protected isValidBoundChange(element: SelectableBoundsAware, newPosition: Point, newSize: Dimension): boolean {
127
+ return isValidSize(element, newSize) && isValidMove(element, newPosition);
128
+ }
129
+ }
@@ -0,0 +1,106 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2023 Business Informatics Group (TU Wien) 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
+
17
+ import { inject, injectable, optional } from 'inversify';
18
+ import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
19
+ import { Action, EnableDefaultToolsAction, EnableToolsAction, ISnapper, KeyListener, KeyTool, SModelElement, TYPES } from '~glsp-sprotty';
20
+ import { SelectionService } from '../../../base/selection-service';
21
+ import { GLSPTool } from '../../../base/tool-manager/glsp-tool-manager';
22
+ import { IMovementRestrictor } from '../../change-bounds/movement-restrictor';
23
+ import { ResizeElementAction, ResizeType } from './resize-key-handler';
24
+
25
+ @injectable()
26
+ export class ResizeKeyTool implements GLSPTool {
27
+ static ID = 'glsp.resize-key-tool';
28
+
29
+ isEditTool = true;
30
+
31
+ @inject(KeyTool) protected readonly keytool: KeyTool;
32
+ @inject(TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor;
33
+ @inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
34
+ @inject(SelectionService) readonly selectionService: SelectionService;
35
+
36
+ protected resizeKeyListener: ResizeKeyListener = new ResizeKeyListener(this);
37
+
38
+ get id(): string {
39
+ return ResizeKeyTool.ID;
40
+ }
41
+
42
+ enable(): void {
43
+ this.keytool.register(this.resizeKeyListener);
44
+ }
45
+
46
+ disable(): void {
47
+ this.keytool.deregister(this.resizeKeyListener);
48
+ }
49
+ }
50
+ @injectable()
51
+ export class ResizeKeyListener extends KeyListener {
52
+ protected isEditMode = false;
53
+
54
+ constructor(protected readonly tool: ResizeKeyTool) {
55
+ super();
56
+ }
57
+
58
+ override keyDown(element: SModelElement, event: KeyboardEvent): Action[] {
59
+ const actions = [];
60
+ const selectedElementsIds = this.tool.selectionService.getSelectedElementIDs();
61
+
62
+ if (this.isEditMode && this.matchesDeactivateResizeModeKeystroke(event)) {
63
+ this.isEditMode = false;
64
+ actions.push(EnableDefaultToolsAction.create());
65
+ }
66
+
67
+ if (selectedElementsIds.length > 0) {
68
+ if (!this.isEditMode && this.matchesActivateResizeModeKeystroke(event)) {
69
+ this.isEditMode = true;
70
+ actions.push(EnableToolsAction.create([ResizeKeyTool.ID]));
71
+ }
72
+
73
+ if (this.isEditMode) {
74
+ if (this.matchesIncreaseSizeKeystroke(event)) {
75
+ actions.push(ResizeElementAction.create(selectedElementsIds, ResizeType.Increase));
76
+ } else if (this.matchesDecreaseSizeKeystroke(event)) {
77
+ actions.push(ResizeElementAction.create(selectedElementsIds, ResizeType.Decrease));
78
+ } else if (this.matchesMinSizeKeystroke(event)) {
79
+ actions.push(ResizeElementAction.create(selectedElementsIds, ResizeType.MinSize));
80
+ }
81
+ }
82
+ }
83
+ return actions;
84
+ }
85
+
86
+ protected matchesIncreaseSizeKeystroke(event: KeyboardEvent): boolean {
87
+ /** here event.key is used for '+', as keycode 187 is already declared for 'Equals' in {@link matchesKeystroke}.*/
88
+ return event.key === '+' || matchesKeystroke(event, 'NumpadAdd');
89
+ }
90
+
91
+ protected matchesActivateResizeModeKeystroke(event: KeyboardEvent): boolean {
92
+ return matchesKeystroke(event, 'KeyA', 'alt');
93
+ }
94
+
95
+ protected matchesDeactivateResizeModeKeystroke(event: KeyboardEvent): boolean {
96
+ return matchesKeystroke(event, 'Escape');
97
+ }
98
+
99
+ protected matchesMinSizeKeystroke(event: KeyboardEvent): boolean {
100
+ return matchesKeystroke(event, 'Digit0', 'ctrl') || matchesKeystroke(event, 'Numpad0', 'ctrl');
101
+ }
102
+
103
+ protected matchesDecreaseSizeKeystroke(event: KeyboardEvent): boolean {
104
+ return matchesKeystroke(event, 'Minus') || matchesKeystroke(event, 'NumpadSubtract');
105
+ }
106
+ }
@@ -0,0 +1,30 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2023 Business Informatics Group (TU Wien) 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
+
17
+ import { ContainerModule } from 'inversify';
18
+ import { bindAsService, BindingContext, TYPES } from '~glsp-sprotty';
19
+ import { SearchAutocompletePalette } from './search-palette';
20
+ import { SearchAutocompletePaletteTool } from './search-tool';
21
+
22
+ export const glspSearchPaletteModule = new ContainerModule((bind, _unbind, isBound, rebind) => {
23
+ const context = { bind, isBound, rebind };
24
+ configureSearchPaletteModule(context);
25
+ });
26
+
27
+ export function configureSearchPaletteModule(context: Pick<BindingContext, 'bind'>): void {
28
+ bindAsService(context, TYPES.IUIExtension, SearchAutocompletePalette);
29
+ bindAsService(context, TYPES.IDefaultTool, SearchAutocompletePaletteTool);
30
+ }