@eclipse-glsp/client 0.9.0-rc-01 → 0.10.0-next.146a812.165

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 (599) hide show
  1. package/LICENSE +642 -277
  2. package/README.md +4 -2
  3. package/css/command-palette.css +9 -5
  4. package/css/decoration.css +3 -2
  5. package/css/glsp-sprotty.css +125 -14
  6. package/css/tool-palette.css +44 -27
  7. package/lib/base/action-dispatcher.d.ts +19 -3
  8. package/lib/base/action-dispatcher.d.ts.map +1 -1
  9. package/lib/base/action-dispatcher.js +47 -65
  10. package/lib/base/action-dispatcher.js.map +1 -1
  11. package/lib/base/actions/focus-change-action.d.ts +1 -1
  12. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  13. package/lib/base/actions/focus-change-action.js +4 -5
  14. package/lib/base/actions/focus-change-action.js.map +1 -1
  15. package/lib/base/{args.d.ts → argumentable.d.ts} +3 -5
  16. package/lib/base/argumentable.d.ts.map +1 -0
  17. package/lib/base/{args.js → argumentable.js} +1 -1
  18. package/lib/base/argumentable.js.map +1 -0
  19. package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
  20. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  21. package/lib/base/auto-complete/auto-complete-widget.d.ts +3 -3
  22. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  23. package/lib/base/auto-complete/auto-complete-widget.js +123 -157
  24. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  25. package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
  26. package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
  27. package/lib/base/auto-complete/validation-decorator.js +44 -65
  28. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  29. package/lib/base/command-stack.d.ts.map +1 -1
  30. package/lib/base/command-stack.js +19 -37
  31. package/lib/base/command-stack.js.map +1 -1
  32. package/lib/base/container-modules.d.ts +40 -0
  33. package/lib/base/container-modules.d.ts.map +1 -0
  34. package/lib/base/container-modules.js +100 -0
  35. package/lib/base/container-modules.js.map +1 -0
  36. package/lib/base/di.config.d.ts +12 -2
  37. package/lib/base/di.config.d.ts.map +1 -1
  38. package/lib/base/di.config.js +46 -30
  39. package/lib/base/di.config.js.map +1 -1
  40. package/lib/base/drag-aware-mouse-listener.d.ts +3 -2
  41. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  42. package/lib/base/drag-aware-mouse-listener.js +23 -62
  43. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  44. package/lib/base/{editor-context.d.ts → editor-context-service.d.ts} +18 -22
  45. package/lib/base/editor-context-service.d.ts.map +1 -0
  46. package/lib/base/editor-context-service.js +110 -0
  47. package/lib/base/editor-context-service.js.map +1 -0
  48. package/lib/base/focus-tracker.d.ts +17 -1
  49. package/lib/base/focus-tracker.d.ts.map +1 -1
  50. package/lib/base/focus-tracker.js +20 -40
  51. package/lib/base/focus-tracker.js.map +1 -1
  52. package/lib/base/model/model-registry.d.ts.map +1 -1
  53. package/lib/base/model/model-registry.js +11 -29
  54. package/lib/base/model/model-registry.js.map +1 -1
  55. package/lib/base/model/update-model-command.d.ts +19 -5
  56. package/lib/base/model/update-model-command.d.ts.map +1 -1
  57. package/lib/base/model/update-model-command.js +69 -94
  58. package/lib/base/model/update-model-command.js.map +1 -1
  59. package/lib/base/model-initialization-constraint.d.ts +18 -3
  60. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  61. package/lib/base/model-initialization-constraint.js +37 -58
  62. package/lib/base/model-initialization-constraint.js.map +1 -1
  63. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  64. package/lib/base/selection-clearing-mouse-listener.js +10 -28
  65. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  66. package/lib/base/source-uri-aware.js +2 -5
  67. package/lib/base/source-uri-aware.js.map +1 -1
  68. package/lib/base/tool-manager/glsp-tool-manager.d.ts +2 -2
  69. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  70. package/lib/base/tool-manager/glsp-tool-manager.js +58 -140
  71. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  72. package/lib/base/types.d.ts +3 -1
  73. package/lib/base/types.d.ts.map +1 -1
  74. package/lib/base/types.js +4 -2
  75. package/lib/base/types.js.map +1 -1
  76. package/lib/base/view/view-registry.d.ts.map +1 -1
  77. package/lib/base/view/view-registry.js +11 -29
  78. package/lib/base/view/view-registry.js.map +1 -1
  79. package/lib/features/change-bounds/model.d.ts +3 -1
  80. package/lib/features/change-bounds/model.d.ts.map +1 -1
  81. package/lib/features/change-bounds/model.js +22 -33
  82. package/lib/features/change-bounds/model.js.map +1 -1
  83. package/lib/features/change-bounds/movement-restrictor.d.ts +17 -1
  84. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  85. package/lib/features/change-bounds/movement-restrictor.js +29 -43
  86. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  87. package/lib/features/change-bounds/snap.d.ts +58 -1
  88. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  89. package/lib/features/change-bounds/snap.js +91 -41
  90. package/lib/features/change-bounds/snap.js.map +1 -1
  91. package/{src/features/undo-redo/model.ts → lib/features/change-bounds/snap.spec.d.ts} +3 -12
  92. package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
  93. package/lib/features/change-bounds/snap.spec.js +82 -0
  94. package/lib/features/change-bounds/snap.spec.js.map +1 -0
  95. package/lib/features/command-palette/command-palette-tool.js +30 -38
  96. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  97. package/lib/features/command-palette/di.config.js +6 -6
  98. package/lib/features/command-palette/di.config.js.map +1 -1
  99. package/lib/features/command-palette/server-command-palette-provider.d.ts +18 -2
  100. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  101. package/lib/features/command-palette/server-command-palette-provider.js +28 -33
  102. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  103. package/lib/features/context-menu/delete-element-context-menu.d.ts +1 -1
  104. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  105. package/lib/features/context-menu/delete-element-context-menu.js +20 -68
  106. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  107. package/lib/features/context-menu/di.config.d.ts +1 -1
  108. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  109. package/lib/features/context-menu/di.config.js +8 -8
  110. package/lib/features/context-menu/di.config.js.map +1 -1
  111. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +16 -0
  112. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  113. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +61 -71
  114. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  115. package/lib/features/context-menu/server-context-menu-provider.d.ts +18 -2
  116. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  117. package/lib/features/context-menu/server-context-menu-provider.js +30 -31
  118. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  119. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
  120. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  121. package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
  122. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  123. package/lib/features/copy-paste/copy-paste-handler.d.ts +19 -2
  124. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  125. package/lib/features/copy-paste/copy-paste-handler.js +70 -70
  126. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  127. package/lib/features/copy-paste/di.config.d.ts +1 -1
  128. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  129. package/lib/features/copy-paste/di.config.js +11 -11
  130. package/lib/features/copy-paste/di.config.js.map +1 -1
  131. package/lib/features/decoration/decoration-placer.d.ts +17 -1
  132. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  133. package/lib/features/decoration/decoration-placer.js +13 -47
  134. package/lib/features/decoration/decoration-placer.js.map +1 -1
  135. package/lib/features/decoration/di.config.js +4 -4
  136. package/lib/features/decoration/di.config.js.map +1 -1
  137. package/lib/features/edit-label/di.config.js +7 -7
  138. package/lib/features/edit-label/di.config.js.map +1 -1
  139. package/lib/features/edit-label/edit-label-tool.js +20 -43
  140. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  141. package/lib/features/edit-label/edit-label-validator.d.ts +16 -1
  142. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  143. package/lib/features/edit-label/edit-label-validator.js +40 -62
  144. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  145. package/lib/features/hints/di.config.d.ts +0 -15
  146. package/lib/features/hints/di.config.d.ts.map +1 -1
  147. package/lib/features/hints/di.config.js +9 -9
  148. package/lib/features/hints/di.config.js.map +1 -1
  149. package/lib/features/hints/model.d.ts +3 -2
  150. package/lib/features/hints/model.d.ts.map +1 -1
  151. package/lib/features/hints/model.js.map +1 -1
  152. package/lib/features/hints/type-hints.d.ts +17 -45
  153. package/lib/features/hints/type-hints.d.ts.map +1 -1
  154. package/lib/features/hints/type-hints.js +81 -140
  155. package/lib/features/hints/type-hints.js.map +1 -1
  156. package/lib/features/hover/di.config.d.ts +1 -1
  157. package/lib/features/hover/di.config.d.ts.map +1 -1
  158. package/lib/features/hover/di.config.js +19 -17
  159. package/lib/features/hover/di.config.js.map +1 -1
  160. package/lib/features/hover/hover.d.ts +28 -2
  161. package/lib/features/hover/hover.d.ts.map +1 -1
  162. package/lib/features/hover/hover.js +56 -76
  163. package/lib/features/hover/hover.js.map +1 -1
  164. package/lib/features/layout/di.config.d.ts +1 -1
  165. package/lib/features/layout/di.config.d.ts.map +1 -1
  166. package/lib/features/layout/di.config.js +11 -7
  167. package/lib/features/layout/di.config.js.map +1 -1
  168. package/lib/features/layout/freeform-layout.d.ts +16 -0
  169. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  170. package/lib/features/layout/freeform-layout.js +107 -0
  171. package/lib/features/layout/freeform-layout.js.map +1 -0
  172. package/lib/features/layout/layout-commands.d.ts +19 -3
  173. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  174. package/lib/features/layout/layout-commands.js +196 -269
  175. package/lib/features/layout/layout-commands.js.map +1 -1
  176. package/lib/features/layout/layout-commands.spec.d.ts +0 -15
  177. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
  178. package/lib/features/layout/layout-commands.spec.js +101 -95
  179. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  180. package/lib/features/layout/vbox-layout.d.ts +25 -0
  181. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  182. package/lib/features/layout/vbox-layout.js +188 -0
  183. package/lib/features/layout/vbox-layout.js.map +1 -0
  184. package/lib/features/model-source-watcher/di.config.d.ts +0 -15
  185. package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
  186. package/lib/features/model-source-watcher/di.config.js +7 -7
  187. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  188. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
  189. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  190. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -46
  191. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  192. package/lib/features/mouse-tool/di.config.js +5 -5
  193. package/lib/features/mouse-tool/di.config.js.map +1 -1
  194. package/lib/features/mouse-tool/mouse-tool.d.ts +10 -5
  195. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  196. package/lib/features/mouse-tool/mouse-tool.js +54 -235
  197. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  198. package/lib/features/navigation/di.config.d.ts +0 -15
  199. package/lib/features/navigation/di.config.d.ts.map +1 -1
  200. package/lib/features/navigation/di.config.js +11 -10
  201. package/lib/features/navigation/di.config.js.map +1 -1
  202. package/lib/features/navigation/navigation-action-handler.d.ts +19 -38
  203. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  204. package/lib/features/navigation/navigation-action-handler.js +118 -254
  205. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  206. package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
  207. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  208. package/lib/features/navigation/navigation-target-resolver.js +46 -188
  209. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  210. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +0 -15
  211. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  212. package/lib/features/navigation/navigation-target-resolver.spec.js +27 -27
  213. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  214. package/lib/features/rank/model.d.ts +1 -1
  215. package/lib/features/rank/model.js +2 -2
  216. package/lib/features/rank/model.js.map +1 -1
  217. package/lib/features/reconnect/model.d.ts +1 -1
  218. package/lib/features/reconnect/model.d.ts.map +1 -1
  219. package/lib/features/reconnect/model.js +9 -27
  220. package/lib/features/reconnect/model.js.map +1 -1
  221. package/lib/features/save/di.config.d.ts +1 -1
  222. package/lib/features/save/di.config.d.ts.map +1 -1
  223. package/lib/features/save/di.config.js +6 -6
  224. package/lib/features/save/di.config.js.map +1 -1
  225. package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -10
  226. package/lib/features/save/save-keylistener.d.ts.map +1 -0
  227. package/lib/features/{undo-redo/model.d.ts → save/save-keylistener.js} +16 -12
  228. package/lib/features/save/save-keylistener.js.map +1 -0
  229. package/lib/features/select/di.config.js +11 -11
  230. package/lib/features/select/di.config.js.map +1 -1
  231. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  232. package/lib/features/select/select-feedback-action.js +45 -71
  233. package/lib/features/select/select-feedback-action.js.map +1 -1
  234. package/lib/features/select/select-mouse-listener.js +7 -23
  235. package/lib/features/select/select-mouse-listener.js.map +1 -1
  236. package/lib/features/select/selection-service.d.ts +18 -2
  237. package/lib/features/select/selection-service.d.ts.map +1 -1
  238. package/lib/features/select/selection-service.js +140 -240
  239. package/lib/features/select/selection-service.js.map +1 -1
  240. package/lib/features/select/selection-service.spec.js +111 -154
  241. package/lib/features/select/selection-service.spec.js.map +1 -1
  242. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +19 -2
  243. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  244. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +110 -150
  245. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  246. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +18 -2
  247. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  248. package/lib/features/tool-feedback/creation-tool-feedback.js +103 -124
  249. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  250. package/lib/features/tool-feedback/css-feedback.d.ts +20 -2
  251. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  252. package/lib/features/tool-feedback/css-feedback.js +37 -81
  253. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  254. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  255. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  256. package/lib/features/tool-feedback/di.config.js +27 -27
  257. package/lib/features/tool-feedback/di.config.js.map +1 -1
  258. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +24 -5
  259. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  260. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +185 -239
  261. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  262. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +20 -4
  263. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  264. package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
  265. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  266. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +17 -1
  267. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  268. package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -84
  269. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  270. package/lib/features/tool-feedback/model.d.ts +1 -2
  271. package/lib/features/tool-feedback/model.d.ts.map +1 -1
  272. package/lib/features/tool-feedback/model.js +11 -27
  273. package/lib/features/tool-feedback/model.js.map +1 -1
  274. package/lib/features/tool-feedback/view.d.ts +21 -5
  275. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  276. package/lib/features/tool-feedback/view.js +31 -53
  277. package/lib/features/tool-feedback/view.js.map +1 -1
  278. package/lib/features/tool-palette/di.config.d.ts +1 -1
  279. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  280. package/lib/features/tool-palette/di.config.js +6 -6
  281. package/lib/features/tool-palette/di.config.js.map +1 -1
  282. package/lib/features/tool-palette/palette-item.d.ts +2 -3
  283. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  284. package/lib/features/tool-palette/palette-item.js +6 -6
  285. package/lib/features/tool-palette/palette-item.js.map +1 -1
  286. package/lib/features/tool-palette/tool-palette.d.ts +19 -3
  287. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  288. package/lib/features/tool-palette/tool-palette.js +203 -271
  289. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  290. package/lib/features/tools/base-glsp-tool.d.ts +20 -4
  291. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  292. package/lib/features/tools/base-glsp-tool.js +39 -61
  293. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  294. package/lib/features/tools/change-bounds-tool.d.ts +22 -7
  295. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  296. package/lib/features/tools/change-bounds-tool.js +196 -270
  297. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  298. package/lib/features/tools/delete-tool.d.ts +17 -1
  299. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  300. package/lib/features/tools/delete-tool.js +75 -108
  301. package/lib/features/tools/delete-tool.js.map +1 -1
  302. package/lib/features/tools/di.config.d.ts +0 -15
  303. package/lib/features/tools/di.config.d.ts.map +1 -1
  304. package/lib/features/tools/di.config.js +20 -20
  305. package/lib/features/tools/di.config.js.map +1 -1
  306. package/lib/features/tools/edge-creation-tool.d.ts +17 -2
  307. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  308. package/lib/features/tools/edge-creation-tool.js +68 -93
  309. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  310. package/lib/features/tools/edge-edit-tool.d.ts +18 -1
  311. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  312. package/lib/features/tools/edge-edit-tool.js +129 -195
  313. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  314. package/lib/features/tools/marquee-behavior.d.ts +42 -0
  315. package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
  316. package/lib/features/tools/marquee-behavior.js +128 -0
  317. package/lib/features/tools/marquee-behavior.js.map +1 -0
  318. package/lib/features/{model-source-watcher/model-source-changed-action.d.ts → tools/marquee-behavior.spec.d.ts} +3 -10
  319. package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
  320. package/lib/features/tools/marquee-behavior.spec.js +165 -0
  321. package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
  322. package/lib/features/tools/marquee-mouse-tool.d.ts +24 -13
  323. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  324. package/lib/features/tools/marquee-mouse-tool.js +89 -198
  325. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  326. package/lib/features/tools/marquee-tool.d.ts +17 -1
  327. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  328. package/lib/features/tools/marquee-tool.js +32 -73
  329. package/lib/features/tools/marquee-tool.js.map +1 -1
  330. package/lib/features/tools/model.d.ts +1 -1
  331. package/lib/features/tools/model.d.ts.map +1 -1
  332. package/lib/features/tools/model.js +5 -23
  333. package/lib/features/tools/model.js.map +1 -1
  334. package/lib/features/tools/node-creation-tool.d.ts +17 -2
  335. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  336. package/lib/features/tools/node-creation-tool.js +63 -93
  337. package/lib/features/tools/node-creation-tool.js.map +1 -1
  338. package/lib/features/tools/view.d.ts +1 -1
  339. package/lib/features/tools/view.d.ts.map +1 -1
  340. package/lib/features/tools/view.js +13 -32
  341. package/lib/features/tools/view.js.map +1 -1
  342. package/lib/features/validation/di.config.js +12 -12
  343. package/lib/features/validation/di.config.js.map +1 -1
  344. package/lib/features/validation/issue-marker.d.ts +2 -2
  345. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  346. package/lib/features/validation/issue-marker.js +17 -55
  347. package/lib/features/validation/issue-marker.js.map +1 -1
  348. package/lib/features/validation/marker-navigator.d.ts +17 -1
  349. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  350. package/lib/features/validation/marker-navigator.js +134 -167
  351. package/lib/features/validation/marker-navigator.js.map +1 -1
  352. package/lib/features/validation/marker-navigator.spec.d.ts +0 -15
  353. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  354. package/lib/features/validation/marker-navigator.spec.js +104 -98
  355. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  356. package/lib/features/validation/validate.d.ts +18 -29
  357. package/lib/features/validation/validate.d.ts.map +1 -1
  358. package/lib/features/validation/validate.js +148 -301
  359. package/lib/features/validation/validate.js.map +1 -1
  360. package/lib/features/viewport/di.config.js +10 -10
  361. package/lib/features/viewport/di.config.js.map +1 -1
  362. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +18 -2
  363. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  364. package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -47
  365. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  366. package/lib/index.d.ts +9 -15
  367. package/lib/index.d.ts.map +1 -1
  368. package/lib/index.js +36 -37
  369. package/lib/index.js.map +1 -1
  370. package/lib/lib/model.d.ts +1 -1
  371. package/lib/lib/model.d.ts.map +1 -1
  372. package/lib/lib/model.js +12 -28
  373. package/lib/lib/model.js.map +1 -1
  374. package/lib/model-source/glsp-diagram-server.d.ts +3 -5
  375. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  376. package/lib/model-source/glsp-diagram-server.js +61 -121
  377. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  378. package/lib/protocol-reexport.d.ts +45 -0
  379. package/lib/protocol-reexport.d.ts.map +1 -0
  380. package/lib/protocol-reexport.js +80 -0
  381. package/lib/protocol-reexport.js.map +1 -0
  382. package/lib/utils/argument-utils.d.ts +3 -3
  383. package/lib/utils/argument-utils.d.ts.map +1 -1
  384. package/lib/utils/argument-utils.js +32 -97
  385. package/lib/utils/argument-utils.js.map +1 -1
  386. package/lib/utils/html-utils.js +2 -2
  387. package/lib/utils/html-utils.js.map +1 -1
  388. package/lib/utils/layout-utils.d.ts +3 -2
  389. package/lib/utils/layout-utils.d.ts.map +1 -1
  390. package/lib/utils/layout-utils.js +5 -5
  391. package/lib/utils/layout-utils.js.map +1 -1
  392. package/lib/utils/marker.d.ts +0 -38
  393. package/lib/utils/marker.d.ts.map +1 -1
  394. package/lib/utils/marker.js +14 -61
  395. package/lib/utils/marker.js.map +1 -1
  396. package/lib/utils/smodel-util.d.ts +116 -10
  397. package/lib/utils/smodel-util.d.ts.map +1 -1
  398. package/lib/utils/smodel-util.js +131 -75
  399. package/lib/utils/smodel-util.js.map +1 -1
  400. package/lib/utils/viewpoint-util.d.ts +3 -2
  401. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  402. package/lib/utils/viewpoint-util.js +15 -30
  403. package/lib/utils/viewpoint-util.js.map +1 -1
  404. package/lib/views/base-view-module.d.ts +0 -15
  405. package/lib/views/base-view-module.d.ts.map +1 -1
  406. package/lib/views/base-view-module.js +28 -28
  407. package/lib/views/base-view-module.js.map +1 -1
  408. package/lib/views/compartments.d.ts +6 -0
  409. package/lib/views/compartments.d.ts.map +1 -0
  410. package/lib/views/compartments.js +43 -0
  411. package/lib/views/compartments.js.map +1 -0
  412. package/lib/views/glsp-edge-view.d.ts +18 -3
  413. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  414. package/lib/views/glsp-edge-view.js +32 -77
  415. package/lib/views/glsp-edge-view.js.map +1 -1
  416. package/lib/views/index.d.ts +1 -1
  417. package/lib/views/index.d.ts.map +1 -1
  418. package/lib/views/index.js +7 -3
  419. package/lib/views/index.js.map +1 -1
  420. package/lib/views/issue-marker-view.d.ts +2 -1
  421. package/lib/views/issue-marker-view.d.ts.map +1 -1
  422. package/lib/views/issue-marker-view.js +37 -51
  423. package/lib/views/issue-marker-view.js.map +1 -1
  424. package/lib/views/rounded-corner-view.d.ts +2 -3
  425. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  426. package/lib/views/rounded-corner-view.js +41 -71
  427. package/lib/views/rounded-corner-view.js.map +1 -1
  428. package/lib/views/rounded-corner.d.ts +2 -1
  429. package/lib/views/rounded-corner.d.ts.map +1 -1
  430. package/lib/views/rounded-corner.js +44 -65
  431. package/lib/views/rounded-corner.js.map +1 -1
  432. package/package.json +13 -31
  433. package/src/base/action-dispatcher.ts +15 -15
  434. package/src/base/actions/focus-change-action.ts +2 -2
  435. package/src/base/{args.ts → argumentable.ts} +2 -3
  436. package/src/base/auto-complete/auto-complete-actions.ts +1 -1
  437. package/src/base/auto-complete/auto-complete-widget.ts +37 -25
  438. package/src/base/auto-complete/validation-decorator.ts +12 -11
  439. package/src/base/command-stack.ts +4 -7
  440. package/src/base/container-modules.ts +112 -0
  441. package/src/base/di.config.ts +33 -18
  442. package/src/base/drag-aware-mouse-listener.ts +6 -7
  443. package/src/base/{editor-context.ts → editor-context-service.ts} +4 -31
  444. package/src/base/focus-tracker.ts +2 -4
  445. package/src/base/model/model-registry.ts +2 -2
  446. package/src/base/model/update-model-command.ts +9 -17
  447. package/src/base/model-initialization-constraint.ts +10 -10
  448. package/src/base/selection-clearing-mouse-listener.ts +1 -1
  449. package/src/base/tool-manager/glsp-tool-manager.ts +9 -11
  450. package/src/base/types.ts +4 -2
  451. package/src/base/view/view-registry.ts +2 -2
  452. package/src/features/change-bounds/model.ts +17 -7
  453. package/src/features/change-bounds/movement-restrictor.ts +17 -9
  454. package/src/features/change-bounds/snap.spec.ts +89 -0
  455. package/src/features/change-bounds/snap.ts +87 -2
  456. package/src/features/command-palette/server-command-palette-provider.ts +11 -9
  457. package/src/features/context-menu/delete-element-context-menu.ts +3 -4
  458. package/src/features/context-menu/di.config.ts +11 -9
  459. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +41 -11
  460. package/src/features/context-menu/server-context-menu-provider.ts +10 -7
  461. package/src/features/copy-paste/copy-paste-context-menu.ts +59 -30
  462. package/src/features/copy-paste/copy-paste-handler.ts +18 -10
  463. package/src/features/copy-paste/di.config.ts +2 -3
  464. package/src/features/decoration/decoration-placer.ts +4 -14
  465. package/src/features/edit-label/edit-label-validator.ts +11 -12
  466. package/src/features/hints/di.config.ts +2 -3
  467. package/src/features/hints/model.ts +4 -3
  468. package/src/features/hints/type-hints.ts +24 -91
  469. package/src/features/hover/di.config.ts +4 -3
  470. package/src/features/hover/hover.ts +27 -8
  471. package/src/features/layout/di.config.ts +8 -4
  472. package/src/features/layout/freeform-layout.ts +133 -0
  473. package/src/features/layout/layout-commands.spec.ts +82 -64
  474. package/src/features/layout/layout-commands.ts +47 -38
  475. package/src/features/layout/vbox-layout.ts +260 -0
  476. package/src/features/model-source-watcher/di.config.ts +3 -4
  477. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +11 -7
  478. package/src/features/mouse-tool/mouse-tool.ts +28 -54
  479. package/src/features/navigation/di.config.ts +4 -10
  480. package/src/features/navigation/navigation-action-handler.ts +33 -69
  481. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -7
  482. package/src/features/navigation/navigation-target-resolver.ts +13 -91
  483. package/src/features/rank/model.ts +2 -2
  484. package/src/features/reconnect/model.ts +3 -4
  485. package/src/features/save/di.config.ts +2 -3
  486. package/src/features/save/{save.ts → save-keylistener.ts} +4 -12
  487. package/src/features/select/select-feedback-action.ts +4 -6
  488. package/src/features/select/selection-service.spec.ts +11 -6
  489. package/src/features/select/selection-service.ts +18 -13
  490. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +33 -26
  491. package/src/features/tool-feedback/creation-tool-feedback.ts +49 -14
  492. package/src/features/tool-feedback/css-feedback.ts +9 -6
  493. package/src/features/tool-feedback/di.config.ts +2 -5
  494. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +78 -68
  495. package/src/features/tool-feedback/feedback-action-dispatcher.ts +9 -10
  496. package/src/features/tool-feedback/marquee-tool-feedback.ts +6 -7
  497. package/src/features/tool-feedback/model.ts +1 -4
  498. package/src/features/tool-feedback/view.tsx +17 -11
  499. package/src/features/tool-palette/di.config.ts +2 -4
  500. package/src/features/tool-palette/palette-item.ts +4 -6
  501. package/src/features/tool-palette/tool-palette.ts +48 -42
  502. package/src/features/tools/base-glsp-tool.ts +10 -10
  503. package/src/features/tools/change-bounds-tool.ts +73 -74
  504. package/src/features/tools/delete-tool.ts +11 -8
  505. package/src/features/tools/di.config.ts +2 -3
  506. package/src/features/tools/edge-creation-tool.ts +7 -12
  507. package/src/features/tools/edge-edit-tool.ts +19 -26
  508. package/src/features/tools/marquee-behavior.spec.ts +175 -0
  509. package/src/features/tools/marquee-behavior.ts +158 -0
  510. package/src/features/tools/marquee-mouse-tool.ts +48 -139
  511. package/src/features/tools/marquee-tool.ts +4 -5
  512. package/src/features/tools/model.ts +2 -2
  513. package/src/features/tools/node-creation-tool.ts +6 -13
  514. package/src/features/tools/view.tsx +19 -15
  515. package/src/features/validation/issue-marker.ts +2 -3
  516. package/src/features/validation/marker-navigator.spec.ts +18 -14
  517. package/src/features/validation/marker-navigator.ts +29 -15
  518. package/src/features/validation/validate.ts +10 -43
  519. package/src/features/viewport/glsp-scroll-mouse-listener.ts +4 -13
  520. package/src/index.ts +30 -19
  521. package/src/lib/model.ts +2 -3
  522. package/src/model-source/glsp-diagram-server.ts +18 -32
  523. package/src/protocol-reexport.ts +64 -0
  524. package/src/utils/argument-utils.ts +14 -11
  525. package/src/utils/layout-utils.ts +13 -7
  526. package/src/utils/marker.ts +2 -26
  527. package/src/utils/smodel-util.ts +140 -38
  528. package/src/utils/viewpoint-util.ts +4 -4
  529. package/src/views/base-view-module.ts +1 -2
  530. package/src/{base/actions/edit-mode-action.ts → views/compartments.tsx} +18 -14
  531. package/src/views/glsp-edge-view.tsx +25 -18
  532. package/src/views/index.ts +1 -1
  533. package/src/views/issue-marker-view.tsx +29 -20
  534. package/src/views/rounded-corner-view.tsx +40 -28
  535. package/src/views/rounded-corner.ts +5 -6
  536. package/lib/base/actions/context-actions.d.ts +0 -36
  537. package/lib/base/actions/context-actions.d.ts.map +0 -1
  538. package/lib/base/actions/context-actions.js +0 -51
  539. package/lib/base/actions/context-actions.js.map +0 -1
  540. package/lib/base/actions/edit-mode-action.d.ts +0 -13
  541. package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
  542. package/lib/base/actions/edit-mode-action.js +0 -56
  543. package/lib/base/actions/edit-mode-action.js.map +0 -1
  544. package/lib/base/actions/edit-validation-actions.d.ts +0 -78
  545. package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
  546. package/lib/base/actions/edit-validation-actions.js +0 -83
  547. package/lib/base/actions/edit-validation-actions.js.map +0 -1
  548. package/lib/base/actions/protocol-actions.d.ts +0 -41
  549. package/lib/base/actions/protocol-actions.d.ts.map +0 -1
  550. package/lib/base/actions/protocol-actions.js +0 -151
  551. package/lib/base/actions/protocol-actions.js.map +0 -1
  552. package/lib/base/args.d.ts.map +0 -1
  553. package/lib/base/args.js.map +0 -1
  554. package/lib/base/editor-context.d.ts.map +0 -1
  555. package/lib/base/editor-context.js +0 -174
  556. package/lib/base/editor-context.js.map +0 -1
  557. package/lib/base/operations/operation.d.ts +0 -135
  558. package/lib/base/operations/operation.d.ts.map +0 -1
  559. package/lib/base/operations/operation.js +0 -231
  560. package/lib/base/operations/operation.js.map +0 -1
  561. package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
  562. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
  563. package/lib/features/copy-paste/copy-paste-actions.js +0 -68
  564. package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
  565. package/lib/features/hints/request-type-hints-action.d.ts +0 -32
  566. package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
  567. package/lib/features/hints/request-type-hints-action.js +0 -30
  568. package/lib/features/hints/request-type-hints-action.js.map +0 -1
  569. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
  570. package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
  571. package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
  572. package/lib/features/save/save.d.ts.map +0 -1
  573. package/lib/features/save/save.js +0 -62
  574. package/lib/features/save/save.js.map +0 -1
  575. package/lib/features/undo-redo/model.d.ts.map +0 -1
  576. package/lib/features/undo-redo/model.js +0 -22
  577. package/lib/features/undo-redo/model.js.map +0 -1
  578. package/lib/model-source/glsp-server-status.d.ts +0 -30
  579. package/lib/model-source/glsp-server-status.d.ts.map +0 -1
  580. package/lib/model-source/glsp-server-status.js +0 -61
  581. package/lib/model-source/glsp-server-status.js.map +0 -1
  582. package/lib/utils/array-utils.d.ts +0 -28
  583. package/lib/utils/array-utils.d.ts.map +0 -1
  584. package/lib/utils/array-utils.js +0 -61
  585. package/lib/utils/array-utils.js.map +0 -1
  586. package/lib/views/default-types.d.ts +0 -37
  587. package/lib/views/default-types.d.ts.map +0 -1
  588. package/lib/views/default-types.js +0 -47
  589. package/lib/views/default-types.js.map +0 -1
  590. package/src/base/actions/context-actions.ts +0 -43
  591. package/src/base/actions/edit-validation-actions.ts +0 -103
  592. package/src/base/actions/protocol-actions.ts +0 -82
  593. package/src/base/operations/operation.ts +0 -178
  594. package/src/features/copy-paste/copy-paste-actions.ts +0 -60
  595. package/src/features/hints/request-type-hints-action.ts +0 -36
  596. package/src/features/model-source-watcher/model-source-changed-action.ts +0 -26
  597. package/src/model-source/glsp-server-status.ts +0 -38
  598. package/src/utils/array-utils.ts +0 -55
  599. package/src/views/default-types.ts +0 -48
@@ -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,9 +13,9 @@
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
17
  import { inject, injectable } from 'inversify';
17
18
  import {
18
- Action,
19
19
  add,
20
20
  AnchorComputerRegistry,
21
21
  center,
@@ -28,7 +28,6 @@ import {
28
28
  isConnectable,
29
29
  MouseListener,
30
30
  MoveAction,
31
- Point,
32
31
  PolylineEdgeRouter,
33
32
  SChildElement,
34
33
  SConnectableElement,
@@ -39,8 +38,7 @@ import {
39
38
  SRoutableElement,
40
39
  TYPES
41
40
  } from 'sprotty';
42
-
43
- import { isRoutable } from '../../utils/smodel-util';
41
+ import { BoundsAwareModelElement, isRoutable } from '../../utils/smodel-util';
44
42
  import { getAbsolutePosition, toAbsoluteBounds, toAbsolutePosition } from '../../utils/viewpoint-util';
45
43
  import { FeedbackCommand } from './model';
46
44
 
@@ -49,7 +47,8 @@ export class DrawFeedbackEdgeAction implements Action {
49
47
  public readonly elementTypeId: string,
50
48
  public readonly sourceId: string,
51
49
  public readonly edgeSchema?: SEdgeSchema,
52
- public readonly kind: string = DrawFeedbackEdgeCommand.KIND) { }
50
+ public readonly kind: string = DrawFeedbackEdgeCommand.KIND
51
+ ) {}
53
52
  }
54
53
 
55
54
  @injectable()
@@ -68,7 +67,7 @@ export class DrawFeedbackEdgeCommand extends FeedbackCommand {
68
67
  }
69
68
 
70
69
  export class RemoveFeedbackEdgeAction implements Action {
71
- constructor(public readonly kind: string = RemoveFeedbackEdgeCommand.KIND) { }
70
+ constructor(public readonly kind: string = RemoveFeedbackEdgeCommand.KIND) {}
72
71
  }
73
72
 
74
73
  @injectable()
@@ -83,10 +82,12 @@ export class RemoveFeedbackEdgeCommand extends FeedbackCommand {
83
82
 
84
83
  export class FeedbackEdgeEnd extends SDanglingAnchor {
85
84
  static readonly TYPE = 'feedback-edge-end';
86
- constructor(readonly sourceId: string,
85
+ constructor(
86
+ readonly sourceId: string,
87
87
  readonly elementTypeId: string,
88
88
  public feedbackEdge: SRoutableElement | undefined = undefined,
89
- public readonly type: string = FeedbackEdgeEnd.TYPE) {
89
+ override readonly type: string = FeedbackEdgeEnd.TYPE
90
+ ) {
90
91
  super();
91
92
  }
92
93
  }
@@ -96,7 +97,7 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
96
97
  super();
97
98
  }
98
99
 
99
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
100
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
100
101
  const root = target.root;
101
102
  const edgeEnd = root.index.getById(feedbackEdgeEndId(root));
102
103
  if (!(edgeEnd instanceof FeedbackEdgeEnd) || !edgeEnd.feedbackEdge) {
@@ -106,10 +107,11 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
106
107
  const edge = edgeEnd.feedbackEdge;
107
108
  const position = getAbsolutePosition(edgeEnd, event);
108
109
  const endAtMousePosition = findChildrenAtPosition(target.root, position)
110
+ .reverse()
109
111
  .find(element => isConnectable(element) && element.canConnect(edge, 'target'));
110
112
 
111
113
  if (endAtMousePosition instanceof SConnectableElement && edge.source && isBoundsAware(edge.source)) {
112
- const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.source.bounds));
114
+ const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(toAbsoluteBounds(edge.source)));
113
115
  if (euclideanDistance(anchor, edgeEnd.position) > 1) {
114
116
  return [new MoveAction([{ elementId: edgeEnd.id, toPosition: anchor }], false)];
115
117
  }
@@ -120,9 +122,10 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
120
122
  return [];
121
123
  }
122
124
 
123
- protected computeAbsoluteAnchor(element: SConnectableElement, referencePoint: Point, offset?: number): Point {
125
+ protected computeAbsoluteAnchor(element: SConnectableElement, absoluteReferencePoint: Point, offset?: number): Point {
126
+ const referencePointInParent = absoluteToParent(element, absoluteReferencePoint);
124
127
  const anchorComputer = this.anchorRegistry.get(PolylineEdgeRouter.KIND, element.anchorKind);
125
- let anchor = anchorComputer.getAnchor(element, referencePoint, offset);
128
+ let anchor = anchorComputer.getAnchor(element, referencePointInParent, offset);
126
129
  // The anchor is computed in the local coordinate system of the element.
127
130
  // If the element is a nested child element we have to add the absolute position of its parent to the anchor.
128
131
  if (element.parent !== element.root) {
@@ -136,6 +139,33 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
136
139
  }
137
140
  }
138
141
 
142
+ /**
143
+ * Convert a point, specified in absolute coordinates, to a point relative
144
+ * to the parent of the specified child element.
145
+ * @param element the child element
146
+ * @param absolutePoint a point in absolute coordinates
147
+ * @returns the equivalent point, relative to the element's parent coordinates
148
+ */
149
+ function absoluteToParent(element: BoundsAwareModelElement & SChildElement, absolutePoint: Point): Point {
150
+ if (isBoundsAware(element.parent)) {
151
+ return absoluteToLocal(element.parent, absolutePoint);
152
+ }
153
+ // If the parent is not bounds-aware, assume it's at 0; 0 and proceed
154
+ return absoluteToLocal(element, absolutePoint);
155
+ }
156
+
157
+ /**
158
+ * Convert a point, specified in absolute coordinates, to a point relative
159
+ * to the specified element.
160
+ * @param element the element
161
+ * @param absolutePoint a point in absolute coordinates
162
+ * @returns the equivalent point, relative to the element's coordinates
163
+ */
164
+ function absoluteToLocal(element: BoundsAwareModelElement, absolutePoint: Point): Point {
165
+ const absoluteElementBounds = toAbsoluteBounds(element);
166
+ return { x: absolutePoint.x - absoluteElementBounds.x, y: absolutePoint.y - absoluteElementBounds.y };
167
+ }
168
+
139
169
  export function feedbackEdgeId(root: SModelRoot): string {
140
170
  return root.id + '_feedback_edge';
141
171
  }
@@ -149,7 +179,12 @@ export const defaultFeedbackEdgeSchema: SEdgeSchema = {
149
179
  opacity: 0.3
150
180
  } as SEdgeSchema;
151
181
 
152
- export function drawFeedbackEdge(context: CommandExecutionContext, sourceId: string, elementTypeId: string, feedbackEdgeSchema: SEdgeSchema): void {
182
+ export function drawFeedbackEdge(
183
+ context: CommandExecutionContext,
184
+ sourceId: string,
185
+ elementTypeId: string,
186
+ feedbackEdgeSchema: SEdgeSchema
187
+ ): void {
153
188
  const root = context.root;
154
189
  const sourceChild = root.index.getById(sourceId);
155
190
  if (!sourceChild) {
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 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,10 +13,9 @@
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
17
  import { inject, injectable } from 'inversify';
17
- import { Action, CommandExecutionContext, SModelElement, SModelRoot, TYPES } from 'sprotty';
18
-
19
- import { isStringArray } from '../../utils/array-utils';
18
+ import { CommandExecutionContext, SModelElement, SModelRoot, TYPES } from 'sprotty';
20
19
  import { addCssClasses, removeCssClasses } from '../../utils/smodel-util';
21
20
  import { FeedbackCommand } from './model';
22
21
 
@@ -27,7 +26,8 @@ export class ModifyCSSFeedbackAction implements Action {
27
26
  public readonly input?: string[] | SModelElement[],
28
27
  public readonly addClasses?: string[],
29
28
  public readonly removeClasses?: string[],
30
- public kind = ModifyCssFeedbackCommand.KIND) {
29
+ public kind = ModifyCssFeedbackCommand.KIND
30
+ ) {
31
31
  if (input) {
32
32
  this.elementIds = isStringArray(input) ? input : input.map(element => element.id);
33
33
  }
@@ -68,6 +68,7 @@ function exists(elt?: SModelElement): elt is SModelElement {
68
68
  return elt !== undefined;
69
69
  }
70
70
 
71
+ // eslint-disable-next-line no-shadow
71
72
  export enum CursorCSS {
72
73
  DEFAULT = 'default-mode',
73
74
  OVERLAP_FORBIDDEN = 'overlap-forbidden-mode',
@@ -77,7 +78,9 @@ export enum CursorCSS {
77
78
  EDGE_RECONNECT = 'edge-reconnect-select-target-mode',
78
79
  OPERATION_NOT_ALLOWED = 'edge-modification-not-allowed-mode',
79
80
  ELEMENT_DELETION = 'element-deletion-mode',
80
- RESIZE = 'resize-mode',
81
+ RESIZE_NESW = 'resize-nesw-mode',
82
+ RESIZE_NWSE = 'resize-nwse-mode',
83
+ MOVE = 'move-mode',
81
84
  MARQUEE = 'marquee-mode'
82
85
  }
83
86
 
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 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
@@ -18,10 +18,7 @@ import { configureCommand, configureView, LocationPostprocessor, MoveCommand, TY
18
18
 
19
19
  import { GLSP_TYPES } from '../../base/types';
20
20
  import { SResizeHandle } from '../change-bounds/model';
21
- import {
22
- HideChangeBoundsToolResizeFeedbackCommand,
23
- ShowChangeBoundsToolResizeFeedbackCommand
24
- } from './change-bounds-tool-feedback';
21
+ import { HideChangeBoundsToolResizeFeedbackCommand, ShowChangeBoundsToolResizeFeedbackCommand } from './change-bounds-tool-feedback';
25
22
  import { DrawFeedbackEdgeCommand, FeedbackEdgeEnd, RemoveFeedbackEdgeCommand } from './creation-tool-feedback';
26
23
  import { ModifyCssFeedbackCommand } from './css-feedback';
27
24
  import {
@@ -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,10 +13,10 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { Action, Point } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
- import { VNode } from 'snabbdom/vnode';
18
+ import { VNode } from 'snabbdom';
18
19
  import {
19
- Action,
20
20
  add,
21
21
  AnchorComputerRegistry,
22
22
  center,
@@ -29,11 +29,10 @@ import {
29
29
  findParentByFeature,
30
30
  isBoundsAware,
31
31
  isConnectable,
32
+ ISnapper,
32
33
  isSelected,
33
- isViewport,
34
34
  MouseListener,
35
35
  MoveAction,
36
- Point,
37
36
  PolylineEdgeRouter,
38
37
  SConnectableElement,
39
38
  SModelElement,
@@ -43,16 +42,11 @@ import {
43
42
  SwitchEditModeCommand,
44
43
  TYPES
45
44
  } from 'sprotty';
46
-
47
- import { isNotUndefined, isRoutable, isRoutingHandle } from '../../utils/smodel-util';
45
+ import { forEachElement, isNotUndefined, isRoutable, isRoutingHandle } from '../../utils/smodel-util';
48
46
  import { getAbsolutePosition, toAbsoluteBounds } from '../../utils/viewpoint-util';
47
+ import { PointPositionUpdater } from '../change-bounds/snap';
49
48
  import { addReconnectHandles, removeReconnectHandles } from '../reconnect/model';
50
- import {
51
- FeedbackEdgeEnd,
52
- feedbackEdgeEndId,
53
- FeedbackEdgeEndMovingMouseListener,
54
- feedbackEdgeId
55
- } from './creation-tool-feedback';
49
+ import { FeedbackEdgeEnd, feedbackEdgeEndId, FeedbackEdgeEndMovingMouseListener, feedbackEdgeId } from './creation-tool-feedback';
56
50
  import { FeedbackCommand } from './model';
57
51
 
58
52
  /**
@@ -60,11 +54,11 @@ import { FeedbackCommand } from './model';
60
54
  */
61
55
 
62
56
  export class ShowEdgeReconnectHandlesFeedbackAction implements Action {
63
- constructor(readonly elementId?: string, public readonly kind: string = ShowEdgeReconnectHandlesFeedbackCommand.KIND) { }
57
+ constructor(readonly elementId?: string, public readonly kind: string = ShowEdgeReconnectHandlesFeedbackCommand.KIND) {}
64
58
  }
65
59
 
66
60
  export class HideEdgeReconnectHandlesFeedbackAction implements Action {
67
- constructor(public readonly kind: string = HideEdgeReconnectHandlesFeedbackCommand.KIND) { }
61
+ constructor(public readonly kind: string = HideEdgeReconnectHandlesFeedbackCommand.KIND) {}
68
62
  }
69
63
 
70
64
  @injectable()
@@ -77,7 +71,7 @@ export class ShowEdgeReconnectHandlesFeedbackCommand extends FeedbackCommand {
77
71
 
78
72
  execute(context: CommandExecutionContext): CommandReturn {
79
73
  const index = context.root.index;
80
- index.all().filter(isRoutable).forEach(removeReconnectHandles);
74
+ forEachElement(index, isRoutable, removeReconnectHandles);
81
75
 
82
76
  if (isNotUndefined(this.action.elementId)) {
83
77
  const routableElement = index.getById(this.action.elementId);
@@ -99,7 +93,7 @@ export class HideEdgeReconnectHandlesFeedbackCommand extends FeedbackCommand {
99
93
 
100
94
  execute(context: CommandExecutionContext): CommandReturn {
101
95
  const index = context.root.index;
102
- index.all().filter(isRoutable).forEach(removeReconnectHandles);
96
+ forEachElement(index, isRoutable, removeReconnectHandles);
103
97
  return context.root;
104
98
  }
105
99
  }
@@ -108,16 +102,18 @@ export class HideEdgeReconnectHandlesFeedbackCommand extends FeedbackCommand {
108
102
  */
109
103
 
110
104
  export class SwitchRoutingModeAction extends SwitchEditModeAction {
111
- constructor(public readonly elementsToActivate: string[] = [],
112
- public readonly elementsToDeactivate: string[] = [],
113
- public readonly kind: string = SwitchRoutingModeCommand.KIND) {
105
+ constructor(
106
+ override readonly elementsToActivate: string[] = [],
107
+ override readonly elementsToDeactivate: string[] = [],
108
+ override readonly kind: string = SwitchRoutingModeCommand.KIND
109
+ ) {
114
110
  super(elementsToActivate, elementsToDeactivate);
115
111
  }
116
112
  }
117
113
 
118
114
  @injectable()
119
115
  export class SwitchRoutingModeCommand extends SwitchEditModeCommand {
120
- static KIND = 'switchRoutingMode';
116
+ static override KIND = 'switchRoutingMode';
121
117
  constructor(@inject(TYPES.Action) action: SwitchRoutingModeAction) {
122
118
  super(action);
123
119
  }
@@ -128,7 +124,11 @@ export class SwitchRoutingModeCommand extends SwitchEditModeCommand {
128
124
  */
129
125
 
130
126
  export class DrawFeedbackEdgeSourceAction implements Action {
131
- constructor(readonly elementTypeId: string, readonly targetId: string, public readonly kind: string = DrawFeedbackEdgeSourceCommand.KIND) { }
127
+ constructor(
128
+ readonly elementTypeId: string,
129
+ readonly targetId: string,
130
+ public readonly kind: string = DrawFeedbackEdgeSourceCommand.KIND
131
+ ) {}
132
132
  }
133
133
 
134
134
  @injectable()
@@ -150,7 +150,7 @@ export class DrawFeedbackEdgeSourceCommand extends FeedbackCommand {
150
150
  */
151
151
 
152
152
  export class FeedbackEdgeTargetMovingMouseListener extends FeedbackEdgeEndMovingMouseListener {
153
- constructor(protected anchorRegistry: AnchorComputerRegistry) {
153
+ constructor(protected override anchorRegistry: AnchorComputerRegistry) {
154
154
  super(anchorRegistry);
155
155
  }
156
156
  }
@@ -160,7 +160,7 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
160
160
  super();
161
161
  }
162
162
 
163
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
163
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
164
164
  const root = target.root;
165
165
  const edgeEnd = root.index.getById(feedbackEdgeEndId(root));
166
166
  if (!(edgeEnd instanceof FeedbackEdgeEnd) || !edgeEnd.feedbackEdge) {
@@ -169,8 +169,9 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
169
169
 
170
170
  const edge = edgeEnd.feedbackEdge;
171
171
  const position = getAbsolutePosition(edgeEnd, event);
172
- const endAtMousePosition = findChildrenAtPosition(target.root, position)
173
- .find(e => isConnectable(e) && e.canConnect(edge, 'source'));
172
+ const endAtMousePosition = findChildrenAtPosition(target.root, position).find(
173
+ e => isConnectable(e) && e.canConnect(edge, 'source')
174
+ );
174
175
 
175
176
  if (endAtMousePosition instanceof SConnectableElement && edge.target && isBoundsAware(edge.target)) {
176
177
  const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.target.bounds));
@@ -201,64 +202,74 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
201
202
  }
202
203
 
203
204
  export class FeedbackEdgeRouteMovingMouseListener extends MouseListener {
204
- protected hasDragged = false;
205
- protected lastDragPosition: Point | undefined;
205
+ protected pointPositionUpdater: PointPositionUpdater;
206
206
 
207
- constructor(protected edgeRouterRegistry?: EdgeRouterRegistry) {
207
+ constructor(protected edgeRouterRegistry?: EdgeRouterRegistry, protected snapper?: ISnapper) {
208
208
  super();
209
+ this.pointPositionUpdater = new PointPositionUpdater(snapper);
209
210
  }
210
211
 
211
- mouseDown(target: SModelElement, event: MouseEvent): Action[] {
212
+ override mouseDown(target: SModelElement, event: MouseEvent): Action[] {
212
213
  const result: Action[] = [];
213
214
  if (event.button === 0) {
214
215
  const routingHandle = findParentByFeature(target, isRoutingHandle);
215
216
  if (routingHandle !== undefined) {
216
217
  result.push(new SwitchRoutingModeAction([target.id], []));
217
- this.lastDragPosition = { x: event.pageX, y: event.pageY };
218
+ this.pointPositionUpdater.updateLastDragPosition({ x: event.pageX, y: event.pageY });
218
219
  } else {
219
- this.lastDragPosition = undefined;
220
+ this.pointPositionUpdater.resetPosition();
220
221
  }
221
- this.hasDragged = false;
222
222
  }
223
223
  return result;
224
224
  }
225
225
 
226
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
226
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
227
227
  const result: Action[] = [];
228
228
  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.all()
238
- .filter(element => isSelected(element))
239
- .forEach(element => {
240
- if (isRoutingHandle(element)) {
241
- const point = this.getHandlePosition(element);
242
- if (point !== undefined) {
243
- handleMoves.push({
244
- elementId: element.id,
245
- fromPosition: point,
246
- toPosition: {
247
- x: point.x + dx,
248
- y: point.y + dy
249
- }
250
- });
251
- }
252
- }
253
- });
254
- this.lastDragPosition = { x: event.pageX, y: event.pageY };
255
- if (handleMoves.length > 0) {
256
- result.push(new MoveAction(handleMoves, false));
257
- }
229
+ return this.mouseUp(target, event);
230
+ }
231
+ const positionUpdate = this.pointPositionUpdater.updatePosition(target, { x: event.pageX, y: event.pageY }, !event.altKey);
232
+ if (positionUpdate) {
233
+ const moveActions = this.handleMoveOnClient(target, positionUpdate);
234
+ result.push(...moveActions);
258
235
  }
259
236
  return result;
260
237
  }
261
238
 
239
+ protected handleMoveOnClient(target: SModelElement, positionUpdate: Point): Action[] {
240
+ const handleMoves: ElementMove[] = [];
241
+ target.root.index
242
+ .all()
243
+ .filter(element => isSelected(element))
244
+ .forEach(element => {
245
+ if (isRoutingHandle(element)) {
246
+ const elementMove = this.toElementMove(element, positionUpdate);
247
+ if (elementMove) {
248
+ handleMoves.push(elementMove);
249
+ }
250
+ }
251
+ });
252
+ if (handleMoves.length > 0) {
253
+ return [new MoveAction(handleMoves, false)];
254
+ }
255
+ return [];
256
+ }
257
+
258
+ protected toElementMove(element: SRoutingHandle, positionDelta: Point): ElementMove | undefined {
259
+ const point = this.getHandlePosition(element);
260
+ if (point !== undefined) {
261
+ return {
262
+ elementId: element.id,
263
+ fromPosition: point,
264
+ toPosition: {
265
+ x: point.x + positionDelta.x,
266
+ y: point.y + positionDelta.y
267
+ }
268
+ };
269
+ }
270
+ return undefined;
271
+ }
272
+
262
273
  protected getHandlePosition(handle: SRoutingHandle): Point | undefined {
263
274
  if (this.edgeRouterRegistry) {
264
275
  const parent = handle.parent;
@@ -272,20 +283,19 @@ export class FeedbackEdgeRouteMovingMouseListener extends MouseListener {
272
283
  return undefined;
273
284
  }
274
285
 
275
- mouseEnter(target: SModelElement, event: MouseEvent): Action[] {
286
+ override mouseEnter(target: SModelElement, event: MouseEvent): Action[] {
276
287
  if (target instanceof SModelRoot && event.buttons === 0) {
277
288
  this.mouseUp(target, event);
278
289
  }
279
290
  return [];
280
291
  }
281
292
 
282
- mouseUp(_target: SModelElement, event: MouseEvent): Action[] {
283
- this.hasDragged = false;
284
- this.lastDragPosition = undefined;
293
+ override mouseUp(_target: SModelElement, event: MouseEvent): Action[] {
294
+ this.pointPositionUpdater.resetPosition();
285
295
  return [];
286
296
  }
287
297
 
288
- decorate(vnode: VNode, _element: SModelElement): VNode {
298
+ override decorate(vnode: VNode, _element: SModelElement): VNode {
289
299
  return vnode;
290
300
  }
291
301
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,10 +13,11 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { Action } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
- import { Action, IActionDispatcher, ILogger, TYPES } from 'sprotty';
18
+ import { IActionDispatcher, ILogger, TYPES } from 'sprotty';
18
19
 
19
- export interface IFeedbackEmitter { }
20
+ export interface IFeedbackEmitter {}
20
21
 
21
22
  /**
22
23
  * Dispatcher for actions that are meant to show visual feedback on
@@ -29,7 +30,7 @@ export interface IFeedbackEmitter { }
29
30
  * extending the `SModelRoot`. Therefore, tools can register themselves
30
31
  * as feedback emitters with actions they want to place for showing
31
32
  * feedback. This dispatcher will then re-establish all feedback actions
32
- * of the registered tools, whenever the `SModelRoot` has been set or updated.
33
+ * of the registered emitters, whenever the `SModelRoot` has been set or updated.
33
34
  */
34
35
  export interface IFeedbackActionDispatcher {
35
36
  /**
@@ -52,14 +53,14 @@ export interface IFeedbackActionDispatcher {
52
53
  deregisterFeedback(feedbackEmitter: IFeedbackEmitter, actions: Action[]): void;
53
54
 
54
55
  /**
55
- * Retrieve all `actions` sent out by currently registered `feedbackEmitter`.
56
- */
56
+ * Retrieve all `actions` sent out by currently registered `feedbackEmitter`.
57
+ */
57
58
  getRegisteredFeedback(): Action[];
58
59
  }
59
60
 
60
61
  @injectable()
61
62
  export class FeedbackActionDispatcher implements IFeedbackActionDispatcher {
62
- protected feedbackEmitters: Map<IFeedbackEmitter, Action[]> = new Map;
63
+ protected feedbackEmitters: Map<IFeedbackEmitter, Action[]> = new Map();
63
64
 
64
65
  @inject(TYPES.IActionDispatcherProvider) protected actionDispatcher: () => Promise<IActionDispatcher>;
65
66
  @inject(TYPES.ILogger) protected logger: ILogger;
@@ -93,9 +94,7 @@ export class FeedbackActionDispatcher implements IFeedbackActionDispatcher {
93
94
  if (value.find(a => a === action)) {
94
95
  result.push(key);
95
96
  }
96
- }
97
- );
97
+ });
98
98
  return result;
99
99
  }
100
-
101
100
  }
@@ -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,27 +13,26 @@
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
17
  import { inject, injectable } from 'inversify';
17
18
  import {
18
- Action,
19
19
  AnchorComputerRegistry,
20
20
  CommandExecutionContext,
21
21
  CommandReturn,
22
22
  MouseListener,
23
- Point,
24
23
  SChildElement,
25
24
  SModelElement,
26
25
  SModelRoot,
27
26
  TYPES
28
27
  } from 'sprotty';
29
-
30
28
  import { FeedbackCommand } from './model';
31
29
 
32
30
  export class DrawMarqueeAction implements Action {
33
31
  constructor(
34
32
  public readonly startPoint: Point,
35
33
  public readonly endPoint: Point,
36
- public readonly kind: string = DrawMarqueeCommand.KIND) { }
34
+ public readonly kind: string = DrawMarqueeCommand.KIND
35
+ ) {}
37
36
  }
38
37
 
39
38
  @injectable()
@@ -51,7 +50,7 @@ export class DrawMarqueeCommand extends FeedbackCommand {
51
50
  }
52
51
 
53
52
  export class RemoveMarqueeAction implements Action {
54
- constructor(public readonly kind: string = RemoveMarqueeCommand.KIND) { }
53
+ constructor(public readonly kind: string = RemoveMarqueeCommand.KIND) {}
55
54
  }
56
55
 
57
56
  @injectable()
@@ -69,7 +68,7 @@ export class MarqueeEndMovingMouseListener extends MouseListener {
69
68
  super();
70
69
  }
71
70
 
72
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
71
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
73
72
  return [];
74
73
  }
75
74
  }
@@ -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
@@ -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
  }
@@ -29,4 +27,3 @@ export abstract class FeedbackCommand extends Command {
29
27
  return context.root;
30
28
  }
31
29
  }
32
-