@eclipse-glsp/client 0.9.0-next.f54fd689 → 0.9.0

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 (625) hide show
  1. package/LICENSE +642 -277
  2. package/README.md +4 -2
  3. package/css/command-palette.css +9 -5
  4. package/css/decoration.css +3 -2
  5. package/css/glsp-sprotty.css +20 -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/{features/model-source-watcher/model-source-changed-action.d.ts → base/actions/focus-change-action.d.ts} +7 -7
  12. package/lib/base/actions/focus-change-action.d.ts.map +1 -0
  13. package/lib/base/actions/focus-change-action.js +16 -0
  14. package/lib/base/actions/focus-change-action.js.map +1 -0
  15. package/lib/base/argumentable.d.ts +22 -0
  16. package/lib/base/argumentable.d.ts.map +1 -0
  17. package/lib/base/argumentable.js +8 -0
  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 +12 -12
  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 +52 -31
  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/{features/undo-redo/model.d.ts → base/focus-tracker.d.ts} +10 -12
  51. package/lib/base/focus-tracker.d.ts.map +1 -0
  52. package/lib/base/focus-tracker.js +50 -0
  53. package/lib/base/focus-tracker.js.map +1 -0
  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 +9 -7
  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 +2 -2
  174. package/lib/features/layout/di.config.d.ts.map +1 -1
  175. package/lib/features/layout/di.config.js +11 -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 -8
  238. package/lib/features/save/save-keylistener.d.ts.map +1 -0
  239. package/lib/{utils/array-utils.js → features/save/save-keylistener.js} +14 -19
  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 +24 -5
  266. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  267. package/lib/features/tool-feedback/css-feedback.js +40 -82
  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 -24
  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 +48 -0
  282. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -0
  283. package/lib/features/tool-feedback/marquee-tool-feedback.js +96 -0
  284. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -0
  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 +23 -6
  301. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  302. package/lib/features/tool-palette/tool-palette.js +229 -286
  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 +5 -16
  317. package/lib/features/tools/di.config.d.ts.map +1 -1
  318. package/lib/features/tools/di.config.js +26 -13
  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/base/args.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -2
  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 +48 -0
  337. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -0
  338. package/lib/features/tools/marquee-mouse-tool.js +148 -0
  339. package/lib/features/tools/marquee-mouse-tool.js.map +1 -0
  340. package/lib/features/tools/marquee-tool.d.ts +30 -0
  341. package/lib/features/tools/marquee-tool.d.ts.map +1 -0
  342. package/lib/features/tools/marquee-tool.js +54 -0
  343. package/lib/features/tools/marquee-tool.js.map +1 -0
  344. package/lib/features/tools/model.d.ts +22 -0
  345. package/lib/features/tools/model.d.ts.map +1 -0
  346. package/lib/features/tools/model.js +24 -0
  347. package/lib/features/tools/model.js.map +1 -0
  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 +7 -0
  353. package/lib/features/tools/view.d.ts.map +1 -0
  354. package/lib/features/tools/view.js +40 -0
  355. package/lib/features/tools/view.js.map +1 -0
  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/{base/args.d.ts → features/viewport/di.config.d.ts} +5 -5
  376. package/lib/features/viewport/di.config.d.ts.map +1 -0
  377. package/lib/features/viewport/di.config.js +34 -0
  378. package/lib/features/viewport/di.config.js.map +1 -0
  379. package/{src/features/model-source-watcher/model-source-changed-action.ts → lib/features/viewport/glsp-scroll-mouse-listener.d.ts} +8 -11
  380. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -0
  381. package/lib/features/viewport/glsp-scroll-mouse-listener.js +39 -0
  382. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -0
  383. package/lib/index.d.ts +37 -35
  384. package/lib/index.d.ts.map +1 -1
  385. package/lib/index.js +39 -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/views/index.d.ts +22 -0
  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 +27 -34
  450. package/src/base/action-dispatcher.ts +7 -8
  451. package/src/{utils/array-utils.ts → base/actions/focus-change-action.ts} +8 -16
  452. package/src/{features/undo-redo/model.ts → base/argumentable.ts} +7 -8
  453. package/src/base/auto-complete/auto-complete-actions.ts +2 -2
  454. package/src/base/auto-complete/auto-complete-widget.ts +73 -57
  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 +47 -25
  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 +48 -0
  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/base/view/view-registry.ts +31 -0
  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 +7 -7
  491. package/src/features/hover/hover.ts +11 -14
  492. package/src/features/layout/di.config.ts +10 -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 -8
  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 +19 -14
  518. package/src/features/tool-feedback/di.config.ts +15 -14
  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 +103 -0
  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 +126 -107
  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 +22 -11
  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 +153 -0
  536. package/src/features/tools/marquee-tool.ts +51 -0
  537. package/src/features/tools/model.ts +22 -0
  538. package/src/features/tools/node-creation-tool.ts +18 -22
  539. package/src/features/tools/view.tsx +44 -0
  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 +47 -0
  546. package/src/features/viewport/glsp-scroll-mouse-listener.ts +41 -0
  547. package/src/index.ts +57 -37
  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/{lib/utils/array-utils.d.ts → src/views/index.ts} +7 -4
  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 +0 -3
  581. package/lib/base/args.js.map +0 -1
  582. package/lib/base/editor-context.d.ts +0 -46
  583. package/lib/base/editor-context.d.ts.map +0 -1
  584. package/lib/base/editor-context.js +0 -174
  585. package/lib/base/editor-context.js.map +0 -1
  586. package/lib/base/operations/operation.d.ts +0 -129
  587. package/lib/base/operations/operation.d.ts.map +0 -1
  588. package/lib/base/operations/operation.js +0 -201
  589. package/lib/base/operations/operation.js.map +0 -1
  590. package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
  591. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
  592. package/lib/features/copy-paste/copy-paste-actions.js +0 -68
  593. package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
  594. package/lib/features/decoration/view.d.ts +0 -8
  595. package/lib/features/decoration/view.d.ts.map +0 -1
  596. package/lib/features/decoration/view.js +0 -80
  597. package/lib/features/decoration/view.js.map +0 -1
  598. package/lib/features/hints/request-type-hints-action.d.ts +0 -32
  599. package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
  600. package/lib/features/hints/request-type-hints-action.js +0 -30
  601. package/lib/features/hints/request-type-hints-action.js.map +0 -1
  602. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
  603. package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
  604. package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
  605. package/lib/features/save/save.d.ts.map +0 -1
  606. package/lib/features/save/save.js +0 -57
  607. package/lib/features/save/save.js.map +0 -1
  608. package/lib/features/undo-redo/model.d.ts.map +0 -1
  609. package/lib/features/undo-redo/model.js +0 -22
  610. package/lib/features/undo-redo/model.js.map +0 -1
  611. package/lib/model-source/glsp-server-status.d.ts +0 -30
  612. package/lib/model-source/glsp-server-status.d.ts.map +0 -1
  613. package/lib/model-source/glsp-server-status.js +0 -61
  614. package/lib/model-source/glsp-server-status.js.map +0 -1
  615. package/lib/utils/array-utils.d.ts.map +0 -1
  616. package/lib/utils/array-utils.js.map +0 -1
  617. package/src/base/actions/context-actions.ts +0 -43
  618. package/src/base/actions/edit-mode-action.ts +0 -33
  619. package/src/base/actions/edit-validation-actions.ts +0 -102
  620. package/src/base/actions/protocol-actions.ts +0 -82
  621. package/src/base/operations/operation.ts +0 -148
  622. package/src/features/copy-paste/copy-paste-actions.ts +0 -60
  623. package/src/features/decoration/view.tsx +0 -54
  624. package/src/features/hints/request-type-hints-action.ts +0 -36
  625. package/src/model-source/glsp-server-status.ts +0 -38
@@ -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,19 +13,17 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import "mocha";
17
- import "reflect-metadata";
18
-
19
- import { expect } from "chai";
20
- import { Container } from "inversify";
16
+ /* eslint-disable import/no-deprecated,no-unused-expressions */
17
+ import { Action, Bounds, ChangeBoundsOperation, ElementAndBounds } from '@eclipse-glsp/protocol';
18
+ import { expect } from 'chai';
19
+ import { Container } from 'inversify';
20
+ import 'mocha';
21
+ import 'reflect-metadata';
21
22
  import {
22
- Action,
23
23
  AnimationFrameSyncer,
24
- Bounds,
25
24
  CommandExecutionContext,
26
25
  ConsoleLogger,
27
26
  defaultModule,
28
- ElementAndBounds,
29
27
  ElementMove,
30
28
  FeatureSet,
31
29
  IActionDispatcher,
@@ -39,13 +37,11 @@ import {
39
37
  SGraphFactory,
40
38
  SModelRoot,
41
39
  TYPES
42
- } from "sprotty";
43
-
44
- import { ChangeBoundsOperation } from "../../base/operations/operation";
45
- import { GLSP_TYPES } from "../../base/types";
46
- import { resizeFeature } from "../change-bounds/model";
47
- import { SelectionService } from "../select/selection-service";
48
- import { FeedbackActionDispatcher } from "../tool-feedback/feedback-action-dispatcher";
40
+ } from 'sprotty';
41
+ import { GLSP_TYPES } from '../../base/types';
42
+ import { resizeFeature } from '../change-bounds/model';
43
+ import { SelectionService } from '../select/selection-service';
44
+ import { FeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
49
45
  import {
50
46
  AlignElementsAction,
51
47
  AlignElementsCommand,
@@ -54,10 +50,10 @@ import {
54
50
  ResizeDimension,
55
51
  ResizeElementsAction,
56
52
  ResizeElementsCommand
57
- } from "./layout-commands";
53
+ } from './layout-commands';
58
54
 
59
55
  class MockActionDispatcher implements IActionDispatcher {
60
- constructor(public dispatchedActions: Action[] = []) { }
56
+ constructor(public dispatchedActions: Action[] = []) {}
61
57
  dispatch(action: Action): Promise<void> {
62
58
  this.dispatchedActions.push(action);
63
59
  return Promise.resolve();
@@ -67,7 +63,7 @@ class MockActionDispatcher implements IActionDispatcher {
67
63
  return Promise.resolve();
68
64
  }
69
65
  request<Res extends ResponseAction>(action: RequestAction<Res>): Promise<Res> {
70
- throw new Error("Method not implemented.");
66
+ throw new Error('Method not implemented.');
71
67
  }
72
68
  }
73
69
 
@@ -83,20 +79,23 @@ const selectionService = container.get<SelectionService>(GLSP_TYPES.SelectionSer
83
79
  const actionDispatcher = new MockActionDispatcher();
84
80
 
85
81
  const node1 = {
86
- id: 'node1', type: 'node:circle',
82
+ id: 'node1',
83
+ type: 'node:circle',
87
84
  selected: true
88
85
  };
89
86
  const node2 = {
90
- id: 'node2', type: 'node:circle',
87
+ id: 'node2',
88
+ type: 'node:circle',
91
89
  selected: true
92
90
  };
93
91
  const node3 = {
94
- id: 'node3', type: 'node:circle',
92
+ id: 'node3',
93
+ type: 'node:circle',
95
94
  selected: true
96
95
  };
97
96
  const model = createModel();
98
97
 
99
- function createModel() {
98
+ function createModel(): SModelRoot {
100
99
  const root = graphFactory.createRoot({
101
100
  id: 'model1',
102
101
  type: 'graph',
@@ -106,7 +105,7 @@ function createModel() {
106
105
  return root;
107
106
  }
108
107
 
109
- function applyFeature(element: SChildElement, feature: symbol) {
108
+ function applyFeature(element: SChildElement, feature: symbol): void {
110
109
  (element.features as FeatureSet & Set<symbol>).add(feature);
111
110
  }
112
111
 
@@ -122,7 +121,6 @@ const context: CommandExecutionContext = {
122
121
  const defaultSize = { height: 10, width: 10 };
123
122
 
124
123
  describe('AlignElementsCommand', () => {
125
-
126
124
  it('should align all elements left', () => {
127
125
  actionDispatcher.dispatchedActions = [];
128
126
  const newModel = initModel([
@@ -134,11 +132,13 @@ describe('AlignElementsCommand', () => {
134
132
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
135
133
  command.execute(newContext(newModel));
136
134
 
137
- assertAllBounds(new Map([
138
- ["node1", { x: 111, y: 111, width: defaultSize.width, height: defaultSize.height }],
139
- ["node2", { x: 111, y: 222, width: defaultSize.width, height: defaultSize.height }],
140
- ["node3", { x: 111, y: 333, width: defaultSize.width, height: defaultSize.height }]
141
- ]));
135
+ assertAllBounds(
136
+ new Map([
137
+ ['node1', { x: 111, y: 111, width: defaultSize.width, height: defaultSize.height }],
138
+ ['node2', { x: 111, y: 222, width: defaultSize.width, height: defaultSize.height }],
139
+ ['node3', { x: 111, y: 333, width: defaultSize.width, height: defaultSize.height }]
140
+ ])
141
+ );
142
142
  });
143
143
 
144
144
  it('should align all elements right', () => {
@@ -152,11 +152,13 @@ describe('AlignElementsCommand', () => {
152
152
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
153
153
  command.execute(newContext(newModel));
154
154
 
155
- assertAllBounds(new Map([
156
- ["node1", { x: 333, y: 111, width: defaultSize.width, height: defaultSize.height }],
157
- ["node2", { x: 333, y: 222, width: defaultSize.width, height: defaultSize.height }],
158
- ["node3", { x: 333, y: 333, width: defaultSize.width, height: defaultSize.height }]
159
- ]));
155
+ assertAllBounds(
156
+ new Map([
157
+ ['node1', { x: 333, y: 111, width: defaultSize.width, height: defaultSize.height }],
158
+ ['node2', { x: 333, y: 222, width: defaultSize.width, height: defaultSize.height }],
159
+ ['node3', { x: 333, y: 333, width: defaultSize.width, height: defaultSize.height }]
160
+ ])
161
+ );
160
162
  });
161
163
 
162
164
  it('should align all elements center', () => {
@@ -170,11 +172,13 @@ describe('AlignElementsCommand', () => {
170
172
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
171
173
  command.execute(newContext(newModel));
172
174
 
173
- assertAllBounds(new Map([
174
- ["node1", { x: 222, y: 111, width: defaultSize.width, height: defaultSize.height }],
175
- ["node2", { x: 222, y: 222, width: defaultSize.width, height: defaultSize.height }],
176
- ["node3", { x: 222, y: 333, width: defaultSize.width, height: defaultSize.height }]
177
- ]));
175
+ assertAllBounds(
176
+ new Map([
177
+ ['node1', { x: 222, y: 111, width: defaultSize.width, height: defaultSize.height }],
178
+ ['node2', { x: 222, y: 222, width: defaultSize.width, height: defaultSize.height }],
179
+ ['node3', { x: 222, y: 333, width: defaultSize.width, height: defaultSize.height }]
180
+ ])
181
+ );
178
182
  });
179
183
 
180
184
  it('should align all elements top', () => {
@@ -188,11 +192,13 @@ describe('AlignElementsCommand', () => {
188
192
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
189
193
  command.execute(newContext(newModel));
190
194
 
191
- assertAllBounds(new Map([
192
- ["node1", { x: 111, y: 111, width: defaultSize.width, height: defaultSize.height }],
193
- ["node2", { x: 222, y: 111, width: defaultSize.width, height: defaultSize.height }],
194
- ["node3", { x: 333, y: 111, width: defaultSize.width, height: defaultSize.height }]
195
- ]));
195
+ assertAllBounds(
196
+ new Map([
197
+ ['node1', { x: 111, y: 111, width: defaultSize.width, height: defaultSize.height }],
198
+ ['node2', { x: 222, y: 111, width: defaultSize.width, height: defaultSize.height }],
199
+ ['node3', { x: 333, y: 111, width: defaultSize.width, height: defaultSize.height }]
200
+ ])
201
+ );
196
202
  });
197
203
 
198
204
  it('should align all elements bottom', () => {
@@ -206,11 +212,13 @@ describe('AlignElementsCommand', () => {
206
212
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
207
213
  command.execute(newContext(newModel));
208
214
 
209
- assertAllBounds(new Map([
210
- ["node1", { x: 111, y: 333, width: defaultSize.width, height: defaultSize.height }],
211
- ["node2", { x: 222, y: 333, width: defaultSize.width, height: defaultSize.height }],
212
- ["node3", { x: 333, y: 333, width: defaultSize.width, height: defaultSize.height }]
213
- ]));
215
+ assertAllBounds(
216
+ new Map([
217
+ ['node1', { x: 111, y: 333, width: defaultSize.width, height: defaultSize.height }],
218
+ ['node2', { x: 222, y: 333, width: defaultSize.width, height: defaultSize.height }],
219
+ ['node3', { x: 333, y: 333, width: defaultSize.width, height: defaultSize.height }]
220
+ ])
221
+ );
214
222
  });
215
223
 
216
224
  it('should align all elements middle', () => {
@@ -224,17 +232,17 @@ describe('AlignElementsCommand', () => {
224
232
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
225
233
  command.execute(newContext(newModel));
226
234
 
227
- assertAllBounds(new Map([
228
- ["node1", { x: 111, y: 222, width: defaultSize.width, height: defaultSize.height }],
229
- ["node2", { x: 222, y: 222, width: defaultSize.width, height: defaultSize.height }],
230
- ["node3", { x: 333, y: 222, width: defaultSize.width, height: defaultSize.height }]
231
- ]));
235
+ assertAllBounds(
236
+ new Map([
237
+ ['node1', { x: 111, y: 222, width: defaultSize.width, height: defaultSize.height }],
238
+ ['node2', { x: 222, y: 222, width: defaultSize.width, height: defaultSize.height }],
239
+ ['node3', { x: 333, y: 222, width: defaultSize.width, height: defaultSize.height }]
240
+ ])
241
+ );
232
242
  });
233
-
234
243
  });
235
244
 
236
245
  describe('ResizeElementsCommand', () => {
237
-
238
246
  it('should make same width as last', () => {
239
247
  actionDispatcher.dispatchedActions = [];
240
248
  const newModel = initModel([
@@ -247,11 +255,13 @@ describe('ResizeElementsCommand', () => {
247
255
  command.execute(newContext(newModel));
248
256
 
249
257
  // resize is keeping the center, so the X moves by diff / 2
250
- assertAllBoundsInChangeBounds(new Map([
251
- ["node1", { x: 90, y: 100, height: 10, width: 30 }],
252
- ["node2", { x: 95, y: 200, height: 20, width: 30 }],
253
- ["node3", { x: 100, y: 300, height: 30, width: 30 }]
254
- ]));
258
+ assertAllBoundsInChangeBounds(
259
+ new Map([
260
+ ['node1', { x: 90, y: 100, height: 10, width: 30 }],
261
+ ['node2', { x: 95, y: 200, height: 20, width: 30 }],
262
+ ['node3', { x: 100, y: 300, height: 30, width: 30 }]
263
+ ])
264
+ );
255
265
  });
256
266
 
257
267
  it('should make same height as last', () => {
@@ -266,11 +276,13 @@ describe('ResizeElementsCommand', () => {
266
276
  command.execute(newContext(newModel));
267
277
 
268
278
  // resize is keeping the center, so the Y moves by diff / 2
269
- assertAllBoundsInChangeBounds(new Map([
270
- ["node1", { x: 100, y: 90, height: 30, width: 10 }],
271
- ["node2", { x: 100, y: 195, height: 30, width: 20 }],
272
- ["node3", { x: 100, y: 300, height: 30, width: 30 }]
273
- ]));
279
+ assertAllBoundsInChangeBounds(
280
+ new Map([
281
+ ['node1', { x: 100, y: 90, height: 30, width: 10 }],
282
+ ['node2', { x: 100, y: 195, height: 30, width: 20 }],
283
+ ['node3', { x: 100, y: 300, height: 30, width: 30 }]
284
+ ])
285
+ );
274
286
  });
275
287
 
276
288
  it('should make same width and height as last', () => {
@@ -285,13 +297,14 @@ describe('ResizeElementsCommand', () => {
285
297
  command.execute(newContext(newModel));
286
298
 
287
299
  // resize is keeping the center, so the Y moves by diff / 2
288
- assertAllBoundsInChangeBounds(new Map([
289
- ["node1", { x: 90, y: 90, height: 30, width: 30 }],
290
- ["node2", { x: 95, y: 195, height: 30, width: 30 }],
291
- ["node3", { x: 100, y: 300, height: 30, width: 30 }]
292
- ]));
300
+ assertAllBoundsInChangeBounds(
301
+ new Map([
302
+ ['node1', { x: 90, y: 90, height: 30, width: 30 }],
303
+ ['node2', { x: 95, y: 195, height: 30, width: 30 }],
304
+ ['node3', { x: 100, y: 300, height: 30, width: 30 }]
305
+ ])
306
+ );
293
307
  });
294
-
295
308
  });
296
309
 
297
310
  function initModel(elementAndBounds: ElementAndBounds[]): SModelRoot {
@@ -300,7 +313,7 @@ function initModel(elementAndBounds: ElementAndBounds[]): SModelRoot {
300
313
  return setBoundsCommand.execute(context) as SModelRoot;
301
314
  }
302
315
 
303
- function newContext(root: SModelRoot) {
316
+ function newContext(root: SModelRoot): CommandExecutionContext {
304
317
  return {
305
318
  root: root,
306
319
  modelFactory: graphFactory,
@@ -311,27 +324,27 @@ function newContext(root: SModelRoot) {
311
324
  };
312
325
  }
313
326
 
314
- function assertAllBounds(allBounds: Map<string, Bounds>) {
327
+ function assertAllBounds(allBounds: Map<string, Bounds>): void {
315
328
  allBounds.forEach((bounds, nodeId) => assertBounds(nodeId, bounds));
316
329
  }
317
330
 
318
- function assertAllBoundsInChangeBounds(allBounds: Map<string, Bounds>) {
331
+ function assertAllBoundsInChangeBounds(allBounds: Map<string, Bounds>): void {
319
332
  allBounds.forEach((bounds, nodeId) => assertBoundsInChangeBoundsActions(nodeId, bounds));
320
333
  }
321
334
 
322
- function assertBounds(nodeId: string, bounds: Bounds) {
335
+ function assertBounds(nodeId: string, bounds: Bounds): void {
323
336
  assertBoundsInMoves(nodeId, bounds);
324
337
  assertBoundsInChangeBoundsActions(nodeId, bounds);
325
338
  }
326
339
 
327
- function assertBoundsInMoves(nodeId: string, bounds: Bounds) {
340
+ function assertBoundsInMoves(nodeId: string, bounds: Bounds): void {
328
341
  const moves = dispatchedElementMoves();
329
342
  const move = getMoveById(nodeId, moves);
330
343
  expect(move.toPosition.x).to.be.equal(bounds.x);
331
344
  expect(move.toPosition.y).to.be.equal(bounds.y);
332
345
  }
333
346
 
334
- function assertBoundsInChangeBoundsActions(nodeId: string, bounds: Bounds) {
347
+ function assertBoundsInChangeBoundsActions(nodeId: string, bounds: Bounds): void {
335
348
  const allChangeBounds = dispatchedChangeBounds();
336
349
  const changeBounds = getElementAndBoundsById(nodeId, allChangeBounds);
337
350
  expect(changeBounds.newPosition!.x).to.be.equal(bounds.x);
@@ -340,20 +353,26 @@ function assertBoundsInChangeBoundsActions(nodeId: string, bounds: Bounds) {
340
353
  expect(changeBounds.newSize!.width).to.be.equal(bounds.width);
341
354
  }
342
355
 
343
- function getMoveById(id: string, moves: ElementMove[]) {
356
+ function getMoveById(id: string, moves: ElementMove[]): ElementMove {
344
357
  return moves.filter(m => m.elementId === id)[0];
345
358
  }
346
359
 
347
- function getElementAndBoundsById(id: string, elementAndBounds: ElementAndBounds[]) {
360
+ function getElementAndBoundsById(id: string, elementAndBounds: ElementAndBounds[]): ElementAndBounds {
348
361
  return elementAndBounds.filter(m => m.elementId === id)[0];
349
362
  }
350
363
 
351
- function dispatchedElementMoves() {
352
- return actionDispatcher.dispatchedActions.filter(isMoveAction).map(a => a.moves).reduce((acc, val) => acc.concat(val), []);
364
+ function dispatchedElementMoves(): ElementMove[] {
365
+ return actionDispatcher.dispatchedActions
366
+ .filter(isMoveAction)
367
+ .map(a => a.moves)
368
+ .reduce((acc, val) => acc.concat(val), []);
353
369
  }
354
370
 
355
- function dispatchedChangeBounds() {
356
- return actionDispatcher.dispatchedActions.filter(isChangeBounds).map(a => a.newBounds).reduce((acc, val) => acc.concat(val), []);
371
+ function dispatchedChangeBounds(): ElementAndBounds[] {
372
+ return actionDispatcher.dispatchedActions
373
+ .filter(isChangeBounds)
374
+ .map(a => a.newBounds)
375
+ .reduce((acc, val) => acc.concat(val), []);
357
376
  }
358
377
 
359
378
  function isMoveAction(action: Action): action is MoveAction {
@@ -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,34 +13,27 @@
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, optional } from "inversify";
16
+ import { Action, ChangeBoundsOperation, ElementAndBounds } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable, optional } from 'inversify';
17
18
  import {
18
- Action,
19
19
  Command,
20
20
  CommandExecutionContext,
21
21
  CommandReturn,
22
- ElementAndBounds,
23
22
  ElementMove,
24
23
  IActionDispatcher,
25
24
  MoveAction,
26
25
  SetBoundsAction,
27
26
  SModelElement,
28
27
  TYPES
29
- } from "sprotty";
30
-
31
- import { ChangeBoundsOperation } from "../../base/operations/operation";
32
- import { GLSP_TYPES } from "../../base/types";
33
- import {
34
- toValidElementAndBounds,
35
- toValidElementMove,
36
- WriteableElementAndBounds,
37
- WriteableElementMove
38
- } from "../../utils/layout-utils";
39
- import { BoundsAwareModelElement } from "../../utils/smodel-util";
40
- import { isBoundsAwareMoveable, isResizable } from "../change-bounds/model";
41
- import { IMovementRestrictor } from "../change-bounds/movement-restrictor";
42
- import { SelectionService } from "../select/selection-service";
43
-
28
+ } from 'sprotty';
29
+ import { GLSP_TYPES } from '../../base/types';
30
+ import { toValidElementAndBounds, toValidElementMove, WriteableElementAndBounds, WriteableElementMove } from '../../utils/layout-utils';
31
+ import { BoundsAwareModelElement } from '../../utils/smodel-util';
32
+ import { isBoundsAwareMoveable, isResizable } from '../change-bounds/model';
33
+ import { IMovementRestrictor } from '../change-bounds/movement-restrictor';
34
+ import { SelectionService } from '../select/selection-service';
35
+
36
+ // eslint-disable-next-line no-shadow
44
37
  export enum ResizeDimension {
45
38
  Width,
46
39
  Height,
@@ -83,10 +76,11 @@ export class ResizeElementsAction implements Action {
83
76
  * Function to reduce the dimension to a target dimension value, see Reduce.* for potential functions.
84
77
  */
85
78
  public readonly reductionFunction: (...values: number[]) => number,
86
- public readonly kind: string = ResizeElementsCommand.KIND) {
87
- }
79
+ public readonly kind: string = ResizeElementsCommand.KIND
80
+ ) {}
88
81
  }
89
82
 
83
+ // eslint-disable-next-line no-shadow
90
84
  export enum Alignment {
91
85
  Left,
92
86
  Center,
@@ -97,20 +91,19 @@ export enum Alignment {
97
91
  }
98
92
 
99
93
  export namespace Select {
100
- export function all(elements: BoundsAwareModelElement[]) {
94
+ export function all(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[] {
101
95
  return elements;
102
96
  }
103
97
 
104
- export function first(elements: BoundsAwareModelElement[]) {
98
+ export function first(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[] {
105
99
  return [elements[0]];
106
100
  }
107
101
 
108
- export function last(elements: BoundsAwareModelElement[]) {
102
+ export function last(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[] {
109
103
  return [elements[elements.length - 1]];
110
104
  }
111
105
  }
112
106
 
113
-
114
107
  export class AlignElementsAction implements Action {
115
108
  constructor(
116
109
  /**
@@ -125,16 +118,18 @@ export class AlignElementsAction implements Action {
125
118
  * Function to selected elements that are considered during alignment calculation, see Select.* for potential functions.
126
119
  */
127
120
  public readonly selectionFunction: (elements: BoundsAwareModelElement[]) => BoundsAwareModelElement[] = Select.all,
128
- public readonly kind = AlignElementsCommand.KIND) {
129
- }
121
+ public readonly kind = AlignElementsCommand.KIND
122
+ ) {}
130
123
  }
131
124
 
132
125
  @injectable()
133
126
  abstract class LayoutElementsCommand extends Command {
134
- constructor(@inject(TYPES.Action) protected action: ResizeElementsAction | AlignElementsAction,
127
+ constructor(
128
+ @inject(TYPES.Action) protected action: ResizeElementsAction | AlignElementsAction,
135
129
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
136
130
  @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService,
137
- @inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor) {
131
+ @inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
132
+ ) {
138
133
  super();
139
134
  }
140
135
 
@@ -157,11 +152,11 @@ abstract class LayoutElementsCommand extends Command {
157
152
 
158
153
  protected abstract isActionElement(element: SModelElement): element is BoundsAwareModelElement;
159
154
 
160
- dispatchAction(action: Action) {
155
+ dispatchAction(action: Action): void {
161
156
  this.actionDispatcher.dispatch(action);
162
157
  }
163
158
 
164
- dispatchActions(actions: Action[]) {
159
+ dispatchActions(actions: Action[]): void {
165
160
  this.actionDispatcher.dispatchAll(actions);
166
161
  }
167
162
  }
@@ -170,10 +165,12 @@ abstract class LayoutElementsCommand extends Command {
170
165
  export class ResizeElementsCommand extends LayoutElementsCommand {
171
166
  static readonly KIND = 'layout:resize';
172
167
 
173
- constructor(@inject(TYPES.Action) protected action: ResizeElementsAction,
168
+ constructor(
169
+ @inject(TYPES.Action) protected action: ResizeElementsAction,
174
170
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
175
171
  @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService,
176
- @inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor) {
172
+ @inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
173
+ ) {
177
174
  super(action, actionDispatcher, selectionService, movementRestrictor);
178
175
  }
179
176
 
@@ -199,7 +196,7 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
199
196
  return context.root;
200
197
  }
201
198
 
202
- resizeWidth(elements: BoundsAwareModelElement[]) {
199
+ resizeWidth(elements: BoundsAwareModelElement[]): void {
203
200
  const targetWidth = this.action.reductionFunction(...elements.map(element => element.bounds.width));
204
201
  this.dispatchResizeActions(elements, (element, bounds) => {
205
202
  // resize around center
@@ -209,7 +206,7 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
209
206
  });
210
207
  }
211
208
 
212
- resizeHeight(elements: BoundsAwareModelElement[]) {
209
+ resizeHeight(elements: BoundsAwareModelElement[]): void {
213
210
  const targetHeight = this.action.reductionFunction(...elements.map(element => element.bounds.height));
214
211
  this.dispatchResizeActions(elements, (element, bounds) => {
215
212
  // resize around middle
@@ -219,7 +216,7 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
219
216
  });
220
217
  }
221
218
 
222
- resizeWidthAndHeight(elements: BoundsAwareModelElement[]) {
219
+ resizeWidthAndHeight(elements: BoundsAwareModelElement[]): void {
223
220
  const targetWidth = this.action.reductionFunction(...elements.map(element => element.bounds.width));
224
221
  const targetHeight = this.action.reductionFunction(...elements.map(element => element.bounds.height));
225
222
  this.dispatchResizeActions(elements, (element, bounds) => {
@@ -233,7 +230,10 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
233
230
  });
234
231
  }
235
232
 
236
- dispatchResizeActions(elements: BoundsAwareModelElement[], change: (element: BoundsAwareModelElement, bounds: WriteableElementAndBounds) => void) {
233
+ dispatchResizeActions(
234
+ elements: BoundsAwareModelElement[],
235
+ change: (element: BoundsAwareModelElement, bounds: WriteableElementAndBounds) => void
236
+ ): void {
237
237
  const elementAndBounds: ElementAndBounds[] = []; // client- and server-side resize
238
238
  elements.forEach(element => {
239
239
  const elementChange = this.createElementAndBounds(element, change);
@@ -245,7 +245,10 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
245
245
  this.dispatchActions([new SetBoundsAction(elementAndBounds), new ChangeBoundsOperation(elementAndBounds)]);
246
246
  }
247
247
 
248
- createElementAndBounds(element: BoundsAwareModelElement, change: (element: BoundsAwareModelElement, bounds: WriteableElementAndBounds) => void) {
248
+ createElementAndBounds(
249
+ element: BoundsAwareModelElement,
250
+ change: (_element: BoundsAwareModelElement, _bounds: WriteableElementAndBounds) => void
251
+ ): WriteableElementAndBounds | undefined {
249
252
  const bounds: WriteableElementAndBounds = {
250
253
  elementId: element.id,
251
254
  newPosition: {
@@ -276,10 +279,12 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
276
279
  export class AlignElementsCommand extends LayoutElementsCommand {
277
280
  static readonly KIND = 'layout:align';
278
281
 
279
- constructor(@inject(TYPES.Action) protected action: AlignElementsAction,
282
+ constructor(
283
+ @inject(TYPES.Action) protected action: AlignElementsAction,
280
284
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
281
285
  @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService,
282
- @inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor) {
286
+ @inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
287
+ ) {
283
288
  super(action, actionDispatcher, selectionService, movementRestrictor);
284
289
  }
285
290
 
@@ -314,49 +319,52 @@ export class AlignElementsCommand extends LayoutElementsCommand {
314
319
  return context.root;
315
320
  }
316
321
 
317
- alignLeft(elements: BoundsAwareModelElement[]) {
322
+ alignLeft(elements: BoundsAwareModelElement[]): void {
318
323
  const calculationElements = this.action.selectionFunction(elements);
319
324
  const minX = calculationElements.map(element => element.bounds.x).reduce((a, b) => Math.min(a, b));
320
- this.dispatchAlignActions(elements, (_, move) => move.toPosition.x = minX);
325
+ this.dispatchAlignActions(elements, (_, move) => (move.toPosition.x = minX));
321
326
  }
322
327
 
323
- alignCenter(elements: BoundsAwareModelElement[]) {
328
+ alignCenter(elements: BoundsAwareModelElement[]): void {
324
329
  const calculationElements = this.action.selectionFunction(elements);
325
330
  const minX = calculationElements.map(element => element.bounds.x).reduce((a, b) => Math.min(a, b));
326
331
  const maxX = calculationElements.map(element => element.bounds.x + element.bounds.width).reduce((a, b) => Math.max(a, b));
327
332
  const diffX = maxX - minX;
328
333
  const centerX = minX + 0.5 * diffX;
329
- this.dispatchAlignActions(elements, (element, move) => move.toPosition.x = centerX - 0.5 * element.bounds.width);
334
+ this.dispatchAlignActions(elements, (element, move) => (move.toPosition.x = centerX - 0.5 * element.bounds.width));
330
335
  }
331
336
 
332
- alignRight(elements: BoundsAwareModelElement[]) {
337
+ alignRight(elements: BoundsAwareModelElement[]): void {
333
338
  const calculationElements = this.action.selectionFunction(elements);
334
339
  const maxX = calculationElements.map(element => element.bounds.x + element.bounds.width).reduce((a, b) => Math.max(a, b));
335
- this.dispatchAlignActions(elements, (element, move) => move.toPosition.x = maxX - element.bounds.width);
340
+ this.dispatchAlignActions(elements, (element, move) => (move.toPosition.x = maxX - element.bounds.width));
336
341
  }
337
342
 
338
- alignTop(elements: BoundsAwareModelElement[]) {
343
+ alignTop(elements: BoundsAwareModelElement[]): void {
339
344
  const calculationElements = this.action.selectionFunction(elements);
340
345
  const minY = calculationElements.map(element => element.bounds.y).reduce((a, b) => Math.min(a, b));
341
- this.dispatchAlignActions(elements, (_, move) => move.toPosition.y = minY);
346
+ this.dispatchAlignActions(elements, (_, move) => (move.toPosition.y = minY));
342
347
  }
343
348
 
344
- alignMiddle(elements: BoundsAwareModelElement[]) {
349
+ alignMiddle(elements: BoundsAwareModelElement[]): void {
345
350
  const calculationElements = this.action.selectionFunction(elements);
346
351
  const minY = calculationElements.map(element => element.bounds.y).reduce((a, b) => Math.min(a, b));
347
352
  const maxY = calculationElements.map(element => element.bounds.y + element.bounds.height).reduce((a, b) => Math.max(a, b));
348
353
  const diffY = maxY - minY;
349
354
  const middleY = minY + 0.5 * diffY;
350
- this.dispatchAlignActions(elements, (element, move) => move.toPosition.y = middleY - 0.5 * element.bounds.height);
355
+ this.dispatchAlignActions(elements, (element, move) => (move.toPosition.y = middleY - 0.5 * element.bounds.height));
351
356
  }
352
357
 
353
- alignBottom(elements: BoundsAwareModelElement[]) {
358
+ alignBottom(elements: BoundsAwareModelElement[]): void {
354
359
  const calculationElements = this.action.selectionFunction(elements);
355
360
  const maxY = calculationElements.map(element => element.bounds.y + element.bounds.height).reduce((a, b) => Math.max(a, b));
356
- this.dispatchAlignActions(elements, (element, move) => move.toPosition.y = maxY - element.bounds.height);
361
+ this.dispatchAlignActions(elements, (element, move) => (move.toPosition.y = maxY - element.bounds.height));
357
362
  }
358
363
 
359
- dispatchAlignActions(elements: BoundsAwareModelElement[], change: (element: BoundsAwareModelElement, move: WriteableElementMove) => void) {
364
+ dispatchAlignActions(
365
+ elements: BoundsAwareModelElement[],
366
+ change: (element: BoundsAwareModelElement, move: WriteableElementMove) => void
367
+ ): void {
360
368
  const moves: ElementMove[] = []; // client-side move
361
369
  const elementAndBounds: ElementAndBounds[] = []; // server-side move
362
370
  elements.forEach(element => {
@@ -371,7 +379,10 @@ export class AlignElementsCommand extends LayoutElementsCommand {
371
379
  this.dispatchActions([new MoveAction(moves), new ChangeBoundsOperation(elementAndBounds)]);
372
380
  }
373
381
 
374
- createElementMove(element: BoundsAwareModelElement, change: (element: BoundsAwareModelElement, move: WriteableElementMove) => void) {
382
+ createElementMove(
383
+ element: BoundsAwareModelElement,
384
+ change: (_element: BoundsAwareModelElement, _move: WriteableElementMove) => void
385
+ ): WriteableElementMove | undefined {
375
386
  const move: WriteableElementMove = {
376
387
  elementId: element.id,
377
388
  fromPosition: {