@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
@@ -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,16 +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 {
17
- isSetResolvedNavigationTargets,
18
- NavigationTarget,
19
- ResolveNavigationTargetAction,
20
- SetResolvedNavigationTargetAction
21
- } from '@eclipse-glsp/protocol';
16
+ import { NavigationTarget, ResolveNavigationTargetAction, ResponseAction, SetResolvedNavigationTargetAction } from '@eclipse-glsp/protocol';
22
17
  import { inject, injectable } from 'inversify';
23
- import { IActionDispatcher, ILogger, ResponseAction, TYPES } from 'sprotty';
18
+ import { IActionDispatcher, ILogger } from 'sprotty';
24
19
  import { EditorContextServiceProvider } from '../../base/editor-context-service';
25
- import { GLSP_TYPES } from '../../base/types';
20
+ import { TYPES } from '../../base/types';
26
21
 
27
22
  /**
28
23
  * Resolves `NavigationTargets` to element ids.
@@ -32,7 +27,7 @@ import { GLSP_TYPES } from '../../base/types';
32
27
  */
33
28
  @injectable()
34
29
  export class NavigationTargetResolver {
35
- @inject(GLSP_TYPES.IEditorContextServiceProvider) protected editorContextService: EditorContextServiceProvider;
30
+ @inject(TYPES.IEditorContextServiceProvider) protected editorContextService: EditorContextServiceProvider;
36
31
  @inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
37
32
  @inject(TYPES.ILogger) protected readonly logger: ILogger;
38
33
 
@@ -53,16 +48,16 @@ export class NavigationTargetResolver {
53
48
  return undefined;
54
49
  }
55
50
  if (NavigationTarget.getElementIds(target).length > 0) {
56
- return new SetResolvedNavigationTargetAction(NavigationTarget.getElementIds(target));
51
+ return SetResolvedNavigationTargetAction.create(NavigationTarget.getElementIds(target));
57
52
  }
58
53
  const response = await this.requestResolution(target);
59
- if (isSetResolvedNavigationTargets(response)) {
54
+ if (SetResolvedNavigationTargetAction.is(response)) {
60
55
  return response;
61
56
  }
62
57
  return undefined;
63
58
  }
64
59
 
65
60
  protected requestResolution(target: NavigationTarget): Promise<ResponseAction> {
66
- return this.dispatcher.request(new ResolveNavigationTargetAction(target));
61
+ return this.dispatcher.request(ResolveNavigationTargetAction.create(target));
67
62
  }
68
63
  }
@@ -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
@@ -14,8 +14,7 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { ContainerModule } from 'inversify';
17
- import { TYPES } from 'sprotty';
18
-
17
+ import { TYPES } from '../../base/types';
19
18
  import { SaveModelKeyboardListener } from './save-keylistener';
20
19
 
21
20
  /**
@@ -20,7 +20,7 @@ import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
20
20
  export class SaveModelKeyboardListener extends KeyListener {
21
21
  override keyDown(_element: SModelRoot, event: KeyboardEvent): Action[] {
22
22
  if (matchesKeystroke(event, 'KeyS', 'ctrlCmd')) {
23
- return [new SaveModelAction()];
23
+ return [SaveModelAction.create()];
24
24
  }
25
25
  return [];
26
26
  }
@@ -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
@@ -14,22 +14,20 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { ContainerModule } from 'inversify';
17
- import { configureCommand, TYPES } from 'sprotty';
18
-
19
- import { GLSP_TYPES } from '../../base/types';
20
- import { SelectAllFeedbackCommand, SelectFeedbackCommand } from './select-feedback-action';
17
+ import { configureCommand } from 'sprotty';
18
+ import { TYPES } from '../../base/types';
19
+ import { SelectFeedbackCommand } from './select-feedback-action';
21
20
  import { RankedSelectMouseListener } from './select-mouse-listener';
22
21
  import { SelectAllCommand, SelectCommand, SelectionService } from './selection-service';
23
22
 
24
23
  const glspSelectModule = new ContainerModule((bind, _unbind, isBound) => {
25
24
  bind(SelectionService).toSelf().inSingletonScope();
26
- bind(GLSP_TYPES.SelectionService).toService(SelectionService);
25
+ bind(TYPES.SelectionService).toService(SelectionService);
27
26
  configureCommand({ bind, isBound }, SelectCommand);
28
27
  configureCommand({ bind, isBound }, SelectAllCommand);
29
28
  configureCommand({ bind, isBound }, SelectFeedbackCommand);
30
- configureCommand({ bind, isBound }, SelectAllFeedbackCommand);
31
29
  bind(TYPES.MouseListener).to(RankedSelectMouseListener);
32
- bind(GLSP_TYPES.SModelRootListener).toService(SelectionService);
30
+ bind(TYPES.SModelRootListener).toService(SelectionService);
33
31
  });
34
32
 
35
33
  export default glspSelectModule;
@@ -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,39 +13,34 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { Action, hasArrayProp, SelectAction } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
- import {
18
- Command,
19
- CommandExecutionContext,
20
- SelectAllCommand as SprottySelectAllCommand,
21
- SelectCommand as SprottySelectCommand,
22
- SModelRoot,
23
- TYPES
24
- } from 'sprotty';
18
+ import { Command, CommandExecutionContext, SelectCommand as SprottySelectCommand, SModelRoot } from 'sprotty';
19
+ import { TYPES } from '../../base/types';
25
20
 
26
- export class SelectFeedbackAction {
27
- constructor(
28
- public readonly selectedElementsIDs: string[] = [],
29
- public readonly deselectedElementsIDs: string[] = [],
30
- public readonly kind: string = SelectFeedbackCommand.KIND
31
- ) {}
21
+ export interface SelectFeedbackAction extends Omit<SelectAction, 'kind'>, Action {
22
+ kind: typeof SelectFeedbackAction.KIND;
32
23
  }
33
24
 
34
- export class SelectAllFeedbackAction {
35
- /**
36
- * If `select` is true, all elements are selected, othewise they are deselected.
37
- */
38
- constructor(public readonly select: boolean = true, public readonly kind: string = SelectFeedbackCommand.KIND) {}
39
- }
25
+ export namespace SelectFeedbackAction {
26
+ export const KIND = 'selectFeedback';
27
+
28
+ export function is(object: any): object is SelectFeedbackAction {
29
+ return Action.hasKind(object, KIND) && hasArrayProp(object, 'selectedElementsIDs') && hasArrayProp(object, 'deselectedElementsIDs');
30
+ }
40
31
 
32
+ export function create(options?: { selectedElementsIDs?: string[]; deselectedElementsIDs?: string[] }): SelectFeedbackAction {
33
+ return { ...SelectAction.create(options), kind: KIND };
34
+ }
35
+ }
41
36
  @injectable()
42
37
  export class SelectFeedbackCommand extends Command {
43
- static readonly KIND = 'elementSelectedFeedback';
38
+ static readonly KIND = SelectFeedbackAction.KIND;
44
39
  private sprottySelectCommand: SprottySelectCommand;
45
40
 
46
41
  constructor(@inject(TYPES.Action) public action: SelectFeedbackAction) {
47
42
  super();
48
- this.sprottySelectCommand = new SprottySelectCommand(action);
43
+ this.sprottySelectCommand = new SprottySelectCommand({ ...action, kind: SelectAction.KIND });
49
44
  }
50
45
 
51
46
  execute(context: CommandExecutionContext): SModelRoot {
@@ -60,26 +55,3 @@ export class SelectFeedbackCommand extends Command {
60
55
  return this.sprottySelectCommand.redo(context);
61
56
  }
62
57
  }
63
-
64
- @injectable()
65
- export class SelectAllFeedbackCommand extends Command {
66
- static readonly KIND = 'allSelectedFeedback';
67
- private sprottySelectAllCommand: SprottySelectAllCommand;
68
-
69
- constructor(@inject(TYPES.Action) public action: SelectAllFeedbackAction) {
70
- super();
71
- this.sprottySelectAllCommand = new SprottySelectAllCommand(action);
72
- }
73
-
74
- execute(context: CommandExecutionContext): SModelRoot {
75
- return this.sprottySelectAllCommand.execute(context);
76
- }
77
-
78
- undo(context: CommandExecutionContext): SModelRoot {
79
- return this.sprottySelectAllCommand.undo(context);
80
- }
81
-
82
- redo(context: CommandExecutionContext): SModelRoot {
83
- return this.sprottySelectAllCommand.redo(context);
84
- }
85
- }
@@ -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
@@ -14,7 +14,6 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { SelectMouseListener } from 'sprotty';
17
-
18
17
  import { DEFAULT_RANK, Ranked } from '../rank/model';
19
18
 
20
19
  /**
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020-2021 EclipseSource and others.
2
+ * Copyright (c) 2020-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,11 +14,11 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  /* eslint-disable import/no-deprecated,no-unused-expressions */
17
- import { Action } from '@eclipse-glsp/protocol';
17
+ import { Action, SModelElementSchema } from '@eclipse-glsp/protocol';
18
18
  import { AssertionError, expect } from 'chai';
19
19
  import { Container, injectable } from 'inversify';
20
- import { defaultModule, SGraphFactory, SModelElementSchema, SModelRoot, TYPES } from 'sprotty';
21
- import { GLSP_TYPES } from '../../base/types';
20
+ import { defaultModule, SGraphFactory, SModelRoot } from 'sprotty';
21
+ import { TYPES } from '../../base/types';
22
22
  import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
23
23
  import { SelectFeedbackAction } from './select-feedback-action';
24
24
  import { SelectionListener, SelectionService } from './selection-service';
@@ -74,14 +74,16 @@ class MockSelectionListener implements SelectionListener {
74
74
  function createContainer(): Container {
75
75
  const container = new Container();
76
76
  container.load(defaultModule);
77
+ // eslint-disable-next-line deprecation/deprecation
77
78
  container.rebind(TYPES.IModelFactory).to(SGraphFactory).inSingletonScope();
78
- container.bind(GLSP_TYPES.IFeedbackActionDispatcher).to(MockFeedbackActionDispatcher).inSingletonScope();
79
+ container.bind(TYPES.IFeedbackActionDispatcher).to(MockFeedbackActionDispatcher).inSingletonScope();
79
80
  container.bind(SelectionService).toSelf().inSingletonScope();
80
- container.bind(GLSP_TYPES.SelectionService).toService(SelectionService);
81
+ container.bind(TYPES.SelectionService).toService(SelectionService);
81
82
  return container;
82
83
  }
83
84
 
84
85
  describe('SelectionService', () => {
86
+ // eslint-disable-next-line deprecation/deprecation
85
87
  let graphFactory: SGraphFactory;
86
88
  let root: SModelRoot;
87
89
  let selectionService: SelectionService;
@@ -89,10 +91,11 @@ describe('SelectionService', () => {
89
91
 
90
92
  beforeEach(() => {
91
93
  const container = createContainer();
94
+ // eslint-disable-next-line deprecation/deprecation
92
95
  graphFactory = container.get<SGraphFactory>(TYPES.IModelFactory);
93
96
  root = createRoot('node1', 'node2', 'node3', 'node4', 'node5');
94
- selectionService = container.get<SelectionService>(GLSP_TYPES.SelectionService);
95
- feedbackDispatcher = container.get<MockFeedbackActionDispatcher>(GLSP_TYPES.IFeedbackActionDispatcher);
97
+ selectionService = container.get<SelectionService>(TYPES.SelectionService);
98
+ feedbackDispatcher = container.get<MockFeedbackActionDispatcher>(TYPES.IFeedbackActionDispatcher);
96
99
  });
97
100
 
98
101
  describe('Initial State', () => {
@@ -26,12 +26,11 @@ import {
26
26
  SelectCommand as SprottySelectCommand,
27
27
  SModelElement,
28
28
  SModelRoot,
29
- SParentElement,
30
- TYPES
29
+ SParentElement
31
30
  } from 'sprotty';
32
31
  import { SModelRootListener } from '../../base/model/update-model-command';
33
- import { GLSP_TYPES } from '../../base/types';
34
- import { getMatchingElements } from '../../utils/smodel-util';
32
+ import { TYPES } from '../../base/types';
33
+ import { getElements } from '../../utils/smodel-util';
35
34
  import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
36
35
  import { SelectFeedbackAction } from './select-feedback-action';
37
36
 
@@ -44,10 +43,10 @@ export class SelectionService implements SModelRootListener {
44
43
  private root: Readonly<SModelRoot>;
45
44
  private selectedElementIDs: Set<string> = new Set();
46
45
 
47
- @inject(GLSP_TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
46
+ @inject(TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
48
47
  @inject(TYPES.ILogger) protected logger: ILogger;
49
48
 
50
- constructor(@multiInject(GLSP_TYPES.SelectionListener) @optional() protected selectionListeners: SelectionListener[] = []) {}
49
+ constructor(@multiInject(TYPES.SelectionListener) @optional() protected selectionListeners: SelectionListener[] = []) {}
51
50
 
52
51
  register(selectionListener: SelectionListener): void {
53
52
  distinctAdd(this.selectionListeners, selectionListener);
@@ -101,7 +100,12 @@ export class SelectionService implements SModelRootListener {
101
100
  ![...prevSelectedElementIDs].every(value => this.selectedElementIDs.has(value));
102
101
  if (selectionChanged) {
103
102
  // aggregate to feedback action handling all elements as only the last feedback is restored
104
- this.dispatchFeedback([new SelectFeedbackAction([...this.selectedElementIDs], [...deselectedElementIDs])]);
103
+ this.dispatchFeedback([
104
+ SelectFeedbackAction.create({
105
+ selectedElementsIDs: [...this.selectedElementIDs],
106
+ deselectedElementsIDs: [...deselectedElementIDs]
107
+ })
108
+ ]);
105
109
  }
106
110
 
107
111
  const rootChanged = prevRoot !== root;
@@ -124,7 +128,7 @@ export class SelectionService implements SModelRootListener {
124
128
  }
125
129
 
126
130
  getSelectedElements(): Readonly<SModelElement & Selectable>[] {
127
- return getMatchingElements(this.root.index, isSelectable);
131
+ return getElements(this.root.index, Array.from(this.selectedElementIDs), isSelectable);
128
132
  }
129
133
 
130
134
  /**
@@ -157,7 +161,7 @@ export class SelectCommand extends Command {
157
161
 
158
162
  constructor(
159
163
  @inject(TYPES.Action) public action: SelectAction,
160
- @inject(GLSP_TYPES.SelectionService) public selectionService: SelectionService
164
+ @inject(TYPES.SelectionService) public selectionService: SelectionService
161
165
  ) {
162
166
  super();
163
167
  }
@@ -201,7 +205,7 @@ export class SelectAllCommand extends Command {
201
205
 
202
206
  constructor(
203
207
  @inject(TYPES.Action) public action: SelectAllAction,
204
- @inject(GLSP_TYPES.SelectionService) public selectionService: SelectionService
208
+ @inject(TYPES.SelectionService) public selectionService: SelectionService
205
209
  ) {
206
210
  super();
207
211
  }
@@ -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, Point } from '@eclipse-glsp/protocol';
16
+ import { Action, hasStringProp, Point } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
18
  import { VNode } from 'snabbdom';
19
19
  import {
@@ -31,24 +31,53 @@ import {
31
31
  SModelRoot,
32
32
  TYPES
33
33
  } from 'sprotty';
34
- import { forEachElement, isNotUndefined } from '../../utils/smodel-util';
34
+ import { forEachElement } from '../../utils/smodel-util';
35
35
  import { addResizeHandles, isResizable, removeResizeHandles, SResizeHandle } from '../change-bounds/model';
36
36
  import { createMovementRestrictionFeedback, removeMovementRestrictionFeedback } from '../change-bounds/movement-restrictor';
37
37
  import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
38
38
  import { ChangeBoundsTool } from '../tools/change-bounds-tool';
39
39
  import { FeedbackCommand } from './model';
40
40
 
41
- export class ShowChangeBoundsToolResizeFeedbackAction implements Action {
42
- constructor(readonly elementId?: string, public readonly kind: string = ShowChangeBoundsToolResizeFeedbackCommand.KIND) {}
41
+ export interface ShowChangeBoundsToolResizeFeedbackAction extends Action {
42
+ kind: typeof ShowChangeBoundsToolResizeFeedbackAction.KIND;
43
+
44
+ elementId: string;
45
+ }
46
+
47
+ export namespace ShowChangeBoundsToolResizeFeedbackAction {
48
+ export const KIND = 'showChangeBoundsToolResizeFeedback';
49
+
50
+ export function is(object: any): object is ShowChangeBoundsToolResizeFeedbackAction {
51
+ return Action.hasKind(object, KIND) && hasStringProp(object, 'elementId');
52
+ }
53
+
54
+ export function create(elementId: string): ShowChangeBoundsToolResizeFeedbackAction {
55
+ return {
56
+ kind: KIND,
57
+ elementId
58
+ };
59
+ }
60
+ }
61
+
62
+ export interface HideChangeBoundsToolResizeFeedbackAction extends Action {
63
+ kind: typeof HideChangeBoundsToolResizeFeedbackAction.KIND;
43
64
  }
44
65
 
45
- export class HideChangeBoundsToolResizeFeedbackAction implements Action {
46
- constructor(public readonly kind: string = HideChangeBoundsToolResizeFeedbackCommand.KIND) {}
66
+ export namespace HideChangeBoundsToolResizeFeedbackAction {
67
+ export const KIND = 'hideChangeBoundsToolResizeFeedback';
68
+
69
+ export function is(object: any): object is HideChangeBoundsToolResizeFeedbackAction {
70
+ return Action.hasKind(object, KIND);
71
+ }
72
+
73
+ export function create(): HideChangeBoundsToolResizeFeedbackAction {
74
+ return { kind: KIND };
75
+ }
47
76
  }
48
77
 
49
78
  @injectable()
50
79
  export class ShowChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
51
- static readonly KIND = 'showChangeBoundsToolResizeFeedback';
80
+ static readonly KIND = ShowChangeBoundsToolResizeFeedbackAction.KIND;
52
81
 
53
82
  @inject(TYPES.Action) protected action: ShowChangeBoundsToolResizeFeedbackAction;
54
83
 
@@ -57,9 +86,9 @@ export class ShowChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
57
86
 
58
87
  forEachElement(index, isResizable, removeResizeHandles);
59
88
 
60
- if (isNotUndefined(this.action.elementId)) {
89
+ if (this.action.elementId) {
61
90
  const resizeElement = index.getById(this.action.elementId);
62
- if (isNotUndefined(resizeElement) && isResizable(resizeElement)) {
91
+ if (resizeElement && isResizable(resizeElement)) {
63
92
  addResizeHandles(resizeElement);
64
93
  }
65
94
  }
@@ -69,7 +98,7 @@ export class ShowChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
69
98
 
70
99
  @injectable()
71
100
  export class HideChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
72
- static readonly KIND = 'hideChangeBoundsToolResizeFeedback';
101
+ static readonly KIND = HideChangeBoundsToolResizeFeedbackAction.KIND;
73
102
 
74
103
  @inject(TYPES.Action) protected action: HideChangeBoundsToolResizeFeedbackAction;
75
104
 
@@ -149,7 +178,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
149
178
  return false;
150
179
  }
151
180
 
152
- protected getElementMoves(target: SModelElement, event: MouseEvent, isFinished: boolean): MoveAction | undefined {
181
+ protected getElementMoves(target: SModelElement, event: MouseEvent, finished: boolean): MoveAction | undefined {
153
182
  if (!this.startDragPosition) {
154
183
  return undefined;
155
184
  }
@@ -173,7 +202,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
173
202
  );
174
203
 
175
204
  if (isMoveable(element)) {
176
- toPosition = this.validateMove(startPosition, toPosition, element, isFinished);
205
+ toPosition = this.validateMove(startPosition, toPosition, element, finished);
177
206
  elementMoves.push({
178
207
  elementId: element.id,
179
208
  fromPosition: {
@@ -186,7 +215,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
186
215
  }
187
216
  });
188
217
  if (elementMoves.length > 0) {
189
- return new MoveAction(elementMoves, false, isFinished);
218
+ return MoveAction.create(elementMoves, { animate: false, finished });
190
219
  } else {
191
220
  return undefined;
192
221
  }
@@ -13,15 +13,12 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, Point } from '@eclipse-glsp/protocol';
16
+ import { Action, Bounds, Point } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
18
  import {
19
- add,
20
19
  AnchorComputerRegistry,
21
- center,
22
20
  CommandExecutionContext,
23
21
  CommandReturn,
24
- euclideanDistance,
25
22
  findChildrenAtPosition,
26
23
  findParentByFeature,
27
24
  isBoundsAware,
@@ -32,7 +29,7 @@ import {
32
29
  SChildElement,
33
30
  SConnectableElement,
34
31
  SDanglingAnchor,
35
- SEdgeSchema,
32
+ SEdge as SEdgeSchema,
36
33
  SModelElement,
37
34
  SModelRoot,
38
35
  SRoutableElement,
@@ -41,19 +38,31 @@ import {
41
38
  import { BoundsAwareModelElement, isRoutable } from '../../utils/smodel-util';
42
39
  import { getAbsolutePosition, toAbsoluteBounds, toAbsolutePosition } from '../../utils/viewpoint-util';
43
40
  import { FeedbackCommand } from './model';
41
+ export interface DrawFeedbackEdgeAction extends Action {
42
+ kind: typeof DrawFeedbackEdgeAction.KIND;
43
+ elementTypeId: string;
44
+ sourceId: string;
45
+ edgeSchema?: SEdgeSchema;
46
+ }
44
47
 
45
- export class DrawFeedbackEdgeAction implements Action {
46
- constructor(
47
- public readonly elementTypeId: string,
48
- public readonly sourceId: string,
49
- public readonly edgeSchema?: SEdgeSchema,
50
- public readonly kind: string = DrawFeedbackEdgeCommand.KIND
51
- ) {}
48
+ export namespace DrawFeedbackEdgeAction {
49
+ export const KIND = 'drawFeedbackEdge';
50
+
51
+ export function is(object: any): object is DrawFeedbackEdgeAction {
52
+ return Action.hasKind(object, KIND);
53
+ }
54
+
55
+ export function create(options: { elementTypeId: string; sourceId: string; edgeSchema?: SEdgeSchema }): DrawFeedbackEdgeAction {
56
+ return {
57
+ kind: KIND,
58
+ ...options
59
+ };
60
+ }
52
61
  }
53
62
 
54
63
  @injectable()
55
64
  export class DrawFeedbackEdgeCommand extends FeedbackCommand {
56
- static readonly KIND = 'drawFeedbackEdge';
65
+ static readonly KIND = DrawFeedbackEdgeAction.KIND;
57
66
 
58
67
  constructor(@inject(TYPES.Action) protected action: DrawFeedbackEdgeAction) {
59
68
  super();
@@ -66,13 +75,25 @@ export class DrawFeedbackEdgeCommand extends FeedbackCommand {
66
75
  }
67
76
  }
68
77
 
69
- export class RemoveFeedbackEdgeAction implements Action {
70
- constructor(public readonly kind: string = RemoveFeedbackEdgeCommand.KIND) {}
78
+ export interface RemoveFeedbackEdgeAction extends Action {
79
+ kind: typeof RemoveFeedbackEdgeAction.KIND;
80
+ }
81
+
82
+ export namespace RemoveFeedbackEdgeAction {
83
+ export const KIND = 'removeFeedbackEdgeCommand';
84
+
85
+ export function is(object: any): object is RemoveFeedbackEdgeAction {
86
+ return Action.hasKind(object, KIND);
87
+ }
88
+
89
+ export function create(): RemoveFeedbackEdgeAction {
90
+ return { kind: KIND };
91
+ }
71
92
  }
72
93
 
73
94
  @injectable()
74
95
  export class RemoveFeedbackEdgeCommand extends FeedbackCommand {
75
- static readonly KIND = 'removeFeedbackEdgeCommand';
96
+ static readonly KIND = RemoveFeedbackEdgeAction.KIND;
76
97
 
77
98
  execute(context: CommandExecutionContext): CommandReturn {
78
99
  removeFeedbackEdge(context.root);
@@ -111,12 +132,12 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
111
132
  .find(element => isConnectable(element) && element.canConnect(edge, 'target'));
112
133
 
113
134
  if (endAtMousePosition instanceof SConnectableElement && edge.source && isBoundsAware(edge.source)) {
114
- const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(toAbsoluteBounds(edge.source)));
115
- if (euclideanDistance(anchor, edgeEnd.position) > 1) {
116
- return [new MoveAction([{ elementId: edgeEnd.id, toPosition: anchor }], false)];
135
+ const anchor = this.computeAbsoluteAnchor(endAtMousePosition, Bounds.center(toAbsoluteBounds(edge.source)));
136
+ if (Point.euclideanDistance(anchor, edgeEnd.position) > 1) {
137
+ return [MoveAction.create([{ elementId: edgeEnd.id, toPosition: anchor }], { animate: false })];
117
138
  }
118
139
  } else {
119
- return [new MoveAction([{ elementId: edgeEnd.id, toPosition: position }], false)];
140
+ return [MoveAction.create([{ elementId: edgeEnd.id, toPosition: position }], { animate: false })];
120
141
  }
121
142
 
122
143
  return [];
@@ -132,7 +153,7 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
132
153
  const parent = findParentByFeature(element.parent, isBoundsAware);
133
154
  if (parent) {
134
155
  const absoluteParentPosition = toAbsoluteBounds(parent);
135
- anchor = add(absoluteParentPosition, anchor);
156
+ anchor = Point.add(absoluteParentPosition, anchor);
136
157
  }
137
158
  }
138
159
  return anchor;