@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) 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,6 +14,7 @@
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 { SNodeSchema } from '@eclipse-glsp/protocol';
17
18
  import { expect } from 'chai';
18
19
  import { Container } from 'inversify';
19
20
  import 'mocha';
@@ -26,7 +27,6 @@ import {
26
27
  SIssueMarker,
27
28
  SModelElement,
28
29
  SModelRoot,
29
- SNodeSchema,
30
30
  SParentElement,
31
31
  TYPES
32
32
  } from 'sprotty';
@@ -38,7 +38,9 @@ import { MarkerNavigator } from './marker-navigator';
38
38
  describe('MarkerNavigator', () => {
39
39
  const container = new Container();
40
40
  container.load(defaultModule, decorationModule, markerNavigatorModule);
41
+ // eslint-disable-next-line deprecation/deprecation
41
42
  container.rebind(TYPES.IModelFactory).to(SGraphFactory).inSingletonScope();
43
+ // eslint-disable-next-line deprecation/deprecation
42
44
  const graphFactory = container.get<SGraphFactory>(TYPES.IModelFactory);
43
45
  const markerNavigator = container.get<MarkerNavigator>(MarkerNavigator);
44
46
 
@@ -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,45 +13,60 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, CenterAction, Point } from '@eclipse-glsp/protocol';
16
+ import { Action, CenterAction, hasArrayProp, hasStringProp, Point, SelectAction } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
18
  import {
19
+ ActionDispatcher,
19
20
  BoundsAware,
20
- CenterCommand,
21
- Command,
22
- CommandExecutionContext,
23
- CommandReturn,
24
21
  findParentByFeature,
22
+ IActionHandler,
25
23
  IContextMenuItemProvider,
26
24
  isBoundsAware,
27
25
  isSelectable,
28
26
  KeyListener,
29
27
  MenuItem,
30
28
  Selectable,
31
- SelectAction,
32
29
  SIssueMarker,
33
30
  SIssueSeverity,
34
31
  SModelElement,
35
- SModelRoot,
36
- TYPES
32
+ SModelRoot
37
33
  } from 'sprotty';
38
34
  import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
39
- import { GLSP_TYPES } from '../../base/types';
35
+ import { TYPES } from '../../base/types';
40
36
  import { collectIssueMarkers, MarkerPredicates } from '../../utils/marker';
41
- import { isSelectableAndBoundsAware } from '../../utils/smodel-util';
42
- import { SelectCommand, SelectionService } from '../select/selection-service';
37
+ import { getElements, isSelectableAndBoundsAware } from '../../utils/smodel-util';
38
+ import { SelectionService } from '../select/selection-service';
43
39
 
44
- export class NavigateToMarkerAction implements Action {
45
- static readonly KIND = 'navigateToMarker';
40
+ export interface NavigateToMarkerAction extends Action {
41
+ kind: typeof NavigateToMarkerAction.KIND;
46
42
 
47
- constructor(
48
- public readonly direction: 'next' | 'previous' = 'next',
49
- public readonly selectedElementIds?: string[],
50
- public readonly severities: SIssueSeverity[] = MarkerNavigator.ALL_SEVERITIES,
51
- public kind = NavigateToMarkerAction.KIND
52
- ) {}
43
+ direction: MarkerNavigationDirection;
44
+ selectedElementIds?: string[];
45
+ severities: SIssueSeverity[];
53
46
  }
54
47
 
48
+ export type MarkerNavigationDirection = 'next' | 'previous';
49
+
50
+ export namespace NavigateToMarkerAction {
51
+ export const KIND = 'navigateToMarker';
52
+
53
+ export function is(object: any): object is NavigateToMarkerAction {
54
+ return Action.hasKind(object, KIND) && hasStringProp(object, 'direction') && hasArrayProp(object, 'severities');
55
+ }
56
+
57
+ export function create(options: {
58
+ direction?: MarkerNavigationDirection;
59
+ selectedElementIds?: string[];
60
+ severities?: SIssueSeverity[];
61
+ }): NavigateToMarkerAction {
62
+ return {
63
+ kind: KIND,
64
+ direction: 'next',
65
+ severities: MarkerNavigator.ALL_SEVERITIES,
66
+ ...options
67
+ };
68
+ }
69
+ }
55
70
  export class SModelElementComparator {
56
71
  compare(_one: SModelElement, _other: SModelElement): number {
57
72
  return 0;
@@ -89,7 +104,7 @@ export class MarkerNavigator {
89
104
  protected markerComparator: SModelElementComparator;
90
105
 
91
106
  next(
92
- root: SModelRoot,
107
+ root: Readonly<SModelRoot>,
93
108
  current?: SModelElement & BoundsAware,
94
109
  predicate: (marker: SIssueMarker) => boolean = MarkerPredicates.ALL
95
110
  ): SIssueMarker | undefined {
@@ -101,7 +116,7 @@ export class MarkerNavigator {
101
116
  }
102
117
 
103
118
  previous(
104
- root: SModelRoot,
119
+ root: Readonly<SModelRoot>,
105
120
  current?: SModelElement & BoundsAware,
106
121
  predicate: (marker: SIssueMarker) => boolean = MarkerPredicates.ALL
107
122
  ): SIssueMarker | undefined {
@@ -112,7 +127,7 @@ export class MarkerNavigator {
112
127
  return markers[this.getPreviousIndex(current, markers) % markers.length];
113
128
  }
114
129
 
115
- protected getMarkers(root: SModelRoot, predicate: (marker: SIssueMarker) => boolean): SIssueMarker[] {
130
+ protected getMarkers(root: Readonly<SModelRoot>, predicate: (marker: SIssueMarker) => boolean): SIssueMarker[] {
116
131
  const markers = collectIssueMarkers(root);
117
132
  return markers.filter(predicate).sort(this.markerComparator.compare);
118
133
  }
@@ -137,86 +152,56 @@ export class MarkerNavigator {
137
152
  }
138
153
 
139
154
  @injectable()
140
- export class NavigateToMarkerCommand extends Command {
141
- static KIND = NavigateToMarkerAction.KIND;
142
-
155
+ export class NavigateToMarkerActionHandler implements IActionHandler {
143
156
  @inject(SModelElementComparator)
144
157
  protected markerComparator: SModelElementComparator;
145
158
 
146
159
  @inject(MarkerNavigator)
147
160
  protected markerNavigator: MarkerNavigator;
148
161
 
149
- @inject(GLSP_TYPES.SelectionService)
162
+ @inject(TYPES.SelectionService)
150
163
  protected selectionService: SelectionService;
151
164
 
152
- protected selectCommand: SelectCommand;
153
- protected centerCommand: CenterCommand;
165
+ @inject(TYPES.IActionDispatcher)
166
+ protected actionDispatcher: ActionDispatcher;
154
167
 
155
- constructor(@inject(TYPES.Action) protected action: NavigateToMarkerAction) {
156
- super();
157
- }
168
+ handle(action: NavigateToMarkerAction): void {
169
+ const selected = this.getSelectedElements(action);
170
+ const target = this.getTarget(action, selected);
158
171
 
159
- execute(context: CommandExecutionContext): CommandReturn {
160
- const root = context.root;
161
- const selected = this.getSelectedElements(root);
162
- const target = this.getTarget(selected, root);
163
- if (target === undefined) {
164
- return root;
165
- }
166
-
167
- const selectableTarget = findParentByFeature(target, isSelectable);
172
+ const selectableTarget = target ? findParentByFeature(target, isSelectable) : undefined;
168
173
  if (selectableTarget) {
169
- const deselect = selected.map(e => e.id).filter(id => id !== selectableTarget.id);
170
- this.selectCommand = new SelectCommand(new SelectAction([selectableTarget.id], deselect), this.selectionService);
171
- this.centerCommand = new CenterCommand(new CenterAction([selectableTarget.id]));
172
- this.centerCommand.execute(context);
173
- return this.selectCommand.execute(context);
174
+ const deselectedElementsIDs = selected.map(e => e.id).filter(id => id !== selectableTarget.id);
175
+ this.actionDispatcher.dispatch(SelectAction.create({ selectedElementsIDs: [selectableTarget.id], deselectedElementsIDs }));
176
+ this.actionDispatcher.dispatch(CenterAction.create([selectableTarget.id]));
174
177
  }
175
- return root;
176
178
  }
177
179
 
178
- protected getSelectedElements(root: SModelRoot): (SModelElement & Selectable)[] {
179
- let selectedIds = [];
180
- if (this.action.selectedElementIds !== undefined && this.action.selectedElementIds.length > 0) {
181
- selectedIds = this.action.selectedElementIds;
182
- } else {
183
- selectedIds = Array.from(this.selectionService.getSelectedElementIDs());
180
+ protected getSelectedElements(action: NavigateToMarkerAction): (SModelElement & Selectable)[] {
181
+ if (action.selectedElementIds && action.selectedElementIds.length > 0) {
182
+ return getElements(this.selectionService.getModelRoot().index, action.selectedElementIds, isSelectable);
184
183
  }
185
- return selectedIds.map(id => root.index.getById(id)).filter(isSelectable);
184
+ return this.selectionService.getSelectedElements();
186
185
  }
187
186
 
188
- protected getTarget(selected: SModelElement[], root: SModelRoot): SIssueMarker | undefined {
189
- const selectedBoundsAware = selected.filter(isBoundsAware).sort(this.markerComparator.compare);
190
- const currentTopmost = selectedBoundsAware.length > 0 ? selectedBoundsAware[0] : undefined;
191
- if (this.action.direction === 'previous') {
192
- return this.markerNavigator.previous(root, currentTopmost, marker => this.matchesSeverities(marker));
187
+ protected getTarget(action: NavigateToMarkerAction, selected: SModelElement[]): SIssueMarker | undefined {
188
+ const root = this.selectionService.getModelRoot();
189
+ const target = selected.sort(this.markerComparator.compare).find(isBoundsAware);
190
+ if (action.direction === 'previous') {
191
+ return this.markerNavigator.previous(root, target, marker => this.matchesSeverities(action, marker));
193
192
  } else {
194
- return this.markerNavigator.next(root, currentTopmost, marker => this.matchesSeverities(marker));
195
- }
196
- }
197
-
198
- protected matchesSeverities(marker: SIssueMarker): boolean {
199
- return marker.issues.find(issue => this.action.severities.includes(issue.severity)) !== undefined;
200
- }
201
-
202
- undo(context: CommandExecutionContext): CommandReturn {
203
- if (this.selectCommand) {
204
- context.root = this.selectCommand.undo(context);
193
+ return this.markerNavigator.next(root, target, marker => this.matchesSeverities(action, marker));
205
194
  }
206
- return this.centerCommand ? this.centerCommand.undo(context) : context.root;
207
195
  }
208
196
 
209
- redo(context: CommandExecutionContext): CommandReturn {
210
- if (this.selectCommand) {
211
- context.root = this.selectCommand.redo(context);
212
- }
213
- return this.centerCommand ? this.centerCommand.redo(context) : context.root;
197
+ protected matchesSeverities(action: NavigateToMarkerAction, marker: SIssueMarker): boolean {
198
+ return marker.issues.find(issue => action.severities.includes(issue.severity)) !== undefined;
214
199
  }
215
200
  }
216
201
 
217
202
  @injectable()
218
203
  export class MarkerNavigatorContextMenuItemProvider implements IContextMenuItemProvider {
219
- @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService;
204
+ @inject(TYPES.SelectionService) protected selectionService: SelectionService;
220
205
 
221
206
  getItems(root: Readonly<SModelRoot>, lastMousePosition?: Point): Promise<MenuItem[]> {
222
207
  const selectedElementIds = Array.from(this.selectionService.getSelectedElementIDs());
@@ -232,14 +217,14 @@ export class MarkerNavigatorContextMenuItemProvider implements IContextMenuItemP
232
217
  id: 'next-marker',
233
218
  label: 'Next marker',
234
219
  group: 'marker',
235
- actions: [new NavigateToMarkerAction('next', selectedElementIds)],
220
+ actions: [NavigateToMarkerAction.create({ direction: 'next', selectedElementIds })],
236
221
  isEnabled: () => hasMarkers
237
222
  },
238
223
  {
239
224
  id: 'previous-marker',
240
225
  label: 'Previous marker',
241
226
  group: 'marker',
242
- actions: [new NavigateToMarkerAction('previous', selectedElementIds)],
227
+ actions: [NavigateToMarkerAction.create({ direction: 'previous', selectedElementIds })],
243
228
  isEnabled: () => hasMarkers
244
229
  }
245
230
  ]
@@ -250,11 +235,11 @@ export class MarkerNavigatorContextMenuItemProvider implements IContextMenuItemP
250
235
 
251
236
  @injectable()
252
237
  export class MarkerNavigatorKeyListener extends KeyListener {
253
- keyDown(_element: SModelElement, event: KeyboardEvent): Action[] {
238
+ override keyDown(_element: SModelElement, event: KeyboardEvent): Action[] {
254
239
  if (matchesKeystroke(event, 'Period', 'ctrl')) {
255
- return [new NavigateToMarkerAction('next')];
240
+ return [NavigateToMarkerAction.create({ direction: 'next' })];
256
241
  } else if (matchesKeystroke(event, 'Comma', 'ctrl')) {
257
- return [new NavigateToMarkerAction('previous')];
242
+ return [NavigateToMarkerAction.create({ direction: 'previous' })];
258
243
  }
259
244
  return [];
260
245
  }
@@ -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,27 +13,15 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, DeleteMarkersAction, Marker, SetMarkersAction } from '@eclipse-glsp/protocol';
16
+ import { Action, DeleteMarkersAction, hasArrayProp, Marker, SetMarkersAction } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable, optional } from 'inversify';
18
- import {
19
- Command,
20
- CommandExecutionContext,
21
- CommandReturn,
22
- IActionDispatcher,
23
- SIssue,
24
- SIssueMarker,
25
- SModelElement,
26
- SModelRoot,
27
- SParentElement,
28
- TYPES
29
- } from 'sprotty';
18
+ import { CommandExecutionContext, CommandReturn, IActionDispatcher, IActionHandler, ICommand, SIssueMarker, SParentElement } from 'sprotty';
30
19
  import { EditorContextService } from '../../base/editor-context-service';
31
- import { GLSP_TYPES } from '../../base/types';
20
+ import { TYPES } from '../../base/types';
32
21
  import { removeCssClasses } from '../../utils/smodel-util';
33
- import { getSeverity } from '../hover/hover';
34
22
  import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
35
23
  import { FeedbackCommand } from '../tool-feedback/model';
36
- import { createSIssue, getOrCreateSIssueMarker, getSIssueMarker } from './issue-marker';
24
+ import { createSIssue, getOrCreateSIssueMarker, getSeverity, getSIssueMarker, GIssueMarker } from './issue-marker';
37
25
 
38
26
  /**
39
27
  * Feedback emitter sending actions for visualizing model validation feedback and
@@ -41,11 +29,11 @@ import { createSIssue, getOrCreateSIssueMarker, getSIssueMarker } from './issue-
41
29
  */
42
30
  @injectable()
43
31
  export class ValidationFeedbackEmitter implements IFeedbackEmitter {
44
- @inject(GLSP_TYPES.IFeedbackActionDispatcher) protected feedbackActionDispatcher: IFeedbackActionDispatcher;
32
+ @inject(TYPES.IFeedbackActionDispatcher) protected feedbackActionDispatcher: IFeedbackActionDispatcher;
45
33
 
46
34
  @inject(TYPES.IActionDispatcherProvider) protected actionDispatcher: () => Promise<IActionDispatcher>;
47
35
 
48
- private registeredAction: MarkersAction;
36
+ private registeredAction: ApplyMarkersAction;
49
37
 
50
38
  // eslint-disable-next-line @typescript-eslint/no-empty-function
51
39
  private constructor() {}
@@ -54,13 +42,13 @@ export class ValidationFeedbackEmitter implements IFeedbackEmitter {
54
42
  * Register the action that should be emitted for visualizing validation feedback.
55
43
  * @param action the action that should be emitted when the model is updated and that will visualize the model validation feedback.
56
44
  */
57
- registerValidationFeedbackAction(action: MarkersAction): void {
45
+ registerValidationFeedbackAction(action: ApplyMarkersAction): void {
58
46
  // De-register old action responsible for applying markers and re-applying them when the model is updated
59
47
  this.feedbackActionDispatcher.deregisterFeedback(this, []);
60
48
 
61
49
  // Clear existing markers
62
50
  if (this.registeredAction !== undefined) {
63
- const deleteMarkersAction = new DeleteMarkersAction(this.registeredAction.markers);
51
+ const deleteMarkersAction = DeleteMarkersAction.create(this.registeredAction.markers);
64
52
  this.actionDispatcher().then(dispatcher => dispatcher.dispatch(deleteMarkersAction));
65
53
  }
66
54
 
@@ -88,101 +76,92 @@ export abstract class ExternalMarkerManager {
88
76
 
89
77
  removeMarkers(markers: Marker[]): void {
90
78
  if (this.actionDispatcher) {
91
- this.actionDispatcher.dispatch(new DeleteMarkersAction(markers));
79
+ this.actionDispatcher.dispatch(DeleteMarkersAction.create(markers));
92
80
  }
93
81
  }
94
82
 
95
83
  abstract setMarkers(markers: Marker[], sourceUri?: string): void;
96
84
  }
97
85
 
98
- /**
99
- * Command for handling `SetMarkersAction`
100
- */
101
86
  @injectable()
102
- export class SetMarkersCommand extends Command {
103
- @inject(ValidationFeedbackEmitter) protected validationFeedbackEmitter: ValidationFeedbackEmitter;
104
- @inject(ExternalMarkerManager) @optional() protected externalMarkerManager?: ExternalMarkerManager;
105
- @inject(EditorContextService) protected editorContextService: EditorContextService;
87
+ export class SetMarkersActionHandler implements IActionHandler {
88
+ @inject(ValidationFeedbackEmitter)
89
+ protected validationFeedbackEmitter: ValidationFeedbackEmitter;
106
90
 
107
- static readonly KIND = SetMarkersAction.KIND;
91
+ @inject(ExternalMarkerManager)
92
+ @optional()
93
+ protected externalMarkerManager?: ExternalMarkerManager;
108
94
 
109
- constructor(@inject(TYPES.Action) public action: SetMarkersAction) {
110
- super();
95
+ @inject(EditorContextService)
96
+ protected editorContextService: EditorContextService;
97
+
98
+ handle(action: SetMarkersAction): void | Action | ICommand {
99
+ const markers: Marker[] = action.markers;
100
+ this.setMarkers(markers);
111
101
  }
112
102
 
113
- async execute(context: CommandExecutionContext): Promise<SModelRoot> {
114
- const markers: Marker[] = this.action.markers;
103
+ async setMarkers(markers: Marker[]): Promise<void> {
115
104
  const uri = await this.editorContextService.getSourceUri();
116
- if (this.externalMarkerManager) {
117
- this.externalMarkerManager.setMarkers(markers, uri);
118
- }
119
- const applyMarkersAction: ApplyMarkersAction = new ApplyMarkersAction(markers);
105
+ this.externalMarkerManager?.setMarkers(markers, uri);
106
+ const applyMarkersAction = ApplyMarkersAction.create(markers);
120
107
  this.validationFeedbackEmitter.registerValidationFeedbackAction(applyMarkersAction);
121
- return context.root;
122
- }
123
-
124
- undo(context: CommandExecutionContext): CommandReturn {
125
- return context.root;
126
- }
127
-
128
- redo(context: CommandExecutionContext): CommandReturn {
129
- return this.execute(context);
130
108
  }
131
109
  }
132
110
 
133
111
  /**
134
- * Interface for actions processing markers
112
+ * Action for applying makers to the graphical model.
135
113
  */
136
- export interface MarkersAction extends Action {
137
- readonly markers: Marker[];
114
+ export interface ApplyMarkersAction extends Action {
115
+ kind: typeof ApplyMarkersAction.KIND;
116
+ markers: Marker[];
138
117
  }
139
118
 
140
- /**
141
- * Action for applying makers to a model
142
- */
143
- @injectable()
144
- export class ApplyMarkersAction implements MarkersAction {
145
- constructor(public readonly markers: Marker[], public readonly kind = ApplyMarkersCommand.KIND) {}
119
+ export namespace ApplyMarkersAction {
120
+ export const KIND = 'applyMarkers';
121
+
122
+ export function is(object: any): object is ApplyMarkersAction {
123
+ return Action.hasKind(object, KIND) && hasArrayProp(object, 'markers');
124
+ }
125
+
126
+ export function create(markers: Marker[]): ApplyMarkersAction {
127
+ return {
128
+ kind: KIND,
129
+ markers
130
+ };
131
+ }
146
132
  }
147
133
 
148
134
  /**
149
- * Command for handling `ApplyMarkersAction`
135
+ * Handles {@link ApplyMarkersAction}s by creating the corresponding {@link SIssueMarker}s and
136
+ * adding them to the graphical model.
150
137
  */
151
138
  @injectable()
152
139
  export class ApplyMarkersCommand extends FeedbackCommand {
153
- static KIND = 'applyMarkers';
154
- readonly priority = 0;
140
+ static KIND = ApplyMarkersAction.KIND;
155
141
 
156
142
  constructor(@inject(TYPES.Action) protected action: ApplyMarkersAction) {
157
143
  super();
158
144
  }
159
145
 
160
146
  execute(context: CommandExecutionContext): CommandReturn {
161
- const markers: Marker[] = this.action.markers;
162
- for (const marker of markers) {
163
- const modelElement: SModelElement | undefined = context.root.index.getById(marker.elementId);
147
+ this.action.markers.forEach(marker => {
148
+ const modelElement = context.root.index.getById(marker.elementId);
164
149
  if (modelElement instanceof SParentElement) {
165
- const issueMarker: SIssueMarker = getOrCreateSIssueMarker(modelElement);
166
- const issue: SIssue = createSIssue(marker);
150
+ const issueMarker = getOrCreateSIssueMarker(modelElement);
151
+ const issue = createSIssue(marker);
167
152
  issueMarker.issues.push(issue);
153
+ if (issueMarker instanceof GIssueMarker) {
154
+ issueMarker.computeProjectionCssClasses();
155
+ }
168
156
  addMaxSeverityCSSClassToIssueParent(modelElement, issueMarker);
169
157
  }
170
- }
158
+ });
171
159
  return context.root;
172
160
  }
173
-
174
- undo(context: CommandExecutionContext): CommandReturn {
175
- return context.root;
176
- }
177
-
178
- redo(context: CommandExecutionContext): CommandReturn {
179
- return this.execute(context);
180
- }
181
161
  }
182
162
 
183
163
  function addMaxSeverityCSSClassToIssueParent(modelElement: SParentElement, issueMarker: SIssueMarker): void {
184
164
  const maxSeverityCSSClass = getSeverity(issueMarker);
185
-
186
165
  if (!modelElement.cssClasses) {
187
166
  modelElement.cssClasses = [maxSeverityCSSClass];
188
167
  } else {
@@ -192,14 +171,15 @@ function addMaxSeverityCSSClassToIssueParent(modelElement: SParentElement, issue
192
171
  }
193
172
 
194
173
  function removeCSSClassFromIssueParent(modelElement: SParentElement, issueMarker: SIssueMarker): void {
195
- removeCssClasses(modelElement, [getSeverity(issueMarker)]);
174
+ const severity = getSeverity(issueMarker);
175
+ removeCssClasses(modelElement, [severity]);
196
176
  }
197
177
 
198
178
  /**
199
179
  * Command for handling `DeleteMarkersAction`
200
180
  */
201
181
  @injectable()
202
- export class DeleteMarkersCommand extends Command {
182
+ export class DeleteMarkersCommand extends FeedbackCommand {
203
183
  static KIND = DeleteMarkersAction.KIND;
204
184
 
205
185
  constructor(@inject(TYPES.Action) protected action: DeleteMarkersAction) {
@@ -207,15 +187,14 @@ export class DeleteMarkersCommand extends Command {
207
187
  }
208
188
 
209
189
  execute(context: CommandExecutionContext): CommandReturn {
210
- const markers: Marker[] = this.action.markers;
211
- for (const marker of markers) {
212
- const modelElement: SModelElement | undefined = context.root.index.getById(marker.elementId);
190
+ this.action.markers.forEach(marker => {
191
+ const modelElement = context.root.index.getById(marker.elementId);
213
192
  if (modelElement instanceof SParentElement) {
214
- const issueMarker: SIssueMarker | undefined = getSIssueMarker(modelElement);
215
- if (issueMarker !== undefined) {
193
+ const issueMarker = getSIssueMarker(modelElement);
194
+ if (issueMarker) {
216
195
  removeCSSClassFromIssueParent(modelElement, issueMarker);
217
196
  for (let index = 0; index < issueMarker.issues.length; ++index) {
218
- const issue: SIssue = issueMarker.issues[index];
197
+ const issue = issueMarker.issues[index];
219
198
  if (issue.message === marker.description) {
220
199
  issueMarker.issues.splice(index--, 1);
221
200
  }
@@ -227,15 +206,8 @@ export class DeleteMarkersCommand extends Command {
227
206
  }
228
207
  }
229
208
  }
230
- }
231
- return context.root;
232
- }
209
+ });
233
210
 
234
- undo(context: CommandExecutionContext): CommandReturn {
235
211
  return context.root;
236
212
  }
237
-
238
- redo(context: CommandExecutionContext): CommandReturn {
239
- return this.execute(context);
240
- }
241
213
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2021 EclipseSource and others.
2
+ * Copyright (c) 2021-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -27,7 +27,6 @@ import {
27
27
  TYPES,
28
28
  ZoomMouseListener
29
29
  } from 'sprotty';
30
-
31
30
  import { GLSPScrollMouseListener } from './glsp-scroll-mouse-listener';
32
31
 
33
32
  const glspViewportModule = new ContainerModule((bind, _unbind, isBound) => {
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2021 EclipseSource and others.
2
+ * Copyright (c) 2021-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -23,16 +23,16 @@ export class GLSPScrollMouseListener extends ScrollMouseListener implements IAct
23
23
  preventScrolling = false;
24
24
 
25
25
  handle(action: Action): void | Action | ICommand {
26
- if (action instanceof EnableToolsAction) {
27
- if (action.toolIds.includes(MarqueeMouseTool.ID)) {
26
+ if (action.kind === EnableToolsAction.KIND) {
27
+ if ((action as EnableToolsAction).toolIds.includes(MarqueeMouseTool.ID)) {
28
28
  this.preventScrolling = true;
29
29
  }
30
- } else if (action instanceof EnableDefaultToolsAction) {
30
+ } else if (action.kind === EnableDefaultToolsAction.KIND) {
31
31
  this.preventScrolling = false;
32
32
  }
33
33
  }
34
34
 
35
- mouseDown(target: SModelElement, event: MouseEvent): (Action | Promise<Action>)[] {
35
+ override mouseDown(target: SModelElement, event: MouseEvent): (Action | Promise<Action>)[] {
36
36
  if (this.preventScrolling) {
37
37
  return [];
38
38
  }