@eclipse-glsp/client 0.10.0-next.6bee8eb.163 → 0.10.0-next.88e4725.166

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 (408) hide show
  1. package/lib/base/action-dispatcher.d.ts +1 -0
  2. package/lib/base/action-dispatcher.d.ts.map +1 -1
  3. package/lib/base/action-dispatcher.js +11 -3
  4. package/lib/base/action-dispatcher.js.map +1 -1
  5. package/lib/base/actions/focus-change-action.d.ts +16 -7
  6. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  7. package/lib/base/actions/focus-change-action.js +31 -12
  8. package/lib/base/actions/focus-change-action.js.map +1 -1
  9. package/lib/base/actions/sprotty-actions.d.ts +7 -0
  10. package/lib/base/actions/sprotty-actions.d.ts.map +1 -0
  11. package/lib/{features/tool-palette/palette-item.js → base/actions/sprotty-actions.js} +4 -20
  12. package/lib/base/actions/sprotty-actions.js.map +1 -0
  13. package/lib/base/auto-complete/auto-complete-actions.d.ts +5 -3
  14. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  15. package/lib/base/auto-complete/auto-complete-actions.js +24 -5
  16. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  17. package/lib/base/auto-complete/auto-complete-widget.d.ts +2 -2
  18. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  19. package/lib/base/auto-complete/auto-complete-widget.js +4 -4
  20. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  21. package/lib/base/command-stack.d.ts.map +1 -1
  22. package/lib/base/command-stack.js +4 -3
  23. package/lib/base/command-stack.js.map +1 -1
  24. package/lib/base/di.config.d.ts +1 -1
  25. package/lib/base/di.config.d.ts.map +1 -1
  26. package/lib/base/di.config.js +9 -10
  27. package/lib/base/di.config.js.map +1 -1
  28. package/lib/base/editor-context-service.d.ts +1 -1
  29. package/lib/base/editor-context-service.d.ts.map +1 -1
  30. package/lib/base/editor-context-service.js +5 -5
  31. package/lib/base/editor-context-service.js.map +1 -1
  32. package/lib/base/focus-tracker.d.ts +1 -1
  33. package/lib/base/focus-tracker.d.ts.map +1 -1
  34. package/lib/base/focus-tracker.js +3 -3
  35. package/lib/base/focus-tracker.js.map +1 -1
  36. package/lib/base/model/update-model-command.d.ts.map +1 -1
  37. package/lib/base/model/update-model-command.js +9 -9
  38. package/lib/base/model/update-model-command.js.map +1 -1
  39. package/lib/base/model-initialization-constraint.d.ts +2 -3
  40. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  41. package/lib/base/model-initialization-constraint.js +3 -4
  42. package/lib/base/model-initialization-constraint.js.map +1 -1
  43. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  44. package/lib/base/tool-manager/glsp-tool-manager.js +3 -3
  45. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  46. package/lib/base/tool-manager/tool-actions.d.ts +14 -0
  47. package/lib/base/tool-manager/tool-actions.d.ts.map +1 -0
  48. package/lib/base/tool-manager/tool-actions.js +25 -0
  49. package/lib/base/tool-manager/tool-actions.js.map +1 -0
  50. package/lib/base/types.d.ts +144 -20
  51. package/lib/base/types.d.ts.map +1 -1
  52. package/lib/base/types.js +14 -26
  53. package/lib/base/types.js.map +1 -1
  54. package/lib/features/change-bounds/movement-restrictor.d.ts +1 -1
  55. package/lib/features/change-bounds/movement-restrictor.js +2 -2
  56. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  57. package/lib/features/change-bounds/snap.d.ts +42 -1
  58. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  59. package/lib/features/change-bounds/snap.js +77 -1
  60. package/lib/features/change-bounds/snap.js.map +1 -1
  61. package/lib/features/change-bounds/snap.spec.d.ts +17 -0
  62. package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
  63. package/lib/features/change-bounds/snap.spec.js +82 -0
  64. package/lib/features/change-bounds/snap.spec.js.map +1 -0
  65. package/lib/features/command-palette/di.config.d.ts +2 -2
  66. package/lib/features/command-palette/di.config.d.ts.map +1 -1
  67. package/lib/features/command-palette/di.config.js +6 -6
  68. package/lib/features/command-palette/di.config.js.map +1 -1
  69. package/lib/features/command-palette/server-command-palette-provider.d.ts +1 -1
  70. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  71. package/lib/features/command-palette/server-command-palette-provider.js +11 -8
  72. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  73. package/lib/features/context-menu/delete-element-context-menu.d.ts +17 -1
  74. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  75. package/lib/features/context-menu/delete-element-context-menu.js +3 -3
  76. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  77. package/lib/features/context-menu/di.config.d.ts +1 -1
  78. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  79. package/lib/features/context-menu/di.config.js +8 -7
  80. package/lib/features/context-menu/di.config.js.map +1 -1
  81. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +17 -1
  82. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  83. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +4 -19
  84. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  85. package/lib/features/context-menu/server-context-menu-provider.d.ts +1 -1
  86. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  87. package/lib/features/context-menu/server-context-menu-provider.js +6 -5
  88. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  89. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +12 -15
  90. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  91. package/lib/features/copy-paste/copy-paste-context-menu.js +24 -31
  92. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  93. package/lib/features/copy-paste/copy-paste-handler.d.ts +1 -1
  94. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  95. package/lib/features/copy-paste/copy-paste-handler.js +6 -7
  96. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  97. package/lib/features/copy-paste/di.config.d.ts +1 -1
  98. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  99. package/lib/features/copy-paste/di.config.js +5 -7
  100. package/lib/features/copy-paste/di.config.js.map +1 -1
  101. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  102. package/lib/features/decoration/decoration-placer.js +17 -1
  103. package/lib/features/decoration/decoration-placer.js.map +1 -1
  104. package/lib/features/decoration/di.config.d.ts +2 -2
  105. package/lib/features/decoration/di.config.d.ts.map +1 -1
  106. package/lib/features/decoration/di.config.js +4 -4
  107. package/lib/features/decoration/di.config.js.map +1 -1
  108. package/lib/features/edit-label/di.config.d.ts +1 -1
  109. package/lib/features/edit-label/di.config.d.ts.map +1 -1
  110. package/lib/features/edit-label/di.config.js +4 -4
  111. package/lib/features/edit-label/di.config.js.map +1 -1
  112. package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -1
  113. package/lib/features/edit-label/edit-label-tool.js +1 -1
  114. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  115. package/lib/features/edit-label/edit-label-validator.d.ts +4 -6
  116. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  117. package/lib/features/edit-label/edit-label-validator.js +8 -10
  118. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  119. package/lib/features/hints/di.config.js +2 -2
  120. package/lib/features/hints/di.config.js.map +1 -1
  121. package/lib/features/hints/type-hints.d.ts +14 -4
  122. package/lib/features/hints/type-hints.d.ts.map +1 -1
  123. package/lib/features/hints/type-hints.js +21 -18
  124. package/lib/features/hints/type-hints.js.map +1 -1
  125. package/lib/features/hover/di.config.d.ts.map +1 -1
  126. package/lib/features/hover/di.config.js +2 -0
  127. package/lib/features/hover/di.config.js.map +1 -1
  128. package/lib/features/hover/hover.d.ts +4 -2
  129. package/lib/features/hover/hover.d.ts.map +1 -1
  130. package/lib/features/hover/hover.js +22 -4
  131. package/lib/features/hover/hover.js.map +1 -1
  132. package/lib/features/layout/di.config.d.ts +1 -1
  133. package/lib/features/layout/di.config.js +1 -1
  134. package/lib/features/layout/freeform-layout.d.ts +17 -1
  135. package/lib/features/layout/freeform-layout.d.ts.map +1 -1
  136. package/lib/features/layout/freeform-layout.js +2 -2
  137. package/lib/features/layout/freeform-layout.js.map +1 -1
  138. package/lib/features/layout/layout-commands.d.ts +64 -37
  139. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  140. package/lib/features/layout/layout-commands.js +79 -59
  141. package/lib/features/layout/layout-commands.js.map +1 -1
  142. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
  143. package/lib/features/layout/layout-commands.spec.js +29 -17
  144. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  145. package/lib/features/layout/vbox-layout.d.ts +17 -1
  146. package/lib/features/layout/vbox-layout.d.ts.map +1 -1
  147. package/lib/features/layout/vbox-layout.js +4 -3
  148. package/lib/features/layout/vbox-layout.js.map +1 -1
  149. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +1 -1
  150. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  151. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +7 -7
  152. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  153. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  154. package/lib/features/mouse-tool/di.config.d.ts.map +1 -1
  155. package/lib/features/mouse-tool/di.config.js +2 -2
  156. package/lib/features/mouse-tool/di.config.js.map +1 -1
  157. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  158. package/lib/features/mouse-tool/mouse-tool.js +4 -10
  159. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  160. package/lib/features/navigation/navigation-action-handler.d.ts +31 -16
  161. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  162. package/lib/features/navigation/navigation-action-handler.js +50 -66
  163. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  164. package/lib/features/navigation/navigation-target-resolver.d.ts +3 -3
  165. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  166. package/lib/features/navigation/navigation-target-resolver.js +7 -8
  167. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  168. package/lib/features/navigation/navigation-target-resolver.spec.js +3 -3
  169. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  170. package/lib/features/save/di.config.d.ts +1 -1
  171. package/lib/features/save/di.config.d.ts.map +1 -1
  172. package/lib/features/save/di.config.js +3 -3
  173. package/lib/features/save/di.config.js.map +1 -1
  174. package/lib/features/save/save-keylistener.js +1 -1
  175. package/lib/features/save/save-keylistener.js.map +1 -1
  176. package/lib/features/select/di.config.d.ts +1 -1
  177. package/lib/features/select/di.config.d.ts.map +1 -1
  178. package/lib/features/select/di.config.js +4 -5
  179. package/lib/features/select/di.config.js.map +1 -1
  180. package/lib/features/select/select-feedback-action.d.ts +26 -22
  181. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  182. package/lib/features/select/select-feedback-action.js +18 -45
  183. package/lib/features/select/select-feedback-action.js.map +1 -1
  184. package/lib/features/select/select-mouse-listener.d.ts +1 -1
  185. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  186. package/lib/features/select/select-mouse-listener.js +1 -1
  187. package/lib/features/select/select-mouse-listener.js.map +1 -1
  188. package/lib/features/select/selection-service.d.ts.map +1 -1
  189. package/lib/features/select/selection-service.js +16 -13
  190. package/lib/features/select/selection-service.js.map +1 -1
  191. package/lib/features/select/selection-service.spec.js +9 -6
  192. package/lib/features/select/selection-service.spec.js.map +1 -1
  193. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +16 -8
  194. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  195. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +50 -20
  196. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  197. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +22 -10
  198. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  199. package/lib/features/tool-feedback/creation-tool-feedback.js +46 -21
  200. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  201. package/lib/features/tool-feedback/css-feedback.d.ts +17 -10
  202. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  203. package/lib/features/tool-feedback/css-feedback.js +41 -37
  204. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  205. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  206. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  207. package/lib/features/tool-feedback/di.config.js +4 -4
  208. package/lib/features/tool-feedback/di.config.js.map +1 -1
  209. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +43 -21
  210. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  211. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +117 -91
  212. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  213. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  214. package/lib/features/tool-feedback/feedback-action-dispatcher.js +3 -3
  215. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  216. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +20 -9
  217. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  218. package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -15
  219. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  220. package/lib/features/tool-feedback/view.d.ts +1 -1
  221. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  222. package/lib/features/tool-feedback/view.js +18 -1
  223. package/lib/features/tool-feedback/view.js.map +1 -1
  224. package/lib/features/tool-palette/di.config.d.ts +1 -1
  225. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  226. package/lib/features/tool-palette/di.config.js +3 -2
  227. package/lib/features/tool-palette/di.config.js.map +1 -1
  228. package/lib/features/tool-palette/tool-palette.d.ts +9 -6
  229. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  230. package/lib/features/tool-palette/tool-palette.js +25 -20
  231. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  232. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  233. package/lib/features/tools/base-glsp-tool.js +3 -3
  234. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  235. package/lib/features/tools/change-bounds-tool.d.ts +6 -8
  236. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  237. package/lib/features/tools/change-bounds-tool.js +22 -45
  238. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  239. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  240. package/lib/features/tools/delete-tool.js +5 -5
  241. package/lib/features/tools/delete-tool.js.map +1 -1
  242. package/lib/features/tools/di.config.js +9 -9
  243. package/lib/features/tools/di.config.js.map +1 -1
  244. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  245. package/lib/features/tools/edge-creation-tool.js +16 -9
  246. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  247. package/lib/features/tools/edge-edit-tool.d.ts +2 -1
  248. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  249. package/lib/features/tools/edge-edit-tool.js +20 -15
  250. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  251. package/lib/features/tools/marquee-behavior.d.ts +1 -1
  252. package/lib/features/tools/marquee-behavior.js +2 -2
  253. package/lib/features/tools/marquee-behavior.js.map +1 -1
  254. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  255. package/lib/features/tools/marquee-mouse-tool.js +7 -7
  256. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  257. package/lib/features/tools/marquee-tool.js +1 -1
  258. package/lib/features/tools/marquee-tool.js.map +1 -1
  259. package/lib/features/tools/model.d.ts +2 -1
  260. package/lib/features/tools/model.d.ts.map +1 -1
  261. package/lib/features/tools/model.js +0 -15
  262. package/lib/features/tools/model.js.map +1 -1
  263. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  264. package/lib/features/tools/node-creation-tool.js +5 -5
  265. package/lib/features/tools/node-creation-tool.js.map +1 -1
  266. package/lib/features/validation/di.config.d.ts +1 -1
  267. package/lib/features/validation/di.config.d.ts.map +1 -1
  268. package/lib/features/validation/di.config.js +3 -3
  269. package/lib/features/validation/di.config.js.map +1 -1
  270. package/lib/features/validation/marker-navigator.d.ts +15 -7
  271. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  272. package/lib/features/validation/marker-navigator.js +21 -19
  273. package/lib/features/validation/marker-navigator.js.map +1 -1
  274. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  275. package/lib/features/validation/marker-navigator.spec.js +2 -16
  276. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  277. package/lib/features/validation/validate.d.ts +9 -11
  278. package/lib/features/validation/validate.d.ts.map +1 -1
  279. package/lib/features/validation/validate.js +27 -26
  280. package/lib/features/validation/validate.js.map +1 -1
  281. package/lib/features/viewport/di.config.d.ts +1 -1
  282. package/lib/features/viewport/di.config.d.ts.map +1 -1
  283. package/lib/features/viewport/di.config.js +1 -1
  284. package/lib/features/viewport/di.config.js.map +1 -1
  285. package/lib/features/viewport/glsp-scroll-mouse-listener.js +2 -2
  286. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  287. package/lib/index.d.ts +4 -5
  288. package/lib/index.d.ts.map +1 -1
  289. package/lib/index.js +4 -5
  290. package/lib/index.js.map +1 -1
  291. package/lib/lib/model.d.ts +2 -1
  292. package/lib/lib/model.d.ts.map +1 -1
  293. package/lib/lib/model.js +0 -15
  294. package/lib/lib/model.js.map +1 -1
  295. package/lib/model-source/glsp-diagram-server.d.ts +4 -4
  296. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  297. package/lib/model-source/glsp-diagram-server.js +5 -5
  298. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  299. package/lib/sprotty-reexport.d.ts +174 -0
  300. package/lib/sprotty-reexport.d.ts.map +1 -0
  301. package/lib/sprotty-reexport.js +299 -0
  302. package/lib/sprotty-reexport.js.map +1 -0
  303. package/lib/utils/layout-utils.d.ts +3 -3
  304. package/lib/utils/layout-utils.d.ts.map +1 -1
  305. package/lib/utils/smodel-util.d.ts +27 -18
  306. package/lib/utils/smodel-util.d.ts.map +1 -1
  307. package/lib/utils/smodel-util.js +30 -11
  308. package/lib/utils/smodel-util.js.map +1 -1
  309. package/lib/utils/viewpoint-util.d.ts +3 -3
  310. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  311. package/lib/utils/viewpoint-util.js +17 -1
  312. package/lib/utils/viewpoint-util.js.map +1 -1
  313. package/package.json +5 -4
  314. package/src/base/action-dispatcher.ts +13 -4
  315. package/src/base/actions/focus-change-action.ts +25 -8
  316. package/{lib/features/tool-palette/palette-item.d.ts → src/base/actions/sprotty-actions.ts} +11 -11
  317. package/src/base/auto-complete/auto-complete-actions.ts +7 -5
  318. package/src/base/auto-complete/auto-complete-widget.ts +8 -13
  319. package/src/base/command-stack.ts +4 -3
  320. package/src/base/di.config.ts +4 -5
  321. package/src/base/editor-context-service.ts +7 -7
  322. package/src/base/focus-tracker.ts +5 -4
  323. package/src/base/model/update-model-command.ts +7 -8
  324. package/src/base/model-initialization-constraint.ts +3 -4
  325. package/src/base/tool-manager/glsp-tool-manager.ts +4 -4
  326. package/src/base/tool-manager/tool-actions.ts +37 -0
  327. package/src/base/types.ts +31 -24
  328. package/src/features/change-bounds/movement-restrictor.ts +3 -3
  329. package/src/features/change-bounds/snap.spec.ts +89 -0
  330. package/src/features/change-bounds/snap.ts +86 -2
  331. package/src/features/command-palette/di.config.ts +5 -7
  332. package/src/features/command-palette/server-command-palette-provider.ts +9 -8
  333. package/src/features/context-menu/delete-element-context-menu.ts +6 -6
  334. package/src/features/context-menu/di.config.ts +3 -2
  335. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +5 -6
  336. package/src/features/context-menu/server-context-menu-provider.ts +7 -6
  337. package/src/features/copy-paste/copy-paste-context-menu.ts +30 -23
  338. package/src/features/copy-paste/copy-paste-handler.ts +6 -6
  339. package/src/features/copy-paste/di.config.ts +7 -15
  340. package/src/features/decoration/decoration-placer.ts +2 -2
  341. package/src/features/decoration/di.config.ts +3 -5
  342. package/src/features/edit-label/di.config.ts +4 -5
  343. package/src/features/edit-label/edit-label-tool.ts +1 -2
  344. package/src/features/edit-label/edit-label-validator.ts +6 -10
  345. package/src/features/hints/di.config.ts +3 -3
  346. package/src/features/hints/type-hints.ts +31 -16
  347. package/src/features/hover/di.config.ts +4 -0
  348. package/src/features/hover/hover.ts +29 -11
  349. package/src/features/layout/di.config.ts +1 -1
  350. package/src/features/layout/freeform-layout.ts +3 -12
  351. package/src/features/layout/layout-commands.spec.ts +38 -22
  352. package/src/features/layout/layout-commands.ts +129 -55
  353. package/src/features/layout/vbox-layout.ts +4 -8
  354. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +7 -12
  355. package/src/features/mouse-tool/di.config.ts +3 -4
  356. package/src/features/mouse-tool/mouse-tool.ts +4 -9
  357. package/src/features/navigation/navigation-action-handler.ts +76 -42
  358. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -3
  359. package/src/features/navigation/navigation-target-resolver.ts +8 -13
  360. package/src/features/save/di.config.ts +2 -3
  361. package/src/features/save/save-keylistener.ts +1 -1
  362. package/src/features/select/di.config.ts +6 -8
  363. package/src/features/select/select-feedback-action.ts +18 -46
  364. package/src/features/select/select-mouse-listener.ts +1 -2
  365. package/src/features/select/selection-service.spec.ts +11 -8
  366. package/src/features/select/selection-service.ts +14 -10
  367. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +42 -13
  368. package/src/features/tool-feedback/creation-tool-feedback.ts +42 -21
  369. package/src/features/tool-feedback/css-feedback.ts +40 -37
  370. package/src/features/tool-feedback/di.config.ts +4 -5
  371. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +122 -78
  372. package/src/features/tool-feedback/feedback-action-dispatcher.ts +2 -1
  373. package/src/features/tool-feedback/marquee-tool-feedback.ts +36 -11
  374. package/src/features/tool-feedback/view.tsx +3 -3
  375. package/src/features/tool-palette/di.config.ts +3 -2
  376. package/src/features/tool-palette/tool-palette.ts +30 -16
  377. package/src/features/tools/base-glsp-tool.ts +4 -4
  378. package/src/features/tools/change-bounds-tool.ts +31 -61
  379. package/src/features/tools/delete-tool.ts +6 -6
  380. package/src/features/tools/di.config.ts +10 -10
  381. package/src/features/tools/edge-creation-tool.ts +18 -9
  382. package/src/features/tools/edge-edit-tool.ts +20 -16
  383. package/src/features/tools/marquee-behavior.ts +2 -2
  384. package/src/features/tools/marquee-mouse-tool.ts +8 -9
  385. package/src/features/tools/marquee-tool.ts +1 -1
  386. package/src/features/tools/model.ts +2 -1
  387. package/src/features/tools/node-creation-tool.ts +5 -5
  388. package/src/features/validation/di.config.ts +4 -5
  389. package/src/features/validation/marker-navigator.spec.ts +4 -2
  390. package/src/features/validation/marker-navigator.ts +41 -21
  391. package/src/features/validation/validate.ts +27 -20
  392. package/src/features/viewport/di.config.ts +1 -2
  393. package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -3
  394. package/src/index.ts +4 -5
  395. package/src/lib/model.ts +2 -1
  396. package/src/model-source/glsp-diagram-server.ts +8 -10
  397. package/src/sprotty-reexport.ts +283 -0
  398. package/src/utils/layout-utils.ts +3 -3
  399. package/src/utils/smodel-util.ts +36 -20
  400. package/src/utils/viewpoint-util.ts +5 -14
  401. package/lib/features/tool-palette/palette-item.d.ts.map +0 -1
  402. package/lib/features/tool-palette/palette-item.js.map +0 -1
  403. package/lib/protocol-reexport.d.ts +0 -45
  404. package/lib/protocol-reexport.d.ts.map +0 -1
  405. package/lib/protocol-reexport.js +0 -80
  406. package/lib/protocol-reexport.js.map +0 -1
  407. package/src/features/tool-palette/palette-item.ts +0 -38
  408. package/src/protocol-reexport.ts +0 -64
@@ -13,26 +13,19 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, ChangeBoundsOperation, ElementAndBounds } from '@eclipse-glsp/protocol';
16
+ import { Action, ChangeBoundsOperation, ElementAndBounds, hasArrayProp, hasNumberProp, SetBoundsAction } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable, optional } from 'inversify';
18
- import {
19
- Command,
20
- CommandExecutionContext,
21
- CommandReturn,
22
- ElementMove,
23
- IActionDispatcher,
24
- MoveAction,
25
- SetBoundsAction,
26
- SModelElement,
27
- TYPES
28
- } from 'sprotty';
29
- import { GLSP_TYPES } from '../../base/types';
18
+ import { Command, CommandExecutionContext, CommandReturn, ElementMove, IActionDispatcher, MoveAction, SModelElement } from 'sprotty';
19
+ import { TYPES } from '../../base/types';
30
20
  import { toValidElementAndBounds, toValidElementMove, WriteableElementAndBounds, WriteableElementMove } from '../../utils/layout-utils';
31
21
  import { BoundsAwareModelElement } from '../../utils/smodel-util';
32
22
  import { isBoundsAwareMoveable, isResizable } from '../change-bounds/model';
33
23
  import { IMovementRestrictor } from '../change-bounds/movement-restrictor';
34
24
  import { SelectionService } from '../select/selection-service';
35
25
 
26
+ /**
27
+ * Used to specify the desired resize dimension for a {@link ResizeElementsCommand}.
28
+ */
36
29
  // eslint-disable-next-line no-shadow
37
30
  export enum ResizeDimension {
38
31
  Width,
@@ -41,43 +34,99 @@ export enum ResizeDimension {
41
34
  }
42
35
 
43
36
  export namespace Reduce {
37
+ /**
38
+ * Returns the minimal value of the given numbers.
39
+ * @param values Numbers to be evaluated.
40
+ * @returns The reduced number.
41
+ */
44
42
  export function min(...values: number[]): number {
45
43
  return Math.min(...values);
46
44
  }
47
45
 
46
+ /**
47
+ * Returns the maximal value of the given numbers.
48
+ * @param values Numbers to be evaluated.
49
+ * @returns The reduced number.
50
+ */
48
51
  export function max(...values: number[]): number {
49
52
  return Math.max(...values);
50
53
  }
51
54
 
55
+ /**
56
+ * Computes the average of the given numbers.
57
+ * @param values Numbers to be evaluated.
58
+ */
52
59
  export function avg(...values: number[]): number {
53
60
  return values.reduce((a, b) => a + b, 0) / values.length;
54
61
  }
55
62
 
63
+ /**
64
+ * Returns the last value of the given numbers.
65
+ * @param values Numbers to be evaluated.
66
+ * @returns The reduced number.
67
+ */
56
68
  export function first(...values: number[]): number {
57
69
  return values[0];
58
70
  }
59
71
 
72
+ /**
73
+ * Returns the minimal value of the given numbers.
74
+ * @param values Numbers to be evaluated.
75
+ * @returns The reduced number.
76
+ */
60
77
  export function last(...values: number[]): number {
61
78
  return values[values.length - 1];
62
79
  }
80
+
81
+ /**
82
+ * Returns the reduce function that corresponds to the given {@link ReduceFunctionKind}.
83
+ * @param type The reduce function kind.
84
+ * @returns The corresponding reduce function.
85
+ */
63
86
  }
64
87
 
65
- export class ResizeElementsAction implements Action {
66
- constructor(
67
- /**
68
- * IDs of the elements that should be resized. If no IDs are given, the selected elements will be resized.
69
- */
70
- public readonly elementIds: string[] = [],
71
- /**
72
- * Resize dimension.
73
- */
74
- public readonly dimension: ResizeDimension = ResizeDimension.Width,
75
- /**
76
- * Function to reduce the dimension to a target dimension value, see Reduce.* for potential functions.
77
- */
78
- public readonly reductionFunction: (...values: number[]) => number,
79
- public readonly kind: string = ResizeElementsCommand.KIND
80
- ) {}
88
+ type ReduceFn = (...values: number[]) => number;
89
+ export interface ResizeElementsAction extends Action {
90
+ kind: typeof ResizeElementsAction.KIND;
91
+
92
+ /**
93
+ * IDs of the elements that should be resized. If no IDs are given, the selected elements will be resized.
94
+ */
95
+ elementIds: string[];
96
+ /**
97
+ * Resize dimension. The default is {@link ResizeDimension.Width}.
98
+ */
99
+ dimension: ResizeDimension;
100
+ /**
101
+ * Function to reduce the dimension to a target dimension value, see Reduce.* for potential functions.
102
+ */
103
+ reductionFunction: ReduceFn;
104
+ }
105
+
106
+ export namespace ResizeElementsAction {
107
+ export const KIND = 'resizeElementAction';
108
+
109
+ export function is(object: any): object is ResizeElementsAction {
110
+ return (
111
+ Action.hasKind(object, KIND) &&
112
+ hasArrayProp(object, 'elementIds') &&
113
+ hasNumberProp(object, 'dimension') &&
114
+ 'reductionFunction' in object
115
+ );
116
+ }
117
+
118
+ export function create(options: {
119
+ elementIds?: string[];
120
+ dimension?: ResizeDimension;
121
+ reductionFunction: ReduceFn;
122
+ }): ResizeElementsAction {
123
+ return {
124
+ kind: KIND,
125
+ dimension: ResizeDimension.Width,
126
+ elementIds: [],
127
+ ...options
128
+ };
129
+ }
81
130
  }
82
131
 
83
132
  // eslint-disable-next-line no-shadow
@@ -104,31 +153,56 @@ export namespace Select {
104
153
  }
105
154
  }
106
155
 
107
- export class AlignElementsAction implements Action {
108
- constructor(
109
- /**
110
- * IDs of the elements that should be aligned. If no IDs are given, the selected elements will be aligned.
111
- */
112
- public readonly elementIds: string[] = [],
113
- /**
114
- * Alignment direction.
115
- */
116
- public readonly alignment: Alignment = Alignment.Left,
117
- /**
118
- * Function to selected elements that are considered during alignment calculation, see Select.* for potential functions.
119
- */
120
- public readonly selectionFunction: (elements: BoundsAwareModelElement[]) => BoundsAwareModelElement[] = Select.all,
121
- public readonly kind = AlignElementsCommand.KIND
122
- ) {}
156
+ type SelectFn = (elements: BoundsAwareModelElement[]) => BoundsAwareModelElement[];
157
+ export interface AlignElementsAction extends Action {
158
+ kind: typeof AlignElementsAction.KIND;
159
+
160
+ /**
161
+ * IDs of the elements that should be aligned. If no IDs are given, the selected elements will be aligned.
162
+ */
163
+ elementIds: string[];
164
+ /**
165
+ * Alignment direction. The default is {@link Alignment.Left}
166
+ */
167
+ alignment: Alignment;
168
+ /**
169
+ * Function to selected elements that are considered during alignment calculation, see Select.* for potential functions.
170
+ * The default value is {@link Select.all}.
171
+ */
172
+ selectionFunction: SelectFn;
123
173
  }
124
174
 
175
+ export namespace AlignElementsAction {
176
+ export const KIND = 'alignElements';
177
+
178
+ export function is(object: any): object is AlignElementsAction {
179
+ return (
180
+ Action.hasKind(object, KIND) &&
181
+ hasArrayProp(object, 'elementIds') &&
182
+ hasNumberProp(object, 'alignment') &&
183
+ 'selectionFunction' in object
184
+ );
185
+ }
186
+
187
+ export function create(
188
+ options: { elementIds?: string[]; alignment?: Alignment; selectionFunction?: SelectFn } = {}
189
+ ): AlignElementsAction {
190
+ return {
191
+ kind: KIND,
192
+ elementIds: [],
193
+ alignment: Alignment.Left,
194
+ selectionFunction: Select.all,
195
+ ...options
196
+ };
197
+ }
198
+ }
125
199
  @injectable()
126
200
  abstract class LayoutElementsCommand extends Command {
127
201
  constructor(
128
202
  @inject(TYPES.Action) protected action: ResizeElementsAction | AlignElementsAction,
129
203
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
130
- @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService,
131
- @inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
204
+ @inject(TYPES.SelectionService) protected selectionService: SelectionService,
205
+ @inject(TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
132
206
  ) {
133
207
  super();
134
208
  }
@@ -163,13 +237,13 @@ abstract class LayoutElementsCommand extends Command {
163
237
 
164
238
  @injectable()
165
239
  export class ResizeElementsCommand extends LayoutElementsCommand {
166
- static readonly KIND = 'layout:resize';
240
+ static readonly KIND = ResizeElementsAction.KIND;
167
241
 
168
242
  constructor(
169
243
  @inject(TYPES.Action) protected override action: ResizeElementsAction,
170
244
  @inject(TYPES.IActionDispatcher) protected override actionDispatcher: IActionDispatcher,
171
- @inject(GLSP_TYPES.SelectionService) protected override selectionService: SelectionService,
172
- @inject(GLSP_TYPES.IMovementRestrictor) @optional() override readonly movementRestrictor?: IMovementRestrictor
245
+ @inject(TYPES.SelectionService) protected override selectionService: SelectionService,
246
+ @inject(TYPES.IMovementRestrictor) @optional() override readonly movementRestrictor?: IMovementRestrictor
173
247
  ) {
174
248
  super(action, actionDispatcher, selectionService, movementRestrictor);
175
249
  }
@@ -242,7 +316,7 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
242
316
  elementAndBounds.push(elementChange);
243
317
  }
244
318
  });
245
- this.dispatchActions([new SetBoundsAction(elementAndBounds), new ChangeBoundsOperation(elementAndBounds)]);
319
+ this.dispatchActions([SetBoundsAction.create(elementAndBounds), ChangeBoundsOperation.create(elementAndBounds)]);
246
320
  }
247
321
 
248
322
  createElementAndBounds(
@@ -277,13 +351,13 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
277
351
 
278
352
  @injectable()
279
353
  export class AlignElementsCommand extends LayoutElementsCommand {
280
- static readonly KIND = 'layout:align';
354
+ static readonly KIND = AlignElementsAction.KIND;
281
355
 
282
356
  constructor(
283
357
  @inject(TYPES.Action) protected override action: AlignElementsAction,
284
358
  @inject(TYPES.IActionDispatcher) protected override actionDispatcher: IActionDispatcher,
285
- @inject(GLSP_TYPES.SelectionService) protected override selectionService: SelectionService,
286
- @inject(GLSP_TYPES.IMovementRestrictor) @optional() override readonly movementRestrictor?: IMovementRestrictor
359
+ @inject(TYPES.SelectionService) protected override selectionService: SelectionService,
360
+ @inject(TYPES.IMovementRestrictor) @optional() override readonly movementRestrictor?: IMovementRestrictor
287
361
  ) {
288
362
  super(action, actionDispatcher, selectionService, movementRestrictor);
289
363
  }
@@ -376,7 +450,7 @@ export class AlignElementsCommand extends LayoutElementsCommand {
376
450
  elementAndBounds.push(elementAndBound);
377
451
  }
378
452
  });
379
- this.dispatchActions([new MoveAction(moves), new ChangeBoundsOperation(elementAndBounds)]);
453
+ this.dispatchActions([MoveAction.create(moves), ChangeBoundsOperation.create(elementAndBounds)]);
380
454
  }
381
455
 
382
456
  createElementMove(
@@ -13,17 +13,13 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { Bounds, Dimension, Point } from '@eclipse-glsp/protocol';
16
17
  import { injectable } from 'inversify';
17
18
  import {
18
- Bounds,
19
19
  BoundsData,
20
- Dimension,
21
- EMPTY_BOUNDS,
22
20
  isBoundsAware,
23
21
  isLayoutableChild,
24
- isValidDimension,
25
22
  LayoutContainer,
26
- Point,
27
23
  SChildElement,
28
24
  SModelElement,
29
25
  SParentElement,
@@ -91,7 +87,7 @@ export class VBoxLayouterExt extends VBoxLayouter {
91
87
  container.children.forEach(child => {
92
88
  if (isLayoutableChild(child)) {
93
89
  const bounds = layouter.getBoundsData(child).bounds;
94
- if (bounds !== undefined && isValidDimension(bounds)) {
90
+ if (bounds !== undefined && Dimension.isValid(bounds)) {
95
91
  maxHeight += bounds.height;
96
92
  if (isFirst) {
97
93
  isFirst = false;
@@ -128,7 +124,7 @@ export class VBoxLayouterExt extends VBoxLayouter {
128
124
  const boundsData = layouter.getBoundsData(child);
129
125
  const bounds = boundsData.bounds;
130
126
  const childOptions = this.getChildLayoutOptions(child, containerOptions);
131
- if (bounds !== undefined && isValidDimension(bounds)) {
127
+ if (bounds !== undefined && Dimension.isValid(bounds)) {
132
128
  currentOffset = this.layoutChild(
133
129
  child,
134
130
  boundsData,
@@ -197,7 +193,7 @@ export class VBoxLayouterExt extends VBoxLayouter {
197
193
  const height = elementOptions?.prefHeight ?? 0;
198
194
  return { ...bounds, width, height };
199
195
  }
200
- return EMPTY_BOUNDS;
196
+ return Bounds.EMPTY;
201
197
  }
202
198
 
203
199
  protected override getChildLayoutOptions(child: SChildElement, containerOptions: VBoxLayoutOptionsExt): VBoxLayoutOptionsExt {
@@ -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,15 +13,10 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import {
17
- Action,
18
- GLSPServerStatusAction,
19
- isModelSourceChangedAction,
20
- ModelSourceChangedAction,
21
- ServerMessageAction
22
- } from '@eclipse-glsp/protocol';
16
+ import { Action, ModelSourceChangedAction, ServerMessageAction, ServerStatusAction } from '@eclipse-glsp/protocol';
23
17
  import { inject, injectable, optional } from 'inversify';
24
- import { IActionDispatcher, IActionHandler, TYPES, ViewerOptions } from 'sprotty';
18
+ import { IActionDispatcher, IActionHandler, ViewerOptions } from 'sprotty';
19
+ import { TYPES } from '../../base/types';
25
20
 
26
21
  /**
27
22
  * An external handler of the model source change event.
@@ -51,7 +46,7 @@ export class ModelSourceChangedActionHandler implements IActionHandler {
51
46
  protected externalModelSourceChangedHandler?: ExternalModelSourceChangedHandler;
52
47
 
53
48
  handle(action: Action): void {
54
- if (isModelSourceChangedAction(action)) {
49
+ if (ModelSourceChangedAction.is(action)) {
55
50
  if (this.externalModelSourceChangedHandler) {
56
51
  this.externalModelSourceChangedHandler
57
52
  .notifyModelSourceChange(action.modelSourceName, this.options)
@@ -67,8 +62,8 @@ export class ModelSourceChangedActionHandler implements IActionHandler {
67
62
  const timeout = 0;
68
63
  const severity = 'WARNING';
69
64
  this.dispatcher.dispatchAll([
70
- { kind: GLSPServerStatusAction.KIND, severity, timeout, message } as GLSPServerStatusAction,
71
- { kind: ServerMessageAction.KIND, severity, timeout, message } as ServerMessageAction
65
+ ServerStatusAction.create(message, { severity, timeout }),
66
+ ServerMessageAction.create(message, { severity, timeout })
72
67
  ]);
73
68
  }
74
69
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -15,13 +15,12 @@
15
15
  ********************************************************************************/
16
16
  import { ContainerModule } from 'inversify';
17
17
  import { MouseTool } from 'sprotty';
18
-
19
- import { GLSP_TYPES } from '../../base/types';
18
+ import { TYPES } from '../../base/types';
20
19
  import { RankingMouseTool } from './mouse-tool';
21
20
 
22
21
  const glspMouseToolModule = new ContainerModule((bind, _unbind, _isBound, rebind) => {
23
22
  bind(RankingMouseTool).toSelf().inSingletonScope();
24
- bind(GLSP_TYPES.MouseTool).toService(RankingMouseTool);
23
+ bind(TYPES.MouseTool).toService(RankingMouseTool);
25
24
  rebind(MouseTool).toService(RankingMouseTool);
26
25
  });
27
26
 
@@ -13,9 +13,9 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, isAction } from '@eclipse-glsp/protocol';
17
16
  import { injectable, multiInject, optional } from 'inversify';
18
- import { MouseListener, MouseTool, SModelElement, SModelRoot, TYPES } from 'sprotty';
17
+ import { MouseListener, MouseTool, SModelElement, SModelRoot } from 'sprotty';
18
+ import { TYPES } from '../../base/types';
19
19
  import { getRank } from '../rank/model';
20
20
 
21
21
  export interface IMouseTool {
@@ -82,13 +82,8 @@ export class RankingMouseTool extends MouseTool implements IMouseTool {
82
82
  if (actions.length > 0) {
83
83
  event.preventDefault();
84
84
  for (const actionOrPromise of actions) {
85
- if (isAction(actionOrPromise)) {
86
- await this.actionDispatcher.dispatch(actionOrPromise);
87
- } else {
88
- actionOrPromise.then((action: Action) => {
89
- this.actionDispatcher.dispatch(action);
90
- });
91
- }
85
+ const action = await actionOrPromise;
86
+ await this.actionDispatcher.dispatch(action);
92
87
  }
93
88
  }
94
89
  }
@@ -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
@@ -17,10 +17,8 @@ import {
17
17
  Action,
18
18
  Args,
19
19
  CenterAction,
20
- GLSPServerStatusAction,
21
- isNavigateToExternalTargetAction,
22
- isNavigateToTargetAction,
23
- isSetNavigationTargetsAction,
20
+ hasObjectProp,
21
+ hasStringProp,
24
22
  NavigateToExternalTargetAction,
25
23
  NavigateToTargetAction,
26
24
  NavigationTarget,
@@ -28,13 +26,15 @@ import {
28
26
  SelectAction,
29
27
  SelectAllAction,
30
28
  ServerMessageAction,
29
+ ServerSeverity,
30
+ ServerStatusAction,
31
+ SetNavigationTargetsAction,
31
32
  SetResolvedNavigationTargetAction
32
33
  } from '@eclipse-glsp/protocol';
33
34
  import { inject, injectable } from 'inversify';
34
- import { ActionHandlerRegistry, IActionDispatcher, IActionHandler, ICommand, ILogger, TYPES } from 'sprotty';
35
-
35
+ import { ActionHandlerRegistry, IActionDispatcher, IActionHandler, ICommand, ILogger } from 'sprotty';
36
36
  import { EditorContextServiceProvider } from '../../base/editor-context-service';
37
- import { GLSP_TYPES } from '../../base/types';
37
+ import { TYPES } from '../../base/types';
38
38
  import { NavigationTargetResolver } from './navigation-target-resolver';
39
39
 
40
40
  /**
@@ -48,38 +48,66 @@ import { NavigationTargetResolver } from './navigation-target-resolver';
48
48
  *
49
49
  * This action is typically triggered by a user action.
50
50
  */
51
- export class NavigateAction implements Action {
52
- static readonly KIND = 'navigate';
53
- readonly kind = NavigateAction.KIND;
54
- constructor(readonly targetTypeId: string, readonly args?: Args) {}
51
+
52
+ export interface NavigateAction extends Action {
53
+ kind: typeof NavigateAction.KIND;
54
+ /**
55
+ * Navigation target type, such as `documentation`, `implementation`, etc.
56
+ */
57
+ targetTypeId: string;
58
+ /**
59
+ * Additional arguments for customization.
60
+ */
61
+ args?: Args;
55
62
  }
56
63
 
57
- export function isNavigateAction(action: Action): action is NavigateAction {
58
- return action !== undefined && action.kind === NavigateAction.KIND && (action as NavigateAction).targetTypeId !== undefined;
64
+ export namespace NavigateAction {
65
+ export const KIND = 'navigate';
66
+
67
+ export function is(object: any): object is NavigateAction {
68
+ return Action.hasKind(object, KIND) && hasStringProp(object, 'targetTypeId');
69
+ }
70
+
71
+ export function create(targetTypeId: string, options: { args?: Args } = {}): NavigateAction {
72
+ return {
73
+ kind: KIND,
74
+ targetTypeId,
75
+ ...options
76
+ };
77
+ }
59
78
  }
60
79
 
61
- /** Action to trigger the processing of additional navigation arguments.
62
- *
80
+ /**
81
+ * Action to trigger the processing of additional navigation arguments.
63
82
  * The resolution of a `NavigationTarget` may entail additional arguments. In this case, this action is
64
83
  * triggered allowing the client to react to those arguments. The default `NavigationActionHandler` will
65
84
  * only process the arguments' keys `info`, `warning`, and `error` to present them to the user.
66
85
  * Customizations, however, may add domain-specific arguments and register custom handler to also process
67
86
  * other arguments and trigger some additional behavior (e.g. update other views, etc.).
68
87
  */
69
- export class ProcessNavigationArgumentsAction implements Action {
70
- static readonly KIND = 'processNavigationArguments';
71
- readonly kind = ProcessNavigationArgumentsAction.KIND;
72
- constructor(readonly args: Args) {}
73
- }
74
88
 
75
- export function isProcessNavigationArgumentsAction(action: Action): action is ProcessNavigationArgumentsAction {
76
- return (
77
- action !== undefined &&
78
- action.kind === ProcessNavigationArgumentsAction.KIND &&
79
- (action as ProcessNavigationArgumentsAction).args !== undefined
80
- );
89
+ export interface ProcessNavigationArgumentsAction extends Action {
90
+ kind: typeof ProcessNavigationArgumentsAction.KIND;
91
+ /**
92
+ * The navigation arguments.
93
+ */
94
+ args: Args;
81
95
  }
82
96
 
97
+ export namespace ProcessNavigationArgumentsAction {
98
+ export const KIND = 'processNavigationArguments';
99
+
100
+ export function is(object: any): object is ProcessNavigationArgumentsAction {
101
+ return Action.hasKind(object, KIND) && hasObjectProp(object, 'args');
102
+ }
103
+
104
+ export function create(args: Args): ProcessNavigationArgumentsAction {
105
+ return {
106
+ kind: KIND,
107
+ args
108
+ };
109
+ }
110
+ }
83
111
  /**
84
112
  * Default handler for all actions that are related to the navigation.
85
113
  *
@@ -109,17 +137,17 @@ export class NavigationActionHandler implements IActionHandler {
109
137
  @inject(TYPES.ILogger) protected logger: ILogger;
110
138
  @inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
111
139
  @inject(TYPES.ActionHandlerRegistryProvider) protected actionHandlerRegistryProvider: () => Promise<ActionHandlerRegistry>;
112
- @inject(GLSP_TYPES.IEditorContextServiceProvider) protected editorContextService: EditorContextServiceProvider;
140
+ @inject(TYPES.IEditorContextServiceProvider) protected editorContextService: EditorContextServiceProvider;
113
141
  @inject(NavigationTargetResolver) protected resolver: NavigationTargetResolver;
114
142
 
115
143
  handle(action: Action): ICommand | Action | void {
116
- if (isNavigateAction(action)) {
144
+ if (NavigateAction.is(action)) {
117
145
  this.handleNavigateAction(action);
118
- } else if (isNavigateToTargetAction(action)) {
146
+ } else if (NavigateToTargetAction.is(action)) {
119
147
  this.handleNavigateToTarget(action);
120
- } else if (isProcessNavigationArgumentsAction(action)) {
148
+ } else if (ProcessNavigationArgumentsAction.is(action)) {
121
149
  this.processNavigationArguments(action.args);
122
- } else if (isNavigateToExternalTargetAction(action)) {
150
+ } else if (NavigateToExternalTargetAction.is(action)) {
123
151
  this.handleNavigateToExternalTarget(action);
124
152
  }
125
153
  }
@@ -127,9 +155,11 @@ export class NavigationActionHandler implements IActionHandler {
127
155
  protected async handleNavigateAction(action: NavigateAction): Promise<void> {
128
156
  try {
129
157
  const editorContextService = await this.editorContextService();
130
- const context = editorContextService.get(action.args);
131
- const response = await this.dispatcher.request(new RequestNavigationTargetsAction(action.targetTypeId, context));
132
- if (isSetNavigationTargetsAction(response) && response.targets && response.targets.length === 1) {
158
+ const editorContext = editorContextService.get(action.args);
159
+ const response = await this.dispatcher.request(
160
+ RequestNavigationTargetsAction.create({ targetTypeId: action.targetTypeId, editorContext })
161
+ );
162
+ if (SetNavigationTargetsAction.is(response) && response.targets && response.targets.length === 1) {
133
163
  if (response.targets.length > 1) {
134
164
  this.logger.warn(
135
165
  this,
@@ -137,7 +167,7 @@ export class NavigationActionHandler implements IActionHandler {
137
167
  response.targets
138
168
  );
139
169
  }
140
- return this.dispatcher.dispatch(new NavigateToTargetAction(response.targets[0]));
170
+ return this.dispatcher.dispatch(NavigateToTargetAction.create(response.targets[0]));
141
171
  }
142
172
  this.warnAboutFailedNavigation('No valid navigation target found');
143
173
  } catch (reason) {
@@ -184,7 +214,11 @@ export class NavigationActionHandler implements IActionHandler {
184
214
  if (!this.containsElementIds(elementIds)) {
185
215
  return;
186
216
  }
187
- this.dispatcher.dispatchAll([new SelectAllAction(false), new SelectAction(elementIds), new CenterAction(elementIds)]);
217
+ this.dispatcher.dispatchAll([
218
+ SelectAllAction.create(false),
219
+ SelectAction.create({ selectedElementsIDs: elementIds }),
220
+ CenterAction.create(elementIds)
221
+ ]);
188
222
  }
189
223
 
190
224
  protected handleResolutionArguments(target: SetResolvedNavigationTargetAction): void {
@@ -192,11 +226,11 @@ export class NavigationActionHandler implements IActionHandler {
192
226
  if (!this.containsArguments(args)) {
193
227
  return;
194
228
  }
195
- this.dispatcher.dispatch(new ProcessNavigationArgumentsAction(args));
229
+ this.dispatcher.dispatch(ProcessNavigationArgumentsAction.create(args));
196
230
  }
197
231
 
198
232
  protected navigateToExternal(target: NavigationTarget): Promise<void> {
199
- return this.dispatcher.dispatch(new NavigateToExternalTargetAction(target));
233
+ return this.dispatcher.dispatch(NavigateToExternalTargetAction.create(target));
200
234
  }
201
235
 
202
236
  protected processNavigationArguments(args: Args): void {
@@ -226,11 +260,11 @@ export class NavigationActionHandler implements IActionHandler {
226
260
  this.notify('WARNING', message);
227
261
  }
228
262
 
229
- private notify(severity: string, message: string): void {
263
+ private notify(severity: ServerSeverity, message: string): void {
230
264
  const timeout = this.notificationTimeout;
231
265
  this.dispatcher.dispatchAll([
232
- { kind: GLSPServerStatusAction.KIND, severity, timeout, message } as GLSPServerStatusAction,
233
- { kind: ServerMessageAction.KIND, severity, timeout, message } as ServerMessageAction
266
+ ServerStatusAction.create(message, { severity, timeout }),
267
+ ServerMessageAction.create(message, { severity, timeout })
234
268
  ]);
235
269
  }
236
270
  }
@@ -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
@@ -22,7 +22,7 @@ import 'reflect-metadata';
22
22
  describe('NavigationTarget', () => {
23
23
  it('should be able to set and get element IDs', () => {
24
24
  const navigationTarget: NavigationTarget = { uri: 'uri' };
25
- NavigationTarget.setElementIds(navigationTarget, ['id1', 'id2']);
25
+ NavigationTarget.setElementIds(navigationTarget, 'id1', 'id2');
26
26
  expect(NavigationTarget.getElementIds(navigationTarget)).to.be.eql(['id1', 'id2']);
27
27
  });
28
28
 
@@ -46,7 +46,7 @@ describe('NavigationTarget', () => {
46
46
 
47
47
  navigationTarget = { uri: 'uri' };
48
48
  expect(NavigationTarget.hasArguments(navigationTarget)).to.be.false;
49
- NavigationTarget.setElementIds(navigationTarget, ['id1', 'id2']);
49
+ NavigationTarget.setElementIds(navigationTarget, 'id1', 'id2');
50
50
  expect(NavigationTarget.hasArguments(navigationTarget)).to.be.true;
51
51
 
52
52
  navigationTarget = { uri: 'uri' };