@eclipse-glsp/client 0.9.0-next.d9bed812 → 0.9.0-next.e99d24cc

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 (627) hide show
  1. package/LICENSE +642 -277
  2. package/README.md +2 -1
  3. package/css/command-palette.css +9 -5
  4. package/css/decoration.css +3 -2
  5. package/css/glsp-sprotty.css +16 -7
  6. package/css/tool-palette.css +44 -27
  7. package/lib/base/action-dispatcher.d.ts +18 -2
  8. package/lib/base/action-dispatcher.d.ts.map +1 -1
  9. package/lib/base/action-dispatcher.js +41 -61
  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} +4 -6
  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-actions.js.map +1 -1
  22. package/lib/base/auto-complete/auto-complete-widget.d.ts +5 -5
  23. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  24. package/lib/base/auto-complete/auto-complete-widget.js +121 -152
  25. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  26. package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
  27. package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
  28. package/lib/base/auto-complete/validation-decorator.js +49 -65
  29. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  30. package/lib/base/command-stack.d.ts +1 -1
  31. package/lib/base/command-stack.d.ts.map +1 -1
  32. package/lib/base/command-stack.js +19 -37
  33. package/lib/base/command-stack.js.map +1 -1
  34. package/lib/base/container-modules.d.ts +40 -0
  35. package/lib/base/container-modules.d.ts.map +1 -0
  36. package/lib/base/container-modules.js +100 -0
  37. package/lib/base/container-modules.js.map +1 -0
  38. package/lib/base/di.config.d.ts +13 -3
  39. package/lib/base/di.config.d.ts.map +1 -1
  40. package/lib/base/di.config.js +50 -33
  41. package/lib/base/di.config.js.map +1 -1
  42. package/lib/base/drag-aware-mouse-listener.d.ts +3 -2
  43. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  44. package/lib/base/drag-aware-mouse-listener.js +23 -62
  45. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  46. package/lib/base/editor-context-service.d.ts +42 -0
  47. package/lib/base/editor-context-service.d.ts.map +1 -0
  48. package/lib/base/editor-context-service.js +109 -0
  49. package/lib/base/editor-context-service.js.map +1 -0
  50. package/lib/base/focus-tracker.d.ts +17 -1
  51. package/lib/base/focus-tracker.d.ts.map +1 -1
  52. package/lib/base/focus-tracker.js +19 -39
  53. package/lib/base/focus-tracker.js.map +1 -1
  54. package/lib/base/model/model-registry.d.ts +5 -0
  55. package/lib/base/model/model-registry.d.ts.map +1 -0
  56. package/lib/base/model/model-registry.js +43 -0
  57. package/lib/base/model/model-registry.js.map +1 -0
  58. package/lib/base/model/update-model-command.d.ts +20 -6
  59. package/lib/base/model/update-model-command.d.ts.map +1 -1
  60. package/lib/base/model/update-model-command.js +69 -94
  61. package/lib/base/model/update-model-command.js.map +1 -1
  62. package/lib/base/model-initialization-constraint.d.ts +17 -2
  63. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  64. package/lib/base/model-initialization-constraint.js +34 -54
  65. package/lib/base/model-initialization-constraint.js.map +1 -1
  66. package/lib/base/selection-clearing-mouse-listener.d.ts +1 -1
  67. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  68. package/lib/base/selection-clearing-mouse-listener.js +11 -28
  69. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  70. package/lib/base/source-uri-aware.js +2 -5
  71. package/lib/base/source-uri-aware.js.map +1 -1
  72. package/lib/base/tool-manager/glsp-tool-manager.d.ts +2 -2
  73. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  74. package/lib/base/tool-manager/glsp-tool-manager.js +59 -141
  75. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  76. package/lib/base/types.d.ts +3 -1
  77. package/lib/base/types.d.ts.map +1 -1
  78. package/lib/base/types.js +23 -21
  79. package/lib/base/types.js.map +1 -1
  80. package/lib/base/view/view-registry.d.ts +5 -0
  81. package/lib/base/view/view-registry.d.ts.map +1 -0
  82. package/lib/base/view/view-registry.js +43 -0
  83. package/lib/base/view/view-registry.js.map +1 -0
  84. package/lib/features/change-bounds/model.d.ts +4 -2
  85. package/lib/features/change-bounds/model.d.ts.map +1 -1
  86. package/lib/features/change-bounds/model.js +21 -32
  87. package/lib/features/change-bounds/model.js.map +1 -1
  88. package/lib/features/change-bounds/movement-restrictor.d.ts +18 -2
  89. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  90. package/lib/features/change-bounds/movement-restrictor.js +34 -46
  91. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  92. package/lib/features/change-bounds/snap.d.ts +17 -1
  93. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  94. package/lib/features/change-bounds/snap.js +13 -39
  95. package/lib/features/change-bounds/snap.js.map +1 -1
  96. package/lib/features/command-palette/command-palette-tool.d.ts +1 -1
  97. package/lib/features/command-palette/command-palette-tool.d.ts.map +1 -1
  98. package/lib/features/command-palette/command-palette-tool.js +30 -38
  99. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  100. package/lib/features/command-palette/di.config.d.ts +2 -2
  101. package/lib/features/command-palette/di.config.js +6 -6
  102. package/lib/features/command-palette/di.config.js.map +1 -1
  103. package/lib/features/command-palette/server-command-palette-provider.d.ts +19 -3
  104. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  105. package/lib/features/command-palette/server-command-palette-provider.js +31 -36
  106. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  107. package/lib/features/context-menu/delete-element-context-menu.d.ts +2 -2
  108. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  109. package/lib/features/context-menu/delete-element-context-menu.js +24 -72
  110. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  111. package/lib/features/context-menu/di.config.d.ts +2 -2
  112. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  113. package/lib/features/context-menu/di.config.js +14 -18
  114. package/lib/features/context-menu/di.config.js.map +1 -1
  115. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +2 -2
  116. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  117. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
  118. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  119. package/lib/features/context-menu/server-context-menu-provider.d.ts +19 -3
  120. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  121. package/lib/features/context-menu/server-context-menu-provider.js +31 -32
  122. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  123. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
  124. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  125. package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
  126. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  127. package/lib/features/copy-paste/copy-paste-handler.d.ts +21 -4
  128. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  129. package/lib/features/copy-paste/copy-paste-handler.js +70 -70
  130. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  131. package/lib/features/copy-paste/di.config.d.ts +2 -2
  132. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  133. package/lib/features/copy-paste/di.config.js +11 -11
  134. package/lib/features/copy-paste/di.config.js.map +1 -1
  135. package/lib/features/decoration/decoration-placer.d.ts +17 -1
  136. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  137. package/lib/features/decoration/decoration-placer.js +14 -47
  138. package/lib/features/decoration/decoration-placer.js.map +1 -1
  139. package/lib/features/decoration/di.config.d.ts +2 -2
  140. package/lib/features/decoration/di.config.d.ts.map +1 -1
  141. package/lib/features/decoration/di.config.js +4 -6
  142. package/lib/features/decoration/di.config.js.map +1 -1
  143. package/lib/features/edit-label/di.config.d.ts +1 -1
  144. package/lib/features/edit-label/di.config.js +7 -7
  145. package/lib/features/edit-label/di.config.js.map +1 -1
  146. package/lib/features/edit-label/edit-label-tool.d.ts +2 -2
  147. package/lib/features/edit-label/edit-label-tool.js +20 -43
  148. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  149. package/lib/features/edit-label/edit-label-validator.d.ts +18 -3
  150. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  151. package/lib/features/edit-label/edit-label-validator.js +40 -62
  152. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  153. package/lib/features/hints/di.config.d.ts +1 -16
  154. package/lib/features/hints/di.config.d.ts.map +1 -1
  155. package/lib/features/hints/di.config.js +9 -9
  156. package/lib/features/hints/di.config.js.map +1 -1
  157. package/lib/features/hints/model.d.ts +3 -2
  158. package/lib/features/hints/model.d.ts.map +1 -1
  159. package/lib/features/hints/model.js +2 -2
  160. package/lib/features/hints/model.js.map +1 -1
  161. package/lib/features/hints/type-hints.d.ts +21 -49
  162. package/lib/features/hints/type-hints.d.ts.map +1 -1
  163. package/lib/features/hints/type-hints.js +83 -142
  164. package/lib/features/hints/type-hints.js.map +1 -1
  165. package/lib/features/hover/di.config.d.ts +2 -2
  166. package/lib/features/hover/di.config.d.ts.map +1 -1
  167. package/lib/features/hover/di.config.js +8 -8
  168. package/lib/features/hover/di.config.js.map +1 -1
  169. package/lib/features/hover/hover.d.ts +18 -2
  170. package/lib/features/hover/hover.d.ts.map +1 -1
  171. package/lib/features/hover/hover.js +37 -75
  172. package/lib/features/hover/hover.js.map +1 -1
  173. package/lib/features/layout/di.config.d.ts +6 -2
  174. package/lib/features/layout/di.config.d.ts.map +1 -1
  175. package/lib/features/layout/di.config.js +47 -7
  176. package/lib/features/layout/di.config.js.map +1 -1
  177. package/lib/features/layout/freeform-layout.d.ts +16 -0
  178. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  179. package/lib/features/layout/freeform-layout.js +107 -0
  180. package/lib/features/layout/freeform-layout.js.map +1 -0
  181. package/lib/features/layout/layout-commands.d.ts +26 -10
  182. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  183. package/lib/features/layout/layout-commands.js +189 -264
  184. package/lib/features/layout/layout-commands.js.map +1 -1
  185. package/lib/features/layout/layout-commands.spec.d.ts +2 -17
  186. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
  187. package/lib/features/layout/layout-commands.spec.js +124 -117
  188. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  189. package/lib/features/layout/vbox-layout.d.ts +25 -0
  190. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  191. package/lib/features/layout/vbox-layout.js +188 -0
  192. package/lib/features/layout/vbox-layout.js.map +1 -0
  193. package/lib/features/model-source-watcher/di.config.d.ts +1 -16
  194. package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
  195. package/lib/features/model-source-watcher/di.config.js +7 -7
  196. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  197. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
  198. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  199. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -46
  200. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  201. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  202. package/lib/features/mouse-tool/di.config.js +5 -5
  203. package/lib/features/mouse-tool/di.config.js.map +1 -1
  204. package/lib/features/mouse-tool/mouse-tool.d.ts +3 -2
  205. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  206. package/lib/features/mouse-tool/mouse-tool.js +74 -217
  207. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  208. package/lib/features/navigation/di.config.d.ts +1 -16
  209. package/lib/features/navigation/di.config.d.ts.map +1 -1
  210. package/lib/features/navigation/di.config.js +11 -10
  211. package/lib/features/navigation/di.config.js.map +1 -1
  212. package/lib/features/navigation/navigation-action-handler.d.ts +19 -39
  213. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  214. package/lib/features/navigation/navigation-action-handler.js +118 -255
  215. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  216. package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
  217. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  218. package/lib/features/navigation/navigation-target-resolver.js +46 -188
  219. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  220. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +2 -17
  221. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  222. package/lib/features/navigation/navigation-target-resolver.spec.js +27 -26
  223. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  224. package/lib/features/rank/model.d.ts +2 -2
  225. package/lib/features/rank/model.d.ts.map +1 -1
  226. package/lib/features/rank/model.js +2 -2
  227. package/lib/features/rank/model.js.map +1 -1
  228. package/lib/features/reconnect/model.d.ts +2 -2
  229. package/lib/features/reconnect/model.d.ts.map +1 -1
  230. package/lib/features/reconnect/model.js +10 -28
  231. package/lib/features/reconnect/model.js.map +1 -1
  232. package/lib/features/save/di.config.d.ts +2 -2
  233. package/lib/features/save/di.config.d.ts.map +1 -1
  234. package/lib/features/save/di.config.js +6 -6
  235. package/lib/features/save/di.config.js.map +1 -1
  236. package/lib/features/save/model.d.ts +1 -1
  237. package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -10
  238. package/lib/features/save/save-keylistener.d.ts.map +1 -0
  239. package/lib/features/{undo-redo/model.d.ts → save/save-keylistener.js} +16 -12
  240. package/lib/features/save/save-keylistener.js.map +1 -0
  241. package/lib/features/select/di.config.d.ts +1 -1
  242. package/lib/features/select/di.config.js +11 -11
  243. package/lib/features/select/di.config.js.map +1 -1
  244. package/lib/features/select/select-feedback-action.d.ts +1 -1
  245. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  246. package/lib/features/select/select-feedback-action.js +45 -71
  247. package/lib/features/select/select-feedback-action.js.map +1 -1
  248. package/lib/features/select/select-mouse-listener.d.ts +2 -2
  249. package/lib/features/select/select-mouse-listener.js +7 -23
  250. package/lib/features/select/select-mouse-listener.js.map +1 -1
  251. package/lib/features/select/selection-service.d.ts +19 -3
  252. package/lib/features/select/selection-service.d.ts.map +1 -1
  253. package/lib/features/select/selection-service.js +134 -236
  254. package/lib/features/select/selection-service.js.map +1 -1
  255. package/lib/features/select/selection-service.spec.js +96 -138
  256. package/lib/features/select/selection-service.spec.js.map +1 -1
  257. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +21 -4
  258. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  259. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +117 -149
  260. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  261. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +19 -2
  262. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  263. package/lib/features/tool-feedback/creation-tool-feedback.js +81 -115
  264. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  265. package/lib/features/tool-feedback/css-feedback.d.ts +21 -3
  266. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  267. package/lib/features/tool-feedback/css-feedback.js +37 -81
  268. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  269. package/lib/features/tool-feedback/di.config.d.ts +2 -2
  270. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  271. package/lib/features/tool-feedback/di.config.js +27 -27
  272. package/lib/features/tool-feedback/di.config.js.map +1 -1
  273. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +21 -4
  274. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  275. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +160 -204
  276. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  277. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +19 -3
  278. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  279. package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
  280. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  281. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +18 -2
  282. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  283. package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -86
  284. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  285. package/lib/features/tool-feedback/model.d.ts +2 -2
  286. package/lib/features/tool-feedback/model.js +11 -27
  287. package/lib/features/tool-feedback/model.js.map +1 -1
  288. package/lib/features/tool-feedback/view.d.ts +22 -6
  289. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  290. package/lib/features/tool-feedback/view.js +30 -51
  291. package/lib/features/tool-feedback/view.js.map +1 -1
  292. package/lib/features/tool-palette/di.config.d.ts +2 -2
  293. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  294. package/lib/features/tool-palette/di.config.js +6 -6
  295. package/lib/features/tool-palette/di.config.js.map +1 -1
  296. package/lib/features/tool-palette/palette-item.d.ts +2 -3
  297. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  298. package/lib/features/tool-palette/palette-item.js +6 -6
  299. package/lib/features/tool-palette/palette-item.js.map +1 -1
  300. package/lib/features/tool-palette/tool-palette.d.ts +22 -6
  301. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  302. package/lib/features/tool-palette/tool-palette.js +225 -291
  303. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  304. package/lib/features/tools/base-glsp-tool.d.ts +21 -5
  305. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  306. package/lib/features/tools/base-glsp-tool.js +37 -59
  307. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  308. package/lib/features/tools/change-bounds-tool.d.ts +26 -9
  309. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  310. package/lib/features/tools/change-bounds-tool.js +192 -241
  311. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  312. package/lib/features/tools/delete-tool.d.ts +20 -4
  313. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  314. package/lib/features/tools/delete-tool.js +71 -104
  315. package/lib/features/tools/delete-tool.js.map +1 -1
  316. package/lib/features/tools/di.config.d.ts +1 -16
  317. package/lib/features/tools/di.config.d.ts.map +1 -1
  318. package/lib/features/tools/di.config.js +19 -19
  319. package/lib/features/tools/di.config.js.map +1 -1
  320. package/lib/features/tools/edge-creation-tool.d.ts +20 -5
  321. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  322. package/lib/features/tools/edge-creation-tool.js +64 -89
  323. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  324. package/lib/features/tools/edge-edit-tool.d.ts +22 -6
  325. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  326. package/lib/features/tools/edge-edit-tool.js +125 -189
  327. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  328. package/lib/features/tools/marquee-behavior.d.ts +42 -0
  329. package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
  330. package/lib/features/tools/marquee-behavior.js +128 -0
  331. package/lib/features/tools/marquee-behavior.js.map +1 -0
  332. package/{src/features/undo-redo/model.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -12
  333. package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
  334. package/lib/features/tools/marquee-behavior.spec.js +165 -0
  335. package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
  336. package/lib/features/tools/marquee-mouse-tool.d.ts +27 -15
  337. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  338. package/lib/features/tools/marquee-mouse-tool.js +90 -184
  339. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  340. package/lib/features/tools/marquee-tool.d.ts +18 -2
  341. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  342. package/lib/features/tools/marquee-tool.js +32 -73
  343. package/lib/features/tools/marquee-tool.js.map +1 -1
  344. package/lib/features/tools/model.d.ts +1 -1
  345. package/lib/features/tools/model.d.ts.map +1 -1
  346. package/lib/features/tools/model.js +6 -24
  347. package/lib/features/tools/model.js.map +1 -1
  348. package/lib/features/tools/node-creation-tool.d.ts +20 -5
  349. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  350. package/lib/features/tools/node-creation-tool.js +60 -90
  351. package/lib/features/tools/node-creation-tool.js.map +1 -1
  352. package/lib/features/tools/view.d.ts +3 -18
  353. package/lib/features/tools/view.d.ts.map +1 -1
  354. package/lib/features/tools/view.js +21 -39
  355. package/lib/features/tools/view.js.map +1 -1
  356. package/lib/features/validation/di.config.d.ts +1 -1
  357. package/lib/features/validation/di.config.js +12 -12
  358. package/lib/features/validation/di.config.js.map +1 -1
  359. package/lib/features/validation/issue-marker.d.ts +3 -3
  360. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  361. package/lib/features/validation/issue-marker.js +18 -56
  362. package/lib/features/validation/issue-marker.js.map +1 -1
  363. package/lib/features/validation/marker-navigator.d.ts +19 -3
  364. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  365. package/lib/features/validation/marker-navigator.js +131 -164
  366. package/lib/features/validation/marker-navigator.js.map +1 -1
  367. package/lib/features/validation/marker-navigator.spec.d.ts +2 -17
  368. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  369. package/lib/features/validation/marker-navigator.spec.js +84 -77
  370. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  371. package/lib/features/validation/validate.d.ts +20 -31
  372. package/lib/features/validation/validate.d.ts.map +1 -1
  373. package/lib/features/validation/validate.js +148 -299
  374. package/lib/features/validation/validate.js.map +1 -1
  375. package/lib/features/viewport/di.config.d.ts +16 -1
  376. package/lib/features/viewport/di.config.d.ts.map +1 -1
  377. package/lib/features/viewport/di.config.js +10 -10
  378. package/lib/features/viewport/di.config.js.map +1 -1
  379. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +3 -2
  380. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  381. package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -47
  382. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  383. package/lib/index.d.ts +32 -35
  384. package/lib/index.d.ts.map +1 -1
  385. package/lib/index.js +33 -35
  386. package/lib/index.js.map +1 -1
  387. package/lib/lib/model.d.ts +3 -3
  388. package/lib/lib/model.d.ts.map +1 -1
  389. package/lib/lib/model.js +11 -27
  390. package/lib/lib/model.js.map +1 -1
  391. package/lib/model-source/glsp-diagram-server.d.ts +4 -6
  392. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  393. package/lib/model-source/glsp-diagram-server.js +63 -122
  394. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  395. package/lib/protocol-reexport.d.ts +45 -0
  396. package/lib/protocol-reexport.d.ts.map +1 -0
  397. package/lib/protocol-reexport.js +75 -0
  398. package/lib/protocol-reexport.js.map +1 -0
  399. package/lib/utils/argument-utils.d.ts +50 -0
  400. package/lib/utils/argument-utils.d.ts.map +1 -0
  401. package/lib/utils/argument-utils.js +110 -0
  402. package/lib/utils/argument-utils.js.map +1 -0
  403. package/lib/utils/html-utils.js +2 -2
  404. package/lib/utils/html-utils.js.map +1 -1
  405. package/lib/utils/layout-utils.d.ts +4 -3
  406. package/lib/utils/layout-utils.d.ts.map +1 -1
  407. package/lib/utils/layout-utils.js +5 -5
  408. package/lib/utils/layout-utils.js.map +1 -1
  409. package/lib/utils/marker.d.ts +1 -39
  410. package/lib/utils/marker.d.ts.map +1 -1
  411. package/lib/utils/marker.js +14 -61
  412. package/lib/utils/marker.js.map +1 -1
  413. package/lib/utils/smodel-util.d.ts +7 -17
  414. package/lib/utils/smodel-util.d.ts.map +1 -1
  415. package/lib/utils/smodel-util.js +18 -67
  416. package/lib/utils/smodel-util.js.map +1 -1
  417. package/lib/utils/viewpoint-util.d.ts +3 -2
  418. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  419. package/lib/utils/viewpoint-util.js +15 -30
  420. package/lib/utils/viewpoint-util.js.map +1 -1
  421. package/lib/views/base-view-module.d.ts +9 -0
  422. package/lib/views/base-view-module.d.ts.map +1 -0
  423. package/lib/views/base-view-module.js +59 -0
  424. package/lib/views/base-view-module.js.map +1 -0
  425. package/lib/views/compartments.d.ts +6 -0
  426. package/lib/views/compartments.d.ts.map +1 -0
  427. package/lib/views/compartments.js +43 -0
  428. package/lib/views/compartments.js.map +1 -0
  429. package/lib/views/glsp-edge-view.d.ts +27 -0
  430. package/lib/views/glsp-edge-view.d.ts.map +1 -0
  431. package/lib/views/glsp-edge-view.js +55 -0
  432. package/lib/views/glsp-edge-view.js.map +1 -0
  433. package/lib/{features/model-source-watcher/model-source-changed-action.d.ts → views/index.d.ts} +8 -10
  434. package/lib/views/index.d.ts.map +1 -0
  435. package/lib/views/index.js +34 -0
  436. package/lib/views/index.js.map +1 -0
  437. package/lib/views/issue-marker-view.d.ts +9 -0
  438. package/lib/views/issue-marker-view.d.ts.map +1 -0
  439. package/lib/views/issue-marker-view.js +68 -0
  440. package/lib/views/issue-marker-view.js.map +1 -0
  441. package/lib/views/rounded-corner-view.d.ts +13 -0
  442. package/lib/views/rounded-corner-view.d.ts.map +1 -0
  443. package/lib/views/rounded-corner-view.js +82 -0
  444. package/lib/views/rounded-corner-view.js.map +1 -0
  445. package/lib/views/rounded-corner.d.ts +38 -0
  446. package/lib/views/rounded-corner.d.ts.map +1 -0
  447. package/lib/views/rounded-corner.js +62 -0
  448. package/lib/views/rounded-corner.js.map +1 -0
  449. package/package.json +24 -32
  450. package/src/base/action-dispatcher.ts +7 -8
  451. package/src/base/actions/focus-change-action.ts +2 -2
  452. package/src/base/{args.ts → argumentable.ts} +3 -4
  453. package/src/base/auto-complete/auto-complete-actions.ts +2 -2
  454. package/src/base/auto-complete/auto-complete-widget.ts +66 -48
  455. package/src/base/auto-complete/validation-decorator.ts +21 -15
  456. package/src/base/command-stack.ts +4 -7
  457. package/src/base/container-modules.ts +112 -0
  458. package/src/base/di.config.ts +44 -27
  459. package/src/base/drag-aware-mouse-listener.ts +7 -8
  460. package/src/base/{editor-context.ts → editor-context-service.ts} +13 -40
  461. package/src/base/focus-tracker.ts +4 -6
  462. package/src/base/model/model-registry.ts +31 -0
  463. package/src/base/model/update-model-command.ts +14 -22
  464. package/src/base/model-initialization-constraint.ts +16 -11
  465. package/src/base/selection-clearing-mouse-listener.ts +4 -3
  466. package/src/base/tool-manager/glsp-tool-manager.ts +12 -14
  467. package/src/base/types.ts +23 -21
  468. package/src/{features/model-source-watcher/model-source-changed-action.ts → base/view/view-registry.ts} +15 -10
  469. package/src/features/change-bounds/model.ts +23 -13
  470. package/src/features/change-bounds/movement-restrictor.ts +28 -18
  471. package/src/features/change-bounds/snap.ts +6 -5
  472. package/src/features/command-palette/command-palette-tool.ts +4 -4
  473. package/src/features/command-palette/di.config.ts +7 -7
  474. package/src/features/command-palette/server-command-palette-provider.ts +16 -14
  475. package/src/features/context-menu/delete-element-context-menu.ts +10 -11
  476. package/src/features/context-menu/di.config.ts +10 -12
  477. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +8 -7
  478. package/src/features/context-menu/server-context-menu-provider.ts +13 -10
  479. package/src/features/copy-paste/copy-paste-context-menu.ts +66 -37
  480. package/src/features/copy-paste/copy-paste-handler.ts +30 -20
  481. package/src/features/copy-paste/di.config.ts +6 -7
  482. package/src/features/decoration/decoration-placer.ts +6 -15
  483. package/src/features/decoration/di.config.ts +4 -6
  484. package/src/features/edit-label/di.config.ts +5 -5
  485. package/src/features/edit-label/edit-label-tool.ts +4 -4
  486. package/src/features/edit-label/edit-label-validator.ts +18 -19
  487. package/src/features/hints/di.config.ts +6 -7
  488. package/src/features/hints/model.ts +7 -6
  489. package/src/features/hints/type-hints.ts +46 -113
  490. package/src/features/hover/di.config.ts +6 -7
  491. package/src/features/hover/hover.ts +11 -14
  492. package/src/features/layout/di.config.ts +32 -6
  493. package/src/features/layout/freeform-layout.ts +133 -0
  494. package/src/features/layout/layout-commands.spec.ts +104 -85
  495. package/src/features/layout/layout-commands.ts +65 -54
  496. package/src/features/layout/vbox-layout.ts +256 -0
  497. package/src/features/model-source-watcher/di.config.ts +5 -6
  498. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +16 -12
  499. package/src/features/mouse-tool/di.config.ts +4 -4
  500. package/src/features/mouse-tool/mouse-tool.ts +44 -32
  501. package/src/features/navigation/di.config.ts +6 -12
  502. package/src/features/navigation/navigation-action-handler.ts +46 -78
  503. package/src/features/navigation/navigation-target-resolver.spec.ts +6 -9
  504. package/src/features/navigation/navigation-target-resolver.ts +16 -94
  505. package/src/features/rank/model.ts +3 -3
  506. package/src/features/reconnect/model.ts +9 -11
  507. package/src/features/save/di.config.ts +4 -5
  508. package/src/features/save/model.ts +1 -1
  509. package/src/features/save/{save.ts → save-keylistener.ts} +4 -12
  510. package/src/features/select/di.config.ts +6 -6
  511. package/src/features/select/select-feedback-action.ts +6 -8
  512. package/src/features/select/select-mouse-listener.ts +2 -2
  513. package/src/features/select/selection-service.spec.ts +25 -19
  514. package/src/features/select/selection-service.ts +25 -22
  515. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +56 -39
  516. package/src/features/tool-feedback/creation-tool-feedback.ts +49 -24
  517. package/src/features/tool-feedback/css-feedback.ts +16 -13
  518. package/src/features/tool-feedback/di.config.ts +12 -15
  519. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +56 -35
  520. package/src/features/tool-feedback/feedback-action-dispatcher.ts +13 -14
  521. package/src/features/tool-feedback/marquee-tool-feedback.ts +12 -12
  522. package/src/features/tool-feedback/model.ts +2 -3
  523. package/src/features/tool-feedback/view.tsx +20 -13
  524. package/src/features/tool-palette/di.config.ts +5 -7
  525. package/src/features/tool-palette/palette-item.ts +5 -7
  526. package/src/features/tool-palette/tool-palette.ts +118 -110
  527. package/src/features/tools/base-glsp-tool.ts +12 -12
  528. package/src/features/tools/change-bounds-tool.ts +83 -53
  529. package/src/features/tools/delete-tool.ts +23 -20
  530. package/src/features/tools/di.config.ts +16 -17
  531. package/src/features/tools/edge-creation-tool.ts +20 -25
  532. package/src/features/tools/edge-edit-tool.ts +43 -46
  533. package/src/features/tools/marquee-behavior.spec.ts +175 -0
  534. package/src/features/tools/marquee-behavior.ts +158 -0
  535. package/src/features/tools/marquee-mouse-tool.ts +67 -118
  536. package/src/features/tools/marquee-tool.ts +6 -6
  537. package/src/features/tools/model.ts +1 -2
  538. package/src/features/tools/node-creation-tool.ts +16 -23
  539. package/src/features/tools/view.tsx +21 -15
  540. package/src/features/validation/di.config.ts +5 -5
  541. package/src/features/validation/issue-marker.ts +4 -5
  542. package/src/features/validation/marker-navigator.spec.ts +38 -33
  543. package/src/features/validation/marker-navigator.ts +39 -26
  544. package/src/features/validation/validate.ts +25 -59
  545. package/src/features/viewport/di.config.ts +4 -4
  546. package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
  547. package/src/index.ts +53 -38
  548. package/src/lib/model.ts +4 -4
  549. package/src/model-source/glsp-diagram-server.ts +19 -33
  550. package/src/protocol-reexport.ts +64 -0
  551. package/src/utils/argument-utils.ts +130 -0
  552. package/src/utils/layout-utils.ts +19 -11
  553. package/src/utils/marker.ts +8 -32
  554. package/src/utils/smodel-util.ts +28 -22
  555. package/src/utils/viewpoint-util.ts +5 -6
  556. package/src/views/base-view-module.ts +97 -0
  557. package/src/views/compartments.tsx +37 -0
  558. package/src/views/glsp-edge-view.tsx +79 -0
  559. package/src/views/index.ts +21 -0
  560. package/src/views/issue-marker-view.tsx +65 -0
  561. package/src/views/rounded-corner-view.tsx +103 -0
  562. package/src/views/rounded-corner.ts +87 -0
  563. package/lib/base/actions/context-actions.d.ts +0 -36
  564. package/lib/base/actions/context-actions.d.ts.map +0 -1
  565. package/lib/base/actions/context-actions.js +0 -51
  566. package/lib/base/actions/context-actions.js.map +0 -1
  567. package/lib/base/actions/edit-mode-action.d.ts +0 -13
  568. package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
  569. package/lib/base/actions/edit-mode-action.js +0 -56
  570. package/lib/base/actions/edit-mode-action.js.map +0 -1
  571. package/lib/base/actions/edit-validation-actions.d.ts +0 -78
  572. package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
  573. package/lib/base/actions/edit-validation-actions.js +0 -82
  574. package/lib/base/actions/edit-validation-actions.js.map +0 -1
  575. package/lib/base/actions/protocol-actions.d.ts +0 -41
  576. package/lib/base/actions/protocol-actions.d.ts.map +0 -1
  577. package/lib/base/actions/protocol-actions.js +0 -151
  578. package/lib/base/actions/protocol-actions.js.map +0 -1
  579. package/lib/base/args.d.ts.map +0 -1
  580. package/lib/base/args.js.map +0 -1
  581. package/lib/base/editor-context.d.ts +0 -46
  582. package/lib/base/editor-context.d.ts.map +0 -1
  583. package/lib/base/editor-context.js +0 -174
  584. package/lib/base/editor-context.js.map +0 -1
  585. package/lib/base/operations/operation.d.ts +0 -135
  586. package/lib/base/operations/operation.d.ts.map +0 -1
  587. package/lib/base/operations/operation.js +0 -231
  588. package/lib/base/operations/operation.js.map +0 -1
  589. package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
  590. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
  591. package/lib/features/copy-paste/copy-paste-actions.js +0 -68
  592. package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
  593. package/lib/features/decoration/view.d.ts +0 -8
  594. package/lib/features/decoration/view.d.ts.map +0 -1
  595. package/lib/features/decoration/view.js +0 -80
  596. package/lib/features/decoration/view.js.map +0 -1
  597. package/lib/features/hints/request-type-hints-action.d.ts +0 -32
  598. package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
  599. package/lib/features/hints/request-type-hints-action.js +0 -30
  600. package/lib/features/hints/request-type-hints-action.js.map +0 -1
  601. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
  602. package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
  603. package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
  604. package/lib/features/save/save.d.ts.map +0 -1
  605. package/lib/features/save/save.js +0 -62
  606. package/lib/features/save/save.js.map +0 -1
  607. package/lib/features/undo-redo/model.d.ts.map +0 -1
  608. package/lib/features/undo-redo/model.js +0 -22
  609. package/lib/features/undo-redo/model.js.map +0 -1
  610. package/lib/model-source/glsp-server-status.d.ts +0 -30
  611. package/lib/model-source/glsp-server-status.d.ts.map +0 -1
  612. package/lib/model-source/glsp-server-status.js +0 -61
  613. package/lib/model-source/glsp-server-status.js.map +0 -1
  614. package/lib/utils/array-utils.d.ts +0 -28
  615. package/lib/utils/array-utils.d.ts.map +0 -1
  616. package/lib/utils/array-utils.js +0 -61
  617. package/lib/utils/array-utils.js.map +0 -1
  618. package/src/base/actions/context-actions.ts +0 -43
  619. package/src/base/actions/edit-mode-action.ts +0 -33
  620. package/src/base/actions/edit-validation-actions.ts +0 -102
  621. package/src/base/actions/protocol-actions.ts +0 -82
  622. package/src/base/operations/operation.ts +0 -178
  623. package/src/features/copy-paste/copy-paste-actions.ts +0 -60
  624. package/src/features/decoration/view.tsx +0 -54
  625. package/src/features/hints/request-type-hints-action.ts +0 -36
  626. package/src/model-source/glsp-server-status.ts +0 -38
  627. package/src/utils/array-utils.ts +0 -55
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020 EclipseSource and others.
2
+ * Copyright (c) 2020-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,18 +13,19 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { AssertionError, expect } from "chai";
17
- import { Container, injectable } from "inversify";
18
- import { Action, defaultModule, SGraphFactory, SModelElementSchema, SModelRoot, TYPES } from "sprotty";
19
-
20
- import { GLSP_TYPES } from "../../base/types";
21
- import { IFeedbackActionDispatcher, IFeedbackEmitter } from "../tool-feedback/feedback-action-dispatcher";
22
- import { SelectFeedbackAction } from "./select-feedback-action";
23
- import { SelectionListener, SelectionService } from "./selection-service";
16
+ /* eslint-disable import/no-deprecated,no-unused-expressions */
17
+ import { Action } from '@eclipse-glsp/protocol';
18
+ import { AssertionError, expect } from 'chai';
19
+ import { Container, injectable } from 'inversify';
20
+ import { defaultModule, SGraphFactory, SModelElementSchema, SModelRoot, TYPES } from 'sprotty';
21
+ import { GLSP_TYPES } from '../../base/types';
22
+ import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
23
+ import { SelectFeedbackAction } from './select-feedback-action';
24
+ import { SelectionListener, SelectionService } from './selection-service';
24
25
 
25
26
  @injectable()
26
27
  class MockFeedbackActionDispatcher implements IFeedbackActionDispatcher {
27
- protected feedbackEmitters: Map<IFeedbackEmitter, Action[]> = new Map;
28
+ protected feedbackEmitters: Map<IFeedbackEmitter, Action[]> = new Map();
28
29
 
29
30
  registerFeedback(feedbackEmitter: IFeedbackEmitter, actions: Action[]): void {
30
31
  this.feedbackEmitters.set(feedbackEmitter, actions);
@@ -42,12 +43,12 @@ class MockFeedbackActionDispatcher implements IFeedbackActionDispatcher {
42
43
 
43
44
  getSingleFeedbackAction(): SelectFeedbackAction | undefined {
44
45
  const actions = this.getRegisteredFeedback();
45
- return actions.length === 1 ? actions[0] as SelectFeedbackAction : undefined;
46
+ return actions.length === 1 ? (actions[0] as SelectFeedbackAction) : undefined;
46
47
  }
47
48
  }
48
49
 
49
50
  class MockSelectionListener implements SelectionListener {
50
- private called: number = 0;
51
+ private called = 0;
51
52
  private root: SModelRoot;
52
53
  private selectedElements: string[] = [];
53
54
 
@@ -57,15 +58,15 @@ class MockSelectionListener implements SelectionListener {
57
58
  this.selectedElements = selectedElements;
58
59
  }
59
60
 
60
- getRoot() {
61
+ getRoot(): SModelRoot {
61
62
  return this.root;
62
63
  }
63
64
 
64
- getSelectedElements() {
65
+ getSelectedElements(): string[] {
65
66
  return this.selectedElements;
66
67
  }
67
68
 
68
- getCalled() {
69
+ getCalled(): number {
69
70
  return this.called;
70
71
  }
71
72
  }
@@ -332,12 +333,12 @@ describe('SelectionService', () => {
332
333
  });
333
334
  }
334
335
 
335
- function assertSelectionAndFeedback(expectedSelection: string[], expectedDeselection: string[]) {
336
+ function assertSelectionAndFeedback(expectedSelection: string[], expectedDeselection: string[]): void {
336
337
  assertSelectionService(expectedSelection);
337
338
  assertDispatchedFeedback(expectedSelection, expectedDeselection);
338
339
  }
339
340
 
340
- function assertSelectionService(expectedSelection: string[]) {
341
+ function assertSelectionService(expectedSelection: string[]): void {
341
342
  expect(selectionService.isSingleSelection()).to.equal(expectedSelection.length === 1);
342
343
  expect(selectionService.isMultiSelection()).to.equal(expectedSelection.length > 1);
343
344
  expect(selectionService.hasSelectedElements()).to.equal(expectedSelection.length > 0);
@@ -347,7 +348,7 @@ describe('SelectionService', () => {
347
348
  }
348
349
  }
349
350
 
350
- function assertDispatchedFeedback(expectedSelection: string[], expectedDeselection: string[]) {
351
+ function assertDispatchedFeedback(expectedSelection: string[], expectedDeselection: string[]): void {
351
352
  // a single feedback action reflects aggregated selection/deselection
352
353
  const hasFeedback = expectedSelection.length > 0 || expectedDeselection.length > 0;
353
354
  if (hasFeedback) {
@@ -362,7 +363,12 @@ describe('SelectionService', () => {
362
363
  }
363
364
  }
364
365
 
365
- function assertListener(listener: MockSelectionListener, expectedRoot: SModelRoot | undefined, expectedSelection: string[], expectedCalled: number) {
366
+ function assertListener(
367
+ listener: MockSelectionListener,
368
+ expectedRoot: SModelRoot | undefined,
369
+ expectedSelection: string[],
370
+ expectedCalled: number
371
+ ): void {
366
372
  expect(listener.getRoot()).to.equal(expectedRoot);
367
373
  expect(listener.getSelectedElements()).to.have.lengthOf(expectedSelection.length);
368
374
  expect(listener.getSelectedElements()).to.have.ordered.members(expectedSelection);
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2020 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,30 +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 { inject, injectable, multiInject, optional } from "inversify";
16
+ import { Action, distinctAdd, remove, SelectAction, SelectAllAction } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable, multiInject, optional } from 'inversify';
17
18
  import {
18
- Action,
19
19
  Command,
20
20
  CommandExecutionContext,
21
21
  ILogger,
22
22
  isSelectable,
23
23
  isSelected,
24
24
  SChildElement,
25
- SelectAction,
26
- SelectAllAction,
27
25
  SelectAllCommand as SprottySelectAllCommand,
28
26
  SelectCommand as SprottySelectCommand,
29
27
  SModelElement,
30
28
  SModelRoot,
31
29
  SParentElement,
32
30
  TYPES
33
- } from "sprotty";
34
-
35
- import { SModelRootListener } from "../../base/model/update-model-command";
36
- import { GLSP_TYPES } from "../../base/types";
37
- import { distinctAdd, remove } from "../../utils/array-utils";
38
- import { IFeedbackActionDispatcher } from "../tool-feedback/feedback-action-dispatcher";
39
- import { SelectFeedbackAction } from "./select-feedback-action";
31
+ } from 'sprotty';
32
+ import { SModelRootListener } from '../../base/model/update-model-command';
33
+ import { GLSP_TYPES } from '../../base/types';
34
+ import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
35
+ import { SelectFeedbackAction } from './select-feedback-action';
40
36
 
41
37
  export interface SelectionListener {
42
38
  selectionChanged(root: Readonly<SModelRoot>, selectedElements: string[]): void;
@@ -50,13 +46,13 @@ export class SelectionService implements SModelRootListener {
50
46
  @inject(GLSP_TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
51
47
  @inject(TYPES.ILogger) protected logger: ILogger;
52
48
 
53
- constructor(@multiInject(GLSP_TYPES.SelectionListener) @optional() protected selectionListeners: SelectionListener[] = []) { }
49
+ constructor(@multiInject(GLSP_TYPES.SelectionListener) @optional() protected selectionListeners: SelectionListener[] = []) {}
54
50
 
55
- register(selectionListener: SelectionListener) {
51
+ register(selectionListener: SelectionListener): void {
56
52
  distinctAdd(this.selectionListeners, selectionListener);
57
53
  }
58
54
 
59
- deregister(selectionListener: SelectionListener) {
55
+ deregister(selectionListener: SelectionListener): void {
60
56
  remove(this.selectionListeners, selectionListener);
61
57
  }
62
58
 
@@ -64,7 +60,7 @@ export class SelectionService implements SModelRootListener {
64
60
  this.updateSelection(root, [], []);
65
61
  }
66
62
 
67
- updateSelection(root: Readonly<SModelRoot>, select: string[], deselect: string[]) {
63
+ updateSelection(root: Readonly<SModelRoot>, select: string[], deselect: string[]): void {
68
64
  if (root === undefined && select.length === 0 && deselect.length === 0) {
69
65
  return;
70
66
  }
@@ -99,7 +95,9 @@ export class SelectionService implements SModelRootListener {
99
95
  }
100
96
 
101
97
  // only send out changes if there actually are changes, i.e., the root or the selected elements changed
102
- const selectionChanged = prevSelectedElementIDs.size !== this.selectedElementIDs.size || ![...prevSelectedElementIDs].every(value => this.selectedElementIDs.has(value));
98
+ const selectionChanged =
99
+ prevSelectedElementIDs.size !== this.selectedElementIDs.size ||
100
+ ![...prevSelectedElementIDs].every(value => this.selectedElementIDs.has(value));
103
101
  if (selectionChanged) {
104
102
  // aggregate to feedback action handling all elements as only the last feedback is restored
105
103
  this.dispatchFeedback([new SelectFeedbackAction([...this.selectedElementIDs], [...deselectedElementIDs])]);
@@ -112,11 +110,11 @@ export class SelectionService implements SModelRootListener {
112
110
  }
113
111
  }
114
112
 
115
- dispatchFeedback(actions: Action[]) {
113
+ dispatchFeedback(actions: Action[]): void {
116
114
  this.feedbackDispatcher.registerFeedback(this, actions);
117
115
  }
118
116
 
119
- notifyListeners(root: SModelRoot, selectedElementIDs: Set<string>) {
117
+ notifyListeners(root: SModelRoot, selectedElementIDs: Set<string>): void {
120
118
  this.selectionListeners.forEach(listener => listener.selectionChanged(root, Array.from(selectedElementIDs)));
121
119
  }
122
120
 
@@ -149,7 +147,6 @@ export class SelectionService implements SModelRootListener {
149
147
  }
150
148
  }
151
149
 
152
-
153
150
  @injectable()
154
151
  export class SelectCommand extends Command {
155
152
  static readonly KIND = SprottySelectCommand.KIND;
@@ -157,7 +154,10 @@ export class SelectCommand extends Command {
157
154
  protected selected: SModelElement[] = [];
158
155
  protected deselected: SModelElement[] = [];
159
156
 
160
- constructor(@inject(TYPES.Action) public action: SelectAction, @inject(GLSP_TYPES.SelectionService) public selectionService: SelectionService) {
157
+ constructor(
158
+ @inject(TYPES.Action) public action: SelectAction,
159
+ @inject(GLSP_TYPES.SelectionService) public selectionService: SelectionService
160
+ ) {
161
161
  super();
162
162
  }
163
163
 
@@ -198,7 +198,10 @@ export class SelectAllCommand extends Command {
198
198
  static readonly KIND = SprottySelectAllCommand.KIND;
199
199
  protected previousSelection: Map<string, boolean> = new Map<string, boolean>();
200
200
 
201
- constructor(@inject(TYPES.Action) public action: SelectAllAction, @inject(GLSP_TYPES.SelectionService) public selectionService: SelectionService) {
201
+ constructor(
202
+ @inject(TYPES.Action) public action: SelectAllAction,
203
+ @inject(GLSP_TYPES.SelectionService) public selectionService: SelectionService
204
+ ) {
202
205
  super();
203
206
  }
204
207
 
@@ -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,10 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable } from "inversify";
17
- import { VNode } from "snabbdom/vnode";
16
+ import { Action, Point } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable } from 'inversify';
18
+ import { VNode } from 'snabbdom';
18
19
  import {
19
- Action,
20
20
  CommandExecutionContext,
21
21
  CommandReturn,
22
22
  ElementMove,
@@ -26,38 +26,35 @@ import {
26
26
  isViewport,
27
27
  MouseListener,
28
28
  MoveAction,
29
- Point,
29
+ SChildElement,
30
30
  SModelElement,
31
31
  SModelRoot,
32
32
  TYPES
33
- } from "sprotty";
34
-
35
- import { isNotUndefined } from "../../utils/smodel-util";
36
- import { addResizeHandles, isResizable, removeResizeHandles, SResizeHandle } from "../change-bounds/model";
37
- import { createMovementRestrictionFeedback, removeMovementRestrictionFeedback } from "../change-bounds/movement-restrictor";
38
- import { ChangeBoundsTool } from "../tools/change-bounds-tool";
39
- import { FeedbackCommand } from "./model";
33
+ } from 'sprotty';
34
+ import { isNotUndefined } from '../../utils/smodel-util';
35
+ import { addResizeHandles, isResizable, removeResizeHandles, SResizeHandle } from '../change-bounds/model';
36
+ import { createMovementRestrictionFeedback, removeMovementRestrictionFeedback } from '../change-bounds/movement-restrictor';
37
+ import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
38
+ import { ChangeBoundsTool } from '../tools/change-bounds-tool';
39
+ import { FeedbackCommand } from './model';
40
40
 
41
41
  export class ShowChangeBoundsToolResizeFeedbackAction implements Action {
42
- constructor(readonly elementId?: string, public readonly kind: string = ShowChangeBoundsToolResizeFeedbackCommand.KIND) { }
42
+ constructor(readonly elementId?: string, public readonly kind: string = ShowChangeBoundsToolResizeFeedbackCommand.KIND) {}
43
43
  }
44
44
 
45
45
  export class HideChangeBoundsToolResizeFeedbackAction implements Action {
46
- constructor(public readonly kind: string = HideChangeBoundsToolResizeFeedbackCommand.KIND) { }
46
+ constructor(public readonly kind: string = HideChangeBoundsToolResizeFeedbackCommand.KIND) {}
47
47
  }
48
48
 
49
49
  @injectable()
50
50
  export class ShowChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
51
- static readonly KIND = "showChangeBoundsToolResizeFeedback";
51
+ static readonly KIND = 'showChangeBoundsToolResizeFeedback';
52
52
 
53
53
  @inject(TYPES.Action) protected action: ShowChangeBoundsToolResizeFeedbackAction;
54
54
 
55
55
  execute(context: CommandExecutionContext): CommandReturn {
56
56
  const index = context.root.index;
57
- index
58
- .all()
59
- .filter(isResizable)
60
- .forEach(removeResizeHandles);
57
+ index.all().filter(isResizable).forEach(removeResizeHandles);
61
58
 
62
59
  if (isNotUndefined(this.action.elementId)) {
63
60
  const resizeElement = index.getById(this.action.elementId);
@@ -71,16 +68,13 @@ export class ShowChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
71
68
 
72
69
  @injectable()
73
70
  export class HideChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
74
- static readonly KIND = "hideChangeBoundsToolResizeFeedback";
71
+ static readonly KIND = 'hideChangeBoundsToolResizeFeedback';
75
72
 
76
73
  @inject(TYPES.Action) protected action: HideChangeBoundsToolResizeFeedbackAction;
77
74
 
78
75
  execute(context: CommandExecutionContext): CommandReturn {
79
76
  const index = context.root.index;
80
- index
81
- .all()
82
- .filter(isResizable)
83
- .forEach(removeResizeHandles);
77
+ index.all().filter(isResizable).forEach(removeResizeHandles);
84
78
  return context.root;
85
79
  }
86
80
  }
@@ -116,22 +110,27 @@ export class FeedbackMoveMouseListener extends MouseListener {
116
110
 
117
111
  mouseMove(target: SModelElement, event: MouseEvent): Action[] {
118
112
  const result: Action[] = [];
119
- if (event.buttons === 0) this.mouseUp(target, event);
120
- else if (this.startDragPosition) {
113
+ if (event.buttons === 0) {
114
+ this.mouseUp(target, event);
115
+ } else if (this.startDragPosition) {
121
116
  if (this.elementId2startPos.size === 0) {
122
117
  this.collectStartPositions(target.root);
123
118
  }
124
119
  this.hasDragged = true;
125
120
  const moveAction = this.getElementMoves(target, event, false);
126
- if (moveAction) result.push(moveAction);
121
+ if (moveAction) {
122
+ result.push(moveAction);
123
+ result.push(cursorFeedbackAction(CursorCSS.MOVE));
124
+ }
127
125
  }
128
126
  return result;
129
127
  }
130
128
 
131
- protected collectStartPositions(root: SModelRoot) {
132
- root.index
133
- .all()
134
- .filter(element => isSelectable(element) && element.selected)
129
+ protected collectStartPositions(root: SModelRoot): void {
130
+ const selectedElements = root.index.all().filter(element => isSelectable(element) && element.selected);
131
+ const elementsSet = new Set(selectedElements);
132
+ selectedElements
133
+ .filter(element => !this.isChildOfSelected(elementsSet, element))
135
134
  .forEach(element => {
136
135
  if (isMoveable(element)) {
137
136
  this.elementId2startPos.set(element.id, element.position);
@@ -139,8 +138,20 @@ export class FeedbackMoveMouseListener extends MouseListener {
139
138
  });
140
139
  }
141
140
 
141
+ protected isChildOfSelected(selectedElements: Set<SModelElement>, element: SModelElement): boolean {
142
+ while (element instanceof SChildElement) {
143
+ element = element.parent;
144
+ if (selectedElements.has(element)) {
145
+ return true;
146
+ }
147
+ }
148
+ return false;
149
+ }
150
+
142
151
  protected getElementMoves(target: SModelElement, event: MouseEvent, isFinished: boolean): MoveAction | undefined {
143
- if (!this.startDragPosition) return undefined;
152
+ if (!this.startDragPosition) {
153
+ return undefined;
154
+ }
144
155
  const elementMoves: ElementMove[] = [];
145
156
  const viewport = findParentByFeature(target, isViewport);
146
157
  const zoom = viewport ? viewport.zoom : 1;
@@ -173,12 +184,14 @@ export class FeedbackMoveMouseListener extends MouseListener {
173
184
  }
174
185
  }
175
186
  });
176
- if (elementMoves.length > 0)
187
+ if (elementMoves.length > 0) {
177
188
  return new MoveAction(elementMoves, false, isFinished);
178
- else return undefined;
189
+ } else {
190
+ return undefined;
191
+ }
179
192
  }
180
193
 
181
- protected validateMove(startPostion: Point, toPosition: Point, element: SModelElement, isFinished: boolean) {
194
+ protected validateMove(startPostion: Point, toPosition: Point, element: SModelElement, isFinished: boolean): Point {
182
195
  let newPosition = toPosition;
183
196
  if (this.tool.movementRestrictor) {
184
197
  const valid = this.tool.movementRestrictor.validate(toPosition, element);
@@ -199,13 +212,17 @@ export class FeedbackMoveMouseListener extends MouseListener {
199
212
  }
200
213
 
201
214
  protected snap(position: Point, element: SModelElement, isSnap: boolean): Point {
202
- if (isSnap && this.tool.snapper) return this.tool.snapper.snap(position, element);
203
- else return position;
215
+ if (isSnap && this.tool.snapper) {
216
+ return this.tool.snapper.snap(position, element);
217
+ } else {
218
+ return position;
219
+ }
204
220
  }
205
221
 
206
222
  mouseEnter(target: SModelElement, event: MouseEvent): Action[] {
207
- if (target instanceof SModelRoot && event.buttons === 0)
223
+ if (target instanceof SModelRoot && event.buttons === 0 && !this.startDragPosition) {
208
224
  this.mouseUp(target, event);
225
+ }
209
226
  return [];
210
227
  }
211
228
 
@@ -219,7 +236,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
219
236
  if (this.tool.movementRestrictor) {
220
237
  this.tool.deregisterFeedback([removeMovementRestrictionFeedback(target, this.tool.movementRestrictor)], this);
221
238
  }
222
-
239
+ result.push(cursorFeedbackAction(CursorCSS.DEFAULT));
223
240
  }
224
241
  this.hasDragged = false;
225
242
  this.startDragPosition = undefined;
@@ -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,9 +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 { inject, injectable } from "inversify";
16
+ import { Action, Point } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable } from 'inversify';
17
18
  import {
18
- Action,
19
+ add,
19
20
  AnchorComputerRegistry,
20
21
  center,
21
22
  CommandExecutionContext,
@@ -36,18 +37,18 @@ import {
36
37
  SModelRoot,
37
38
  SRoutableElement,
38
39
  TYPES
39
- } from "sprotty";
40
-
41
- import { isRoutable } from "../../utils/smodel-util";
42
- import { getAbsolutePosition, toAbsolutePosition } from "../../utils/viewpoint-util";
43
- import { FeedbackCommand } from "./model";
40
+ } from 'sprotty';
41
+ import { isRoutable } from '../../utils/smodel-util';
42
+ import { getAbsolutePosition, toAbsoluteBounds, toAbsolutePosition } from '../../utils/viewpoint-util';
43
+ import { FeedbackCommand } from './model';
44
44
 
45
45
  export class DrawFeedbackEdgeAction implements Action {
46
46
  constructor(
47
47
  public readonly elementTypeId: string,
48
48
  public readonly sourceId: string,
49
49
  public readonly edgeSchema?: SEdgeSchema,
50
- public readonly kind: string = DrawFeedbackEdgeCommand.KIND) { }
50
+ public readonly kind: string = DrawFeedbackEdgeCommand.KIND
51
+ ) {}
51
52
  }
52
53
 
53
54
  @injectable()
@@ -66,7 +67,7 @@ export class DrawFeedbackEdgeCommand extends FeedbackCommand {
66
67
  }
67
68
 
68
69
  export class RemoveFeedbackEdgeAction implements Action {
69
- constructor(public readonly kind: string = RemoveFeedbackEdgeCommand.KIND) { }
70
+ constructor(public readonly kind: string = RemoveFeedbackEdgeCommand.KIND) {}
70
71
  }
71
72
 
72
73
  @injectable()
@@ -81,10 +82,12 @@ export class RemoveFeedbackEdgeCommand extends FeedbackCommand {
81
82
 
82
83
  export class FeedbackEdgeEnd extends SDanglingAnchor {
83
84
  static readonly TYPE = 'feedback-edge-end';
84
- constructor(readonly sourceId: string,
85
+ constructor(
86
+ readonly sourceId: string,
85
87
  readonly elementTypeId: string,
86
88
  public feedbackEdge: SRoutableElement | undefined = undefined,
87
- public readonly type: string = FeedbackEdgeEnd.TYPE) {
89
+ public readonly type: string = FeedbackEdgeEnd.TYPE
90
+ ) {
88
91
  super();
89
92
  }
90
93
  }
@@ -103,12 +106,12 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
103
106
 
104
107
  const edge = edgeEnd.feedbackEdge;
105
108
  const position = getAbsolutePosition(edgeEnd, event);
106
- const endAtMousePosition = findChildrenAtPosition(target.root, position)
107
- .find(element => isConnectable(element) && element.canConnect(edge, 'target'));
109
+ const endAtMousePosition = findChildrenAtPosition(target.root, position).find(
110
+ element => isConnectable(element) && element.canConnect(edge, 'target')
111
+ );
108
112
 
109
113
  if (endAtMousePosition instanceof SConnectableElement && edge.source && isBoundsAware(edge.source)) {
110
- const anchorComputer = this.anchorRegistry.get(PolylineEdgeRouter.KIND, endAtMousePosition.anchorKind);
111
- const anchor = anchorComputer.getAnchor(endAtMousePosition, center(edge.source.bounds));
114
+ const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.source.bounds));
112
115
  if (euclideanDistance(anchor, edgeEnd.position) > 1) {
113
116
  return [new MoveAction([{ elementId: edgeEnd.id, toPosition: anchor }], false)];
114
117
  }
@@ -118,6 +121,21 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
118
121
 
119
122
  return [];
120
123
  }
124
+
125
+ protected computeAbsoluteAnchor(element: SConnectableElement, referencePoint: Point, offset?: number): Point {
126
+ const anchorComputer = this.anchorRegistry.get(PolylineEdgeRouter.KIND, element.anchorKind);
127
+ let anchor = anchorComputer.getAnchor(element, referencePoint, offset);
128
+ // The anchor is computed in the local coordinate system of the element.
129
+ // If the element is a nested child element we have to add the absolute position of its parent to the anchor.
130
+ if (element.parent !== element.root) {
131
+ const parent = findParentByFeature(element.parent, isBoundsAware);
132
+ if (parent) {
133
+ const absoluteParentPosition = toAbsoluteBounds(parent);
134
+ anchor = add(absoluteParentPosition, anchor);
135
+ }
136
+ }
137
+ return anchor;
138
+ }
121
139
  }
122
140
 
123
141
  export function feedbackEdgeId(root: SModelRoot): string {
@@ -128,12 +146,17 @@ export function feedbackEdgeEndId(root: SModelRoot): string {
128
146
  return root.id + '_feedback_anchor';
129
147
  }
130
148
 
131
- export const defaultFeedbackEdgeSchema: SEdgeSchema = <SEdgeSchema>{
132
- cssClasses: ["feedback-edge"],
149
+ export const defaultFeedbackEdgeSchema: SEdgeSchema = {
150
+ cssClasses: ['feedback-edge'],
133
151
  opacity: 0.3
134
- };
135
-
136
- export function drawFeedbackEdge(context: CommandExecutionContext, sourceId: string, elementTypeId: string, feedbackEdgeSchema: SEdgeSchema) {
152
+ } as SEdgeSchema;
153
+
154
+ export function drawFeedbackEdge(
155
+ context: CommandExecutionContext,
156
+ sourceId: string,
157
+ elementTypeId: string,
158
+ feedbackEdgeSchema: SEdgeSchema
159
+ ): void {
137
160
  const root = context.root;
138
161
  const sourceChild = root.index.getById(sourceId);
139
162
  if (!sourceChild) {
@@ -162,11 +185,13 @@ export function drawFeedbackEdge(context: CommandExecutionContext, sourceId: str
162
185
  }
163
186
  }
164
187
 
165
- export function removeFeedbackEdge(root: SModelRoot) {
188
+ export function removeFeedbackEdge(root: SModelRoot): void {
166
189
  const feedbackEdge = root.index.getById(feedbackEdgeId(root));
167
190
  const feedbackEdgeEnd = root.index.getById(feedbackEdgeEndId(root));
168
- if (feedbackEdge instanceof SChildElement)
191
+ if (feedbackEdge instanceof SChildElement) {
169
192
  root.remove(feedbackEdge);
170
- if (feedbackEdgeEnd instanceof SChildElement)
193
+ }
194
+ if (feedbackEdgeEnd instanceof SChildElement) {
171
195
  root.remove(feedbackEdgeEnd);
196
+ }
172
197
  }
@@ -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,12 +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 { inject, injectable } from "inversify";
17
- import { Action, CommandExecutionContext, SModelElement, SModelRoot, TYPES } from "sprotty";
18
-
19
- import { isStringArray } from "../../utils/array-utils";
20
- import { addCssClasses, removeCssClasses } from "../../utils/smodel-util";
21
- import { FeedbackCommand } from "./model";
16
+ import { Action, isStringArray } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable } from 'inversify';
18
+ import { CommandExecutionContext, SModelElement, SModelRoot, TYPES } from 'sprotty';
19
+ import { addCssClasses, removeCssClasses } from '../../utils/smodel-util';
20
+ import { FeedbackCommand } from './model';
22
21
 
23
22
  export class ModifyCSSFeedbackAction implements Action {
24
23
  readonly elementIds?: string[];
@@ -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',
@@ -76,9 +77,11 @@ export enum CursorCSS {
76
77
  EDGE_CREATION_TARGET = 'edge-creation-select-target-mode',
77
78
  EDGE_RECONNECT = 'edge-reconnect-select-target-mode',
78
79
  OPERATION_NOT_ALLOWED = 'edge-modification-not-allowed-mode',
79
- ELEMENT_DELETION = "element-deletion-mode",
80
- RESIZE = "resize-mode",
81
- MARQUEE = "marquee-mode"
80
+ ELEMENT_DELETION = 'element-deletion-mode',
81
+ RESIZE_NESW = 'resize-nesw-mode',
82
+ RESIZE_NWSE = 'resize-nwse-mode',
83
+ MOVE = 'move-mode',
84
+ MARQUEE = 'marquee-mode'
82
85
  }
83
86
 
84
87
  export function cursorFeedbackAction(cursorCss?: CursorCSS): ModifyCSSFeedbackAction {
@@ -89,10 +92,10 @@ export function cursorFeedbackAction(cursorCss?: CursorCSS): ModifyCSSFeedbackAc
89
92
  return new ModifyCSSFeedbackAction(undefined, addCss, Object.values(CursorCSS));
90
93
  }
91
94
 
92
- export function applyCssClasses(element: SModelElement, ...classes: string[]) {
95
+ export function applyCssClasses(element: SModelElement, ...classes: string[]): ModifyCSSFeedbackAction {
93
96
  return new ModifyCSSFeedbackAction([element], classes, []);
94
97
  }
95
98
 
96
- export function deleteCssClasses(element: SModelElement, ...classes: string[]) {
99
+ export function deleteCssClasses(element: SModelElement, ...classes: string[]): ModifyCSSFeedbackAction {
97
100
  return new ModifyCSSFeedbackAction([element], [], classes);
98
101
  }