@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,11 +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 { isSetContextActionsAction, RequestContextActions, RequestMarkersAction, SetContextActions } from '@eclipse-glsp/protocol';
16
+ import { Action, PaletteItem, RequestContextActions, RequestMarkersAction, SetContextActions } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable, postConstruct } from 'inversify';
18
18
  import {
19
19
  AbstractUIExtension,
20
- Action,
21
20
  EnableDefaultToolsAction,
22
21
  EnableToolsAction,
23
22
  IActionHandler,
@@ -33,7 +32,6 @@ import { GLSPActionDispatcher } from '../../base/action-dispatcher';
33
32
  import { EditModeListener, EditorContextService } from '../../base/editor-context-service';
34
33
  import { MouseDeleteTool } from '../tools/delete-tool';
35
34
  import { MarqueeMouseTool } from '../tools/marquee-mouse-tool';
36
- import { PaletteItem } from './palette-item';
37
35
 
38
36
  const CLICKED_CSS_CLASS = 'clicked';
39
37
  const SEARCH_ICON_ID = 'search';
@@ -41,12 +39,21 @@ const PALETTE_ICON_ID = 'symbol-color';
41
39
  const CHEVRON_DOWN_ICON_ID = 'chevron-right';
42
40
  const PALETTE_HEIGHT = '500px';
43
41
 
44
- @injectable()
45
- export class EnableToolPaletteAction implements Action {
46
- static readonly KIND = 'enableToolPalette';
47
- readonly kind = EnableToolPaletteAction.KIND;
42
+ export interface EnableToolPaletteAction extends Action {
43
+ kind: typeof EnableToolPaletteAction.KIND;
48
44
  }
49
45
 
46
+ export namespace EnableToolPaletteAction {
47
+ export const KIND = 'enableToolPalette';
48
+
49
+ export function is(object: any): object is EnableToolPaletteAction {
50
+ return Action.hasKind(object, KIND);
51
+ }
52
+
53
+ export function create(): EnableToolPaletteAction {
54
+ return { kind: KIND };
55
+ }
56
+ }
50
57
  @injectable()
51
58
  export class ToolPalette extends AbstractUIExtension implements IActionHandler, EditModeListener {
52
59
  static readonly ID = 'tool-palette';
@@ -215,7 +222,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
215
222
  validateActionButton.title = 'Validate model';
216
223
  validateActionButton.onclick = _event => {
217
224
  const modelIds: string[] = [this.modelRootId];
218
- this.actionDispatcher.dispatch(new RequestMarkersAction(modelIds));
225
+ this.actionDispatcher.dispatch(RequestMarkersAction.create(modelIds));
219
226
  };
220
227
  return validateActionButton;
221
228
  }
@@ -284,7 +291,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
284
291
  protected onClickStaticToolButton(button: HTMLElement, toolId?: string) {
285
292
  return (_ev: MouseEvent) => {
286
293
  if (!this.editorContext.isReadonly) {
287
- const action = toolId ? new EnableToolsAction([toolId]) : new EnableDefaultToolsAction();
294
+ const action = toolId ? EnableToolsAction.create([toolId]) : EnableDefaultToolsAction.create();
288
295
  this.actionDispatcher.dispatch(action);
289
296
  this.changeActiveButton(button);
290
297
  button.focus();
@@ -307,23 +314,30 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
307
314
 
308
315
  handle(action: Action): ICommand | Action | void {
309
316
  if (action.kind === EnableToolPaletteAction.KIND) {
310
- const requestAction = new RequestContextActions(ToolPalette.ID, {
311
- selectedElementIds: []
317
+ const requestAction = RequestContextActions.create({
318
+ contextId: ToolPalette.ID,
319
+ editorContext: {
320
+ selectedElementIds: []
321
+ }
312
322
  });
313
323
  this.actionDispatcher.requestUntil(requestAction).then(response => {
314
- if (isSetContextActionsAction(response)) {
324
+ if (SetContextActions.is(response)) {
315
325
  this.paletteItems = response.actions.map(e => e as PaletteItem);
316
- this.actionDispatcher.dispatch(new SetUIExtensionVisibilityAction(ToolPalette.ID, !this.editorContext.isReadonly));
326
+ this.actionDispatcher.dispatch(
327
+ SetUIExtensionVisibilityAction.create({ extensionId: ToolPalette.ID, visible: !this.editorContext.isReadonly })
328
+ );
317
329
  }
318
330
  });
319
- } else if (action instanceof EnableDefaultToolsAction) {
331
+ } else if (action.kind === EnableDefaultToolsAction.KIND) {
320
332
  this.changeActiveButton();
321
333
  this.restoreFocus();
322
334
  }
323
335
  }
324
336
 
325
337
  editModeChanged(_oldValue: string, _newValue: string): void {
326
- this.actionDispatcher.dispatch(new SetUIExtensionVisibilityAction(ToolPalette.ID, !this.editorContext.isReadonly));
338
+ this.actionDispatcher.dispatch(
339
+ SetUIExtensionVisibilityAction.create({ extensionId: ToolPalette.ID, visible: !this.editorContext.isReadonly })
340
+ );
327
341
  }
328
342
 
329
343
  protected clearOnEscape(event: KeyboardEvent): void {
@@ -335,7 +349,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
335
349
 
336
350
  protected clearToolOnEscape(event: KeyboardEvent): void {
337
351
  if (matchesKeystroke(event, 'Escape')) {
338
- this.actionDispatcher.dispatch(new EnableDefaultToolsAction());
352
+ this.actionDispatcher.dispatch(EnableDefaultToolsAction.create());
339
353
  }
340
354
  }
341
355
 
@@ -15,18 +15,18 @@
15
15
  ********************************************************************************/
16
16
  import { Action } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
- import { IActionDispatcher, KeyTool, TYPES } from 'sprotty';
18
+ import { IActionDispatcher, KeyTool } from 'sprotty';
19
19
  import { EditorContextService } from '../../base/editor-context-service';
20
20
  import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
21
- import { GLSP_TYPES } from '../../base/types';
21
+ import { TYPES } from '../../base/types';
22
22
  import { IMouseTool } from '../mouse-tool/mouse-tool';
23
23
  import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
24
24
 
25
25
  @injectable()
26
26
  export abstract class BaseGLSPTool implements GLSPTool {
27
- @inject(GLSP_TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
27
+ @inject(TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
28
28
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher;
29
- @inject(GLSP_TYPES.MouseTool) protected mouseTool: IMouseTool;
29
+ @inject(TYPES.MouseTool) protected mouseTool: IMouseTool;
30
30
  @inject(KeyTool) protected keyTool: KeyTool;
31
31
  @inject(EditorContextService) protected readonly editorContext: EditorContextService;
32
32
 
@@ -19,32 +19,30 @@ import {
19
19
  ChangeBoundsOperation,
20
20
  ChangeRoutingPointsOperation,
21
21
  CompoundOperation,
22
+ Dimension,
23
+ ElementAndBounds,
22
24
  ElementAndRoutingPoints,
23
25
  Operation,
24
- Point
26
+ Point,
27
+ SetBoundsAction
25
28
  } from '@eclipse-glsp/protocol';
26
29
  import { inject, injectable, optional } from 'inversify';
27
30
  import {
28
31
  BoundsAware,
29
- Dimension,
30
32
  EdgeRouterRegistry,
31
- ElementAndBounds,
32
33
  findParentByFeature,
33
34
  ISnapper,
34
35
  isSelected,
35
- isViewport,
36
36
  MouseListener,
37
37
  SChildElement,
38
38
  SConnectableElement,
39
- SetBoundsAction,
40
39
  SModelElement,
41
40
  SModelRoot,
42
- SParentElement,
43
- TYPES
41
+ SParentElement
44
42
  } from 'sprotty';
45
43
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
46
- import { GLSP_TYPES } from '../../base/types';
47
- import { isValidMove, isValidSize, WriteablePoint } from '../../utils/layout-utils';
44
+ import { TYPES } from '../../base/types';
45
+ import { isValidMove, isValidSize } from '../../utils/layout-utils';
48
46
  import {
49
47
  forEachElement,
50
48
  isNonRoutableSelectedMovableBoundsAware,
@@ -57,6 +55,7 @@ import {
57
55
  IMovementRestrictor,
58
56
  removeMovementRestrictionFeedback
59
57
  } from '../change-bounds/movement-restrictor';
58
+ import { PointPositionUpdater } from '../change-bounds/snap';
60
59
  import { SelectionListener, SelectionService } from '../select/selection-service';
61
60
  import {
62
61
  FeedbackMoveMouseListener,
@@ -83,10 +82,10 @@ import { BaseGLSPTool } from './base-glsp-tool';
83
82
  export class ChangeBoundsTool extends BaseGLSPTool {
84
83
  static ID = 'glsp.change-bounds-tool';
85
84
 
86
- @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService;
85
+ @inject(TYPES.SelectionService) protected selectionService: SelectionService;
87
86
  @inject(EdgeRouterRegistry) @optional() readonly edgeRouterRegistry?: EdgeRouterRegistry;
88
87
  @inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
89
- @inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor;
88
+ @inject(TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor;
90
89
  protected feedbackMoveMouseListener: MouseListener;
91
90
  protected changeBoundsListener: MouseListener & SelectionListener;
92
91
 
@@ -118,7 +117,7 @@ export class ChangeBoundsTool extends BaseGLSPTool {
118
117
  this.selectionService.deregister(this.changeBoundsListener);
119
118
  this.mouseTool.deregister(this.feedbackMoveMouseListener);
120
119
  this.deregisterFeedback([], this.feedbackMoveMouseListener);
121
- this.deregisterFeedback([new HideChangeBoundsToolResizeFeedbackAction()], this.changeBoundsListener);
120
+ this.deregisterFeedback([HideChangeBoundsToolResizeFeedbackAction.create()], this.changeBoundsListener);
122
121
  }
123
122
  }
124
123
 
@@ -127,8 +126,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
127
126
 
128
127
  // members for calculating the correct position change
129
128
  protected initialBounds: Bounds | undefined;
130
- protected lastDragPosition?: Point;
131
- protected positionDelta: WriteablePoint = { x: 0, y: 0 };
129
+ protected pointPositionUpdater: PointPositionUpdater;
132
130
 
133
131
  // members for resize mode
134
132
  protected activeResizeElement?: SModelElement;
@@ -136,11 +134,14 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
136
134
 
137
135
  constructor(protected tool: ChangeBoundsTool) {
138
136
  super();
137
+ this.pointPositionUpdater = new PointPositionUpdater(tool.snapper);
139
138
  }
140
139
 
141
140
  override mouseDown(target: SModelElement, event: MouseEvent): Action[] {
142
141
  super.mouseDown(target, event);
143
- if (event.button !== 0) {
142
+ // If another button than the left mouse button was clicked or we are
143
+ // still on the root element we don't need to execute the tool behavior
144
+ if (event.button !== 0 || target instanceof SModelRoot) {
144
145
  return [];
145
146
  }
146
147
  // check if we have a resize handle (only single-selection)
@@ -166,7 +167,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
166
167
  cursorFeedbackAction(this.activeResizeHandle.isNwSeResize() ? CursorCSS.RESIZE_NWSE : CursorCSS.RESIZE_NESW),
167
168
  applyCssClasses(this.activeResizeHandle, ChangeBoundsListener.CSS_CLASS_ACTIVE)
168
169
  ];
169
- const positionUpdate = this.updatePosition(target, event);
170
+ const positionUpdate = this.pointPositionUpdater.updatePosition(target, { x: event.pageX, y: event.pageY }, !event.altKey);
170
171
  if (positionUpdate) {
171
172
  const resizeActions = this.handleResizeOnClient(positionUpdate);
172
173
  actions.push(...resizeActions);
@@ -177,7 +178,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
177
178
  }
178
179
 
179
180
  override draggingMouseUp(target: SModelElement, event: MouseEvent): Action[] {
180
- if (this.lastDragPosition === undefined) {
181
+ if (this.pointPositionUpdater.isLastDragPositionUndefined()) {
181
182
  this.resetPosition();
182
183
  return [];
183
184
  }
@@ -200,12 +201,12 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
200
201
  operations.push(...this.handleMoveElementsOnServer(target));
201
202
  operations.push(...this.handleMoveRoutingPointsOnServer(target));
202
203
  if (operations.length > 0) {
203
- return [new CompoundOperation(operations)];
204
+ return [CompoundOperation.create(operations)];
204
205
  }
205
206
  return operations;
206
207
  }
207
208
 
208
- protected handleMoveElementsOnServer(target: SModelElement): Action[] {
209
+ protected handleMoveElementsOnServer(target: SModelElement): Operation[] {
209
210
  const result: Operation[] = [];
210
211
  const newBounds: ElementAndBounds[] = [];
211
212
  const selectedElements: (SModelElement & BoundsAware)[] = [];
@@ -220,7 +221,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
220
221
  .forEach(bounds => newBounds.push(...bounds));
221
222
 
222
223
  if (newBounds.length > 0) {
223
- result.push(new ChangeBoundsOperation(newBounds));
224
+ result.push(ChangeBoundsOperation.create(newBounds));
224
225
  }
225
226
  return result;
226
227
  }
@@ -235,7 +236,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
235
236
  return false;
236
237
  }
237
238
 
238
- protected handleMoveRoutingPointsOnServer(target: SModelElement): Action[] {
239
+ protected handleMoveRoutingPointsOnServer(target: SModelElement): Operation[] {
239
240
  const result: Operation[] = [];
240
241
  const newRoutingPoints: ElementAndRoutingPoints[] = [];
241
242
  forEachElement(target.index, isNonRoutableSelectedMovableBoundsAware, element => {
@@ -246,7 +247,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
246
247
  }
247
248
  });
248
249
  if (newRoutingPoints.length > 0) {
249
- result.push(new ChangeRoutingPointsOperation(newRoutingPoints));
250
+ result.push(ChangeRoutingPointsOperation.create(newRoutingPoints));
250
251
  }
251
252
  return result;
252
253
  }
@@ -287,7 +288,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
287
288
  // only allow one element to have the element resize handles
288
289
  this.activeResizeElement = moveableElement;
289
290
  if (isResizable(this.activeResizeElement)) {
290
- this.tool.dispatchFeedback([new ShowChangeBoundsToolResizeFeedbackAction(this.activeResizeElement.id)], this);
291
+ this.tool.dispatchFeedback([ShowChangeBoundsToolResizeFeedbackAction.create(this.activeResizeElement.id)], this);
291
292
  }
292
293
  return true;
293
294
  }
@@ -299,7 +300,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
299
300
  }
300
301
 
301
302
  protected initPosition(event: MouseEvent): void {
302
- this.lastDragPosition = { x: event.pageX, y: event.pageY };
303
+ this.pointPositionUpdater.updateLastDragPosition({ x: event.pageX, y: event.pageY });
303
304
  if (this.activeResizeHandle) {
304
305
  const resizeElement = findParentByFeature(this.activeResizeHandle, isResizable);
305
306
  this.initialBounds = {
@@ -311,39 +312,9 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
311
312
  }
312
313
  }
313
314
 
314
- protected updatePosition(target: SModelElement, event: MouseEvent): Point | undefined {
315
- if (this.lastDragPosition) {
316
- const newDragPosition = { x: event.pageX, y: event.pageY };
317
-
318
- const viewport = findParentByFeature(target, isViewport);
319
- const zoom = viewport ? viewport.zoom : 1;
320
- const dx = (event.pageX - this.lastDragPosition.x) / zoom;
321
- const dy = (event.pageY - this.lastDragPosition.y) / zoom;
322
- const deltaToLastPosition = { x: dx, y: dy };
323
- this.lastDragPosition = newDragPosition;
324
-
325
- // update position delta with latest delta
326
- this.positionDelta.x += deltaToLastPosition.x;
327
- this.positionDelta.y += deltaToLastPosition.y;
328
-
329
- // snap our delta and only send update if the position actually changes
330
- // otherwise accumulate delta until we do snap to an update
331
- const positionUpdate = this.snap(this.positionDelta, target, !event.altKey);
332
- if (positionUpdate.x === 0 && positionUpdate.y === 0) {
333
- return undefined;
334
- }
335
-
336
- // we update our position so we update our delta by the snapped position
337
- this.positionDelta.x -= positionUpdate.x;
338
- this.positionDelta.y -= positionUpdate.y;
339
- return positionUpdate;
340
- }
341
- return undefined;
342
- }
343
-
344
315
  protected reset(): void {
345
316
  if (this.activeResizeElement && isResizable(this.activeResizeElement)) {
346
- this.tool.dispatchFeedback([new HideChangeBoundsToolResizeFeedbackAction()], this);
317
+ this.tool.dispatchFeedback([HideChangeBoundsToolResizeFeedbackAction.create()], this);
347
318
  }
348
319
  this.tool.dispatchActions([cursorFeedbackAction(CursorCSS.DEFAULT)]);
349
320
  this.resetPosition();
@@ -351,8 +322,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
351
322
 
352
323
  protected resetPosition(): void {
353
324
  this.activeResizeHandle = undefined;
354
- this.lastDragPosition = undefined;
355
- this.positionDelta = { x: 0, y: 0 };
325
+ this.pointPositionUpdater.resetPosition();
356
326
  }
357
327
 
358
328
  protected handleResizeOnClient(positionUpdate: Point): Action[] {
@@ -418,13 +388,13 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
418
388
 
419
389
  protected createChangeBoundsAction(element: SModelElement & BoundsAware): Action[] {
420
390
  if (this.isValidBoundChange(element, element.bounds, element.bounds)) {
421
- return [new ChangeBoundsOperation([toElementAndBounds(element)])];
391
+ return [ChangeBoundsOperation.create([toElementAndBounds(element)])];
422
392
  } else if (this.initialBounds) {
423
393
  const actions: Action[] = [];
424
394
  if (this.tool.movementRestrictor) {
425
395
  actions.push(removeMovementRestrictionFeedback(element, this.tool.movementRestrictor));
426
396
  }
427
- actions.push(new SetBoundsAction([{ elementId: element.id, newPosition: this.initialBounds, newSize: this.initialBounds }]));
397
+ actions.push(SetBoundsAction.create([{ elementId: element.id, newPosition: this.initialBounds, newSize: this.initialBounds }]));
428
398
  return actions;
429
399
  }
430
400
  return [];
@@ -446,12 +416,12 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
446
416
  if (this.tool.movementRestrictor) {
447
417
  result.push(removeMovementRestrictionFeedback(element, this.tool.movementRestrictor));
448
418
  }
449
- result.push(new SetBoundsAction([{ elementId: element.id, newPosition, newSize }]));
419
+ result.push(SetBoundsAction.create([{ elementId: element.id, newPosition, newSize }]));
450
420
  } else if (this.isValidSize(element, newSize)) {
451
421
  if (this.tool.movementRestrictor) {
452
422
  result.push(createMovementRestrictionFeedback(element, this.tool.movementRestrictor));
453
423
  }
454
- result.push(new SetBoundsAction([{ elementId: element.id, newPosition, newSize }]));
424
+ result.push(SetBoundsAction.create([{ elementId: element.id, newPosition, newSize }]));
455
425
  }
456
426
 
457
427
  return result;
@@ -28,7 +28,7 @@ import {
28
28
  } from 'sprotty';
29
29
  import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
30
30
  import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
31
- import { GLSP_TYPES } from '../../base/types';
31
+ import { TYPES } from '../../base/types';
32
32
  import { IMouseTool } from '../mouse-tool/mouse-tool';
33
33
  import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
34
34
  import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
@@ -70,7 +70,7 @@ export class DeleteKeyListener extends KeyListener {
70
70
  .map(e => e.id)
71
71
  );
72
72
  if (deleteElementIds.length > 0) {
73
- return [new DeleteElementOperation(deleteElementIds)];
73
+ return [DeleteElementOperation.create(deleteElementIds)];
74
74
  }
75
75
  }
76
76
  return [];
@@ -88,8 +88,8 @@ export class MouseDeleteTool implements GLSPTool {
88
88
 
89
89
  protected deleteToolMouseListener: DeleteToolMouseListener = new DeleteToolMouseListener();
90
90
 
91
- @inject(GLSP_TYPES.MouseTool) protected mouseTool: IMouseTool;
92
- @inject(GLSP_TYPES.IFeedbackActionDispatcher) protected readonly feedbackDispatcher: IFeedbackActionDispatcher;
91
+ @inject(TYPES.MouseTool) protected mouseTool: IMouseTool;
92
+ @inject(TYPES.IFeedbackActionDispatcher) protected readonly feedbackDispatcher: IFeedbackActionDispatcher;
93
93
 
94
94
  get id(): string {
95
95
  return MouseDeleteTool.ID;
@@ -114,9 +114,9 @@ export class DeleteToolMouseListener extends MouseListener {
114
114
  return [];
115
115
  }
116
116
  const result: Action[] = [];
117
- result.push(new DeleteElementOperation([deletableParent.id]));
117
+ result.push(DeleteElementOperation.create([deletableParent.id]));
118
118
  if (!isCtrlOrCmd(event)) {
119
- result.push(new EnableDefaultToolsAction());
119
+ result.push(EnableDefaultToolsAction.create());
120
120
  }
121
121
  return result;
122
122
  }
@@ -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
@@ -16,7 +16,7 @@
16
16
  import { TriggerEdgeCreationAction, TriggerNodeCreationAction } from '@eclipse-glsp/protocol';
17
17
  import { ContainerModule, interfaces } from 'inversify';
18
18
  import { configureActionHandler, configureModelElement } from 'sprotty';
19
- import { GLSP_TYPES } from '../../base/types';
19
+ import { TYPES } from '../../base/types';
20
20
  import { MARQUEE } from '../tool-feedback/marquee-tool-feedback';
21
21
  import { ChangeBoundsTool } from './change-bounds-tool';
22
22
  import { DelKeyDeleteTool, MouseDeleteTool } from './delete-tool';
@@ -30,16 +30,16 @@ import { MarqueeView } from './view';
30
30
 
31
31
  const toolsModule = new ContainerModule((bind, _unbind, isBound) => {
32
32
  // Register default tools
33
- bind(GLSP_TYPES.IDefaultTool).to(ChangeBoundsTool);
34
- bind(GLSP_TYPES.IDefaultTool).to(EdgeEditTool);
35
- bind(GLSP_TYPES.IDefaultTool).to(DelKeyDeleteTool);
33
+ bind(TYPES.IDefaultTool).to(ChangeBoundsTool);
34
+ bind(TYPES.IDefaultTool).to(EdgeEditTool);
35
+ bind(TYPES.IDefaultTool).to(DelKeyDeleteTool);
36
36
 
37
37
  // Register tools
38
- bind(GLSP_TYPES.ITool).to(MouseDeleteTool);
38
+ bind(TYPES.ITool).to(MouseDeleteTool);
39
39
  bind(NodeCreationTool).toSelf().inSingletonScope();
40
40
  bind(EdgeCreationTool).toSelf().inSingletonScope();
41
- bind(GLSP_TYPES.ITool).toService(EdgeCreationTool);
42
- bind(GLSP_TYPES.ITool).toService(NodeCreationTool);
41
+ bind(TYPES.ITool).toService(EdgeCreationTool);
42
+ bind(TYPES.ITool).toService(NodeCreationTool);
43
43
 
44
44
  configureMarqueeTool({ bind, isBound });
45
45
  configureActionHandler({ bind, isBound }, TriggerNodeCreationAction.KIND, NodeCreationTool);
@@ -48,8 +48,8 @@ const toolsModule = new ContainerModule((bind, _unbind, isBound) => {
48
48
 
49
49
  export function configureMarqueeTool(context: { bind: interfaces.Bind; isBound: interfaces.IsBound }): void {
50
50
  configureModelElement(context, MARQUEE, MarqueeNode, MarqueeView);
51
- context.bind(GLSP_TYPES.IDefaultTool).to(MarqueeTool);
52
- context.bind(GLSP_TYPES.ITool).to(MarqueeMouseTool);
51
+ context.bind(TYPES.IDefaultTool).to(MarqueeTool);
52
+ context.bind(TYPES.ITool).to(MarqueeMouseTool);
53
53
  }
54
54
 
55
55
  export default toolsModule;
@@ -13,7 +13,7 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, CreateEdgeOperation, isTriggerElementTypeCreationAction, TriggerEdgeCreationAction } from '@eclipse-glsp/protocol';
16
+ import { Action, CreateEdgeOperation, TriggerEdgeCreationAction } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
18
  import {
19
19
  AnchorComputerRegistry,
@@ -66,13 +66,13 @@ export class EdgeCreationTool extends BaseGLSPTool implements IActionHandler {
66
66
  disable(): void {
67
67
  this.mouseTool.deregister(this.creationToolMouseListener);
68
68
  this.mouseTool.deregister(this.feedbackEndMovingMouseListener);
69
- this.deregisterFeedback([new RemoveFeedbackEdgeAction(), cursorFeedbackAction()]);
69
+ this.deregisterFeedback([RemoveFeedbackEdgeAction.create(), cursorFeedbackAction()]);
70
70
  }
71
71
 
72
72
  handle(action: Action): Action | void {
73
- if (isTriggerElementTypeCreationAction(action)) {
73
+ if (TriggerEdgeCreationAction.is(action)) {
74
74
  this.triggerAction = action;
75
- return new EnableToolsAction([this.id]);
75
+ return EnableToolsAction.create([this.id]);
76
76
  }
77
77
  }
78
78
  }
@@ -96,7 +96,7 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
96
96
  this.target = undefined;
97
97
  this.currentTarget = undefined;
98
98
  this.allowedTarget = false;
99
- this.tool.dispatchFeedback([new RemoveFeedbackEdgeAction()]);
99
+ this.tool.dispatchFeedback([RemoveFeedbackEdgeAction.create()]);
100
100
  }
101
101
 
102
102
  override nonDraggingMouseUp(_element: SModelElement, event: MouseEvent): Action[] {
@@ -105,7 +105,9 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
105
105
  if (!this.isSourceSelected()) {
106
106
  if (this.currentTarget && this.allowedTarget) {
107
107
  this.source = this.currentTarget.id;
108
- this.tool.dispatchFeedback([new DrawFeedbackEdgeAction(this.triggerAction.elementTypeId, this.source)]);
108
+ this.tool.dispatchFeedback([
109
+ DrawFeedbackEdgeAction.create({ elementTypeId: this.triggerAction.elementTypeId, sourceId: this.source })
110
+ ]);
109
111
  }
110
112
  } else {
111
113
  if (this.currentTarget && this.allowedTarget) {
@@ -113,15 +115,22 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
113
115
  }
114
116
  }
115
117
  if (this.source && this.target) {
116
- result.push(new CreateEdgeOperation(this.triggerAction.elementTypeId, this.source, this.target, this.triggerAction.args));
118
+ result.push(
119
+ CreateEdgeOperation.create({
120
+ elementTypeId: this.triggerAction.elementTypeId,
121
+ sourceElementId: this.source,
122
+ targetElementId: this.target,
123
+ args: this.triggerAction.args
124
+ })
125
+ );
117
126
  if (!isCtrlOrCmd(event)) {
118
- result.push(new EnableDefaultToolsAction());
127
+ result.push(EnableDefaultToolsAction.create());
119
128
  } else {
120
129
  this.reinitialize();
121
130
  }
122
131
  }
123
132
  } else if (event.button === 2) {
124
- result.push(new EnableDefaultToolsAction());
133
+ result.push(EnableDefaultToolsAction.create());
125
134
  }
126
135
  return result;
127
136
  }
@@ -22,6 +22,7 @@ import {
22
22
  EdgeRouterRegistry,
23
23
  findParentByFeature,
24
24
  isConnectable,
25
+ ISnapper,
25
26
  isSelected,
26
27
  SModelElement,
27
28
  SModelRoot,
@@ -29,7 +30,7 @@ import {
29
30
  SRoutingHandle
30
31
  } from 'sprotty';
31
32
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
32
- import { GLSP_TYPES } from '../../base/types';
33
+ import { TYPES } from '../../base/types';
33
34
  import { isRoutable, isRoutingHandle } from '../../utils/smodel-util';
34
35
  import { isReconnectable, isReconnectHandle, isSourceRoutingHandle, isTargetRoutingHandle, SReconnectHandle } from '../reconnect/model';
35
36
  import { SelectionListener, SelectionService } from '../select/selection-service';
@@ -50,9 +51,10 @@ import { BaseGLSPTool } from './base-glsp-tool';
50
51
  export class EdgeEditTool extends BaseGLSPTool {
51
52
  static ID = 'glsp.edge-edit-tool';
52
53
 
53
- @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService;
54
+ @inject(TYPES.SelectionService) protected selectionService: SelectionService;
54
55
  @inject(AnchorComputerRegistry) protected anchorRegistry: AnchorComputerRegistry;
55
56
  @inject(EdgeRouterRegistry) @optional() protected edgeRouterRegistry?: EdgeRouterRegistry;
57
+ @inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
56
58
 
57
59
  protected feedbackEdgeSourceMovingListener: FeedbackEdgeSourceMovingMouseListener;
58
60
  protected feedbackEdgeTargetMovingListener: FeedbackEdgeTargetMovingMouseListener;
@@ -71,7 +73,7 @@ export class EdgeEditTool extends BaseGLSPTool {
71
73
  // install feedback move mouse listener for client-side move updates
72
74
  this.feedbackEdgeSourceMovingListener = new FeedbackEdgeSourceMovingMouseListener(this.anchorRegistry);
73
75
  this.feedbackEdgeTargetMovingListener = new FeedbackEdgeTargetMovingMouseListener(this.anchorRegistry);
74
- this.feedbackMovingListener = new FeedbackEdgeRouteMovingMouseListener(this.edgeRouterRegistry);
76
+ this.feedbackMovingListener = new FeedbackEdgeRouteMovingMouseListener(this.edgeRouterRegistry, this.snapper);
75
77
  }
76
78
 
77
79
  registerFeedbackListeners(): void {
@@ -123,10 +125,10 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
123
125
  // note: order is important here as we want the reconnect handles to cover the routing handles
124
126
  const feedbackActions = [];
125
127
  if (canEditRouting(edge)) {
126
- feedbackActions.push(new SwitchRoutingModeAction([this.edge.id], []));
128
+ feedbackActions.push(SwitchRoutingModeAction.create({ elementsToActivate: [this.edge.id] }));
127
129
  }
128
130
  if (isReconnectable(edge)) {
129
- feedbackActions.push(new ShowEdgeReconnectHandlesFeedbackAction(this.edge.id));
131
+ feedbackActions.push(ShowEdgeReconnectHandlesFeedbackAction.create(this.edge.id));
130
132
  }
131
133
  this.tool.dispatchFeedback(feedbackActions);
132
134
  }
@@ -139,16 +141,16 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
139
141
  if (this.edge && this.edge.target && this.edge.source) {
140
142
  if (isSourceRoutingHandle(edge, reconnectHandle)) {
141
143
  this.tool.dispatchFeedback([
142
- new HideEdgeReconnectHandlesFeedbackAction(),
144
+ HideEdgeReconnectHandlesFeedbackAction.create(),
143
145
  cursorFeedbackAction(CursorCSS.EDGE_RECONNECT),
144
- new DrawFeedbackEdgeSourceAction(this.edge.type, this.edge.targetId)
146
+ DrawFeedbackEdgeSourceAction.create({ elementTypeId: this.edge.type, targetId: this.edge.targetId })
145
147
  ]);
146
148
  this.reconnectMode = 'NEW_SOURCE';
147
149
  } else if (isTargetRoutingHandle(edge, reconnectHandle)) {
148
150
  this.tool.dispatchFeedback([
149
- new HideEdgeReconnectHandlesFeedbackAction(),
151
+ HideEdgeReconnectHandlesFeedbackAction.create(),
150
152
  cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET),
151
- new DrawFeedbackEdgeAction(this.edge.type, this.edge.sourceId)
153
+ DrawFeedbackEdgeAction.create({ elementTypeId: this.edge.type, sourceId: this.edge.sourceId })
152
154
  ]);
153
155
  this.reconnectMode = 'NEW_TARGET';
154
156
  }
@@ -224,10 +226,10 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
224
226
  }
225
227
 
226
228
  if (this.edge && this.newConnectable) {
227
- const sourceId = this.isReconnectingNewSource() ? this.newConnectable.id : this.edge.sourceId;
228
- const targetId = this.isReconnectingNewSource() ? this.edge.targetId : this.newConnectable.id;
229
- if (this.requiresReconnect(sourceId, targetId)) {
230
- result.push(new ReconnectEdgeOperation(this.edge.id, sourceId, targetId));
229
+ const sourceElementId = this.isReconnectingNewSource() ? this.newConnectable.id : this.edge.sourceId;
230
+ const targetElementId = this.isReconnectingNewSource() ? this.edge.targetId : this.newConnectable.id;
231
+ if (this.requiresReconnect(sourceElementId, targetElementId)) {
232
+ result.push(ReconnectEdgeOperation.create({ edgeElementId: this.edge.id, sourceElementId, targetElementId }));
231
233
  }
232
234
  this.reset();
233
235
  } else if (this.edge && this.routingHandle) {
@@ -235,7 +237,9 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
235
237
  // reroute actions
236
238
  const latestEdge = target.index.getById(this.edge.id);
237
239
  if (latestEdge && isRoutable(latestEdge)) {
238
- result.push(new ChangeRoutingPointsOperation([{ elementId: latestEdge.id, newRoutingPoints: latestEdge.routingPoints }]));
240
+ result.push(
241
+ ChangeRoutingPointsOperation.create([{ elementId: latestEdge.id, newRoutingPoints: latestEdge.routingPoints }])
242
+ );
239
243
  this.routingHandle = undefined;
240
244
  }
241
245
  }
@@ -306,9 +310,9 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
306
310
  protected resetFeedback(): void {
307
311
  const result: Action[] = [];
308
312
  if (this.edge) {
309
- result.push(new SwitchRoutingModeAction([], [this.edge.id]));
313
+ result.push(SwitchRoutingModeAction.create({ elementsToDeactivate: [this.edge.id] }));
310
314
  }
311
- result.push(...[new HideEdgeReconnectHandlesFeedbackAction(), cursorFeedbackAction(), new RemoveFeedbackEdgeAction()]);
315
+ result.push(...[HideEdgeReconnectHandlesFeedbackAction.create(), cursorFeedbackAction(), RemoveFeedbackEdgeAction.create()]);
312
316
  this.tool.deregisterFeedback(result);
313
317
  this.tool.deregisterFeedbackListeners();
314
318
  }