@eclipse-glsp/client 0.9.0 → 0.10.0-next.15853de.178

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 (546) 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 +2 -1
  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 +144 -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 -4
  164. package/lib/features/hover/hover.d.ts.map +1 -1
  165. package/lib/features/hover/hover.js +42 -4
  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 +10 -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 +189 -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/vbox-layout.d.ts +17 -1
  188. package/lib/features/layout/vbox-layout.d.ts.map +1 -1
  189. package/lib/features/layout/vbox-layout.js +9 -8
  190. package/lib/features/layout/vbox-layout.js.map +1 -1
  191. package/lib/features/model-source-watcher/di.config.js +1 -1
  192. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  193. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +1 -1
  194. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  195. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +11 -11
  196. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  197. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  198. package/lib/features/mouse-tool/di.config.d.ts.map +1 -1
  199. package/lib/features/mouse-tool/di.config.js +2 -2
  200. package/lib/features/mouse-tool/di.config.js.map +1 -1
  201. package/lib/features/mouse-tool/mouse-tool.d.ts +9 -6
  202. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  203. package/lib/features/mouse-tool/mouse-tool.js +10 -48
  204. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  205. package/lib/features/navigation/di.config.js +4 -4
  206. package/lib/features/navigation/di.config.js.map +1 -1
  207. package/lib/features/navigation/navigation-action-handler.d.ts +31 -16
  208. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  209. package/lib/features/navigation/navigation-action-handler.js +52 -68
  210. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  211. package/lib/features/navigation/navigation-target-resolver.d.ts +3 -3
  212. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  213. package/lib/features/navigation/navigation-target-resolver.js +8 -9
  214. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  215. package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
  216. package/lib/features/navigation/navigation-target-resolver.spec.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 +1 -1
  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 +3 -3
  224. package/lib/features/save/di.config.js.map +1 -1
  225. package/lib/features/save/save-keylistener.d.ts +1 -1
  226. package/lib/features/save/save-keylistener.d.ts.map +1 -1
  227. package/lib/features/save/save-keylistener.js +3 -3
  228. package/lib/features/save/save-keylistener.js.map +1 -1
  229. package/lib/features/select/di.config.d.ts +1 -1
  230. package/lib/features/select/di.config.d.ts.map +1 -1
  231. package/lib/features/select/di.config.js +7 -8
  232. package/lib/features/select/di.config.js.map +1 -1
  233. package/lib/features/select/select-feedback-action.d.ts +26 -22
  234. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  235. package/lib/features/select/select-feedback-action.js +19 -46
  236. package/lib/features/select/select-feedback-action.js.map +1 -1
  237. package/lib/features/select/select-mouse-listener.d.ts +4 -2
  238. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  239. package/lib/features/select/select-mouse-listener.js +63 -1
  240. package/lib/features/select/select-mouse-listener.js.map +1 -1
  241. package/lib/features/select/selection-service.d.ts +14 -5
  242. package/lib/features/select/selection-service.d.ts.map +1 -1
  243. package/lib/features/select/selection-service.js +55 -64
  244. package/lib/features/select/selection-service.js.map +1 -1
  245. package/lib/features/select/selection-service.spec.js +28 -25
  246. package/lib/features/select/selection-service.spec.js.map +1 -1
  247. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +17 -9
  248. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  249. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +68 -38
  250. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  251. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +24 -12
  252. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  253. package/lib/features/tool-feedback/creation-tool-feedback.js +88 -35
  254. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  255. package/lib/features/tool-feedback/css-feedback.d.ts +17 -10
  256. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  257. package/lib/features/tool-feedback/css-feedback.js +42 -38
  258. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  259. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  260. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  261. package/lib/features/tool-feedback/di.config.js +18 -18
  262. package/lib/features/tool-feedback/di.config.js.map +1 -1
  263. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +45 -22
  264. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  265. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -114
  266. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  267. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
  268. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  269. package/lib/features/tool-feedback/feedback-action-dispatcher.js +4 -4
  270. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  271. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +21 -10
  272. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  273. package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -18
  274. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  275. package/lib/features/tool-feedback/model.d.ts +1 -2
  276. package/lib/features/tool-feedback/model.d.ts.map +1 -1
  277. package/lib/features/tool-feedback/model.js +1 -1
  278. package/lib/features/tool-feedback/model.js.map +1 -1
  279. package/lib/features/tool-feedback/view.d.ts +1 -1
  280. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  281. package/lib/features/tool-feedback/view.js +22 -5
  282. package/lib/features/tool-feedback/view.js.map +1 -1
  283. package/lib/features/tool-palette/di.config.d.ts +1 -1
  284. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  285. package/lib/features/tool-palette/di.config.js +5 -4
  286. package/lib/features/tool-palette/di.config.js.map +1 -1
  287. package/lib/features/tool-palette/tool-palette.d.ts +10 -7
  288. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  289. package/lib/features/tool-palette/tool-palette.js +39 -32
  290. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  291. package/lib/features/tools/base-glsp-tool.d.ts +3 -3
  292. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  293. package/lib/features/tools/base-glsp-tool.js +11 -11
  294. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  295. package/lib/features/tools/change-bounds-tool.d.ts +7 -9
  296. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  297. package/lib/features/tools/change-bounds-tool.js +48 -71
  298. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  299. package/lib/features/tools/delete-tool.d.ts +1 -1
  300. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  301. package/lib/features/tools/delete-tool.js +17 -17
  302. package/lib/features/tools/delete-tool.js.map +1 -1
  303. package/lib/features/tools/di.config.d.ts +9 -2
  304. package/lib/features/tools/di.config.d.ts.map +1 -1
  305. package/lib/features/tools/di.config.js +26 -15
  306. package/lib/features/tools/di.config.js.map +1 -1
  307. package/lib/features/tools/edge-creation-tool.d.ts +1 -1
  308. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  309. package/lib/features/tools/edge-creation-tool.js +28 -21
  310. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  311. package/lib/features/tools/edge-edit-tool.d.ts +3 -2
  312. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  313. package/lib/features/tools/edge-edit-tool.js +41 -36
  314. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  315. package/lib/features/{tool-palette/palette-item.d.ts → tools/enable-default-tools-on-focus-loss.d.ts} +11 -11
  316. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -0
  317. package/lib/features/tools/enable-default-tools-on-focus-loss.js +29 -0
  318. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -0
  319. package/lib/features/tools/marquee-behavior.d.ts +1 -1
  320. package/lib/features/tools/marquee-behavior.js +2 -2
  321. package/lib/features/tools/marquee-behavior.js.map +1 -1
  322. package/lib/features/tools/marquee-behavior.spec.js +63 -63
  323. package/lib/features/tools/marquee-behavior.spec.js.map +1 -1
  324. package/lib/features/tools/marquee-mouse-tool.d.ts +1 -1
  325. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  326. package/lib/features/tools/marquee-mouse-tool.js +20 -20
  327. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  328. package/lib/features/tools/marquee-tool.d.ts +1 -1
  329. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  330. package/lib/features/tools/marquee-tool.js +4 -4
  331. package/lib/features/tools/marquee-tool.js.map +1 -1
  332. package/lib/features/tools/model.d.ts +3 -2
  333. package/lib/features/tools/model.d.ts.map +1 -1
  334. package/lib/features/tools/model.js +0 -15
  335. package/lib/features/tools/model.js.map +1 -1
  336. package/lib/features/tools/node-creation-tool.d.ts +1 -1
  337. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  338. package/lib/features/tools/node-creation-tool.js +17 -17
  339. package/lib/features/tools/node-creation-tool.js.map +1 -1
  340. package/lib/features/tools/view.d.ts.map +1 -1
  341. package/lib/features/tools/view.js +2 -2
  342. package/lib/features/tools/view.js.map +1 -1
  343. package/lib/features/validation/di.config.d.ts +0 -15
  344. package/lib/features/validation/di.config.d.ts.map +1 -1
  345. package/lib/features/validation/di.config.js +9 -7
  346. package/lib/features/validation/di.config.js.map +1 -1
  347. package/lib/features/validation/issue-marker.d.ts +10 -5
  348. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  349. package/lib/features/validation/issue-marker.js +12 -4
  350. package/lib/features/validation/issue-marker.js.map +1 -1
  351. package/lib/features/validation/marker-navigator.d.ts +27 -25
  352. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  353. package/lib/features/validation/marker-navigator.js +64 -91
  354. package/lib/features/validation/marker-navigator.js.map +1 -1
  355. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  356. package/lib/features/validation/marker-navigator.spec.js +23 -37
  357. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  358. package/lib/features/validation/validate.d.ts +17 -30
  359. package/lib/features/validation/validate.d.ts.map +1 -1
  360. package/lib/features/validation/validate.js +66 -90
  361. package/lib/features/validation/validate.js.map +1 -1
  362. package/lib/features/viewport/di.config.d.ts +1 -1
  363. package/lib/features/viewport/di.config.d.ts.map +1 -1
  364. package/lib/features/viewport/di.config.js +7 -7
  365. package/lib/features/viewport/di.config.js.map +1 -1
  366. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +1 -1
  367. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  368. package/lib/features/viewport/glsp-scroll-mouse-listener.js +3 -3
  369. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  370. package/lib/index.d.ts +8 -9
  371. package/lib/index.d.ts.map +1 -1
  372. package/lib/index.js +15 -11
  373. package/lib/index.js.map +1 -1
  374. package/lib/lib/model.d.ts +3 -2
  375. package/lib/lib/model.d.ts.map +1 -1
  376. package/lib/lib/model.js +3 -18
  377. package/lib/lib/model.js.map +1 -1
  378. package/lib/model-source/glsp-diagram-server.d.ts +6 -6
  379. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  380. package/lib/model-source/glsp-diagram-server.js +8 -7
  381. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  382. package/lib/sprotty-reexport.d.ts +174 -0
  383. package/lib/sprotty-reexport.d.ts.map +1 -0
  384. package/lib/sprotty-reexport.js +299 -0
  385. package/lib/sprotty-reexport.js.map +1 -0
  386. package/lib/utils/argument-utils.js +5 -5
  387. package/lib/utils/argument-utils.js.map +1 -1
  388. package/lib/utils/layout-utils.d.ts +6 -22
  389. package/lib/utils/layout-utils.d.ts.map +1 -1
  390. package/lib/utils/layout-utils.js +1 -1
  391. package/lib/utils/layout-utils.js.map +1 -1
  392. package/lib/utils/smodel-util.d.ts +117 -11
  393. package/lib/utils/smodel-util.d.ts.map +1 -1
  394. package/lib/utils/smodel-util.js +142 -37
  395. package/lib/utils/smodel-util.js.map +1 -1
  396. package/lib/utils/viewpoint-util.d.ts +3 -3
  397. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  398. package/lib/utils/viewpoint-util.js +19 -3
  399. package/lib/utils/viewpoint-util.js.map +1 -1
  400. package/lib/views/base-view-module.d.ts.map +1 -1
  401. package/lib/views/base-view-module.js +21 -19
  402. package/lib/views/base-view-module.js.map +1 -1
  403. package/lib/views/compartments.js +2 -2
  404. package/lib/views/compartments.js.map +1 -1
  405. package/lib/views/glsp-edge-view.d.ts +1 -1
  406. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  407. package/lib/views/glsp-edge-view.js +1 -1
  408. package/lib/views/glsp-edge-view.js.map +1 -1
  409. package/lib/views/glsp-projection-view.d.ts +30 -0
  410. package/lib/views/glsp-projection-view.d.ts.map +1 -0
  411. package/lib/views/glsp-projection-view.js +142 -0
  412. package/lib/views/glsp-projection-view.js.map +1 -0
  413. package/lib/views/index.d.ts +1 -0
  414. package/lib/views/index.d.ts.map +1 -1
  415. package/lib/views/index.js +7 -2
  416. package/lib/views/index.js.map +1 -1
  417. package/lib/views/issue-marker-view.d.ts.map +1 -1
  418. package/lib/views/issue-marker-view.js +3 -3
  419. package/lib/views/issue-marker-view.js.map +1 -1
  420. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  421. package/lib/views/rounded-corner-view.js +2 -2
  422. package/lib/views/rounded-corner-view.js.map +1 -1
  423. package/package.json +8 -18
  424. package/src/base/action-dispatcher.ts +26 -16
  425. package/src/base/actions/focus-change-action.ts +25 -8
  426. package/src/base/actions/sprotty-actions.ts +26 -0
  427. package/src/base/auto-complete/auto-complete-actions.ts +7 -5
  428. package/src/base/auto-complete/auto-complete-widget.ts +15 -13
  429. package/src/base/command-stack.ts +7 -6
  430. package/src/base/container-modules.ts +4 -3
  431. package/src/base/di.config.ts +4 -5
  432. package/src/base/drag-aware-mouse-listener.ts +4 -4
  433. package/src/base/editor-context-service.ts +32 -12
  434. package/src/base/focus-tracker.ts +5 -4
  435. package/src/base/model/model-registry.ts +2 -2
  436. package/src/base/model/update-model-command.ts +54 -41
  437. package/src/base/model-initialization-constraint.ts +9 -11
  438. package/src/base/selection-clearing-mouse-listener.ts +1 -1
  439. package/src/base/source-uri-aware.ts +5 -4
  440. package/src/base/tool-manager/glsp-tool-manager.ts +9 -9
  441. package/src/base/tool-manager/tool-actions.ts +37 -0
  442. package/src/base/types.ts +31 -24
  443. package/src/base/view/view-registry.ts +2 -2
  444. package/src/features/change-bounds/model.ts +5 -5
  445. package/src/features/change-bounds/movement-restrictor.ts +74 -44
  446. package/src/features/change-bounds/snap.spec.ts +89 -0
  447. package/src/features/change-bounds/snap.ts +99 -12
  448. package/src/features/command-palette/di.config.ts +5 -7
  449. package/src/features/command-palette/server-command-palette-provider.ts +9 -8
  450. package/src/features/context-menu/delete-element-context-menu.ts +6 -6
  451. package/src/features/context-menu/di.config.ts +3 -2
  452. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +51 -29
  453. package/src/features/context-menu/server-context-menu-provider.ts +7 -6
  454. package/src/features/copy-paste/copy-paste-context-menu.ts +30 -23
  455. package/src/features/copy-paste/copy-paste-handler.ts +6 -6
  456. package/src/features/copy-paste/di.config.ts +7 -15
  457. package/src/features/decoration/decoration-placer.ts +4 -4
  458. package/src/features/decoration/di.config.ts +3 -5
  459. package/src/features/edit-label/di.config.ts +4 -5
  460. package/src/features/edit-label/edit-label-tool.ts +1 -2
  461. package/src/features/edit-label/edit-label-validator.ts +6 -10
  462. package/src/features/hints/di.config.ts +3 -3
  463. package/src/features/hints/type-hints.ts +33 -18
  464. package/src/features/hover/di.config.ts +8 -2
  465. package/src/features/hover/hover.ts +53 -11
  466. package/src/features/layout/di.config.ts +15 -7
  467. package/src/features/layout/freeform-layout.ts +6 -15
  468. package/src/features/layout/hbox-layout.ts +256 -0
  469. package/src/features/layout/{layout-commands.spec.ts → layout-elements-action.spec.ts} +89 -65
  470. package/src/features/layout/layout-elements-action.ts +486 -0
  471. package/src/features/layout/vbox-layout.ts +20 -20
  472. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +7 -12
  473. package/src/features/mouse-tool/di.config.ts +3 -4
  474. package/src/features/mouse-tool/mouse-tool.ts +18 -57
  475. package/src/features/navigation/navigation-action-handler.ts +76 -42
  476. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -3
  477. package/src/features/navigation/navigation-target-resolver.ts +8 -13
  478. package/src/features/reconnect/model.ts +2 -2
  479. package/src/features/save/di.config.ts +2 -3
  480. package/src/features/save/save-keylistener.ts +3 -3
  481. package/src/features/select/di.config.ts +6 -8
  482. package/src/features/select/select-feedback-action.ts +18 -46
  483. package/src/features/select/select-mouse-listener.ts +82 -3
  484. package/src/features/select/selection-service.spec.ts +12 -9
  485. package/src/features/select/selection-service.ts +52 -60
  486. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +52 -22
  487. package/src/features/tool-feedback/creation-tool-feedback.ts +79 -30
  488. package/src/features/tool-feedback/css-feedback.ts +40 -37
  489. package/src/features/tool-feedback/di.config.ts +4 -5
  490. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +140 -88
  491. package/src/features/tool-feedback/feedback-action-dispatcher.ts +4 -3
  492. package/src/features/tool-feedback/marquee-tool-feedback.ts +38 -13
  493. package/src/features/tool-feedback/model.ts +1 -3
  494. package/src/features/tool-feedback/view.tsx +3 -3
  495. package/src/features/tool-palette/di.config.ts +3 -2
  496. package/src/features/tool-palette/tool-palette.ts +35 -19
  497. package/src/features/tools/base-glsp-tool.ts +11 -11
  498. package/src/features/tools/change-bounds-tool.ts +37 -67
  499. package/src/features/tools/delete-tool.ts +9 -9
  500. package/src/features/tools/di.config.ts +23 -12
  501. package/src/features/tools/edge-creation-tool.ts +21 -12
  502. package/src/features/tools/edge-edit-tool.ts +25 -21
  503. package/src/features/tools/enable-default-tools-on-focus-loss.ts +33 -0
  504. package/src/features/tools/marquee-behavior.ts +2 -2
  505. package/src/features/tools/marquee-mouse-tool.ts +13 -14
  506. package/src/features/tools/marquee-tool.ts +3 -3
  507. package/src/features/tools/model.ts +4 -3
  508. package/src/features/tools/node-creation-tool.ts +8 -8
  509. package/src/features/tools/view.tsx +2 -3
  510. package/src/features/validation/di.config.ts +13 -11
  511. package/src/features/validation/issue-marker.ts +22 -12
  512. package/src/features/validation/marker-navigator.spec.ts +4 -2
  513. package/src/features/validation/marker-navigator.ts +67 -82
  514. package/src/features/validation/validate.ts +62 -89
  515. package/src/features/viewport/di.config.ts +1 -2
  516. package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
  517. package/src/index.ts +9 -9
  518. package/src/lib/model.ts +4 -4
  519. package/src/model-source/glsp-diagram-server.ts +15 -15
  520. package/src/sprotty-reexport.ts +283 -0
  521. package/src/utils/layout-utils.ts +9 -29
  522. package/src/utils/smodel-util.ts +139 -43
  523. package/src/utils/viewpoint-util.ts +5 -14
  524. package/src/views/base-view-module.ts +5 -1
  525. package/src/views/compartments.tsx +1 -1
  526. package/src/views/glsp-edge-view.tsx +4 -4
  527. package/src/views/glsp-projection-view.tsx +166 -0
  528. package/src/views/index.ts +2 -0
  529. package/src/views/issue-marker-view.tsx +2 -2
  530. package/src/views/rounded-corner-view.tsx +2 -3
  531. package/lib/features/layout/layout-commands.d.ts +0 -153
  532. package/lib/features/layout/layout-commands.d.ts.map +0 -1
  533. package/lib/features/layout/layout-commands.js +0 -412
  534. package/lib/features/layout/layout-commands.js.map +0 -1
  535. package/lib/features/layout/layout-commands.spec.d.ts +0 -3
  536. package/lib/features/layout/layout-commands.spec.d.ts.map +0 -1
  537. package/lib/features/layout/layout-commands.spec.js.map +0 -1
  538. package/lib/features/tool-palette/palette-item.d.ts.map +0 -1
  539. package/lib/features/tool-palette/palette-item.js.map +0 -1
  540. package/lib/protocol-reexport.d.ts +0 -45
  541. package/lib/protocol-reexport.d.ts.map +0 -1
  542. package/lib/protocol-reexport.js +0 -75
  543. package/lib/protocol-reexport.js.map +0 -1
  544. package/src/features/layout/layout-commands.ts +0 -424
  545. package/src/features/tool-palette/palette-item.ts +0 -38
  546. 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,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