@eclipse-glsp/client 0.9.0 → 0.10.0-next.17bfb07.173

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