@eclipse-glsp/client 0.10.0-next.ca17587.154 → 1.1.0-RC01

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 (578) hide show
  1. package/css/decoration.css +5 -1
  2. package/css/glsp-sprotty.css +149 -8
  3. package/css/tool-palette.css +2 -2
  4. package/lib/base/action-dispatcher.d.ts +4 -3
  5. package/lib/base/action-dispatcher.d.ts.map +1 -1
  6. package/lib/base/action-dispatcher.js +22 -12
  7. package/lib/base/action-dispatcher.js.map +1 -1
  8. package/lib/base/actions/focus-change-action.d.ts +16 -7
  9. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  10. package/lib/base/actions/focus-change-action.js +31 -12
  11. package/lib/base/actions/focus-change-action.js.map +1 -1
  12. package/lib/base/actions/sprotty-actions.d.ts +7 -0
  13. package/lib/base/actions/sprotty-actions.d.ts.map +1 -0
  14. package/lib/{features/tool-palette/palette-item.js → base/actions/sprotty-actions.js} +4 -20
  15. package/lib/base/actions/sprotty-actions.js.map +1 -0
  16. package/lib/base/auto-complete/auto-complete-actions.d.ts +5 -3
  17. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  18. package/lib/base/auto-complete/auto-complete-actions.js +24 -5
  19. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  20. package/lib/base/auto-complete/auto-complete-widget.d.ts +9 -2
  21. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  22. package/lib/base/auto-complete/auto-complete-widget.js +16 -9
  23. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  24. package/lib/base/auto-complete/validation-decorator.js +2 -2
  25. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  26. package/lib/base/command-stack.d.ts.map +1 -1
  27. package/lib/base/command-stack.js +6 -5
  28. package/lib/base/command-stack.js.map +1 -1
  29. package/lib/base/container-modules.d.ts.map +1 -1
  30. package/lib/base/container-modules.js +10 -9
  31. package/lib/base/container-modules.js.map +1 -1
  32. package/lib/base/di.config.d.ts +1 -1
  33. package/lib/base/di.config.d.ts.map +1 -1
  34. package/lib/base/di.config.js +13 -14
  35. package/lib/base/di.config.js.map +1 -1
  36. package/lib/base/drag-aware-mouse-listener.d.ts +1 -1
  37. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  38. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  39. package/lib/base/editor-context-service.d.ts +15 -4
  40. package/lib/base/editor-context-service.d.ts.map +1 -1
  41. package/lib/base/editor-context-service.js +31 -19
  42. package/lib/base/editor-context-service.js.map +1 -1
  43. package/lib/base/focus-tracker.d.ts +1 -1
  44. package/lib/base/focus-tracker.d.ts.map +1 -1
  45. package/lib/base/focus-tracker.js +4 -4
  46. package/lib/base/focus-tracker.js.map +1 -1
  47. package/lib/base/model/model-registry.d.ts.map +1 -1
  48. package/lib/base/model/model-registry.js +2 -2
  49. package/lib/base/model/model-registry.js.map +1 -1
  50. package/lib/base/model/update-model-command.d.ts +15 -8
  51. package/lib/base/model/update-model-command.d.ts.map +1 -1
  52. package/lib/base/model/update-model-command.js +43 -53
  53. package/lib/base/model/update-model-command.js.map +1 -1
  54. package/lib/base/model-initialization-constraint.d.ts +4 -5
  55. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  56. package/lib/base/model-initialization-constraint.js +11 -13
  57. package/lib/base/model-initialization-constraint.js.map +1 -1
  58. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  59. package/lib/base/selection-clearing-mouse-listener.js +1 -1
  60. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  61. package/lib/base/source-uri-aware.d.ts +2 -17
  62. package/lib/base/source-uri-aware.d.ts.map +1 -1
  63. package/lib/base/source-uri-aware.js +4 -6
  64. package/lib/base/source-uri-aware.js.map +1 -1
  65. package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
  66. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  67. package/lib/base/tool-manager/glsp-tool-manager.js +10 -10
  68. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  69. package/lib/base/tool-manager/tool-actions.d.ts +14 -0
  70. package/lib/base/tool-manager/tool-actions.d.ts.map +1 -0
  71. package/lib/base/tool-manager/tool-actions.js +25 -0
  72. package/lib/base/tool-manager/tool-actions.js.map +1 -0
  73. package/lib/base/types.d.ts +146 -20
  74. package/lib/base/types.d.ts.map +1 -1
  75. package/lib/base/types.js +14 -26
  76. package/lib/base/types.js.map +1 -1
  77. package/lib/base/view/view-registry.d.ts.map +1 -1
  78. package/lib/base/view/view-registry.js +2 -2
  79. package/lib/base/view/view-registry.js.map +1 -1
  80. package/lib/features/change-bounds/model.d.ts +1 -1
  81. package/lib/features/change-bounds/model.d.ts.map +1 -1
  82. package/lib/features/change-bounds/model.js +3 -3
  83. package/lib/features/change-bounds/model.js.map +1 -1
  84. package/lib/features/change-bounds/movement-restrictor.d.ts +37 -7
  85. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  86. package/lib/features/change-bounds/movement-restrictor.js +55 -40
  87. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  88. package/lib/features/change-bounds/snap.d.ts +60 -4
  89. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  90. package/lib/features/change-bounds/snap.js +96 -9
  91. package/lib/features/change-bounds/snap.js.map +1 -1
  92. package/lib/features/change-bounds/snap.spec.d.ts +17 -0
  93. package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
  94. package/lib/features/change-bounds/snap.spec.js +82 -0
  95. package/lib/features/change-bounds/snap.spec.js.map +1 -0
  96. package/lib/features/command-palette/command-palette-tool.js +3 -3
  97. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  98. package/lib/features/command-palette/di.config.d.ts +2 -2
  99. package/lib/features/command-palette/di.config.d.ts.map +1 -1
  100. package/lib/features/command-palette/di.config.js +6 -6
  101. package/lib/features/command-palette/di.config.js.map +1 -1
  102. package/lib/features/command-palette/server-command-palette-provider.d.ts +1 -1
  103. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  104. package/lib/features/command-palette/server-command-palette-provider.js +13 -10
  105. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  106. package/lib/features/context-menu/delete-element-context-menu.d.ts +17 -1
  107. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  108. package/lib/features/context-menu/delete-element-context-menu.js +4 -4
  109. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  110. package/lib/features/context-menu/di.config.d.ts +1 -1
  111. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  112. package/lib/features/context-menu/di.config.js +8 -7
  113. package/lib/features/context-menu/di.config.js.map +1 -1
  114. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +34 -4
  115. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  116. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +37 -31
  117. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  118. package/lib/features/context-menu/server-context-menu-provider.d.ts +1 -1
  119. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  120. package/lib/features/context-menu/server-context-menu-provider.js +8 -7
  121. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  122. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +12 -15
  123. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  124. package/lib/features/copy-paste/copy-paste-context-menu.js +26 -33
  125. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  126. package/lib/features/copy-paste/copy-paste-handler.d.ts +1 -1
  127. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  128. package/lib/features/copy-paste/copy-paste-handler.js +10 -11
  129. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  130. package/lib/features/copy-paste/di.config.d.ts +1 -1
  131. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  132. package/lib/features/copy-paste/di.config.js +5 -7
  133. package/lib/features/copy-paste/di.config.js.map +1 -1
  134. package/lib/features/decoration/decoration-placer.d.ts +1 -1
  135. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  136. package/lib/features/decoration/decoration-placer.js +19 -3
  137. package/lib/features/decoration/decoration-placer.js.map +1 -1
  138. package/lib/features/decoration/di.config.d.ts +2 -2
  139. package/lib/features/decoration/di.config.d.ts.map +1 -1
  140. package/lib/features/decoration/di.config.js +4 -4
  141. package/lib/features/decoration/di.config.js.map +1 -1
  142. package/lib/features/edit-label/di.config.d.ts +1 -1
  143. package/lib/features/edit-label/di.config.d.ts.map +1 -1
  144. package/lib/features/edit-label/di.config.js +5 -5
  145. package/lib/features/edit-label/di.config.js.map +1 -1
  146. package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -1
  147. package/lib/features/edit-label/edit-label-tool.js +2 -2
  148. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  149. package/lib/features/edit-label/edit-label-validator.d.ts +4 -6
  150. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  151. package/lib/features/edit-label/edit-label-validator.js +11 -13
  152. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  153. package/lib/features/hints/di.config.js +4 -4
  154. package/lib/features/hints/di.config.js.map +1 -1
  155. package/lib/features/hints/type-hints.d.ts +15 -5
  156. package/lib/features/hints/type-hints.d.ts.map +1 -1
  157. package/lib/features/hints/type-hints.js +29 -26
  158. package/lib/features/hints/type-hints.js.map +1 -1
  159. package/lib/features/hover/di.config.d.ts +1 -1
  160. package/lib/features/hover/di.config.d.ts.map +1 -1
  161. package/lib/features/hover/di.config.js +14 -10
  162. package/lib/features/hover/di.config.js.map +1 -1
  163. package/lib/features/hover/hover.d.ts +16 -5
  164. package/lib/features/hover/hover.d.ts.map +1 -1
  165. package/lib/features/hover/hover.js +44 -19
  166. package/lib/features/hover/hover.js.map +1 -1
  167. package/lib/features/layout/di.config.d.ts +3 -3
  168. package/lib/features/layout/di.config.d.ts.map +1 -1
  169. package/lib/features/layout/di.config.js +12 -7
  170. package/lib/features/layout/di.config.js.map +1 -1
  171. package/lib/features/layout/freeform-layout.d.ts +17 -1
  172. package/lib/features/layout/freeform-layout.d.ts.map +1 -1
  173. package/lib/features/layout/freeform-layout.js +4 -4
  174. package/lib/features/layout/freeform-layout.js.map +1 -1
  175. package/lib/features/layout/hbox-layout.d.ts +41 -0
  176. package/lib/features/layout/hbox-layout.d.ts.map +1 -0
  177. package/lib/features/layout/hbox-layout.js +201 -0
  178. package/lib/features/layout/hbox-layout.js.map +1 -0
  179. package/lib/features/layout/layout-elements-action.d.ts +198 -0
  180. package/lib/features/layout/layout-elements-action.d.ts.map +1 -0
  181. package/lib/features/layout/layout-elements-action.js +391 -0
  182. package/lib/features/layout/layout-elements-action.js.map +1 -0
  183. package/lib/features/layout/layout-elements-action.spec.d.ts +3 -0
  184. package/lib/features/layout/layout-elements-action.spec.d.ts.map +1 -0
  185. package/lib/features/layout/{layout-commands.spec.js → layout-elements-action.spec.js} +81 -62
  186. package/lib/features/layout/layout-elements-action.spec.js.map +1 -0
  187. package/lib/features/layout/layouter.d.ts +37 -0
  188. package/lib/features/layout/layouter.d.ts.map +1 -0
  189. package/lib/features/layout/layouter.js +131 -0
  190. package/lib/features/layout/layouter.js.map +1 -0
  191. package/lib/features/layout/tests/freeform-layout.spec.d.ts +3 -0
  192. package/lib/features/layout/tests/freeform-layout.spec.d.ts.map +1 -0
  193. package/lib/features/layout/tests/freeform-layout.spec.js +201 -0
  194. package/lib/features/layout/tests/freeform-layout.spec.js.map +1 -0
  195. package/lib/features/layout/tests/hbox-layout.spec.d.ts +3 -0
  196. package/lib/features/layout/tests/hbox-layout.spec.d.ts.map +1 -0
  197. package/lib/features/layout/tests/hbox-layout.spec.js +161 -0
  198. package/lib/features/layout/tests/hbox-layout.spec.js.map +1 -0
  199. package/lib/features/layout/tests/layouter-test-util.d.ts +34 -0
  200. package/lib/features/layout/tests/layouter-test-util.d.ts.map +1 -0
  201. package/lib/features/layout/tests/layouter-test-util.js +96 -0
  202. package/lib/features/layout/tests/layouter-test-util.js.map +1 -0
  203. package/lib/features/layout/tests/vbox-layout.spec.d.ts +3 -0
  204. package/lib/features/layout/tests/vbox-layout.spec.d.ts.map +1 -0
  205. package/lib/features/layout/tests/vbox-layout.spec.js +161 -0
  206. package/lib/features/layout/tests/vbox-layout.spec.js.map +1 -0
  207. package/lib/features/layout/vbox-layout.d.ts +18 -2
  208. package/lib/features/layout/vbox-layout.d.ts.map +1 -1
  209. package/lib/features/layout/vbox-layout.js +26 -13
  210. package/lib/features/layout/vbox-layout.js.map +1 -1
  211. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  212. package/lib/features/mouse-tool/di.config.d.ts.map +1 -1
  213. package/lib/features/mouse-tool/di.config.js +2 -2
  214. package/lib/features/mouse-tool/di.config.js.map +1 -1
  215. package/lib/features/mouse-tool/mouse-tool.d.ts +9 -6
  216. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  217. package/lib/features/mouse-tool/mouse-tool.js +10 -48
  218. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  219. package/lib/features/navigation/di.config.js +4 -4
  220. package/lib/features/navigation/di.config.js.map +1 -1
  221. package/lib/features/navigation/navigation-action-handler.d.ts +31 -16
  222. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  223. package/lib/features/navigation/navigation-action-handler.js +52 -68
  224. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  225. package/lib/features/navigation/navigation-target-resolver.d.ts +3 -3
  226. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  227. package/lib/features/navigation/navigation-target-resolver.js +8 -9
  228. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  229. package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
  230. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  231. package/lib/features/reconnect/model.d.ts +1 -1
  232. package/lib/features/reconnect/model.d.ts.map +1 -1
  233. package/lib/features/reconnect/model.js +1 -1
  234. package/lib/features/reconnect/model.js.map +1 -1
  235. package/lib/features/save/di.config.d.ts +1 -1
  236. package/lib/features/save/di.config.d.ts.map +1 -1
  237. package/lib/features/save/di.config.js +3 -3
  238. package/lib/features/save/di.config.js.map +1 -1
  239. package/lib/features/save/save-keylistener.d.ts +1 -1
  240. package/lib/features/save/save-keylistener.d.ts.map +1 -1
  241. package/lib/features/save/save-keylistener.js +3 -3
  242. package/lib/features/save/save-keylistener.js.map +1 -1
  243. package/lib/features/select/di.config.d.ts +1 -1
  244. package/lib/features/select/di.config.d.ts.map +1 -1
  245. package/lib/features/select/di.config.js +7 -8
  246. package/lib/features/select/di.config.js.map +1 -1
  247. package/lib/features/select/select-feedback-action.d.ts +26 -22
  248. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  249. package/lib/features/select/select-feedback-action.js +19 -46
  250. package/lib/features/select/select-feedback-action.js.map +1 -1
  251. package/lib/features/select/select-mouse-listener.d.ts +4 -2
  252. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  253. package/lib/features/select/select-mouse-listener.js +63 -1
  254. package/lib/features/select/select-mouse-listener.js.map +1 -1
  255. package/lib/features/select/selection-service.d.ts +14 -5
  256. package/lib/features/select/selection-service.d.ts.map +1 -1
  257. package/lib/features/select/selection-service.js +55 -64
  258. package/lib/features/select/selection-service.js.map +1 -1
  259. package/lib/features/select/selection-service.spec.js +28 -25
  260. package/lib/features/select/selection-service.spec.js.map +1 -1
  261. package/lib/features/source-model-watcher/di.config.d.ts +4 -0
  262. package/lib/features/{model-source-watcher → source-model-watcher}/di.config.d.ts.map +1 -1
  263. package/lib/features/{model-source-watcher → source-model-watcher}/di.config.js +4 -4
  264. package/lib/features/source-model-watcher/di.config.js.map +1 -0
  265. package/lib/features/{model-source-watcher/model-source-changed-action-handler.d.ts → source-model-watcher/source-model-changed-action-handler.d.ts} +10 -10
  266. package/lib/features/source-model-watcher/source-model-changed-action-handler.d.ts.map +1 -0
  267. package/lib/features/{model-source-watcher/model-source-changed-action-handler.js → source-model-watcher/source-model-changed-action-handler.js} +28 -28
  268. package/lib/features/source-model-watcher/source-model-changed-action-handler.js.map +1 -0
  269. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +17 -9
  270. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  271. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +68 -38
  272. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  273. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +24 -12
  274. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  275. package/lib/features/tool-feedback/creation-tool-feedback.js +88 -35
  276. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  277. package/lib/features/tool-feedback/css-feedback.d.ts +17 -10
  278. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  279. package/lib/features/tool-feedback/css-feedback.js +42 -38
  280. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  281. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  282. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  283. package/lib/features/tool-feedback/di.config.js +18 -18
  284. package/lib/features/tool-feedback/di.config.js.map +1 -1
  285. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +45 -22
  286. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  287. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -114
  288. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  289. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
  290. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  291. package/lib/features/tool-feedback/feedback-action-dispatcher.js +4 -4
  292. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  293. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +21 -10
  294. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  295. package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -18
  296. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  297. package/lib/features/tool-feedback/model.d.ts +1 -2
  298. package/lib/features/tool-feedback/model.d.ts.map +1 -1
  299. package/lib/features/tool-feedback/model.js +1 -1
  300. package/lib/features/tool-feedback/model.js.map +1 -1
  301. package/lib/features/tool-feedback/view.d.ts +1 -1
  302. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  303. package/lib/features/tool-feedback/view.js +22 -5
  304. package/lib/features/tool-feedback/view.js.map +1 -1
  305. package/lib/features/tool-palette/di.config.d.ts +1 -1
  306. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  307. package/lib/features/tool-palette/di.config.js +5 -4
  308. package/lib/features/tool-palette/di.config.js.map +1 -1
  309. package/lib/features/tool-palette/tool-palette.d.ts +10 -7
  310. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  311. package/lib/features/tool-palette/tool-palette.js +39 -32
  312. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  313. package/lib/features/tools/base-glsp-tool.d.ts +3 -3
  314. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  315. package/lib/features/tools/base-glsp-tool.js +11 -11
  316. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  317. package/lib/features/tools/change-bounds-tool.d.ts +7 -9
  318. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  319. package/lib/features/tools/change-bounds-tool.js +48 -71
  320. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  321. package/lib/features/tools/delete-tool.d.ts +1 -1
  322. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  323. package/lib/features/tools/delete-tool.js +17 -17
  324. package/lib/features/tools/delete-tool.js.map +1 -1
  325. package/lib/features/tools/di.config.d.ts +9 -2
  326. package/lib/features/tools/di.config.d.ts.map +1 -1
  327. package/lib/features/tools/di.config.js +26 -15
  328. package/lib/features/tools/di.config.js.map +1 -1
  329. package/lib/features/tools/edge-creation-tool.d.ts +1 -1
  330. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  331. package/lib/features/tools/edge-creation-tool.js +28 -21
  332. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  333. package/lib/features/tools/edge-edit-tool.d.ts +3 -2
  334. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  335. package/lib/features/tools/edge-edit-tool.js +41 -36
  336. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  337. package/lib/features/{tool-palette/palette-item.d.ts → tools/enable-default-tools-on-focus-loss.d.ts} +11 -11
  338. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -0
  339. package/lib/features/tools/enable-default-tools-on-focus-loss.js +29 -0
  340. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -0
  341. package/lib/features/tools/marquee-behavior.d.ts +1 -1
  342. package/lib/features/tools/marquee-behavior.js +2 -2
  343. package/lib/features/tools/marquee-behavior.js.map +1 -1
  344. package/lib/features/tools/marquee-behavior.spec.js +63 -63
  345. package/lib/features/tools/marquee-behavior.spec.js.map +1 -1
  346. package/lib/features/tools/marquee-mouse-tool.d.ts +1 -1
  347. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  348. package/lib/features/tools/marquee-mouse-tool.js +20 -20
  349. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  350. package/lib/features/tools/marquee-tool.d.ts +1 -1
  351. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  352. package/lib/features/tools/marquee-tool.js +4 -4
  353. package/lib/features/tools/marquee-tool.js.map +1 -1
  354. package/lib/features/tools/model.d.ts +3 -2
  355. package/lib/features/tools/model.d.ts.map +1 -1
  356. package/lib/features/tools/model.js +0 -15
  357. package/lib/features/tools/model.js.map +1 -1
  358. package/lib/features/tools/node-creation-tool.d.ts +1 -1
  359. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  360. package/lib/features/tools/node-creation-tool.js +17 -17
  361. package/lib/features/tools/node-creation-tool.js.map +1 -1
  362. package/lib/features/tools/view.d.ts.map +1 -1
  363. package/lib/features/tools/view.js +2 -2
  364. package/lib/features/tools/view.js.map +1 -1
  365. package/lib/features/validation/di.config.d.ts +0 -15
  366. package/lib/features/validation/di.config.d.ts.map +1 -1
  367. package/lib/features/validation/di.config.js +9 -7
  368. package/lib/features/validation/di.config.js.map +1 -1
  369. package/lib/features/validation/issue-marker.d.ts +11 -5
  370. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  371. package/lib/features/validation/issue-marker.js +25 -5
  372. package/lib/features/validation/issue-marker.js.map +1 -1
  373. package/lib/features/validation/marker-navigator.d.ts +27 -25
  374. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  375. package/lib/features/validation/marker-navigator.js +64 -91
  376. package/lib/features/validation/marker-navigator.js.map +1 -1
  377. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  378. package/lib/features/validation/marker-navigator.spec.js +23 -37
  379. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  380. package/lib/features/validation/validate.d.ts +17 -30
  381. package/lib/features/validation/validate.d.ts.map +1 -1
  382. package/lib/features/validation/validate.js +66 -91
  383. package/lib/features/validation/validate.js.map +1 -1
  384. package/lib/features/viewport/di.config.d.ts +1 -1
  385. package/lib/features/viewport/di.config.d.ts.map +1 -1
  386. package/lib/features/viewport/di.config.js +7 -7
  387. package/lib/features/viewport/di.config.js.map +1 -1
  388. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +1 -1
  389. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  390. package/lib/features/viewport/glsp-scroll-mouse-listener.js +3 -3
  391. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  392. package/lib/index.d.ts +10 -11
  393. package/lib/index.d.ts.map +1 -1
  394. package/lib/index.js +26 -22
  395. package/lib/index.js.map +1 -1
  396. package/lib/lib/model.d.ts +3 -2
  397. package/lib/lib/model.d.ts.map +1 -1
  398. package/lib/lib/model.js +3 -18
  399. package/lib/lib/model.js.map +1 -1
  400. package/lib/model-source/glsp-diagram-server.d.ts +6 -6
  401. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  402. package/lib/model-source/glsp-diagram-server.js +8 -7
  403. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  404. package/lib/sprotty-reexport.d.ts +174 -0
  405. package/lib/sprotty-reexport.d.ts.map +1 -0
  406. package/lib/sprotty-reexport.js +301 -0
  407. package/lib/sprotty-reexport.js.map +1 -0
  408. package/lib/utils/argument-utils.js +5 -5
  409. package/lib/utils/argument-utils.js.map +1 -1
  410. package/lib/utils/layout-utils.d.ts +6 -22
  411. package/lib/utils/layout-utils.d.ts.map +1 -1
  412. package/lib/utils/layout-utils.js +1 -1
  413. package/lib/utils/layout-utils.js.map +1 -1
  414. package/lib/utils/smodel-util.d.ts +117 -11
  415. package/lib/utils/smodel-util.d.ts.map +1 -1
  416. package/lib/utils/smodel-util.js +142 -37
  417. package/lib/utils/smodel-util.js.map +1 -1
  418. package/lib/utils/viewpoint-util.d.ts +3 -3
  419. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  420. package/lib/utils/viewpoint-util.js +19 -3
  421. package/lib/utils/viewpoint-util.js.map +1 -1
  422. package/lib/views/base-view-module.d.ts.map +1 -1
  423. package/lib/views/base-view-module.js +21 -19
  424. package/lib/views/base-view-module.js.map +1 -1
  425. package/lib/views/compartments.js +2 -2
  426. package/lib/views/compartments.js.map +1 -1
  427. package/lib/views/glsp-edge-view.d.ts +1 -1
  428. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  429. package/lib/views/glsp-edge-view.js +1 -1
  430. package/lib/views/glsp-edge-view.js.map +1 -1
  431. package/lib/views/glsp-projection-view.d.ts +30 -0
  432. package/lib/views/glsp-projection-view.d.ts.map +1 -0
  433. package/lib/views/glsp-projection-view.js +148 -0
  434. package/lib/views/glsp-projection-view.js.map +1 -0
  435. package/lib/views/index.d.ts +1 -0
  436. package/lib/views/index.d.ts.map +1 -1
  437. package/lib/views/index.js +7 -2
  438. package/lib/views/index.js.map +1 -1
  439. package/lib/views/issue-marker-view.d.ts.map +1 -1
  440. package/lib/views/issue-marker-view.js +3 -3
  441. package/lib/views/issue-marker-view.js.map +1 -1
  442. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  443. package/lib/views/rounded-corner-view.js +2 -2
  444. package/lib/views/rounded-corner-view.js.map +1 -1
  445. package/package.json +10 -19
  446. package/src/base/action-dispatcher.ts +26 -16
  447. package/src/base/actions/focus-change-action.ts +25 -8
  448. package/src/base/actions/sprotty-actions.ts +26 -0
  449. package/src/base/auto-complete/auto-complete-actions.ts +7 -5
  450. package/src/base/auto-complete/auto-complete-widget.ts +15 -13
  451. package/src/base/command-stack.ts +7 -6
  452. package/src/base/container-modules.ts +6 -5
  453. package/src/base/di.config.ts +4 -5
  454. package/src/base/drag-aware-mouse-listener.ts +4 -4
  455. package/src/base/editor-context-service.ts +32 -12
  456. package/src/base/focus-tracker.ts +5 -4
  457. package/src/base/model/model-registry.ts +2 -2
  458. package/src/base/model/update-model-command.ts +54 -41
  459. package/src/base/model-initialization-constraint.ts +9 -11
  460. package/src/base/selection-clearing-mouse-listener.ts +1 -1
  461. package/src/base/source-uri-aware.ts +5 -4
  462. package/src/base/tool-manager/glsp-tool-manager.ts +9 -9
  463. package/src/base/tool-manager/tool-actions.ts +37 -0
  464. package/src/base/types.ts +31 -24
  465. package/src/base/view/view-registry.ts +2 -2
  466. package/src/features/change-bounds/model.ts +5 -5
  467. package/src/features/change-bounds/movement-restrictor.ts +74 -44
  468. package/src/features/change-bounds/snap.spec.ts +89 -0
  469. package/src/features/change-bounds/snap.ts +99 -12
  470. package/src/features/command-palette/di.config.ts +5 -7
  471. package/src/features/command-palette/server-command-palette-provider.ts +9 -8
  472. package/src/features/context-menu/delete-element-context-menu.ts +6 -6
  473. package/src/features/context-menu/di.config.ts +3 -2
  474. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +51 -29
  475. package/src/features/context-menu/server-context-menu-provider.ts +7 -6
  476. package/src/features/copy-paste/copy-paste-context-menu.ts +30 -23
  477. package/src/features/copy-paste/copy-paste-handler.ts +6 -6
  478. package/src/features/copy-paste/di.config.ts +7 -15
  479. package/src/features/decoration/decoration-placer.ts +4 -4
  480. package/src/features/decoration/di.config.ts +3 -5
  481. package/src/features/edit-label/di.config.ts +4 -5
  482. package/src/features/edit-label/edit-label-tool.ts +1 -2
  483. package/src/features/edit-label/edit-label-validator.ts +6 -10
  484. package/src/features/hints/di.config.ts +3 -3
  485. package/src/features/hints/type-hints.ts +33 -18
  486. package/src/features/hover/di.config.ts +8 -2
  487. package/src/features/hover/hover.ts +48 -28
  488. package/src/features/layout/di.config.ts +17 -7
  489. package/src/features/layout/freeform-layout.ts +6 -15
  490. package/src/features/layout/hbox-layout.ts +273 -0
  491. package/src/features/layout/{layout-commands.spec.ts → layout-elements-action.spec.ts} +89 -65
  492. package/src/features/layout/layout-elements-action.ts +486 -0
  493. package/src/features/layout/layouter.ts +137 -0
  494. package/src/features/layout/tests/freeform-layout.spec.ts +216 -0
  495. package/src/features/layout/tests/hbox-layout.spec.ts +171 -0
  496. package/src/features/layout/tests/layouter-test-util.ts +122 -0
  497. package/src/features/layout/tests/vbox-layout.spec.ts +171 -0
  498. package/src/features/layout/vbox-layout.ts +41 -24
  499. package/src/features/mouse-tool/di.config.ts +3 -4
  500. package/src/features/mouse-tool/mouse-tool.ts +18 -57
  501. package/src/features/navigation/navigation-action-handler.ts +76 -42
  502. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -3
  503. package/src/features/navigation/navigation-target-resolver.ts +8 -13
  504. package/src/features/reconnect/model.ts +2 -2
  505. package/src/features/save/di.config.ts +2 -3
  506. package/src/features/save/save-keylistener.ts +3 -3
  507. package/src/features/select/di.config.ts +6 -8
  508. package/src/features/select/select-feedback-action.ts +18 -46
  509. package/src/features/select/select-mouse-listener.ts +82 -3
  510. package/src/features/select/selection-service.spec.ts +12 -9
  511. package/src/features/select/selection-service.ts +52 -60
  512. package/src/features/{model-source-watcher → source-model-watcher}/di.config.ts +5 -5
  513. package/src/features/{model-source-watcher/model-source-changed-action-handler.ts → source-model-watcher/source-model-changed-action-handler.ts} +17 -22
  514. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +52 -22
  515. package/src/features/tool-feedback/creation-tool-feedback.ts +79 -30
  516. package/src/features/tool-feedback/css-feedback.ts +40 -37
  517. package/src/features/tool-feedback/di.config.ts +4 -5
  518. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +140 -88
  519. package/src/features/tool-feedback/feedback-action-dispatcher.ts +4 -3
  520. package/src/features/tool-feedback/marquee-tool-feedback.ts +38 -13
  521. package/src/features/tool-feedback/model.ts +1 -3
  522. package/src/features/tool-feedback/view.tsx +3 -3
  523. package/src/features/tool-palette/di.config.ts +3 -2
  524. package/src/features/tool-palette/tool-palette.ts +35 -19
  525. package/src/features/tools/base-glsp-tool.ts +11 -11
  526. package/src/features/tools/change-bounds-tool.ts +37 -67
  527. package/src/features/tools/delete-tool.ts +9 -9
  528. package/src/features/tools/di.config.ts +23 -12
  529. package/src/features/tools/edge-creation-tool.ts +21 -12
  530. package/src/features/tools/edge-edit-tool.ts +25 -21
  531. package/src/features/tools/enable-default-tools-on-focus-loss.ts +33 -0
  532. package/src/features/tools/marquee-behavior.ts +2 -2
  533. package/src/features/tools/marquee-mouse-tool.ts +13 -14
  534. package/src/features/tools/marquee-tool.ts +3 -3
  535. package/src/features/tools/model.ts +4 -3
  536. package/src/features/tools/node-creation-tool.ts +8 -8
  537. package/src/features/tools/view.tsx +2 -3
  538. package/src/features/validation/di.config.ts +13 -11
  539. package/src/features/validation/issue-marker.ts +34 -12
  540. package/src/features/validation/marker-navigator.spec.ts +4 -2
  541. package/src/features/validation/marker-navigator.ts +67 -82
  542. package/src/features/validation/validate.ts +62 -90
  543. package/src/features/viewport/di.config.ts +1 -2
  544. package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
  545. package/src/index.ts +12 -12
  546. package/src/lib/model.ts +4 -4
  547. package/src/model-source/glsp-diagram-server.ts +15 -15
  548. package/src/sprotty-reexport.ts +288 -0
  549. package/src/utils/layout-utils.ts +9 -29
  550. package/src/utils/smodel-util.ts +139 -43
  551. package/src/utils/viewpoint-util.ts +5 -14
  552. package/src/views/base-view-module.ts +5 -1
  553. package/src/views/compartments.tsx +1 -1
  554. package/src/views/glsp-edge-view.tsx +4 -4
  555. package/src/views/glsp-projection-view.tsx +173 -0
  556. package/src/views/index.ts +2 -0
  557. package/src/views/issue-marker-view.tsx +2 -2
  558. package/src/views/rounded-corner-view.tsx +2 -3
  559. package/lib/features/layout/layout-commands.d.ts +0 -153
  560. package/lib/features/layout/layout-commands.d.ts.map +0 -1
  561. package/lib/features/layout/layout-commands.js +0 -412
  562. package/lib/features/layout/layout-commands.js.map +0 -1
  563. package/lib/features/layout/layout-commands.spec.d.ts +0 -3
  564. package/lib/features/layout/layout-commands.spec.d.ts.map +0 -1
  565. package/lib/features/layout/layout-commands.spec.js.map +0 -1
  566. package/lib/features/model-source-watcher/di.config.d.ts +0 -4
  567. package/lib/features/model-source-watcher/di.config.js.map +0 -1
  568. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +0 -1
  569. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +0 -1
  570. package/lib/features/tool-palette/palette-item.d.ts.map +0 -1
  571. package/lib/features/tool-palette/palette-item.js.map +0 -1
  572. package/lib/protocol-reexport.d.ts +0 -45
  573. package/lib/protocol-reexport.d.ts.map +0 -1
  574. package/lib/protocol-reexport.js +0 -75
  575. package/lib/protocol-reexport.js.map +0 -1
  576. package/src/features/layout/layout-commands.ts +0 -424
  577. package/src/features/tool-palette/palette-item.ts +0 -38
  578. package/src/protocol-reexport.ts +0 -64
@@ -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,24 +13,21 @@
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, hasStringProp, Point } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
18
  import { VNode } from 'snabbdom';
19
19
  import {
20
- add,
21
20
  AnchorComputerRegistry,
22
- center,
23
21
  CommandExecutionContext,
24
22
  CommandReturn,
25
23
  EdgeRouterRegistry,
26
24
  ElementMove,
27
- euclideanDistance,
28
25
  findChildrenAtPosition,
29
26
  findParentByFeature,
30
27
  isBoundsAware,
31
28
  isConnectable,
29
+ ISnapper,
32
30
  isSelected,
33
- isViewport,
34
31
  MouseListener,
35
32
  MoveAction,
36
33
  PolylineEdgeRouter,
@@ -42,8 +39,9 @@ import {
42
39
  SwitchEditModeCommand,
43
40
  TYPES
44
41
  } from 'sprotty';
45
- import { isNotUndefined, isRoutable, isRoutingHandle } from '../../utils/smodel-util';
42
+ import { forEachElement, isRoutable, isRoutingHandle } from '../../utils/smodel-util';
46
43
  import { getAbsolutePosition, toAbsoluteBounds } from '../../utils/viewpoint-util';
44
+ import { PointPositionUpdater } from '../change-bounds/snap';
47
45
  import { addReconnectHandles, removeReconnectHandles } from '../reconnect/model';
48
46
  import { FeedbackEdgeEnd, feedbackEdgeEndId, FeedbackEdgeEndMovingMouseListener, feedbackEdgeId } from './creation-tool-feedback';
49
47
  import { FeedbackCommand } from './model';
@@ -51,18 +49,41 @@ import { FeedbackCommand } from './model';
51
49
  /**
52
50
  * RECONNECT HANDLES FEEDBACK
53
51
  */
52
+ export interface ShowEdgeReconnectHandlesFeedbackAction extends Action {
53
+ kind: typeof ShowEdgeReconnectHandlesFeedbackAction.KIND;
54
+ readonly elementId: string;
55
+ }
56
+
57
+ export namespace ShowEdgeReconnectHandlesFeedbackAction {
58
+ export const KIND = 'showReconnectHandlesFeedback';
54
59
 
55
- export class ShowEdgeReconnectHandlesFeedbackAction implements Action {
56
- constructor(readonly elementId?: string, public readonly kind: string = ShowEdgeReconnectHandlesFeedbackCommand.KIND) {}
60
+ export function is(object: any): object is ShowEdgeReconnectHandlesFeedbackAction {
61
+ return Action.hasKind(object, KIND);
62
+ }
63
+
64
+ export function create(elementId: string): ShowEdgeReconnectHandlesFeedbackAction {
65
+ return { kind: KIND, elementId };
66
+ }
57
67
  }
68
+ export interface HideEdgeReconnectHandlesFeedbackAction extends Action {
69
+ kind: typeof HideEdgeReconnectHandlesFeedbackAction.KIND;
70
+ }
71
+
72
+ export namespace HideEdgeReconnectHandlesFeedbackAction {
73
+ export const KIND = 'hideReconnectHandlesFeedback';
58
74
 
59
- export class HideEdgeReconnectHandlesFeedbackAction implements Action {
60
- constructor(public readonly kind: string = HideEdgeReconnectHandlesFeedbackCommand.KIND) {}
75
+ export function is(object: any): object is HideEdgeReconnectHandlesFeedbackAction {
76
+ return Action.hasKind(object, KIND);
77
+ }
78
+
79
+ export function create(): HideEdgeReconnectHandlesFeedbackAction {
80
+ return { kind: KIND };
81
+ }
61
82
  }
62
83
 
63
84
  @injectable()
64
85
  export class ShowEdgeReconnectHandlesFeedbackCommand extends FeedbackCommand {
65
- static readonly KIND = 'showReconnectHandlesFeedback';
86
+ static readonly KIND = ShowEdgeReconnectHandlesFeedbackAction.KIND;
66
87
 
67
88
  constructor(@inject(TYPES.Action) protected action: ShowEdgeReconnectHandlesFeedbackAction) {
68
89
  super();
@@ -70,21 +91,20 @@ export class ShowEdgeReconnectHandlesFeedbackCommand extends FeedbackCommand {
70
91
 
71
92
  execute(context: CommandExecutionContext): CommandReturn {
72
93
  const index = context.root.index;
73
- index.all().filter(isRoutable).forEach(removeReconnectHandles);
94
+ forEachElement(index, isRoutable, removeReconnectHandles);
74
95
 
75
- if (isNotUndefined(this.action.elementId)) {
76
- const routableElement = index.getById(this.action.elementId);
77
- if (isNotUndefined(routableElement) && isRoutable(routableElement)) {
78
- addReconnectHandles(routableElement);
79
- }
96
+ const routableElement = index.getById(this.action.elementId);
97
+ if (routableElement && isRoutable(routableElement)) {
98
+ addReconnectHandles(routableElement);
80
99
  }
100
+
81
101
  return context.root;
82
102
  }
83
103
  }
84
104
 
85
105
  @injectable()
86
106
  export class HideEdgeReconnectHandlesFeedbackCommand extends FeedbackCommand {
87
- static readonly KIND = 'hideReconnectHandlesFeedback';
107
+ static readonly KIND = HideEdgeReconnectHandlesFeedbackAction.KIND;
88
108
 
89
109
  constructor(@inject(TYPES.Action) protected action: HideEdgeReconnectHandlesFeedbackAction) {
90
110
  super();
@@ -92,7 +112,7 @@ export class HideEdgeReconnectHandlesFeedbackCommand extends FeedbackCommand {
92
112
 
93
113
  execute(context: CommandExecutionContext): CommandReturn {
94
114
  const index = context.root.index;
95
- index.all().filter(isRoutable).forEach(removeReconnectHandles);
115
+ forEachElement(index, isRoutable, removeReconnectHandles);
96
116
  return context.root;
97
117
  }
98
118
  }
@@ -100,21 +120,24 @@ export class HideEdgeReconnectHandlesFeedbackCommand extends FeedbackCommand {
100
120
  * ROUTING FEEDBACK
101
121
  */
102
122
 
103
- export class SwitchRoutingModeAction extends SwitchEditModeAction {
104
- constructor(
105
- public readonly elementsToActivate: string[] = [],
106
- public readonly elementsToDeactivate: string[] = [],
107
- public readonly kind: string = SwitchRoutingModeCommand.KIND
108
- ) {
109
- super(elementsToActivate, elementsToDeactivate);
110
- }
123
+ export interface SwitchRoutingModeAction extends Omit<SwitchEditModeAction, 'kind'> {
124
+ kind: typeof SwitchRoutingModeAction.KIND;
111
125
  }
112
126
 
127
+ export namespace SwitchRoutingModeAction {
128
+ export const KIND = 'switchRoutingMode';
129
+ export function create(options: { elementsToActivate?: string[]; elementsToDeactivate?: string[] }): SwitchRoutingModeAction {
130
+ return {
131
+ ...SwitchEditModeAction.create(options),
132
+ kind: KIND
133
+ };
134
+ }
135
+ }
113
136
  @injectable()
114
137
  export class SwitchRoutingModeCommand extends SwitchEditModeCommand {
115
- static KIND = 'switchRoutingMode';
138
+ static override KIND = SwitchRoutingModeAction.KIND;
116
139
  constructor(@inject(TYPES.Action) action: SwitchRoutingModeAction) {
117
- super(action);
140
+ super({ ...action, kind: SwitchEditModeAction.KIND });
118
141
  }
119
142
  }
120
143
 
@@ -122,17 +145,30 @@ export class SwitchRoutingModeCommand extends SwitchEditModeCommand {
122
145
  * SOURCE AND TARGET EDGE FEEDBACK
123
146
  */
124
147
 
125
- export class DrawFeedbackEdgeSourceAction implements Action {
126
- constructor(
127
- readonly elementTypeId: string,
128
- readonly targetId: string,
129
- public readonly kind: string = DrawFeedbackEdgeSourceCommand.KIND
130
- ) {}
148
+ export interface DrawFeedbackEdgeSourceAction extends Action {
149
+ kind: typeof DrawFeedbackEdgeSourceAction.KIND;
150
+ elementTypeId: string;
151
+ targetId: string;
152
+ }
153
+
154
+ export namespace DrawFeedbackEdgeSourceAction {
155
+ export const KIND = 'drawFeedbackEdgeSource';
156
+
157
+ export function is(object: any): object is DrawFeedbackEdgeSourceAction {
158
+ return Action.hasKind(object, KIND) && hasStringProp(object, 'elementTypeId') && hasStringProp(object, 'targetId');
159
+ }
160
+
161
+ export function create(options: { elementTypeId: string; targetId: string }): DrawFeedbackEdgeSourceAction {
162
+ return {
163
+ kind: KIND,
164
+ ...options
165
+ };
166
+ }
131
167
  }
132
168
 
133
169
  @injectable()
134
170
  export class DrawFeedbackEdgeSourceCommand extends FeedbackCommand {
135
- static readonly KIND = 'drawFeedbackEdgeSource';
171
+ static readonly KIND = DrawFeedbackEdgeSourceAction.KIND;
136
172
 
137
173
  constructor(@inject(TYPES.Action) protected action: DrawFeedbackEdgeSourceAction) {
138
174
  super();
@@ -149,7 +185,7 @@ export class DrawFeedbackEdgeSourceCommand extends FeedbackCommand {
149
185
  */
150
186
 
151
187
  export class FeedbackEdgeTargetMovingMouseListener extends FeedbackEdgeEndMovingMouseListener {
152
- constructor(protected anchorRegistry: AnchorComputerRegistry) {
188
+ constructor(protected override anchorRegistry: AnchorComputerRegistry) {
153
189
  super(anchorRegistry);
154
190
  }
155
191
  }
@@ -159,7 +195,7 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
159
195
  super();
160
196
  }
161
197
 
162
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
198
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
163
199
  const root = target.root;
164
200
  const edgeEnd = root.index.getById(feedbackEdgeEndId(root));
165
201
  if (!(edgeEnd instanceof FeedbackEdgeEnd) || !edgeEnd.feedbackEdge) {
@@ -173,12 +209,12 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
173
209
  );
174
210
 
175
211
  if (endAtMousePosition instanceof SConnectableElement && edge.target && isBoundsAware(edge.target)) {
176
- const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.target.bounds));
177
- if (euclideanDistance(anchor, edgeEnd.position) > 1) {
178
- return [new MoveAction([{ elementId: edgeEnd.id, toPosition: anchor }], false)];
212
+ const anchor = this.computeAbsoluteAnchor(endAtMousePosition, Bounds.center(edge.target.bounds));
213
+ if (Point.euclideanDistance(anchor, edgeEnd.position) > 1) {
214
+ return [MoveAction.create([{ elementId: edgeEnd.id, toPosition: anchor }], { animate: false })];
179
215
  }
180
216
  } else {
181
- return [new MoveAction([{ elementId: edgeEnd.id, toPosition: position }], false)];
217
+ return [MoveAction.create([{ elementId: edgeEnd.id, toPosition: position }], { animate: false })];
182
218
  }
183
219
 
184
220
  return [];
@@ -193,7 +229,7 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
193
229
  const parent = findParentByFeature(element.parent, isBoundsAware);
194
230
  if (parent) {
195
231
  const absoluteParentPosition = toAbsoluteBounds(parent);
196
- anchor = add(absoluteParentPosition, anchor);
232
+ anchor = Point.add(absoluteParentPosition, anchor);
197
233
  }
198
234
  }
199
235
  return anchor;
@@ -201,65 +237,82 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
201
237
  }
202
238
 
203
239
  export class FeedbackEdgeRouteMovingMouseListener extends MouseListener {
204
- protected hasDragged = false;
205
- protected lastDragPosition: Point | undefined;
240
+ protected pointPositionUpdater: PointPositionUpdater;
206
241
 
207
- constructor(protected edgeRouterRegistry?: EdgeRouterRegistry) {
242
+ constructor(protected edgeRouterRegistry?: EdgeRouterRegistry, protected snapper?: ISnapper) {
208
243
  super();
244
+ this.pointPositionUpdater = new PointPositionUpdater(snapper);
209
245
  }
210
246
 
211
- mouseDown(target: SModelElement, event: MouseEvent): Action[] {
247
+ override mouseDown(target: SModelElement, event: MouseEvent): Action[] {
212
248
  const result: Action[] = [];
213
249
  if (event.button === 0) {
214
250
  const routingHandle = findParentByFeature(target, isRoutingHandle);
215
251
  if (routingHandle !== undefined) {
216
- result.push(new SwitchRoutingModeAction([target.id], []));
217
- this.lastDragPosition = { x: event.pageX, y: event.pageY };
252
+ result.push(SwitchRoutingModeAction.create({ elementsToActivate: [target.id] }));
253
+ this.pointPositionUpdater.updateLastDragPosition({ x: event.pageX, y: event.pageY });
218
254
  } else {
219
- this.lastDragPosition = undefined;
255
+ this.pointPositionUpdater.resetPosition();
220
256
  }
221
- this.hasDragged = false;
222
257
  }
223
258
  return result;
224
259
  }
225
260
 
226
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
261
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
227
262
  const result: Action[] = [];
228
263
  if (event.buttons === 0) {
229
- this.mouseUp(target, event);
230
- } else if (this.lastDragPosition) {
231
- const viewport = findParentByFeature(target, isViewport);
232
- this.hasDragged = true;
233
- const zoom = viewport ? viewport.zoom : 1;
234
- const dx = (event.pageX - this.lastDragPosition.x) / zoom;
235
- const dy = (event.pageY - this.lastDragPosition.y) / zoom;
236
- const handleMoves: ElementMove[] = [];
237
- target.root.index
238
- .all()
239
- .filter(element => isSelected(element))
240
- .forEach(element => {
241
- if (isRoutingHandle(element)) {
242
- const point = this.getHandlePosition(element);
243
- if (point !== undefined) {
244
- handleMoves.push({
245
- elementId: element.id,
246
- fromPosition: point,
247
- toPosition: {
248
- x: point.x + dx,
249
- y: point.y + dy
250
- }
251
- });
252
- }
253
- }
254
- });
255
- this.lastDragPosition = { x: event.pageX, y: event.pageY };
256
- if (handleMoves.length > 0) {
257
- result.push(new MoveAction(handleMoves, false));
258
- }
264
+ return this.mouseUp(target, event);
265
+ }
266
+ const positionUpdate = this.pointPositionUpdater.updatePosition(target, { x: event.pageX, y: event.pageY }, !event.altKey);
267
+ if (positionUpdate) {
268
+ const moveActions = this.handleMoveOnClient(target, positionUpdate, !event.altKey);
269
+ result.push(...moveActions);
259
270
  }
260
271
  return result;
261
272
  }
262
273
 
274
+ protected handleMoveOnClient(target: SModelElement, positionUpdate: Point, isSnap: boolean): Action[] {
275
+ const handleMoves: ElementMove[] = [];
276
+ target.root.index
277
+ .all()
278
+ .filter(element => isSelected(element))
279
+ .forEach(element => {
280
+ if (isRoutingHandle(element)) {
281
+ const elementMove = this.toElementMove(element, positionUpdate, isSnap);
282
+ if (elementMove) {
283
+ handleMoves.push(elementMove);
284
+ }
285
+ }
286
+ });
287
+ if (handleMoves.length > 0) {
288
+ return [MoveAction.create(handleMoves, { animate: false })];
289
+ }
290
+ return [];
291
+ }
292
+
293
+ protected toElementMove(element: SRoutingHandle, positionDelta: Point, isSnap: boolean): ElementMove | undefined {
294
+ const point = this.getHandlePosition(element);
295
+ if (point !== undefined) {
296
+ const snappedPoint = this.getSnappedHandlePosition(element, point, isSnap);
297
+ return {
298
+ elementId: element.id,
299
+ fromPosition: point,
300
+ toPosition: {
301
+ x: snappedPoint.x + positionDelta.x,
302
+ y: snappedPoint.y + positionDelta.y
303
+ }
304
+ };
305
+ }
306
+ return undefined;
307
+ }
308
+
309
+ protected getSnappedHandlePosition(element: SRoutingHandle, point: Point, isSnap: boolean): Point {
310
+ if (this.snapper && isSnap) {
311
+ return this.snapper.snap(point, element);
312
+ }
313
+ return point;
314
+ }
315
+
263
316
  protected getHandlePosition(handle: SRoutingHandle): Point | undefined {
264
317
  if (this.edgeRouterRegistry) {
265
318
  const parent = handle.parent;
@@ -273,20 +326,19 @@ export class FeedbackEdgeRouteMovingMouseListener extends MouseListener {
273
326
  return undefined;
274
327
  }
275
328
 
276
- mouseEnter(target: SModelElement, event: MouseEvent): Action[] {
329
+ override mouseEnter(target: SModelElement, event: MouseEvent): Action[] {
277
330
  if (target instanceof SModelRoot && event.buttons === 0) {
278
331
  this.mouseUp(target, event);
279
332
  }
280
333
  return [];
281
334
  }
282
335
 
283
- mouseUp(_target: SModelElement, event: MouseEvent): Action[] {
284
- this.hasDragged = false;
285
- this.lastDragPosition = undefined;
336
+ override mouseUp(_target: SModelElement, event: MouseEvent): Action[] {
337
+ this.pointPositionUpdater.resetPosition();
286
338
  return [];
287
339
  }
288
340
 
289
- decorate(vnode: VNode, _element: SModelElement): VNode {
341
+ override decorate(vnode: VNode, _element: SModelElement): VNode {
290
342
  return vnode;
291
343
  }
292
344
  }
@@ -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
@@ -15,7 +15,8 @@
15
15
  ********************************************************************************/
16
16
  import { Action } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
- import { IActionDispatcher, ILogger, TYPES } from 'sprotty';
18
+ import { IActionDispatcher, ILogger } from 'sprotty';
19
+ import { TYPES } from '../../base/types';
19
20
 
20
21
  export interface IFeedbackEmitter {}
21
22
 
@@ -30,7 +31,7 @@ export interface IFeedbackEmitter {}
30
31
  * extending the `SModelRoot`. Therefore, tools can register themselves
31
32
  * as feedback emitters with actions they want to place for showing
32
33
  * feedback. This dispatcher will then re-establish all feedback actions
33
- * of the registered tools, whenever the `SModelRoot` has been set or updated.
34
+ * of the registered emitters, whenever the `SModelRoot` has been set or updated.
34
35
  */
35
36
  export interface IFeedbackActionDispatcher {
36
37
  /**
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2021 EclipseSource and others.
2
+ * Copyright (c) 2021-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -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, hasObjectProp, Point } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
18
  import {
19
19
  AnchorComputerRegistry,
@@ -27,17 +27,30 @@ import {
27
27
  } from 'sprotty';
28
28
  import { FeedbackCommand } from './model';
29
29
 
30
- export class DrawMarqueeAction implements Action {
31
- constructor(
32
- public readonly startPoint: Point,
33
- public readonly endPoint: Point,
34
- public readonly kind: string = DrawMarqueeCommand.KIND
35
- ) {}
30
+ export interface DrawMarqueeAction extends Action {
31
+ kind: typeof DrawMarqueeAction.KIND;
32
+ startPoint: Point;
33
+ endPoint: Point;
34
+ }
35
+
36
+ export namespace DrawMarqueeAction {
37
+ export const KIND = 'drawMarquee';
38
+
39
+ export function is(object: any): object is DrawMarqueeAction {
40
+ return Action.hasKind(object, KIND) && hasObjectProp(object, 'startPoint') && hasObjectProp(object, 'endPoint');
41
+ }
42
+
43
+ export function create(options: { startPoint: Point; endPoint: Point }): DrawMarqueeAction {
44
+ return {
45
+ kind: KIND,
46
+ ...options
47
+ };
48
+ }
36
49
  }
37
50
 
38
51
  @injectable()
39
52
  export class DrawMarqueeCommand extends FeedbackCommand {
40
- static readonly KIND = 'drawMarquee';
53
+ static readonly KIND = DrawMarqueeAction.KIND;
41
54
 
42
55
  constructor(@inject(TYPES.Action) protected action: DrawMarqueeAction) {
43
56
  super();
@@ -49,13 +62,25 @@ export class DrawMarqueeCommand extends FeedbackCommand {
49
62
  }
50
63
  }
51
64
 
52
- export class RemoveMarqueeAction implements Action {
53
- constructor(public readonly kind: string = RemoveMarqueeCommand.KIND) {}
65
+ export interface RemoveMarqueeAction extends Action {
66
+ kind: typeof RemoveMarqueeAction.KIND;
67
+ }
68
+
69
+ export namespace RemoveMarqueeAction {
70
+ export const KIND = 'removeMarquee';
71
+
72
+ export function is(object: any): object is RemoveMarqueeAction {
73
+ return Action.hasKind(object, KIND);
74
+ }
75
+
76
+ export function create(): RemoveMarqueeAction {
77
+ return { kind: KIND };
78
+ }
54
79
  }
55
80
 
56
81
  @injectable()
57
82
  export class RemoveMarqueeCommand extends FeedbackCommand {
58
- static readonly KIND = 'removeMarqueeCommand';
83
+ static readonly KIND = RemoveMarqueeAction.KIND;
59
84
 
60
85
  execute(context: CommandExecutionContext): CommandReturn {
61
86
  removeMarquee(context.root);
@@ -68,7 +93,7 @@ export class MarqueeEndMovingMouseListener extends MouseListener {
68
93
  super();
69
94
  }
70
95
 
71
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
96
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
72
97
  return [];
73
98
  }
74
99
  }
@@ -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
@@ -19,8 +19,6 @@ export abstract class FeedbackCommand extends Command {
19
19
  // used by the `FeedbackAwareUpdateModelCommand`
20
20
  readonly priority: number = 0;
21
21
 
22
- abstract execute(context: CommandExecutionContext): CommandReturn;
23
-
24
22
  undo(context: CommandExecutionContext): CommandReturn {
25
23
  return context.root;
26
24
  }
@@ -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 { Point } from '@eclipse-glsp/protocol';
17
17
  import { injectable } from 'inversify';
18
18
  import { VNode } from 'snabbdom';
19
- import { IView, ORIGIN_POINT, RenderingContext, setAttr, SModelElement, svg } from 'sprotty';
19
+ import { IView, RenderingContext, setAttr, SModelElement, svg } from 'sprotty';
20
20
  import { isResizable, ResizeHandleLocation, SResizeHandle } from '../change-bounds/model';
21
21
 
22
22
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -29,7 +29,7 @@ const JSX = { createElement: svg };
29
29
  @injectable()
30
30
  export class FeedbackEdgeEndView implements IView {
31
31
  render(model: Readonly<SModelElement>, context: RenderingContext): VNode {
32
- const position: Point = (model as any).position || ORIGIN_POINT;
32
+ const position: Point = (model as any).position ?? Point.ORIGIN;
33
33
  return <g x={position.x} y={position.y} />;
34
34
  }
35
35
  }
@@ -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,8 +14,9 @@
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 { configureActionHandler, EnableDefaultToolsAction, TYPES } from 'sprotty';
17
+ import { configureActionHandler, EnableDefaultToolsAction } from 'sprotty';
18
18
  import '../../../css/tool-palette.css';
19
+ import { TYPES } from '../../base/types';
19
20
  import { EnableToolPaletteAction, ToolPalette } from './tool-palette';
20
21
 
21
22
  const toolPaletteModule = new ContainerModule((bind, _unbind, isBound, rebind) => {