@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,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,34 +31,64 @@ import {
31
31
  SModelRoot,
32
32
  TYPES
33
33
  } from 'sprotty';
34
- import { 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
+ }
43
60
  }
44
61
 
45
- export class HideChangeBoundsToolResizeFeedbackAction implements Action {
46
- constructor(public readonly kind: string = HideChangeBoundsToolResizeFeedbackCommand.KIND) {}
62
+ export interface HideChangeBoundsToolResizeFeedbackAction extends Action {
63
+ kind: typeof HideChangeBoundsToolResizeFeedbackAction.KIND;
64
+ }
65
+
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
 
55
84
  execute(context: CommandExecutionContext): CommandReturn {
56
85
  const index = context.root.index;
57
- index.all().filter(isResizable).forEach(removeResizeHandles);
58
86
 
59
- if (isNotUndefined(this.action.elementId)) {
87
+ forEachElement(index, isResizable, removeResizeHandles);
88
+
89
+ if (this.action.elementId) {
60
90
  const resizeElement = index.getById(this.action.elementId);
61
- if (isNotUndefined(resizeElement) && isResizable(resizeElement)) {
91
+ if (resizeElement && isResizable(resizeElement)) {
62
92
  addResizeHandles(resizeElement);
63
93
  }
64
94
  }
@@ -68,13 +98,13 @@ export class ShowChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
68
98
 
69
99
  @injectable()
70
100
  export class HideChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
71
- static readonly KIND = 'hideChangeBoundsToolResizeFeedback';
101
+ static readonly KIND = HideChangeBoundsToolResizeFeedbackAction.KIND;
72
102
 
73
103
  @inject(TYPES.Action) protected action: HideChangeBoundsToolResizeFeedbackAction;
74
104
 
75
105
  execute(context: CommandExecutionContext): CommandReturn {
76
106
  const index = context.root.index;
77
- index.all().filter(isResizable).forEach(removeResizeHandles);
107
+ forEachElement(index, isResizable, removeResizeHandles);
78
108
  return context.root;
79
109
  }
80
110
  }
@@ -95,7 +125,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
95
125
  super();
96
126
  }
97
127
 
98
- mouseDown(target: SModelElement, event: MouseEvent): Action[] {
128
+ override mouseDown(target: SModelElement, event: MouseEvent): Action[] {
99
129
  if (event.button === 0 && !(target instanceof SResizeHandle)) {
100
130
  const moveable = findParentByFeature(target, isMoveable);
101
131
  if (moveable !== undefined) {
@@ -108,7 +138,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
108
138
  return [];
109
139
  }
110
140
 
111
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
141
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
112
142
  const result: Action[] = [];
113
143
  if (event.buttons === 0) {
114
144
  this.mouseUp(target, event);
@@ -148,7 +178,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
148
178
  return false;
149
179
  }
150
180
 
151
- protected getElementMoves(target: SModelElement, event: MouseEvent, isFinished: boolean): MoveAction | undefined {
181
+ protected getElementMoves(target: SModelElement, event: MouseEvent, finished: boolean): MoveAction | undefined {
152
182
  if (!this.startDragPosition) {
153
183
  return undefined;
154
184
  }
@@ -172,7 +202,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
172
202
  );
173
203
 
174
204
  if (isMoveable(element)) {
175
- toPosition = this.validateMove(startPosition, toPosition, element, isFinished);
205
+ toPosition = this.validateMove(startPosition, toPosition, element, finished);
176
206
  elementMoves.push({
177
207
  elementId: element.id,
178
208
  fromPosition: {
@@ -185,7 +215,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
185
215
  }
186
216
  });
187
217
  if (elementMoves.length > 0) {
188
- return new MoveAction(elementMoves, false, isFinished);
218
+ return MoveAction.create(elementMoves, { animate: false, finished });
189
219
  } else {
190
220
  return undefined;
191
221
  }
@@ -194,7 +224,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
194
224
  protected validateMove(startPostion: Point, toPosition: Point, element: SModelElement, isFinished: boolean): Point {
195
225
  let newPosition = toPosition;
196
226
  if (this.tool.movementRestrictor) {
197
- const valid = this.tool.movementRestrictor.validate(toPosition, element);
227
+ const valid = this.tool.movementRestrictor.validate(element, toPosition);
198
228
  let action;
199
229
  if (!valid) {
200
230
  action = createMovementRestrictionFeedback(element, this.tool.movementRestrictor);
@@ -219,14 +249,14 @@ export class FeedbackMoveMouseListener extends MouseListener {
219
249
  }
220
250
  }
221
251
 
222
- mouseEnter(target: SModelElement, event: MouseEvent): Action[] {
252
+ override mouseEnter(target: SModelElement, event: MouseEvent): Action[] {
223
253
  if (target instanceof SModelRoot && event.buttons === 0 && !this.startDragPosition) {
224
254
  this.mouseUp(target, event);
225
255
  }
226
256
  return [];
227
257
  }
228
258
 
229
- mouseUp(target: SModelElement, event: MouseEvent): Action[] {
259
+ override mouseUp(target: SModelElement, event: MouseEvent): Action[] {
230
260
  const result: Action[] = [];
231
261
  if (this.startDragPosition) {
232
262
  const moveAction = this.getElementMoves(target, event, true);
@@ -244,7 +274,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
244
274
  return result;
245
275
  }
246
276
 
247
- decorate(vnode: VNode, _element: SModelElement): VNode {
277
+ override decorate(vnode: VNode, _element: SModelElement): VNode {
248
278
  return vnode;
249
279
  }
250
280
  }
@@ -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,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,28 +29,40 @@ 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,
39
36
  TYPES
40
37
  } from 'sprotty';
41
- import { isRoutable } from '../../utils/smodel-util';
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);
@@ -86,7 +107,7 @@ export class FeedbackEdgeEnd extends SDanglingAnchor {
86
107
  readonly sourceId: string,
87
108
  readonly elementTypeId: string,
88
109
  public feedbackEdge: SRoutableElement | undefined = undefined,
89
- public readonly type: string = FeedbackEdgeEnd.TYPE
110
+ override readonly type: string = FeedbackEdgeEnd.TYPE
90
111
  ) {
91
112
  super();
92
113
  }
@@ -97,7 +118,7 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
97
118
  super();
98
119
  }
99
120
 
100
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
121
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
101
122
  const root = target.root;
102
123
  const edgeEnd = root.index.getById(feedbackEdgeEndId(root));
103
124
  if (!(edgeEnd instanceof FeedbackEdgeEnd) || !edgeEnd.feedbackEdge) {
@@ -106,38 +127,66 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
106
127
 
107
128
  const edge = edgeEnd.feedbackEdge;
108
129
  const position = getAbsolutePosition(edgeEnd, event);
109
- const endAtMousePosition = findChildrenAtPosition(target.root, position).find(
110
- element => isConnectable(element) && element.canConnect(edge, 'target')
111
- );
130
+ const endAtMousePosition = findChildrenAtPosition(target.root, position)
131
+ .reverse()
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(edge.source.bounds));
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 [];
123
144
  }
124
145
 
125
- protected computeAbsoluteAnchor(element: SConnectableElement, referencePoint: Point, offset?: number): Point {
146
+ protected computeAbsoluteAnchor(element: SConnectableElement, absoluteReferencePoint: Point, offset?: number): Point {
147
+ const referencePointInParent = absoluteToParent(element, absoluteReferencePoint);
126
148
  const anchorComputer = this.anchorRegistry.get(PolylineEdgeRouter.KIND, element.anchorKind);
127
- let anchor = anchorComputer.getAnchor(element, referencePoint, offset);
149
+ let anchor = anchorComputer.getAnchor(element, referencePointInParent, offset);
128
150
  // The anchor is computed in the local coordinate system of the element.
129
151
  // If the element is a nested child element we have to add the absolute position of its parent to the anchor.
130
152
  if (element.parent !== element.root) {
131
153
  const parent = findParentByFeature(element.parent, isBoundsAware);
132
154
  if (parent) {
133
155
  const absoluteParentPosition = toAbsoluteBounds(parent);
134
- anchor = add(absoluteParentPosition, anchor);
156
+ anchor = Point.add(absoluteParentPosition, anchor);
135
157
  }
136
158
  }
137
159
  return anchor;
138
160
  }
139
161
  }
140
162
 
163
+ /**
164
+ * Convert a point, specified in absolute coordinates, to a point relative
165
+ * to the parent of the specified child element.
166
+ * @param element the child element
167
+ * @param absolutePoint a point in absolute coordinates
168
+ * @returns the equivalent point, relative to the element's parent coordinates
169
+ */
170
+ function absoluteToParent(element: BoundsAwareModelElement & SChildElement, absolutePoint: Point): Point {
171
+ if (isBoundsAware(element.parent)) {
172
+ return absoluteToLocal(element.parent, absolutePoint);
173
+ }
174
+ // If the parent is not bounds-aware, assume it's at 0; 0 and proceed
175
+ return absoluteToLocal(element, absolutePoint);
176
+ }
177
+
178
+ /**
179
+ * Convert a point, specified in absolute coordinates, to a point relative
180
+ * to the specified element.
181
+ * @param element the element
182
+ * @param absolutePoint a point in absolute coordinates
183
+ * @returns the equivalent point, relative to the element's coordinates
184
+ */
185
+ function absoluteToLocal(element: BoundsAwareModelElement, absolutePoint: Point): Point {
186
+ const absoluteElementBounds = toAbsoluteBounds(element);
187
+ return { x: absolutePoint.x - absoluteElementBounds.x, y: absolutePoint.y - absoluteElementBounds.y };
188
+ }
189
+
141
190
  export function feedbackEdgeId(root: SModelRoot): string {
142
191
  return root.id + '_feedback_edge';
143
192
  }
@@ -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,50 +13,57 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, isStringArray } from '@eclipse-glsp/protocol';
16
+ import { Action, hasArrayProp } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
- import { CommandExecutionContext, SModelElement, SModelRoot, TYPES } from 'sprotty';
19
- import { addCssClasses, removeCssClasses } from '../../utils/smodel-util';
18
+ import { CommandExecutionContext, SModelElement, SModelRoot } from 'sprotty';
19
+ import { TYPES } from '../../base/types';
20
+ import { addCssClasses, getElements, removeCssClasses } from '../../utils/smodel-util';
20
21
  import { FeedbackCommand } from './model';
21
22
 
22
- export class ModifyCSSFeedbackAction implements Action {
23
- readonly elementIds?: string[];
23
+ export interface ModifyCSSFeedbackAction extends Action {
24
+ kind: typeof ModifyCSSFeedbackAction.KIND;
24
25
 
25
- constructor(
26
- public readonly input?: string[] | SModelElement[],
27
- public readonly addClasses?: string[],
28
- public readonly removeClasses?: string[],
29
- public kind = ModifyCssFeedbackCommand.KIND
30
- ) {
31
- if (input) {
32
- this.elementIds = isStringArray(input) ? input : input.map(element => element.id);
33
- }
26
+ elementIds?: string[];
27
+ add?: string[];
28
+ remove?: string[];
29
+ }
30
+
31
+ export namespace ModifyCSSFeedbackAction {
32
+ export const KIND = 'modifyCSSFeedback';
33
+
34
+ export function is(object: any): object is ModifyCSSFeedbackAction {
35
+ return Action.hasKind(object, KIND) && hasArrayProp(object, 'elementIds');
36
+ }
37
+
38
+ export function create(options: { elements?: (string | SModelElement)[]; add?: string[]; remove?: string[] }): ModifyCSSFeedbackAction {
39
+ const { elements, ...rest } = options;
40
+ const elementIds = elements ? elements.map(element => (typeof element === 'string' ? element : element.id)) : undefined;
41
+ return {
42
+ kind: KIND,
43
+ elementIds,
44
+ ...rest
45
+ };
34
46
  }
35
47
  }
36
48
 
37
49
  @injectable()
38
50
  export class ModifyCssFeedbackCommand extends FeedbackCommand {
39
- static readonly KIND = 'modifyCSSFeedback';
51
+ static readonly KIND = ModifyCSSFeedbackAction.KIND;
40
52
 
41
53
  constructor(@inject(TYPES.Action) readonly action: ModifyCSSFeedbackAction) {
42
54
  super();
43
55
  }
44
56
 
45
57
  execute(context: CommandExecutionContext): SModelRoot {
46
- const elements: SModelElement[] = [];
47
- if (this.action.elementIds) {
48
- elements.push(...this.action.elementIds.map(elementId => context.root.index.getById(elementId)).filter(exists));
49
- } else {
50
- elements.push(context.root);
51
- }
58
+ const elements = this.action.elementIds ? getElements(context.root.index, this.action.elementIds) : [context.root];
52
59
 
53
60
  elements.forEach(e => {
54
- if (this.action.removeClasses) {
55
- removeCssClasses(e, this.action.removeClasses);
61
+ if (this.action.remove) {
62
+ removeCssClasses(e, this.action.remove);
56
63
  }
57
64
 
58
- if (this.action.addClasses) {
59
- addCssClasses(e, this.action.addClasses);
65
+ if (this.action.add) {
66
+ addCssClasses(e, this.action.add);
60
67
  }
61
68
  });
62
69
 
@@ -64,10 +71,6 @@ export class ModifyCssFeedbackCommand extends FeedbackCommand {
64
71
  }
65
72
  }
66
73
 
67
- function exists(elt?: SModelElement): elt is SModelElement {
68
- return elt !== undefined;
69
- }
70
-
71
74
  // eslint-disable-next-line no-shadow
72
75
  export enum CursorCSS {
73
76
  DEFAULT = 'default-mode',
@@ -85,17 +88,17 @@ export enum CursorCSS {
85
88
  }
86
89
 
87
90
  export function cursorFeedbackAction(cursorCss?: CursorCSS): ModifyCSSFeedbackAction {
88
- const addCss = [];
91
+ const add = [];
89
92
  if (cursorCss) {
90
- addCss.push(cursorCss);
93
+ add.push(cursorCss);
91
94
  }
92
- return new ModifyCSSFeedbackAction(undefined, addCss, Object.values(CursorCSS));
95
+ return ModifyCSSFeedbackAction.create({ add, remove: Object.values(CursorCSS) });
93
96
  }
94
97
 
95
- export function applyCssClasses(element: SModelElement, ...classes: string[]): ModifyCSSFeedbackAction {
96
- return new ModifyCSSFeedbackAction([element], classes, []);
98
+ export function applyCssClasses(element: SModelElement, ...add: string[]): ModifyCSSFeedbackAction {
99
+ return ModifyCSSFeedbackAction.create({ elements: [element], add });
97
100
  }
98
101
 
99
- export function deleteCssClasses(element: SModelElement, ...classes: string[]): ModifyCSSFeedbackAction {
100
- return new ModifyCSSFeedbackAction([element], [], classes);
102
+ export function deleteCssClasses(element: SModelElement, ...remove: string[]): ModifyCSSFeedbackAction {
103
+ return ModifyCSSFeedbackAction.create({ elements: [element], remove });
101
104
  }
@@ -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,9 +14,8 @@
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, configureView, LocationPostprocessor, MoveCommand, TYPES } from 'sprotty';
18
-
19
- import { GLSP_TYPES } from '../../base/types';
17
+ import { configureCommand, configureView, LocationPostprocessor, MoveCommand } from 'sprotty';
18
+ import { TYPES } from '../../base/types';
20
19
  import { SResizeHandle } from '../change-bounds/model';
21
20
  import { HideChangeBoundsToolResizeFeedbackCommand, ShowChangeBoundsToolResizeFeedbackCommand } from './change-bounds-tool-feedback';
22
21
  import { DrawFeedbackEdgeCommand, FeedbackEdgeEnd, RemoveFeedbackEdgeCommand } from './creation-tool-feedback';
@@ -32,7 +31,7 @@ import { DrawMarqueeCommand, RemoveMarqueeCommand } from './marquee-tool-feedbac
32
31
  import { FeedbackEdgeEndView, SResizeHandleView } from './view';
33
32
 
34
33
  const toolFeedbackModule = new ContainerModule((bind, _unbind, isBound) => {
35
- bind(GLSP_TYPES.IFeedbackActionDispatcher).to(FeedbackActionDispatcher).inSingletonScope();
34
+ bind(TYPES.IFeedbackActionDispatcher).to(FeedbackActionDispatcher).inSingletonScope();
36
35
 
37
36
  configureCommand({ bind, isBound }, ModifyCssFeedbackCommand);
38
37