@eclipse-glsp/client 0.10.0-next.ca17587.154 → 1.1.0-RC01

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 (578) hide show
  1. package/css/decoration.css +5 -1
  2. package/css/glsp-sprotty.css +149 -8
  3. package/css/tool-palette.css +2 -2
  4. package/lib/base/action-dispatcher.d.ts +4 -3
  5. package/lib/base/action-dispatcher.d.ts.map +1 -1
  6. package/lib/base/action-dispatcher.js +22 -12
  7. package/lib/base/action-dispatcher.js.map +1 -1
  8. package/lib/base/actions/focus-change-action.d.ts +16 -7
  9. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  10. package/lib/base/actions/focus-change-action.js +31 -12
  11. package/lib/base/actions/focus-change-action.js.map +1 -1
  12. package/lib/base/actions/sprotty-actions.d.ts +7 -0
  13. package/lib/base/actions/sprotty-actions.d.ts.map +1 -0
  14. package/lib/{features/tool-palette/palette-item.js → base/actions/sprotty-actions.js} +4 -20
  15. package/lib/base/actions/sprotty-actions.js.map +1 -0
  16. package/lib/base/auto-complete/auto-complete-actions.d.ts +5 -3
  17. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  18. package/lib/base/auto-complete/auto-complete-actions.js +24 -5
  19. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  20. package/lib/base/auto-complete/auto-complete-widget.d.ts +9 -2
  21. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  22. package/lib/base/auto-complete/auto-complete-widget.js +16 -9
  23. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  24. package/lib/base/auto-complete/validation-decorator.js +2 -2
  25. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  26. package/lib/base/command-stack.d.ts.map +1 -1
  27. package/lib/base/command-stack.js +6 -5
  28. package/lib/base/command-stack.js.map +1 -1
  29. package/lib/base/container-modules.d.ts.map +1 -1
  30. package/lib/base/container-modules.js +10 -9
  31. package/lib/base/container-modules.js.map +1 -1
  32. package/lib/base/di.config.d.ts +1 -1
  33. package/lib/base/di.config.d.ts.map +1 -1
  34. package/lib/base/di.config.js +13 -14
  35. package/lib/base/di.config.js.map +1 -1
  36. package/lib/base/drag-aware-mouse-listener.d.ts +1 -1
  37. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  38. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  39. package/lib/base/editor-context-service.d.ts +15 -4
  40. package/lib/base/editor-context-service.d.ts.map +1 -1
  41. package/lib/base/editor-context-service.js +31 -19
  42. package/lib/base/editor-context-service.js.map +1 -1
  43. package/lib/base/focus-tracker.d.ts +1 -1
  44. package/lib/base/focus-tracker.d.ts.map +1 -1
  45. package/lib/base/focus-tracker.js +4 -4
  46. package/lib/base/focus-tracker.js.map +1 -1
  47. package/lib/base/model/model-registry.d.ts.map +1 -1
  48. package/lib/base/model/model-registry.js +2 -2
  49. package/lib/base/model/model-registry.js.map +1 -1
  50. package/lib/base/model/update-model-command.d.ts +15 -8
  51. package/lib/base/model/update-model-command.d.ts.map +1 -1
  52. package/lib/base/model/update-model-command.js +43 -53
  53. package/lib/base/model/update-model-command.js.map +1 -1
  54. package/lib/base/model-initialization-constraint.d.ts +4 -5
  55. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  56. package/lib/base/model-initialization-constraint.js +11 -13
  57. package/lib/base/model-initialization-constraint.js.map +1 -1
  58. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  59. package/lib/base/selection-clearing-mouse-listener.js +1 -1
  60. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  61. package/lib/base/source-uri-aware.d.ts +2 -17
  62. package/lib/base/source-uri-aware.d.ts.map +1 -1
  63. package/lib/base/source-uri-aware.js +4 -6
  64. package/lib/base/source-uri-aware.js.map +1 -1
  65. package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
  66. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  67. package/lib/base/tool-manager/glsp-tool-manager.js +10 -10
  68. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  69. package/lib/base/tool-manager/tool-actions.d.ts +14 -0
  70. package/lib/base/tool-manager/tool-actions.d.ts.map +1 -0
  71. package/lib/base/tool-manager/tool-actions.js +25 -0
  72. package/lib/base/tool-manager/tool-actions.js.map +1 -0
  73. package/lib/base/types.d.ts +146 -20
  74. package/lib/base/types.d.ts.map +1 -1
  75. package/lib/base/types.js +14 -26
  76. package/lib/base/types.js.map +1 -1
  77. package/lib/base/view/view-registry.d.ts.map +1 -1
  78. package/lib/base/view/view-registry.js +2 -2
  79. package/lib/base/view/view-registry.js.map +1 -1
  80. package/lib/features/change-bounds/model.d.ts +1 -1
  81. package/lib/features/change-bounds/model.d.ts.map +1 -1
  82. package/lib/features/change-bounds/model.js +3 -3
  83. package/lib/features/change-bounds/model.js.map +1 -1
  84. package/lib/features/change-bounds/movement-restrictor.d.ts +37 -7
  85. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  86. package/lib/features/change-bounds/movement-restrictor.js +55 -40
  87. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  88. package/lib/features/change-bounds/snap.d.ts +60 -4
  89. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  90. package/lib/features/change-bounds/snap.js +96 -9
  91. package/lib/features/change-bounds/snap.js.map +1 -1
  92. package/lib/features/change-bounds/snap.spec.d.ts +17 -0
  93. package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
  94. package/lib/features/change-bounds/snap.spec.js +82 -0
  95. package/lib/features/change-bounds/snap.spec.js.map +1 -0
  96. package/lib/features/command-palette/command-palette-tool.js +3 -3
  97. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  98. package/lib/features/command-palette/di.config.d.ts +2 -2
  99. package/lib/features/command-palette/di.config.d.ts.map +1 -1
  100. package/lib/features/command-palette/di.config.js +6 -6
  101. package/lib/features/command-palette/di.config.js.map +1 -1
  102. package/lib/features/command-palette/server-command-palette-provider.d.ts +1 -1
  103. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  104. package/lib/features/command-palette/server-command-palette-provider.js +13 -10
  105. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  106. package/lib/features/context-menu/delete-element-context-menu.d.ts +17 -1
  107. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  108. package/lib/features/context-menu/delete-element-context-menu.js +4 -4
  109. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  110. package/lib/features/context-menu/di.config.d.ts +1 -1
  111. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  112. package/lib/features/context-menu/di.config.js +8 -7
  113. package/lib/features/context-menu/di.config.js.map +1 -1
  114. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +34 -4
  115. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  116. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +37 -31
  117. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  118. package/lib/features/context-menu/server-context-menu-provider.d.ts +1 -1
  119. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  120. package/lib/features/context-menu/server-context-menu-provider.js +8 -7
  121. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  122. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +12 -15
  123. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  124. package/lib/features/copy-paste/copy-paste-context-menu.js +26 -33
  125. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  126. package/lib/features/copy-paste/copy-paste-handler.d.ts +1 -1
  127. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  128. package/lib/features/copy-paste/copy-paste-handler.js +10 -11
  129. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  130. package/lib/features/copy-paste/di.config.d.ts +1 -1
  131. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  132. package/lib/features/copy-paste/di.config.js +5 -7
  133. package/lib/features/copy-paste/di.config.js.map +1 -1
  134. package/lib/features/decoration/decoration-placer.d.ts +1 -1
  135. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  136. package/lib/features/decoration/decoration-placer.js +19 -3
  137. package/lib/features/decoration/decoration-placer.js.map +1 -1
  138. package/lib/features/decoration/di.config.d.ts +2 -2
  139. package/lib/features/decoration/di.config.d.ts.map +1 -1
  140. package/lib/features/decoration/di.config.js +4 -4
  141. package/lib/features/decoration/di.config.js.map +1 -1
  142. package/lib/features/edit-label/di.config.d.ts +1 -1
  143. package/lib/features/edit-label/di.config.d.ts.map +1 -1
  144. package/lib/features/edit-label/di.config.js +5 -5
  145. package/lib/features/edit-label/di.config.js.map +1 -1
  146. package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -1
  147. package/lib/features/edit-label/edit-label-tool.js +2 -2
  148. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  149. package/lib/features/edit-label/edit-label-validator.d.ts +4 -6
  150. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  151. package/lib/features/edit-label/edit-label-validator.js +11 -13
  152. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  153. package/lib/features/hints/di.config.js +4 -4
  154. package/lib/features/hints/di.config.js.map +1 -1
  155. package/lib/features/hints/type-hints.d.ts +15 -5
  156. package/lib/features/hints/type-hints.d.ts.map +1 -1
  157. package/lib/features/hints/type-hints.js +29 -26
  158. package/lib/features/hints/type-hints.js.map +1 -1
  159. package/lib/features/hover/di.config.d.ts +1 -1
  160. package/lib/features/hover/di.config.d.ts.map +1 -1
  161. package/lib/features/hover/di.config.js +14 -10
  162. package/lib/features/hover/di.config.js.map +1 -1
  163. package/lib/features/hover/hover.d.ts +16 -5
  164. package/lib/features/hover/hover.d.ts.map +1 -1
  165. package/lib/features/hover/hover.js +44 -19
  166. package/lib/features/hover/hover.js.map +1 -1
  167. package/lib/features/layout/di.config.d.ts +3 -3
  168. package/lib/features/layout/di.config.d.ts.map +1 -1
  169. package/lib/features/layout/di.config.js +12 -7
  170. package/lib/features/layout/di.config.js.map +1 -1
  171. package/lib/features/layout/freeform-layout.d.ts +17 -1
  172. package/lib/features/layout/freeform-layout.d.ts.map +1 -1
  173. package/lib/features/layout/freeform-layout.js +4 -4
  174. package/lib/features/layout/freeform-layout.js.map +1 -1
  175. package/lib/features/layout/hbox-layout.d.ts +41 -0
  176. package/lib/features/layout/hbox-layout.d.ts.map +1 -0
  177. package/lib/features/layout/hbox-layout.js +201 -0
  178. package/lib/features/layout/hbox-layout.js.map +1 -0
  179. package/lib/features/layout/layout-elements-action.d.ts +198 -0
  180. package/lib/features/layout/layout-elements-action.d.ts.map +1 -0
  181. package/lib/features/layout/layout-elements-action.js +391 -0
  182. package/lib/features/layout/layout-elements-action.js.map +1 -0
  183. package/lib/features/layout/layout-elements-action.spec.d.ts +3 -0
  184. package/lib/features/layout/layout-elements-action.spec.d.ts.map +1 -0
  185. package/lib/features/layout/{layout-commands.spec.js → layout-elements-action.spec.js} +81 -62
  186. package/lib/features/layout/layout-elements-action.spec.js.map +1 -0
  187. package/lib/features/layout/layouter.d.ts +37 -0
  188. package/lib/features/layout/layouter.d.ts.map +1 -0
  189. package/lib/features/layout/layouter.js +131 -0
  190. package/lib/features/layout/layouter.js.map +1 -0
  191. package/lib/features/layout/tests/freeform-layout.spec.d.ts +3 -0
  192. package/lib/features/layout/tests/freeform-layout.spec.d.ts.map +1 -0
  193. package/lib/features/layout/tests/freeform-layout.spec.js +201 -0
  194. package/lib/features/layout/tests/freeform-layout.spec.js.map +1 -0
  195. package/lib/features/layout/tests/hbox-layout.spec.d.ts +3 -0
  196. package/lib/features/layout/tests/hbox-layout.spec.d.ts.map +1 -0
  197. package/lib/features/layout/tests/hbox-layout.spec.js +161 -0
  198. package/lib/features/layout/tests/hbox-layout.spec.js.map +1 -0
  199. package/lib/features/layout/tests/layouter-test-util.d.ts +34 -0
  200. package/lib/features/layout/tests/layouter-test-util.d.ts.map +1 -0
  201. package/lib/features/layout/tests/layouter-test-util.js +96 -0
  202. package/lib/features/layout/tests/layouter-test-util.js.map +1 -0
  203. package/lib/features/layout/tests/vbox-layout.spec.d.ts +3 -0
  204. package/lib/features/layout/tests/vbox-layout.spec.d.ts.map +1 -0
  205. package/lib/features/layout/tests/vbox-layout.spec.js +161 -0
  206. package/lib/features/layout/tests/vbox-layout.spec.js.map +1 -0
  207. package/lib/features/layout/vbox-layout.d.ts +18 -2
  208. package/lib/features/layout/vbox-layout.d.ts.map +1 -1
  209. package/lib/features/layout/vbox-layout.js +26 -13
  210. package/lib/features/layout/vbox-layout.js.map +1 -1
  211. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  212. package/lib/features/mouse-tool/di.config.d.ts.map +1 -1
  213. package/lib/features/mouse-tool/di.config.js +2 -2
  214. package/lib/features/mouse-tool/di.config.js.map +1 -1
  215. package/lib/features/mouse-tool/mouse-tool.d.ts +9 -6
  216. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  217. package/lib/features/mouse-tool/mouse-tool.js +10 -48
  218. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  219. package/lib/features/navigation/di.config.js +4 -4
  220. package/lib/features/navigation/di.config.js.map +1 -1
  221. package/lib/features/navigation/navigation-action-handler.d.ts +31 -16
  222. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  223. package/lib/features/navigation/navigation-action-handler.js +52 -68
  224. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  225. package/lib/features/navigation/navigation-target-resolver.d.ts +3 -3
  226. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  227. package/lib/features/navigation/navigation-target-resolver.js +8 -9
  228. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  229. package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
  230. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  231. package/lib/features/reconnect/model.d.ts +1 -1
  232. package/lib/features/reconnect/model.d.ts.map +1 -1
  233. package/lib/features/reconnect/model.js +1 -1
  234. package/lib/features/reconnect/model.js.map +1 -1
  235. package/lib/features/save/di.config.d.ts +1 -1
  236. package/lib/features/save/di.config.d.ts.map +1 -1
  237. package/lib/features/save/di.config.js +3 -3
  238. package/lib/features/save/di.config.js.map +1 -1
  239. package/lib/features/save/save-keylistener.d.ts +1 -1
  240. package/lib/features/save/save-keylistener.d.ts.map +1 -1
  241. package/lib/features/save/save-keylistener.js +3 -3
  242. package/lib/features/save/save-keylistener.js.map +1 -1
  243. package/lib/features/select/di.config.d.ts +1 -1
  244. package/lib/features/select/di.config.d.ts.map +1 -1
  245. package/lib/features/select/di.config.js +7 -8
  246. package/lib/features/select/di.config.js.map +1 -1
  247. package/lib/features/select/select-feedback-action.d.ts +26 -22
  248. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  249. package/lib/features/select/select-feedback-action.js +19 -46
  250. package/lib/features/select/select-feedback-action.js.map +1 -1
  251. package/lib/features/select/select-mouse-listener.d.ts +4 -2
  252. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  253. package/lib/features/select/select-mouse-listener.js +63 -1
  254. package/lib/features/select/select-mouse-listener.js.map +1 -1
  255. package/lib/features/select/selection-service.d.ts +14 -5
  256. package/lib/features/select/selection-service.d.ts.map +1 -1
  257. package/lib/features/select/selection-service.js +55 -64
  258. package/lib/features/select/selection-service.js.map +1 -1
  259. package/lib/features/select/selection-service.spec.js +28 -25
  260. package/lib/features/select/selection-service.spec.js.map +1 -1
  261. package/lib/features/source-model-watcher/di.config.d.ts +4 -0
  262. package/lib/features/{model-source-watcher → source-model-watcher}/di.config.d.ts.map +1 -1
  263. package/lib/features/{model-source-watcher → source-model-watcher}/di.config.js +4 -4
  264. package/lib/features/source-model-watcher/di.config.js.map +1 -0
  265. package/lib/features/{model-source-watcher/model-source-changed-action-handler.d.ts → source-model-watcher/source-model-changed-action-handler.d.ts} +10 -10
  266. package/lib/features/source-model-watcher/source-model-changed-action-handler.d.ts.map +1 -0
  267. package/lib/features/{model-source-watcher/model-source-changed-action-handler.js → source-model-watcher/source-model-changed-action-handler.js} +28 -28
  268. package/lib/features/source-model-watcher/source-model-changed-action-handler.js.map +1 -0
  269. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +17 -9
  270. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  271. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +68 -38
  272. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  273. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +24 -12
  274. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  275. package/lib/features/tool-feedback/creation-tool-feedback.js +88 -35
  276. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  277. package/lib/features/tool-feedback/css-feedback.d.ts +17 -10
  278. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  279. package/lib/features/tool-feedback/css-feedback.js +42 -38
  280. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  281. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  282. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  283. package/lib/features/tool-feedback/di.config.js +18 -18
  284. package/lib/features/tool-feedback/di.config.js.map +1 -1
  285. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +45 -22
  286. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  287. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -114
  288. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  289. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
  290. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  291. package/lib/features/tool-feedback/feedback-action-dispatcher.js +4 -4
  292. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  293. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +21 -10
  294. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  295. package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -18
  296. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  297. package/lib/features/tool-feedback/model.d.ts +1 -2
  298. package/lib/features/tool-feedback/model.d.ts.map +1 -1
  299. package/lib/features/tool-feedback/model.js +1 -1
  300. package/lib/features/tool-feedback/model.js.map +1 -1
  301. package/lib/features/tool-feedback/view.d.ts +1 -1
  302. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  303. package/lib/features/tool-feedback/view.js +22 -5
  304. package/lib/features/tool-feedback/view.js.map +1 -1
  305. package/lib/features/tool-palette/di.config.d.ts +1 -1
  306. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  307. package/lib/features/tool-palette/di.config.js +5 -4
  308. package/lib/features/tool-palette/di.config.js.map +1 -1
  309. package/lib/features/tool-palette/tool-palette.d.ts +10 -7
  310. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  311. package/lib/features/tool-palette/tool-palette.js +39 -32
  312. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  313. package/lib/features/tools/base-glsp-tool.d.ts +3 -3
  314. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  315. package/lib/features/tools/base-glsp-tool.js +11 -11
  316. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  317. package/lib/features/tools/change-bounds-tool.d.ts +7 -9
  318. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  319. package/lib/features/tools/change-bounds-tool.js +48 -71
  320. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  321. package/lib/features/tools/delete-tool.d.ts +1 -1
  322. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  323. package/lib/features/tools/delete-tool.js +17 -17
  324. package/lib/features/tools/delete-tool.js.map +1 -1
  325. package/lib/features/tools/di.config.d.ts +9 -2
  326. package/lib/features/tools/di.config.d.ts.map +1 -1
  327. package/lib/features/tools/di.config.js +26 -15
  328. package/lib/features/tools/di.config.js.map +1 -1
  329. package/lib/features/tools/edge-creation-tool.d.ts +1 -1
  330. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  331. package/lib/features/tools/edge-creation-tool.js +28 -21
  332. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  333. package/lib/features/tools/edge-edit-tool.d.ts +3 -2
  334. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  335. package/lib/features/tools/edge-edit-tool.js +41 -36
  336. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  337. package/lib/features/{tool-palette/palette-item.d.ts → tools/enable-default-tools-on-focus-loss.d.ts} +11 -11
  338. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -0
  339. package/lib/features/tools/enable-default-tools-on-focus-loss.js +29 -0
  340. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -0
  341. package/lib/features/tools/marquee-behavior.d.ts +1 -1
  342. package/lib/features/tools/marquee-behavior.js +2 -2
  343. package/lib/features/tools/marquee-behavior.js.map +1 -1
  344. package/lib/features/tools/marquee-behavior.spec.js +63 -63
  345. package/lib/features/tools/marquee-behavior.spec.js.map +1 -1
  346. package/lib/features/tools/marquee-mouse-tool.d.ts +1 -1
  347. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  348. package/lib/features/tools/marquee-mouse-tool.js +20 -20
  349. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  350. package/lib/features/tools/marquee-tool.d.ts +1 -1
  351. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  352. package/lib/features/tools/marquee-tool.js +4 -4
  353. package/lib/features/tools/marquee-tool.js.map +1 -1
  354. package/lib/features/tools/model.d.ts +3 -2
  355. package/lib/features/tools/model.d.ts.map +1 -1
  356. package/lib/features/tools/model.js +0 -15
  357. package/lib/features/tools/model.js.map +1 -1
  358. package/lib/features/tools/node-creation-tool.d.ts +1 -1
  359. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  360. package/lib/features/tools/node-creation-tool.js +17 -17
  361. package/lib/features/tools/node-creation-tool.js.map +1 -1
  362. package/lib/features/tools/view.d.ts.map +1 -1
  363. package/lib/features/tools/view.js +2 -2
  364. package/lib/features/tools/view.js.map +1 -1
  365. package/lib/features/validation/di.config.d.ts +0 -15
  366. package/lib/features/validation/di.config.d.ts.map +1 -1
  367. package/lib/features/validation/di.config.js +9 -7
  368. package/lib/features/validation/di.config.js.map +1 -1
  369. package/lib/features/validation/issue-marker.d.ts +11 -5
  370. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  371. package/lib/features/validation/issue-marker.js +25 -5
  372. package/lib/features/validation/issue-marker.js.map +1 -1
  373. package/lib/features/validation/marker-navigator.d.ts +27 -25
  374. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  375. package/lib/features/validation/marker-navigator.js +64 -91
  376. package/lib/features/validation/marker-navigator.js.map +1 -1
  377. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  378. package/lib/features/validation/marker-navigator.spec.js +23 -37
  379. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  380. package/lib/features/validation/validate.d.ts +17 -30
  381. package/lib/features/validation/validate.d.ts.map +1 -1
  382. package/lib/features/validation/validate.js +66 -91
  383. package/lib/features/validation/validate.js.map +1 -1
  384. package/lib/features/viewport/di.config.d.ts +1 -1
  385. package/lib/features/viewport/di.config.d.ts.map +1 -1
  386. package/lib/features/viewport/di.config.js +7 -7
  387. package/lib/features/viewport/di.config.js.map +1 -1
  388. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +1 -1
  389. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  390. package/lib/features/viewport/glsp-scroll-mouse-listener.js +3 -3
  391. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  392. package/lib/index.d.ts +10 -11
  393. package/lib/index.d.ts.map +1 -1
  394. package/lib/index.js +26 -22
  395. package/lib/index.js.map +1 -1
  396. package/lib/lib/model.d.ts +3 -2
  397. package/lib/lib/model.d.ts.map +1 -1
  398. package/lib/lib/model.js +3 -18
  399. package/lib/lib/model.js.map +1 -1
  400. package/lib/model-source/glsp-diagram-server.d.ts +6 -6
  401. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  402. package/lib/model-source/glsp-diagram-server.js +8 -7
  403. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  404. package/lib/sprotty-reexport.d.ts +174 -0
  405. package/lib/sprotty-reexport.d.ts.map +1 -0
  406. package/lib/sprotty-reexport.js +301 -0
  407. package/lib/sprotty-reexport.js.map +1 -0
  408. package/lib/utils/argument-utils.js +5 -5
  409. package/lib/utils/argument-utils.js.map +1 -1
  410. package/lib/utils/layout-utils.d.ts +6 -22
  411. package/lib/utils/layout-utils.d.ts.map +1 -1
  412. package/lib/utils/layout-utils.js +1 -1
  413. package/lib/utils/layout-utils.js.map +1 -1
  414. package/lib/utils/smodel-util.d.ts +117 -11
  415. package/lib/utils/smodel-util.d.ts.map +1 -1
  416. package/lib/utils/smodel-util.js +142 -37
  417. package/lib/utils/smodel-util.js.map +1 -1
  418. package/lib/utils/viewpoint-util.d.ts +3 -3
  419. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  420. package/lib/utils/viewpoint-util.js +19 -3
  421. package/lib/utils/viewpoint-util.js.map +1 -1
  422. package/lib/views/base-view-module.d.ts.map +1 -1
  423. package/lib/views/base-view-module.js +21 -19
  424. package/lib/views/base-view-module.js.map +1 -1
  425. package/lib/views/compartments.js +2 -2
  426. package/lib/views/compartments.js.map +1 -1
  427. package/lib/views/glsp-edge-view.d.ts +1 -1
  428. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  429. package/lib/views/glsp-edge-view.js +1 -1
  430. package/lib/views/glsp-edge-view.js.map +1 -1
  431. package/lib/views/glsp-projection-view.d.ts +30 -0
  432. package/lib/views/glsp-projection-view.d.ts.map +1 -0
  433. package/lib/views/glsp-projection-view.js +148 -0
  434. package/lib/views/glsp-projection-view.js.map +1 -0
  435. package/lib/views/index.d.ts +1 -0
  436. package/lib/views/index.d.ts.map +1 -1
  437. package/lib/views/index.js +7 -2
  438. package/lib/views/index.js.map +1 -1
  439. package/lib/views/issue-marker-view.d.ts.map +1 -1
  440. package/lib/views/issue-marker-view.js +3 -3
  441. package/lib/views/issue-marker-view.js.map +1 -1
  442. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  443. package/lib/views/rounded-corner-view.js +2 -2
  444. package/lib/views/rounded-corner-view.js.map +1 -1
  445. package/package.json +10 -19
  446. package/src/base/action-dispatcher.ts +26 -16
  447. package/src/base/actions/focus-change-action.ts +25 -8
  448. package/src/base/actions/sprotty-actions.ts +26 -0
  449. package/src/base/auto-complete/auto-complete-actions.ts +7 -5
  450. package/src/base/auto-complete/auto-complete-widget.ts +15 -13
  451. package/src/base/command-stack.ts +7 -6
  452. package/src/base/container-modules.ts +6 -5
  453. package/src/base/di.config.ts +4 -5
  454. package/src/base/drag-aware-mouse-listener.ts +4 -4
  455. package/src/base/editor-context-service.ts +32 -12
  456. package/src/base/focus-tracker.ts +5 -4
  457. package/src/base/model/model-registry.ts +2 -2
  458. package/src/base/model/update-model-command.ts +54 -41
  459. package/src/base/model-initialization-constraint.ts +9 -11
  460. package/src/base/selection-clearing-mouse-listener.ts +1 -1
  461. package/src/base/source-uri-aware.ts +5 -4
  462. package/src/base/tool-manager/glsp-tool-manager.ts +9 -9
  463. package/src/base/tool-manager/tool-actions.ts +37 -0
  464. package/src/base/types.ts +31 -24
  465. package/src/base/view/view-registry.ts +2 -2
  466. package/src/features/change-bounds/model.ts +5 -5
  467. package/src/features/change-bounds/movement-restrictor.ts +74 -44
  468. package/src/features/change-bounds/snap.spec.ts +89 -0
  469. package/src/features/change-bounds/snap.ts +99 -12
  470. package/src/features/command-palette/di.config.ts +5 -7
  471. package/src/features/command-palette/server-command-palette-provider.ts +9 -8
  472. package/src/features/context-menu/delete-element-context-menu.ts +6 -6
  473. package/src/features/context-menu/di.config.ts +3 -2
  474. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +51 -29
  475. package/src/features/context-menu/server-context-menu-provider.ts +7 -6
  476. package/src/features/copy-paste/copy-paste-context-menu.ts +30 -23
  477. package/src/features/copy-paste/copy-paste-handler.ts +6 -6
  478. package/src/features/copy-paste/di.config.ts +7 -15
  479. package/src/features/decoration/decoration-placer.ts +4 -4
  480. package/src/features/decoration/di.config.ts +3 -5
  481. package/src/features/edit-label/di.config.ts +4 -5
  482. package/src/features/edit-label/edit-label-tool.ts +1 -2
  483. package/src/features/edit-label/edit-label-validator.ts +6 -10
  484. package/src/features/hints/di.config.ts +3 -3
  485. package/src/features/hints/type-hints.ts +33 -18
  486. package/src/features/hover/di.config.ts +8 -2
  487. package/src/features/hover/hover.ts +48 -28
  488. package/src/features/layout/di.config.ts +17 -7
  489. package/src/features/layout/freeform-layout.ts +6 -15
  490. package/src/features/layout/hbox-layout.ts +273 -0
  491. package/src/features/layout/{layout-commands.spec.ts → layout-elements-action.spec.ts} +89 -65
  492. package/src/features/layout/layout-elements-action.ts +486 -0
  493. package/src/features/layout/layouter.ts +137 -0
  494. package/src/features/layout/tests/freeform-layout.spec.ts +216 -0
  495. package/src/features/layout/tests/hbox-layout.spec.ts +171 -0
  496. package/src/features/layout/tests/layouter-test-util.ts +122 -0
  497. package/src/features/layout/tests/vbox-layout.spec.ts +171 -0
  498. package/src/features/layout/vbox-layout.ts +41 -24
  499. package/src/features/mouse-tool/di.config.ts +3 -4
  500. package/src/features/mouse-tool/mouse-tool.ts +18 -57
  501. package/src/features/navigation/navigation-action-handler.ts +76 -42
  502. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -3
  503. package/src/features/navigation/navigation-target-resolver.ts +8 -13
  504. package/src/features/reconnect/model.ts +2 -2
  505. package/src/features/save/di.config.ts +2 -3
  506. package/src/features/save/save-keylistener.ts +3 -3
  507. package/src/features/select/di.config.ts +6 -8
  508. package/src/features/select/select-feedback-action.ts +18 -46
  509. package/src/features/select/select-mouse-listener.ts +82 -3
  510. package/src/features/select/selection-service.spec.ts +12 -9
  511. package/src/features/select/selection-service.ts +52 -60
  512. package/src/features/{model-source-watcher → source-model-watcher}/di.config.ts +5 -5
  513. package/src/features/{model-source-watcher/model-source-changed-action-handler.ts → source-model-watcher/source-model-changed-action-handler.ts} +17 -22
  514. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +52 -22
  515. package/src/features/tool-feedback/creation-tool-feedback.ts +79 -30
  516. package/src/features/tool-feedback/css-feedback.ts +40 -37
  517. package/src/features/tool-feedback/di.config.ts +4 -5
  518. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +140 -88
  519. package/src/features/tool-feedback/feedback-action-dispatcher.ts +4 -3
  520. package/src/features/tool-feedback/marquee-tool-feedback.ts +38 -13
  521. package/src/features/tool-feedback/model.ts +1 -3
  522. package/src/features/tool-feedback/view.tsx +3 -3
  523. package/src/features/tool-palette/di.config.ts +3 -2
  524. package/src/features/tool-palette/tool-palette.ts +35 -19
  525. package/src/features/tools/base-glsp-tool.ts +11 -11
  526. package/src/features/tools/change-bounds-tool.ts +37 -67
  527. package/src/features/tools/delete-tool.ts +9 -9
  528. package/src/features/tools/di.config.ts +23 -12
  529. package/src/features/tools/edge-creation-tool.ts +21 -12
  530. package/src/features/tools/edge-edit-tool.ts +25 -21
  531. package/src/features/tools/enable-default-tools-on-focus-loss.ts +33 -0
  532. package/src/features/tools/marquee-behavior.ts +2 -2
  533. package/src/features/tools/marquee-mouse-tool.ts +13 -14
  534. package/src/features/tools/marquee-tool.ts +3 -3
  535. package/src/features/tools/model.ts +4 -3
  536. package/src/features/tools/node-creation-tool.ts +8 -8
  537. package/src/features/tools/view.tsx +2 -3
  538. package/src/features/validation/di.config.ts +13 -11
  539. package/src/features/validation/issue-marker.ts +34 -12
  540. package/src/features/validation/marker-navigator.spec.ts +4 -2
  541. package/src/features/validation/marker-navigator.ts +67 -82
  542. package/src/features/validation/validate.ts +62 -90
  543. package/src/features/viewport/di.config.ts +1 -2
  544. package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
  545. package/src/index.ts +12 -12
  546. package/src/lib/model.ts +4 -4
  547. package/src/model-source/glsp-diagram-server.ts +15 -15
  548. package/src/sprotty-reexport.ts +288 -0
  549. package/src/utils/layout-utils.ts +9 -29
  550. package/src/utils/smodel-util.ts +139 -43
  551. package/src/utils/viewpoint-util.ts +5 -14
  552. package/src/views/base-view-module.ts +5 -1
  553. package/src/views/compartments.tsx +1 -1
  554. package/src/views/glsp-edge-view.tsx +4 -4
  555. package/src/views/glsp-projection-view.tsx +173 -0
  556. package/src/views/index.ts +2 -0
  557. package/src/views/issue-marker-view.tsx +2 -2
  558. package/src/views/rounded-corner-view.tsx +2 -3
  559. package/lib/features/layout/layout-commands.d.ts +0 -153
  560. package/lib/features/layout/layout-commands.d.ts.map +0 -1
  561. package/lib/features/layout/layout-commands.js +0 -412
  562. package/lib/features/layout/layout-commands.js.map +0 -1
  563. package/lib/features/layout/layout-commands.spec.d.ts +0 -3
  564. package/lib/features/layout/layout-commands.spec.d.ts.map +0 -1
  565. package/lib/features/layout/layout-commands.spec.js.map +0 -1
  566. package/lib/features/model-source-watcher/di.config.d.ts +0 -4
  567. package/lib/features/model-source-watcher/di.config.js.map +0 -1
  568. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +0 -1
  569. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +0 -1
  570. package/lib/features/tool-palette/palette-item.d.ts.map +0 -1
  571. package/lib/features/tool-palette/palette-item.js.map +0 -1
  572. package/lib/protocol-reexport.d.ts +0 -45
  573. package/lib/protocol-reexport.d.ts.map +0 -1
  574. package/lib/protocol-reexport.js +0 -75
  575. package/lib/protocol-reexport.js.map +0 -1
  576. package/src/features/layout/layout-commands.ts +0 -424
  577. package/src/features/tool-palette/palette-item.ts +0 -38
  578. package/src/protocol-reexport.ts +0 -64
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,8 +14,7 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { ContainerModule } from 'inversify';
17
- import { TYPES } from 'sprotty';
18
-
17
+ import { TYPES } from '../../base/types';
19
18
  import { SaveModelKeyboardListener } from './save-keylistener';
20
19
 
21
20
  /**
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -18,9 +18,9 @@ import { KeyListener, SModelRoot } from 'sprotty';
18
18
  import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
19
19
 
20
20
  export class SaveModelKeyboardListener extends KeyListener {
21
- keyDown(_element: SModelRoot, event: KeyboardEvent): Action[] {
21
+ override keyDown(_element: SModelRoot, event: KeyboardEvent): Action[] {
22
22
  if (matchesKeystroke(event, 'KeyS', 'ctrlCmd')) {
23
- return [new SaveModelAction()];
23
+ return [SaveModelAction.create()];
24
24
  }
25
25
  return [];
26
26
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,22 +14,20 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { ContainerModule } from 'inversify';
17
- import { configureCommand, TYPES } from 'sprotty';
18
-
19
- import { GLSP_TYPES } from '../../base/types';
20
- import { SelectAllFeedbackCommand, SelectFeedbackCommand } from './select-feedback-action';
17
+ import { configureCommand } from 'sprotty';
18
+ import { TYPES } from '../../base/types';
19
+ import { SelectFeedbackCommand } from './select-feedback-action';
21
20
  import { RankedSelectMouseListener } from './select-mouse-listener';
22
21
  import { SelectAllCommand, SelectCommand, SelectionService } from './selection-service';
23
22
 
24
23
  const glspSelectModule = new ContainerModule((bind, _unbind, isBound) => {
25
24
  bind(SelectionService).toSelf().inSingletonScope();
26
- bind(GLSP_TYPES.SelectionService).toService(SelectionService);
25
+ bind(TYPES.SelectionService).toService(SelectionService);
27
26
  configureCommand({ bind, isBound }, SelectCommand);
28
27
  configureCommand({ bind, isBound }, SelectAllCommand);
29
28
  configureCommand({ bind, isBound }, SelectFeedbackCommand);
30
- configureCommand({ bind, isBound }, SelectAllFeedbackCommand);
31
29
  bind(TYPES.MouseListener).to(RankedSelectMouseListener);
32
- bind(GLSP_TYPES.SModelRootListener).toService(SelectionService);
30
+ bind(TYPES.SModelRootListener).toService(SelectionService);
33
31
  });
34
32
 
35
33
  export default glspSelectModule;
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,39 +13,34 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { Action, hasArrayProp, SelectAction } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
- import {
18
- Command,
19
- CommandExecutionContext,
20
- SelectAllCommand as SprottySelectAllCommand,
21
- SelectCommand as SprottySelectCommand,
22
- SModelRoot,
23
- TYPES
24
- } from 'sprotty';
18
+ import { Command, CommandExecutionContext, SelectCommand as SprottySelectCommand, SModelRoot } from 'sprotty';
19
+ import { TYPES } from '../../base/types';
25
20
 
26
- export class SelectFeedbackAction {
27
- constructor(
28
- public readonly selectedElementsIDs: string[] = [],
29
- public readonly deselectedElementsIDs: string[] = [],
30
- public readonly kind: string = SelectFeedbackCommand.KIND
31
- ) {}
21
+ export interface SelectFeedbackAction extends Omit<SelectAction, 'kind'>, Action {
22
+ kind: typeof SelectFeedbackAction.KIND;
32
23
  }
33
24
 
34
- export class SelectAllFeedbackAction {
35
- /**
36
- * If `select` is true, all elements are selected, othewise they are deselected.
37
- */
38
- constructor(public readonly select: boolean = true, public readonly kind: string = SelectFeedbackCommand.KIND) {}
39
- }
25
+ export namespace SelectFeedbackAction {
26
+ export const KIND = 'selectFeedback';
27
+
28
+ export function is(object: any): object is SelectFeedbackAction {
29
+ return Action.hasKind(object, KIND) && hasArrayProp(object, 'selectedElementsIDs') && hasArrayProp(object, 'deselectedElementsIDs');
30
+ }
40
31
 
32
+ export function create(options?: { selectedElementsIDs?: string[]; deselectedElementsIDs?: string[] }): SelectFeedbackAction {
33
+ return { ...SelectAction.create(options), kind: KIND };
34
+ }
35
+ }
41
36
  @injectable()
42
37
  export class SelectFeedbackCommand extends Command {
43
- static readonly KIND = 'elementSelectedFeedback';
38
+ static readonly KIND = SelectFeedbackAction.KIND;
44
39
  private sprottySelectCommand: SprottySelectCommand;
45
40
 
46
41
  constructor(@inject(TYPES.Action) public action: SelectFeedbackAction) {
47
42
  super();
48
- this.sprottySelectCommand = new SprottySelectCommand(action);
43
+ this.sprottySelectCommand = new SprottySelectCommand({ ...action, kind: SelectAction.KIND });
49
44
  }
50
45
 
51
46
  execute(context: CommandExecutionContext): SModelRoot {
@@ -60,26 +55,3 @@ export class SelectFeedbackCommand extends Command {
60
55
  return this.sprottySelectCommand.redo(context);
61
56
  }
62
57
  }
63
-
64
- @injectable()
65
- export class SelectAllFeedbackCommand extends Command {
66
- static readonly KIND = 'allSelectedFeedback';
67
- private sprottySelectAllCommand: SprottySelectAllCommand;
68
-
69
- constructor(@inject(TYPES.Action) public action: SelectAllFeedbackAction) {
70
- super();
71
- this.sprottySelectAllCommand = new SprottySelectAllCommand(action);
72
- }
73
-
74
- execute(context: CommandExecutionContext): SModelRoot {
75
- return this.sprottySelectAllCommand.execute(context);
76
- }
77
-
78
- undo(context: CommandExecutionContext): SModelRoot {
79
- return this.sprottySelectAllCommand.undo(context);
80
- }
81
-
82
- redo(context: CommandExecutionContext): SModelRoot {
83
- return this.sprottySelectAllCommand.redo(context);
84
- }
85
- }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,8 +13,21 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { SelectMouseListener } from 'sprotty';
17
-
16
+ import { Action, SelectAction } from '@eclipse-glsp/protocol';
17
+ import {
18
+ BringToFrontAction,
19
+ findParentByFeature,
20
+ isCtrlOrCmd,
21
+ isSelectable,
22
+ SButton,
23
+ SelectMouseListener,
24
+ SModelElement,
25
+ SModelRoot,
26
+ SRoutableElement,
27
+ SRoutingHandle,
28
+ SwitchEditModeAction
29
+ } from 'sprotty';
30
+ import { toArray } from 'sprotty/lib/utils/iterable';
18
31
  import { DEFAULT_RANK, Ranked } from '../rank/model';
19
32
 
20
33
  /**
@@ -23,4 +36,70 @@ import { DEFAULT_RANK, Ranked } from '../rank/model';
23
36
  */
24
37
  export class RankedSelectMouseListener extends SelectMouseListener implements Ranked {
25
38
  rank: number = DEFAULT_RANK - 1; /* we want to be executed before all default mouse listeners */
39
+
40
+ override mouseDown(target: SModelElement, event: MouseEvent): Action[] {
41
+ const result: Action[] = [];
42
+ if (this.buttonHandlerRegistry !== undefined && target instanceof SButton && target.enabled) {
43
+ const buttonHandler = this.buttonHandlerRegistry.get(target.type);
44
+ if (buttonHandler !== undefined) {
45
+ return buttonHandler.buttonPressed(target);
46
+ }
47
+ }
48
+ const selectableTarget = findParentByFeature(target, isSelectable);
49
+ if (selectableTarget !== undefined || target instanceof SModelRoot) {
50
+ this.hasDragged = false;
51
+ let deselect: SModelElement[] = [];
52
+ // multi-selection?
53
+ if (!isCtrlOrCmd(event)) {
54
+ deselect = toArray(
55
+ target.root.index
56
+ .all()
57
+ .filter(
58
+ element =>
59
+ isSelectable(element) &&
60
+ element.selected &&
61
+ !(selectableTarget instanceof SRoutingHandle && element === (selectableTarget.parent as SModelElement))
62
+ )
63
+ );
64
+ }
65
+ if (selectableTarget !== undefined) {
66
+ if (!selectableTarget.selected) {
67
+ this.wasSelected = false;
68
+ result.push(
69
+ SelectAction.create({
70
+ selectedElementsIDs: [selectableTarget.id],
71
+ deselectedElementsIDs: deselect.map(e => e.id)
72
+ })
73
+ );
74
+ result.push(BringToFrontAction.create([selectableTarget.id]));
75
+ const routableDeselect = deselect.filter(e => e instanceof SRoutableElement).map(e => e.id);
76
+ if (selectableTarget instanceof SRoutableElement) {
77
+ result.push(
78
+ SwitchEditModeAction.create({
79
+ elementsToActivate: [selectableTarget.id],
80
+ elementsToDeactivate: routableDeselect
81
+ })
82
+ );
83
+ } else if (routableDeselect.length > 0) {
84
+ result.push(SwitchEditModeAction.create({ elementsToDeactivate: routableDeselect }));
85
+ }
86
+ } else if (isCtrlOrCmd(event)) {
87
+ this.wasSelected = false;
88
+ result.push(SelectAction.create({ deselectedElementsIDs: [selectableTarget.id] }));
89
+ if (selectableTarget instanceof SRoutableElement) {
90
+ result.push(SwitchEditModeAction.create({ elementsToDeactivate: [selectableTarget.id] }));
91
+ }
92
+ } else {
93
+ this.wasSelected = true;
94
+ }
95
+ } else {
96
+ result.push(SelectAction.create({ deselectedElementsIDs: deselect.map(e => e.id) }));
97
+ const routableDeselect = deselect.filter(e => e instanceof SRoutableElement).map(e => e.id);
98
+ if (routableDeselect.length > 0) {
99
+ result.push(SwitchEditModeAction.create({ elementsToDeactivate: routableDeselect }));
100
+ }
101
+ }
102
+ }
103
+ return result;
104
+ }
26
105
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020-2021 EclipseSource and others.
2
+ * Copyright (c) 2020-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,11 +14,11 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  /* eslint-disable import/no-deprecated,no-unused-expressions */
17
- import { Action } from '@eclipse-glsp/protocol';
17
+ import { Action, SModelElementSchema } from '@eclipse-glsp/protocol';
18
18
  import { AssertionError, expect } from 'chai';
19
19
  import { Container, injectable } from 'inversify';
20
- import { defaultModule, SGraphFactory, SModelElementSchema, SModelRoot, TYPES } from 'sprotty';
21
- import { GLSP_TYPES } from '../../base/types';
20
+ import { defaultModule, SGraphFactory, SModelRoot } from 'sprotty';
21
+ import { TYPES } from '../../base/types';
22
22
  import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
23
23
  import { SelectFeedbackAction } from './select-feedback-action';
24
24
  import { SelectionListener, SelectionService } from './selection-service';
@@ -74,14 +74,16 @@ class MockSelectionListener implements SelectionListener {
74
74
  function createContainer(): Container {
75
75
  const container = new Container();
76
76
  container.load(defaultModule);
77
+ // eslint-disable-next-line deprecation/deprecation
77
78
  container.rebind(TYPES.IModelFactory).to(SGraphFactory).inSingletonScope();
78
- container.bind(GLSP_TYPES.IFeedbackActionDispatcher).to(MockFeedbackActionDispatcher).inSingletonScope();
79
+ container.bind(TYPES.IFeedbackActionDispatcher).to(MockFeedbackActionDispatcher).inSingletonScope();
79
80
  container.bind(SelectionService).toSelf().inSingletonScope();
80
- container.bind(GLSP_TYPES.SelectionService).toService(SelectionService);
81
+ container.bind(TYPES.SelectionService).toService(SelectionService);
81
82
  return container;
82
83
  }
83
84
 
84
85
  describe('SelectionService', () => {
86
+ // eslint-disable-next-line deprecation/deprecation
85
87
  let graphFactory: SGraphFactory;
86
88
  let root: SModelRoot;
87
89
  let selectionService: SelectionService;
@@ -89,10 +91,11 @@ describe('SelectionService', () => {
89
91
 
90
92
  beforeEach(() => {
91
93
  const container = createContainer();
94
+ // eslint-disable-next-line deprecation/deprecation
92
95
  graphFactory = container.get<SGraphFactory>(TYPES.IModelFactory);
93
96
  root = createRoot('node1', 'node2', 'node3', 'node4', 'node5');
94
- selectionService = container.get<SelectionService>(GLSP_TYPES.SelectionService);
95
- feedbackDispatcher = container.get<MockFeedbackActionDispatcher>(GLSP_TYPES.IFeedbackActionDispatcher);
97
+ selectionService = container.get<SelectionService>(TYPES.SelectionService);
98
+ feedbackDispatcher = container.get<MockFeedbackActionDispatcher>(TYPES.IFeedbackActionDispatcher);
96
99
  });
97
100
 
98
101
  describe('Initial State', () => {
@@ -344,7 +347,7 @@ describe('SelectionService', () => {
344
347
  expect(selectionService.hasSelectedElements()).to.equal(expectedSelection.length > 0);
345
348
  expect(selectionService.getSelectedElementIDs()).to.have.lengthOf(expectedSelection.length);
346
349
  if (expectedSelection.length > 0) {
347
- expect(selectionService.getSelectedElementIDs()).to.have.all.keys(...expectedSelection);
350
+ expect(selectionService.getSelectedElementIDs()).to.have.ordered.members(expectedSelection);
348
351
  }
349
352
  }
350
353
 
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,24 +13,23 @@
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, remove, SelectAction, SelectAllAction } from '@eclipse-glsp/protocol';
16
+ import { Action, distinctAdd, pluck, remove, SelectAction, SelectAllAction } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable, multiInject, optional } from 'inversify';
18
18
  import {
19
19
  Command,
20
20
  CommandExecutionContext,
21
21
  ILogger,
22
22
  isSelectable,
23
- isSelected,
24
23
  SChildElement,
24
+ Selectable,
25
25
  SelectAllCommand as SprottySelectAllCommand,
26
26
  SelectCommand as SprottySelectCommand,
27
27
  SModelElement,
28
- SModelRoot,
29
- SParentElement,
30
- TYPES
28
+ SModelRoot
31
29
  } from 'sprotty';
32
30
  import { SModelRootListener } from '../../base/model/update-model-command';
33
- import { GLSP_TYPES } from '../../base/types';
31
+ import { TYPES } from '../../base/types';
32
+ import { getElements, getMatchingElements } from '../../utils/smodel-util';
34
33
  import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
35
34
  import { SelectFeedbackAction } from './select-feedback-action';
36
35
 
@@ -43,10 +42,10 @@ export class SelectionService implements SModelRootListener {
43
42
  private root: Readonly<SModelRoot>;
44
43
  private selectedElementIDs: Set<string> = new Set();
45
44
 
46
- @inject(GLSP_TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
45
+ @inject(TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
47
46
  @inject(TYPES.ILogger) protected logger: ILogger;
48
47
 
49
- constructor(@multiInject(GLSP_TYPES.SelectionListener) @optional() protected selectionListeners: SelectionListener[] = []) {}
48
+ constructor(@multiInject(TYPES.SelectionListener) @optional() protected selectionListeners: SelectionListener[] = []) {}
50
49
 
51
50
  register(selectionListener: SelectionListener): void {
52
51
  distinctAdd(this.selectionListeners, selectionListener);
@@ -100,7 +99,12 @@ export class SelectionService implements SModelRootListener {
100
99
  ![...prevSelectedElementIDs].every(value => this.selectedElementIDs.has(value));
101
100
  if (selectionChanged) {
102
101
  // aggregate to feedback action handling all elements as only the last feedback is restored
103
- this.dispatchFeedback([new SelectFeedbackAction([...this.selectedElementIDs], [...deselectedElementIDs])]);
102
+ this.dispatchFeedback([
103
+ SelectFeedbackAction.create({
104
+ selectedElementsIDs: [...this.selectedElementIDs],
105
+ deselectedElementsIDs: [...deselectedElementIDs]
106
+ })
107
+ ]);
104
108
  }
105
109
 
106
110
  const rootChanged = prevRoot !== root;
@@ -122,16 +126,16 @@ export class SelectionService implements SModelRootListener {
122
126
  return this.root;
123
127
  }
124
128
 
125
- getSelectedElements(): Readonly<SModelElement>[] {
126
- return Array.from(this.root.index.all().filter(isSelected));
129
+ getSelectedElements(): Readonly<SModelElement & Selectable>[] {
130
+ return getElements(this.root.index, Array.from(this.selectedElementIDs), isSelectable);
127
131
  }
128
132
 
129
133
  /**
130
134
  * QUERY METHODS
131
135
  */
132
136
 
133
- getSelectedElementIDs(): Set<string> {
134
- return this.selectedElementIDs;
137
+ getSelectedElementIDs(): string[] {
138
+ return [...this.selectedElementIDs];
135
139
  }
136
140
 
137
141
  hasSelectedElements(): boolean {
@@ -147,6 +151,11 @@ export class SelectionService implements SModelRootListener {
147
151
  }
148
152
  }
149
153
 
154
+ /**
155
+ * Handles a {@link SelectAction} and propagates the new selection to the {@link SelectionService}.
156
+ * Other tools might be selection-sensitive which means {@link SelectAction}s must be processed as fast as possible.
157
+ * Handling the action with a command ensures that the action is processed before the next render tick.
158
+ */
150
159
  @injectable()
151
160
  export class SelectCommand extends Command {
152
161
  static readonly KIND = SprottySelectCommand.KIND;
@@ -156,43 +165,37 @@ export class SelectCommand extends Command {
156
165
 
157
166
  constructor(
158
167
  @inject(TYPES.Action) public action: SelectAction,
159
- @inject(GLSP_TYPES.SelectionService) public selectionService: SelectionService
168
+ @inject(TYPES.SelectionService) public selectionService: SelectionService
160
169
  ) {
161
170
  super();
162
171
  }
163
172
 
164
173
  execute(context: CommandExecutionContext): SModelRoot {
165
174
  const model = context.root;
166
- this.action.selectedElementsIDs.forEach(id => {
167
- const element = model.index.getById(id);
168
- if (element instanceof SChildElement && isSelectable(element)) {
169
- this.selected.push(element);
170
- }
171
- });
172
- this.action.deselectedElementsIDs.forEach(id => {
173
- const element = model.index.getById(id);
174
- if (element instanceof SChildElement && isSelectable(element)) {
175
- this.deselected.push(element);
176
- }
177
- });
178
- return this.redo(context);
175
+ const selectionGuard = (element: any): element is SModelElement => element instanceof SChildElement && isSelectable(element);
176
+ const selectedElements = getElements(model.index, this.action.selectedElementsIDs, selectionGuard);
177
+ const deselectedElements = getElements(model.index, this.action.deselectedElementsIDs, selectionGuard);
178
+
179
+ this.selectionService.updateSelection(model, pluck(selectedElements, 'id'), pluck(deselectedElements, 'id'));
180
+ return model;
179
181
  }
180
182
 
183
+ // Basically no-op since client-side undo is not supported in GLSP.
181
184
  undo(context: CommandExecutionContext): SModelRoot {
182
- const select = this.deselected.map(element => element.id);
183
- const deselect = this.selected.map(element => element.id);
184
- this.selectionService.updateSelection(context.root, select, deselect);
185
185
  return context.root;
186
186
  }
187
187
 
188
+ // Basically no-op since client-side redo is not supported in GLSP.
188
189
  redo(context: CommandExecutionContext): SModelRoot {
189
- const select = this.selected.map(element => element.id);
190
- const deselect = this.deselected.map(element => element.id);
191
- this.selectionService.updateSelection(context.root, select, deselect);
192
190
  return context.root;
193
191
  }
194
192
  }
195
193
 
194
+ /**
195
+ * Handles a {@link SelectAllAction} and propagates the new selection to the {@link SelectionService}.
196
+ * Other tools might be selection-sensitive which means {@link SelectionAllAction}s must be processed as fast as possible.
197
+ * Handling the action with a command ensures that the action is processed before the next render tick.
198
+ */
196
199
  @injectable()
197
200
  export class SelectAllCommand extends Command {
198
201
  static readonly KIND = SprottySelectAllCommand.KIND;
@@ -200,44 +203,33 @@ export class SelectAllCommand extends Command {
200
203
 
201
204
  constructor(
202
205
  @inject(TYPES.Action) public action: SelectAllAction,
203
- @inject(GLSP_TYPES.SelectionService) public selectionService: SelectionService
206
+ @inject(TYPES.SelectionService) public selectionService: SelectionService
204
207
  ) {
205
208
  super();
206
209
  }
207
210
 
208
211
  execute(context: CommandExecutionContext): SModelRoot {
209
- return this.redo(context);
212
+ const model = context.root;
213
+ const selectionGuard = (element: any): element is SModelElement => element instanceof SChildElement && isSelectable(element);
214
+
215
+ const selectables = getMatchingElements(model.index, selectionGuard);
216
+ const selectableIds = pluck(selectables, 'id');
217
+ if (this.action.select) {
218
+ this.selectionService.updateSelection(model, selectableIds, []);
219
+ } else {
220
+ this.selectionService.updateSelection(model, [], selectableIds);
221
+ }
222
+
223
+ return model;
210
224
  }
211
225
 
226
+ // Basically no-op since client-side undo is not supported in GLSP.
212
227
  undo(context: CommandExecutionContext): SModelRoot {
213
- const index = context.root.index;
214
- for (const previousState of this.previousSelection) {
215
- const element = index.getById(previousState[0]);
216
- if (element !== undefined && isSelectable(element)) {
217
- element.selected = previousState[1];
218
- }
219
- }
220
228
  return context.root;
221
229
  }
222
230
 
231
+ // Basically no-op since client-side redo is not supported in GLSP.
223
232
  redo(context: CommandExecutionContext): SModelRoot {
224
- const selectables: string[] = [];
225
- this.selectAll(context.root, this.action.select, selectables);
226
- if (this.action.select) {
227
- this.selectionService.updateSelection(context.root, selectables, []);
228
- } else {
229
- this.selectionService.updateSelection(context.root, [], selectables);
230
- }
231
233
  return context.root;
232
234
  }
233
-
234
- protected selectAll(element: SParentElement, newState: boolean, selected: string[]): void {
235
- if (isSelectable(element)) {
236
- this.previousSelection.set(element.id, element.selected);
237
- selected.push(element.id);
238
- }
239
- for (const child of element.children) {
240
- this.selectAll(child, newState, selected);
241
- }
242
- }
243
235
  }
@@ -13,13 +13,13 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { ModelSourceChangedAction } from '@eclipse-glsp/protocol';
16
+ import { SourceModelChangedAction } from '@eclipse-glsp/protocol';
17
17
  import { ContainerModule } from 'inversify';
18
18
  import { configureActionHandler } from 'sprotty';
19
- import { ModelSourceChangedActionHandler } from './model-source-changed-action-handler';
19
+ import { SourceModelChangedActionHandler } from './source-model-changed-action-handler';
20
20
 
21
- const modelSourceWatcherModule = new ContainerModule((bind, _unbind, isBound) => {
22
- configureActionHandler({ bind, isBound }, ModelSourceChangedAction.KIND, ModelSourceChangedActionHandler);
21
+ const sourceModelWatcherModule = new ContainerModule((bind, _unbind, isBound) => {
22
+ configureActionHandler({ bind, isBound }, SourceModelChangedAction.KIND, SourceModelChangedActionHandler);
23
23
  });
24
24
 
25
- export default modelSourceWatcherModule;
25
+ export default sourceModelWatcherModule;
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020-2021 EclipseSource and others.
2
+ * Copyright (c) 2020-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,48 +13,43 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import {
17
- Action,
18
- GLSPServerStatusAction,
19
- isModelSourceChangedAction,
20
- ModelSourceChangedAction,
21
- ServerMessageAction
22
- } from '@eclipse-glsp/protocol';
16
+ import { Action, ServerMessageAction, ServerStatusAction, SourceModelChangedAction } from '@eclipse-glsp/protocol';
23
17
  import { inject, injectable, optional } from 'inversify';
24
- import { IActionDispatcher, IActionHandler, TYPES, ViewerOptions } from 'sprotty';
18
+ import { IActionDispatcher, IActionHandler, ViewerOptions } from 'sprotty';
19
+ import { TYPES } from '../../base/types';
25
20
 
26
21
  /**
27
- * An external handler of the model source change event.
22
+ * An external handler of the source model change event.
28
23
  *
29
24
  * This allows external applications to react specifically to this event, e.g. by bringing up the diagram,
30
25
  * check their dirty state, show a dialog, etc.
31
26
  */
32
27
  @injectable()
33
- export abstract class ExternalModelSourceChangedHandler {
28
+ export abstract class ExternalSourceModelChangedHandler {
34
29
  /**
35
- * Notifies about a change of the model source.
30
+ * Notifies about a change of the source model.
36
31
  * @returns actions to be dispatched after the notification.
37
32
  */
38
- abstract notifyModelSourceChange(modelSourceName: string, options: ViewerOptions): Promise<Action[]>;
33
+ abstract notifySourceModelChange(sourceModelName: string, options: ViewerOptions): Promise<Action[]>;
39
34
  }
40
35
 
41
36
  @injectable()
42
- export class ModelSourceChangedActionHandler implements IActionHandler {
37
+ export class SourceModelChangedActionHandler implements IActionHandler {
43
38
  @inject(TYPES.IActionDispatcher)
44
39
  protected dispatcher: IActionDispatcher;
45
40
 
46
41
  @inject(TYPES.ViewerOptions)
47
42
  protected options: ViewerOptions;
48
43
 
49
- @inject(ExternalModelSourceChangedHandler)
44
+ @inject(ExternalSourceModelChangedHandler)
50
45
  @optional()
51
- protected externalModelSourceChangedHandler?: ExternalModelSourceChangedHandler;
46
+ protected externalModelSourceChangedHandler?: ExternalSourceModelChangedHandler;
52
47
 
53
48
  handle(action: Action): void {
54
- if (isModelSourceChangedAction(action)) {
49
+ if (SourceModelChangedAction.is(action)) {
55
50
  if (this.externalModelSourceChangedHandler) {
56
51
  this.externalModelSourceChangedHandler
57
- .notifyModelSourceChange(action.modelSourceName, this.options)
52
+ .notifySourceModelChange(action.sourceModelName, this.options)
58
53
  .then(actions => this.dispatcher.dispatchAll(actions));
59
54
  return;
60
55
  }
@@ -62,13 +57,13 @@ export class ModelSourceChangedActionHandler implements IActionHandler {
62
57
  }
63
58
  }
64
59
 
65
- protected showSimpleNotification(action: ModelSourceChangedAction): void {
66
- const message = `The model source ${action.modelSourceName} has changed. You might want to consider reloading.`;
60
+ protected showSimpleNotification(action: SourceModelChangedAction): void {
61
+ const message = `The source model ${action.sourceModelName} has changed. You might want to consider reloading.`;
67
62
  const timeout = 0;
68
63
  const severity = 'WARNING';
69
64
  this.dispatcher.dispatchAll([
70
- { kind: GLSPServerStatusAction.KIND, severity, timeout, message } as GLSPServerStatusAction,
71
- { kind: ServerMessageAction.KIND, severity, timeout, message } as ServerMessageAction
65
+ ServerStatusAction.create(message, { severity, timeout }),
66
+ ServerMessageAction.create(message, { severity, timeout })
72
67
  ]);
73
68
  }
74
69
  }