@eclipse-glsp/client 0.9.0 → 0.10.0-next.15853de.178

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 (546) 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 +2 -1
  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 +144 -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 -4
  164. package/lib/features/hover/hover.d.ts.map +1 -1
  165. package/lib/features/hover/hover.js +42 -4
  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 +10 -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 +189 -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/vbox-layout.d.ts +17 -1
  188. package/lib/features/layout/vbox-layout.d.ts.map +1 -1
  189. package/lib/features/layout/vbox-layout.js +9 -8
  190. package/lib/features/layout/vbox-layout.js.map +1 -1
  191. package/lib/features/model-source-watcher/di.config.js +1 -1
  192. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  193. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +1 -1
  194. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  195. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +11 -11
  196. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  197. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  198. package/lib/features/mouse-tool/di.config.d.ts.map +1 -1
  199. package/lib/features/mouse-tool/di.config.js +2 -2
  200. package/lib/features/mouse-tool/di.config.js.map +1 -1
  201. package/lib/features/mouse-tool/mouse-tool.d.ts +9 -6
  202. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  203. package/lib/features/mouse-tool/mouse-tool.js +10 -48
  204. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  205. package/lib/features/navigation/di.config.js +4 -4
  206. package/lib/features/navigation/di.config.js.map +1 -1
  207. package/lib/features/navigation/navigation-action-handler.d.ts +31 -16
  208. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  209. package/lib/features/navigation/navigation-action-handler.js +52 -68
  210. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  211. package/lib/features/navigation/navigation-target-resolver.d.ts +3 -3
  212. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  213. package/lib/features/navigation/navigation-target-resolver.js +8 -9
  214. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  215. package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
  216. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  217. package/lib/features/reconnect/model.d.ts +1 -1
  218. package/lib/features/reconnect/model.d.ts.map +1 -1
  219. package/lib/features/reconnect/model.js +1 -1
  220. package/lib/features/reconnect/model.js.map +1 -1
  221. package/lib/features/save/di.config.d.ts +1 -1
  222. package/lib/features/save/di.config.d.ts.map +1 -1
  223. package/lib/features/save/di.config.js +3 -3
  224. package/lib/features/save/di.config.js.map +1 -1
  225. package/lib/features/save/save-keylistener.d.ts +1 -1
  226. package/lib/features/save/save-keylistener.d.ts.map +1 -1
  227. package/lib/features/save/save-keylistener.js +3 -3
  228. package/lib/features/save/save-keylistener.js.map +1 -1
  229. package/lib/features/select/di.config.d.ts +1 -1
  230. package/lib/features/select/di.config.d.ts.map +1 -1
  231. package/lib/features/select/di.config.js +7 -8
  232. package/lib/features/select/di.config.js.map +1 -1
  233. package/lib/features/select/select-feedback-action.d.ts +26 -22
  234. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  235. package/lib/features/select/select-feedback-action.js +19 -46
  236. package/lib/features/select/select-feedback-action.js.map +1 -1
  237. package/lib/features/select/select-mouse-listener.d.ts +4 -2
  238. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  239. package/lib/features/select/select-mouse-listener.js +63 -1
  240. package/lib/features/select/select-mouse-listener.js.map +1 -1
  241. package/lib/features/select/selection-service.d.ts +14 -5
  242. package/lib/features/select/selection-service.d.ts.map +1 -1
  243. package/lib/features/select/selection-service.js +55 -64
  244. package/lib/features/select/selection-service.js.map +1 -1
  245. package/lib/features/select/selection-service.spec.js +28 -25
  246. package/lib/features/select/selection-service.spec.js.map +1 -1
  247. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +17 -9
  248. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  249. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +68 -38
  250. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  251. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +24 -12
  252. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  253. package/lib/features/tool-feedback/creation-tool-feedback.js +88 -35
  254. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  255. package/lib/features/tool-feedback/css-feedback.d.ts +17 -10
  256. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  257. package/lib/features/tool-feedback/css-feedback.js +42 -38
  258. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  259. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  260. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  261. package/lib/features/tool-feedback/di.config.js +18 -18
  262. package/lib/features/tool-feedback/di.config.js.map +1 -1
  263. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +45 -22
  264. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  265. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -114
  266. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  267. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
  268. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  269. package/lib/features/tool-feedback/feedback-action-dispatcher.js +4 -4
  270. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  271. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +21 -10
  272. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  273. package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -18
  274. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  275. package/lib/features/tool-feedback/model.d.ts +1 -2
  276. package/lib/features/tool-feedback/model.d.ts.map +1 -1
  277. package/lib/features/tool-feedback/model.js +1 -1
  278. package/lib/features/tool-feedback/model.js.map +1 -1
  279. package/lib/features/tool-feedback/view.d.ts +1 -1
  280. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  281. package/lib/features/tool-feedback/view.js +22 -5
  282. package/lib/features/tool-feedback/view.js.map +1 -1
  283. package/lib/features/tool-palette/di.config.d.ts +1 -1
  284. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  285. package/lib/features/tool-palette/di.config.js +5 -4
  286. package/lib/features/tool-palette/di.config.js.map +1 -1
  287. package/lib/features/tool-palette/tool-palette.d.ts +10 -7
  288. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  289. package/lib/features/tool-palette/tool-palette.js +39 -32
  290. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  291. package/lib/features/tools/base-glsp-tool.d.ts +3 -3
  292. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  293. package/lib/features/tools/base-glsp-tool.js +11 -11
  294. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  295. package/lib/features/tools/change-bounds-tool.d.ts +7 -9
  296. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  297. package/lib/features/tools/change-bounds-tool.js +48 -71
  298. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  299. package/lib/features/tools/delete-tool.d.ts +1 -1
  300. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  301. package/lib/features/tools/delete-tool.js +17 -17
  302. package/lib/features/tools/delete-tool.js.map +1 -1
  303. package/lib/features/tools/di.config.d.ts +9 -2
  304. package/lib/features/tools/di.config.d.ts.map +1 -1
  305. package/lib/features/tools/di.config.js +26 -15
  306. package/lib/features/tools/di.config.js.map +1 -1
  307. package/lib/features/tools/edge-creation-tool.d.ts +1 -1
  308. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  309. package/lib/features/tools/edge-creation-tool.js +28 -21
  310. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  311. package/lib/features/tools/edge-edit-tool.d.ts +3 -2
  312. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  313. package/lib/features/tools/edge-edit-tool.js +41 -36
  314. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  315. package/lib/features/{tool-palette/palette-item.d.ts → tools/enable-default-tools-on-focus-loss.d.ts} +11 -11
  316. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -0
  317. package/lib/features/tools/enable-default-tools-on-focus-loss.js +29 -0
  318. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -0
  319. package/lib/features/tools/marquee-behavior.d.ts +1 -1
  320. package/lib/features/tools/marquee-behavior.js +2 -2
  321. package/lib/features/tools/marquee-behavior.js.map +1 -1
  322. package/lib/features/tools/marquee-behavior.spec.js +63 -63
  323. package/lib/features/tools/marquee-behavior.spec.js.map +1 -1
  324. package/lib/features/tools/marquee-mouse-tool.d.ts +1 -1
  325. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  326. package/lib/features/tools/marquee-mouse-tool.js +20 -20
  327. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  328. package/lib/features/tools/marquee-tool.d.ts +1 -1
  329. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  330. package/lib/features/tools/marquee-tool.js +4 -4
  331. package/lib/features/tools/marquee-tool.js.map +1 -1
  332. package/lib/features/tools/model.d.ts +3 -2
  333. package/lib/features/tools/model.d.ts.map +1 -1
  334. package/lib/features/tools/model.js +0 -15
  335. package/lib/features/tools/model.js.map +1 -1
  336. package/lib/features/tools/node-creation-tool.d.ts +1 -1
  337. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  338. package/lib/features/tools/node-creation-tool.js +17 -17
  339. package/lib/features/tools/node-creation-tool.js.map +1 -1
  340. package/lib/features/tools/view.d.ts.map +1 -1
  341. package/lib/features/tools/view.js +2 -2
  342. package/lib/features/tools/view.js.map +1 -1
  343. package/lib/features/validation/di.config.d.ts +0 -15
  344. package/lib/features/validation/di.config.d.ts.map +1 -1
  345. package/lib/features/validation/di.config.js +9 -7
  346. package/lib/features/validation/di.config.js.map +1 -1
  347. package/lib/features/validation/issue-marker.d.ts +10 -5
  348. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  349. package/lib/features/validation/issue-marker.js +12 -4
  350. package/lib/features/validation/issue-marker.js.map +1 -1
  351. package/lib/features/validation/marker-navigator.d.ts +27 -25
  352. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  353. package/lib/features/validation/marker-navigator.js +64 -91
  354. package/lib/features/validation/marker-navigator.js.map +1 -1
  355. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  356. package/lib/features/validation/marker-navigator.spec.js +23 -37
  357. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  358. package/lib/features/validation/validate.d.ts +17 -30
  359. package/lib/features/validation/validate.d.ts.map +1 -1
  360. package/lib/features/validation/validate.js +66 -90
  361. package/lib/features/validation/validate.js.map +1 -1
  362. package/lib/features/viewport/di.config.d.ts +1 -1
  363. package/lib/features/viewport/di.config.d.ts.map +1 -1
  364. package/lib/features/viewport/di.config.js +7 -7
  365. package/lib/features/viewport/di.config.js.map +1 -1
  366. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +1 -1
  367. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  368. package/lib/features/viewport/glsp-scroll-mouse-listener.js +3 -3
  369. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  370. package/lib/index.d.ts +8 -9
  371. package/lib/index.d.ts.map +1 -1
  372. package/lib/index.js +15 -11
  373. package/lib/index.js.map +1 -1
  374. package/lib/lib/model.d.ts +3 -2
  375. package/lib/lib/model.d.ts.map +1 -1
  376. package/lib/lib/model.js +3 -18
  377. package/lib/lib/model.js.map +1 -1
  378. package/lib/model-source/glsp-diagram-server.d.ts +6 -6
  379. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  380. package/lib/model-source/glsp-diagram-server.js +8 -7
  381. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  382. package/lib/sprotty-reexport.d.ts +174 -0
  383. package/lib/sprotty-reexport.d.ts.map +1 -0
  384. package/lib/sprotty-reexport.js +299 -0
  385. package/lib/sprotty-reexport.js.map +1 -0
  386. package/lib/utils/argument-utils.js +5 -5
  387. package/lib/utils/argument-utils.js.map +1 -1
  388. package/lib/utils/layout-utils.d.ts +6 -22
  389. package/lib/utils/layout-utils.d.ts.map +1 -1
  390. package/lib/utils/layout-utils.js +1 -1
  391. package/lib/utils/layout-utils.js.map +1 -1
  392. package/lib/utils/smodel-util.d.ts +117 -11
  393. package/lib/utils/smodel-util.d.ts.map +1 -1
  394. package/lib/utils/smodel-util.js +142 -37
  395. package/lib/utils/smodel-util.js.map +1 -1
  396. package/lib/utils/viewpoint-util.d.ts +3 -3
  397. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  398. package/lib/utils/viewpoint-util.js +19 -3
  399. package/lib/utils/viewpoint-util.js.map +1 -1
  400. package/lib/views/base-view-module.d.ts.map +1 -1
  401. package/lib/views/base-view-module.js +21 -19
  402. package/lib/views/base-view-module.js.map +1 -1
  403. package/lib/views/compartments.js +2 -2
  404. package/lib/views/compartments.js.map +1 -1
  405. package/lib/views/glsp-edge-view.d.ts +1 -1
  406. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  407. package/lib/views/glsp-edge-view.js +1 -1
  408. package/lib/views/glsp-edge-view.js.map +1 -1
  409. package/lib/views/glsp-projection-view.d.ts +30 -0
  410. package/lib/views/glsp-projection-view.d.ts.map +1 -0
  411. package/lib/views/glsp-projection-view.js +142 -0
  412. package/lib/views/glsp-projection-view.js.map +1 -0
  413. package/lib/views/index.d.ts +1 -0
  414. package/lib/views/index.d.ts.map +1 -1
  415. package/lib/views/index.js +7 -2
  416. package/lib/views/index.js.map +1 -1
  417. package/lib/views/issue-marker-view.d.ts.map +1 -1
  418. package/lib/views/issue-marker-view.js +3 -3
  419. package/lib/views/issue-marker-view.js.map +1 -1
  420. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  421. package/lib/views/rounded-corner-view.js +2 -2
  422. package/lib/views/rounded-corner-view.js.map +1 -1
  423. package/package.json +8 -18
  424. package/src/base/action-dispatcher.ts +26 -16
  425. package/src/base/actions/focus-change-action.ts +25 -8
  426. package/src/base/actions/sprotty-actions.ts +26 -0
  427. package/src/base/auto-complete/auto-complete-actions.ts +7 -5
  428. package/src/base/auto-complete/auto-complete-widget.ts +15 -13
  429. package/src/base/command-stack.ts +7 -6
  430. package/src/base/container-modules.ts +4 -3
  431. package/src/base/di.config.ts +4 -5
  432. package/src/base/drag-aware-mouse-listener.ts +4 -4
  433. package/src/base/editor-context-service.ts +32 -12
  434. package/src/base/focus-tracker.ts +5 -4
  435. package/src/base/model/model-registry.ts +2 -2
  436. package/src/base/model/update-model-command.ts +54 -41
  437. package/src/base/model-initialization-constraint.ts +9 -11
  438. package/src/base/selection-clearing-mouse-listener.ts +1 -1
  439. package/src/base/source-uri-aware.ts +5 -4
  440. package/src/base/tool-manager/glsp-tool-manager.ts +9 -9
  441. package/src/base/tool-manager/tool-actions.ts +37 -0
  442. package/src/base/types.ts +31 -24
  443. package/src/base/view/view-registry.ts +2 -2
  444. package/src/features/change-bounds/model.ts +5 -5
  445. package/src/features/change-bounds/movement-restrictor.ts +74 -44
  446. package/src/features/change-bounds/snap.spec.ts +89 -0
  447. package/src/features/change-bounds/snap.ts +99 -12
  448. package/src/features/command-palette/di.config.ts +5 -7
  449. package/src/features/command-palette/server-command-palette-provider.ts +9 -8
  450. package/src/features/context-menu/delete-element-context-menu.ts +6 -6
  451. package/src/features/context-menu/di.config.ts +3 -2
  452. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +51 -29
  453. package/src/features/context-menu/server-context-menu-provider.ts +7 -6
  454. package/src/features/copy-paste/copy-paste-context-menu.ts +30 -23
  455. package/src/features/copy-paste/copy-paste-handler.ts +6 -6
  456. package/src/features/copy-paste/di.config.ts +7 -15
  457. package/src/features/decoration/decoration-placer.ts +4 -4
  458. package/src/features/decoration/di.config.ts +3 -5
  459. package/src/features/edit-label/di.config.ts +4 -5
  460. package/src/features/edit-label/edit-label-tool.ts +1 -2
  461. package/src/features/edit-label/edit-label-validator.ts +6 -10
  462. package/src/features/hints/di.config.ts +3 -3
  463. package/src/features/hints/type-hints.ts +33 -18
  464. package/src/features/hover/di.config.ts +8 -2
  465. package/src/features/hover/hover.ts +53 -11
  466. package/src/features/layout/di.config.ts +15 -7
  467. package/src/features/layout/freeform-layout.ts +6 -15
  468. package/src/features/layout/hbox-layout.ts +256 -0
  469. package/src/features/layout/{layout-commands.spec.ts → layout-elements-action.spec.ts} +89 -65
  470. package/src/features/layout/layout-elements-action.ts +486 -0
  471. package/src/features/layout/vbox-layout.ts +20 -20
  472. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +7 -12
  473. package/src/features/mouse-tool/di.config.ts +3 -4
  474. package/src/features/mouse-tool/mouse-tool.ts +18 -57
  475. package/src/features/navigation/navigation-action-handler.ts +76 -42
  476. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -3
  477. package/src/features/navigation/navigation-target-resolver.ts +8 -13
  478. package/src/features/reconnect/model.ts +2 -2
  479. package/src/features/save/di.config.ts +2 -3
  480. package/src/features/save/save-keylistener.ts +3 -3
  481. package/src/features/select/di.config.ts +6 -8
  482. package/src/features/select/select-feedback-action.ts +18 -46
  483. package/src/features/select/select-mouse-listener.ts +82 -3
  484. package/src/features/select/selection-service.spec.ts +12 -9
  485. package/src/features/select/selection-service.ts +52 -60
  486. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +52 -22
  487. package/src/features/tool-feedback/creation-tool-feedback.ts +79 -30
  488. package/src/features/tool-feedback/css-feedback.ts +40 -37
  489. package/src/features/tool-feedback/di.config.ts +4 -5
  490. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +140 -88
  491. package/src/features/tool-feedback/feedback-action-dispatcher.ts +4 -3
  492. package/src/features/tool-feedback/marquee-tool-feedback.ts +38 -13
  493. package/src/features/tool-feedback/model.ts +1 -3
  494. package/src/features/tool-feedback/view.tsx +3 -3
  495. package/src/features/tool-palette/di.config.ts +3 -2
  496. package/src/features/tool-palette/tool-palette.ts +35 -19
  497. package/src/features/tools/base-glsp-tool.ts +11 -11
  498. package/src/features/tools/change-bounds-tool.ts +37 -67
  499. package/src/features/tools/delete-tool.ts +9 -9
  500. package/src/features/tools/di.config.ts +23 -12
  501. package/src/features/tools/edge-creation-tool.ts +21 -12
  502. package/src/features/tools/edge-edit-tool.ts +25 -21
  503. package/src/features/tools/enable-default-tools-on-focus-loss.ts +33 -0
  504. package/src/features/tools/marquee-behavior.ts +2 -2
  505. package/src/features/tools/marquee-mouse-tool.ts +13 -14
  506. package/src/features/tools/marquee-tool.ts +3 -3
  507. package/src/features/tools/model.ts +4 -3
  508. package/src/features/tools/node-creation-tool.ts +8 -8
  509. package/src/features/tools/view.tsx +2 -3
  510. package/src/features/validation/di.config.ts +13 -11
  511. package/src/features/validation/issue-marker.ts +22 -12
  512. package/src/features/validation/marker-navigator.spec.ts +4 -2
  513. package/src/features/validation/marker-navigator.ts +67 -82
  514. package/src/features/validation/validate.ts +62 -89
  515. package/src/features/viewport/di.config.ts +1 -2
  516. package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
  517. package/src/index.ts +9 -9
  518. package/src/lib/model.ts +4 -4
  519. package/src/model-source/glsp-diagram-server.ts +15 -15
  520. package/src/sprotty-reexport.ts +283 -0
  521. package/src/utils/layout-utils.ts +9 -29
  522. package/src/utils/smodel-util.ts +139 -43
  523. package/src/utils/viewpoint-util.ts +5 -14
  524. package/src/views/base-view-module.ts +5 -1
  525. package/src/views/compartments.tsx +1 -1
  526. package/src/views/glsp-edge-view.tsx +4 -4
  527. package/src/views/glsp-projection-view.tsx +166 -0
  528. package/src/views/index.ts +2 -0
  529. package/src/views/issue-marker-view.tsx +2 -2
  530. package/src/views/rounded-corner-view.tsx +2 -3
  531. package/lib/features/layout/layout-commands.d.ts +0 -153
  532. package/lib/features/layout/layout-commands.d.ts.map +0 -1
  533. package/lib/features/layout/layout-commands.js +0 -412
  534. package/lib/features/layout/layout-commands.js.map +0 -1
  535. package/lib/features/layout/layout-commands.spec.d.ts +0 -3
  536. package/lib/features/layout/layout-commands.spec.d.ts.map +0 -1
  537. package/lib/features/layout/layout-commands.spec.js.map +0 -1
  538. package/lib/features/tool-palette/palette-item.d.ts.map +0 -1
  539. package/lib/features/tool-palette/palette-item.js.map +0 -1
  540. package/lib/protocol-reexport.d.ts +0 -45
  541. package/lib/protocol-reexport.d.ts.map +0 -1
  542. package/lib/protocol-reexport.js +0 -75
  543. package/lib/protocol-reexport.js.map +0 -1
  544. package/src/features/layout/layout-commands.ts +0 -424
  545. package/src/features/tool-palette/palette-item.ts +0 -38
  546. 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,16 @@
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
22
  import { getSeverity } from '../hover/hover';
34
23
  import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
35
24
  import { FeedbackCommand } from '../tool-feedback/model';
36
- import { createSIssue, getOrCreateSIssueMarker, getSIssueMarker } from './issue-marker';
25
+ import { createSIssue, getOrCreateSIssueMarker, getSIssueMarker, GIssueMarker } from './issue-marker';
37
26
 
38
27
  /**
39
28
  * Feedback emitter sending actions for visualizing model validation feedback and
@@ -41,11 +30,11 @@ import { createSIssue, getOrCreateSIssueMarker, getSIssueMarker } from './issue-
41
30
  */
42
31
  @injectable()
43
32
  export class ValidationFeedbackEmitter implements IFeedbackEmitter {
44
- @inject(GLSP_TYPES.IFeedbackActionDispatcher) protected feedbackActionDispatcher: IFeedbackActionDispatcher;
33
+ @inject(TYPES.IFeedbackActionDispatcher) protected feedbackActionDispatcher: IFeedbackActionDispatcher;
45
34
 
46
35
  @inject(TYPES.IActionDispatcherProvider) protected actionDispatcher: () => Promise<IActionDispatcher>;
47
36
 
48
- private registeredAction: MarkersAction;
37
+ private registeredAction: ApplyMarkersAction;
49
38
 
50
39
  // eslint-disable-next-line @typescript-eslint/no-empty-function
51
40
  private constructor() {}
@@ -54,13 +43,13 @@ export class ValidationFeedbackEmitter implements IFeedbackEmitter {
54
43
  * Register the action that should be emitted for visualizing validation feedback.
55
44
  * @param action the action that should be emitted when the model is updated and that will visualize the model validation feedback.
56
45
  */
57
- registerValidationFeedbackAction(action: MarkersAction): void {
46
+ registerValidationFeedbackAction(action: ApplyMarkersAction): void {
58
47
  // De-register old action responsible for applying markers and re-applying them when the model is updated
59
48
  this.feedbackActionDispatcher.deregisterFeedback(this, []);
60
49
 
61
50
  // Clear existing markers
62
51
  if (this.registeredAction !== undefined) {
63
- const deleteMarkersAction = new DeleteMarkersAction(this.registeredAction.markers);
52
+ const deleteMarkersAction = DeleteMarkersAction.create(this.registeredAction.markers);
64
53
  this.actionDispatcher().then(dispatcher => dispatcher.dispatch(deleteMarkersAction));
65
54
  }
66
55
 
@@ -88,101 +77,92 @@ export abstract class ExternalMarkerManager {
88
77
 
89
78
  removeMarkers(markers: Marker[]): void {
90
79
  if (this.actionDispatcher) {
91
- this.actionDispatcher.dispatch(new DeleteMarkersAction(markers));
80
+ this.actionDispatcher.dispatch(DeleteMarkersAction.create(markers));
92
81
  }
93
82
  }
94
83
 
95
84
  abstract setMarkers(markers: Marker[], sourceUri?: string): void;
96
85
  }
97
86
 
98
- /**
99
- * Command for handling `SetMarkersAction`
100
- */
101
87
  @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;
88
+ export class SetMarkersActionHandler implements IActionHandler {
89
+ @inject(ValidationFeedbackEmitter)
90
+ protected validationFeedbackEmitter: ValidationFeedbackEmitter;
106
91
 
107
- static readonly KIND = SetMarkersAction.KIND;
92
+ @inject(ExternalMarkerManager)
93
+ @optional()
94
+ protected externalMarkerManager?: ExternalMarkerManager;
108
95
 
109
- constructor(@inject(TYPES.Action) public action: SetMarkersAction) {
110
- super();
96
+ @inject(EditorContextService)
97
+ protected editorContextService: EditorContextService;
98
+
99
+ handle(action: SetMarkersAction): void | Action | ICommand {
100
+ const markers: Marker[] = action.markers;
101
+ this.setMarkers(markers);
111
102
  }
112
103
 
113
- async execute(context: CommandExecutionContext): Promise<SModelRoot> {
114
- const markers: Marker[] = this.action.markers;
104
+ async setMarkers(markers: Marker[]): Promise<void> {
115
105
  const uri = await this.editorContextService.getSourceUri();
116
- if (this.externalMarkerManager) {
117
- this.externalMarkerManager.setMarkers(markers, uri);
118
- }
119
- const applyMarkersAction: ApplyMarkersAction = new ApplyMarkersAction(markers);
106
+ this.externalMarkerManager?.setMarkers(markers, uri);
107
+ const applyMarkersAction = ApplyMarkersAction.create(markers);
120
108
  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
109
  }
131
110
  }
132
111
 
133
112
  /**
134
- * Interface for actions processing markers
113
+ * Action for applying makers to the graphical model.
135
114
  */
136
- export interface MarkersAction extends Action {
137
- readonly markers: Marker[];
115
+ export interface ApplyMarkersAction extends Action {
116
+ kind: typeof ApplyMarkersAction.KIND;
117
+ markers: Marker[];
138
118
  }
139
119
 
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) {}
120
+ export namespace ApplyMarkersAction {
121
+ export const KIND = 'applyMarkers';
122
+
123
+ export function is(object: any): object is ApplyMarkersAction {
124
+ return Action.hasKind(object, KIND) && hasArrayProp(object, 'markers');
125
+ }
126
+
127
+ export function create(markers: Marker[]): ApplyMarkersAction {
128
+ return {
129
+ kind: KIND,
130
+ markers
131
+ };
132
+ }
146
133
  }
147
134
 
148
135
  /**
149
- * Command for handling `ApplyMarkersAction`
136
+ * Handles {@link ApplyMarkersAction}s by creating the corresponding {@link SIssueMarker}s and
137
+ * adding them to the graphical model.
150
138
  */
151
139
  @injectable()
152
140
  export class ApplyMarkersCommand extends FeedbackCommand {
153
- static KIND = 'applyMarkers';
154
- readonly priority = 0;
141
+ static KIND = ApplyMarkersAction.KIND;
155
142
 
156
143
  constructor(@inject(TYPES.Action) protected action: ApplyMarkersAction) {
157
144
  super();
158
145
  }
159
146
 
160
147
  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);
148
+ this.action.markers.forEach(marker => {
149
+ const modelElement = context.root.index.getById(marker.elementId);
164
150
  if (modelElement instanceof SParentElement) {
165
- const issueMarker: SIssueMarker = getOrCreateSIssueMarker(modelElement);
166
- const issue: SIssue = createSIssue(marker);
151
+ const issueMarker = getOrCreateSIssueMarker(modelElement);
152
+ const issue = createSIssue(marker);
167
153
  issueMarker.issues.push(issue);
154
+ if (issueMarker instanceof GIssueMarker) {
155
+ issueMarker.computeProjectionCssClasses();
156
+ }
168
157
  addMaxSeverityCSSClassToIssueParent(modelElement, issueMarker);
169
158
  }
170
- }
159
+ });
171
160
  return context.root;
172
161
  }
173
-
174
- undo(context: CommandExecutionContext): CommandReturn {
175
- return context.root;
176
- }
177
-
178
- redo(context: CommandExecutionContext): CommandReturn {
179
- return this.execute(context);
180
- }
181
162
  }
182
163
 
183
164
  function addMaxSeverityCSSClassToIssueParent(modelElement: SParentElement, issueMarker: SIssueMarker): void {
184
165
  const maxSeverityCSSClass = getSeverity(issueMarker);
185
-
186
166
  if (!modelElement.cssClasses) {
187
167
  modelElement.cssClasses = [maxSeverityCSSClass];
188
168
  } else {
@@ -192,14 +172,15 @@ function addMaxSeverityCSSClassToIssueParent(modelElement: SParentElement, issue
192
172
  }
193
173
 
194
174
  function removeCSSClassFromIssueParent(modelElement: SParentElement, issueMarker: SIssueMarker): void {
195
- removeCssClasses(modelElement, [getSeverity(issueMarker)]);
175
+ const severity = getSeverity(issueMarker);
176
+ removeCssClasses(modelElement, [severity]);
196
177
  }
197
178
 
198
179
  /**
199
180
  * Command for handling `DeleteMarkersAction`
200
181
  */
201
182
  @injectable()
202
- export class DeleteMarkersCommand extends Command {
183
+ export class DeleteMarkersCommand extends FeedbackCommand {
203
184
  static KIND = DeleteMarkersAction.KIND;
204
185
 
205
186
  constructor(@inject(TYPES.Action) protected action: DeleteMarkersAction) {
@@ -207,15 +188,14 @@ export class DeleteMarkersCommand extends Command {
207
188
  }
208
189
 
209
190
  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);
191
+ this.action.markers.forEach(marker => {
192
+ const modelElement = context.root.index.getById(marker.elementId);
213
193
  if (modelElement instanceof SParentElement) {
214
- const issueMarker: SIssueMarker | undefined = getSIssueMarker(modelElement);
215
- if (issueMarker !== undefined) {
194
+ const issueMarker = getSIssueMarker(modelElement);
195
+ if (issueMarker) {
216
196
  removeCSSClassFromIssueParent(modelElement, issueMarker);
217
197
  for (let index = 0; index < issueMarker.issues.length; ++index) {
218
- const issue: SIssue = issueMarker.issues[index];
198
+ const issue = issueMarker.issues[index];
219
199
  if (issue.message === marker.description) {
220
200
  issueMarker.issues.splice(index--, 1);
221
201
  }
@@ -227,15 +207,8 @@ export class DeleteMarkersCommand extends Command {
227
207
  }
228
208
  }
229
209
  }
230
- }
231
- return context.root;
232
- }
210
+ });
233
211
 
234
- undo(context: CommandExecutionContext): CommandReturn {
235
212
  return context.root;
236
213
  }
237
-
238
- redo(context: CommandExecutionContext): CommandReturn {
239
- return this.execute(context);
240
- }
241
214
  }
@@ -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
  }