@eclipse-glsp/client 0.10.0-next.ca17587.154 → 1.1.0-RC01

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/css/decoration.css +5 -1
  2. package/css/glsp-sprotty.css +149 -8
  3. package/css/tool-palette.css +2 -2
  4. package/lib/base/action-dispatcher.d.ts +4 -3
  5. package/lib/base/action-dispatcher.d.ts.map +1 -1
  6. package/lib/base/action-dispatcher.js +22 -12
  7. package/lib/base/action-dispatcher.js.map +1 -1
  8. package/lib/base/actions/focus-change-action.d.ts +16 -7
  9. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  10. package/lib/base/actions/focus-change-action.js +31 -12
  11. package/lib/base/actions/focus-change-action.js.map +1 -1
  12. package/lib/base/actions/sprotty-actions.d.ts +7 -0
  13. package/lib/base/actions/sprotty-actions.d.ts.map +1 -0
  14. package/lib/{features/tool-palette/palette-item.js → base/actions/sprotty-actions.js} +4 -20
  15. package/lib/base/actions/sprotty-actions.js.map +1 -0
  16. package/lib/base/auto-complete/auto-complete-actions.d.ts +5 -3
  17. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  18. package/lib/base/auto-complete/auto-complete-actions.js +24 -5
  19. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  20. package/lib/base/auto-complete/auto-complete-widget.d.ts +9 -2
  21. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  22. package/lib/base/auto-complete/auto-complete-widget.js +16 -9
  23. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  24. package/lib/base/auto-complete/validation-decorator.js +2 -2
  25. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  26. package/lib/base/command-stack.d.ts.map +1 -1
  27. package/lib/base/command-stack.js +6 -5
  28. package/lib/base/command-stack.js.map +1 -1
  29. package/lib/base/container-modules.d.ts.map +1 -1
  30. package/lib/base/container-modules.js +10 -9
  31. package/lib/base/container-modules.js.map +1 -1
  32. package/lib/base/di.config.d.ts +1 -1
  33. package/lib/base/di.config.d.ts.map +1 -1
  34. package/lib/base/di.config.js +13 -14
  35. package/lib/base/di.config.js.map +1 -1
  36. package/lib/base/drag-aware-mouse-listener.d.ts +1 -1
  37. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  38. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  39. package/lib/base/editor-context-service.d.ts +15 -4
  40. package/lib/base/editor-context-service.d.ts.map +1 -1
  41. package/lib/base/editor-context-service.js +31 -19
  42. package/lib/base/editor-context-service.js.map +1 -1
  43. package/lib/base/focus-tracker.d.ts +1 -1
  44. package/lib/base/focus-tracker.d.ts.map +1 -1
  45. package/lib/base/focus-tracker.js +4 -4
  46. package/lib/base/focus-tracker.js.map +1 -1
  47. package/lib/base/model/model-registry.d.ts.map +1 -1
  48. package/lib/base/model/model-registry.js +2 -2
  49. package/lib/base/model/model-registry.js.map +1 -1
  50. package/lib/base/model/update-model-command.d.ts +15 -8
  51. package/lib/base/model/update-model-command.d.ts.map +1 -1
  52. package/lib/base/model/update-model-command.js +43 -53
  53. package/lib/base/model/update-model-command.js.map +1 -1
  54. package/lib/base/model-initialization-constraint.d.ts +4 -5
  55. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  56. package/lib/base/model-initialization-constraint.js +11 -13
  57. package/lib/base/model-initialization-constraint.js.map +1 -1
  58. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  59. package/lib/base/selection-clearing-mouse-listener.js +1 -1
  60. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  61. package/lib/base/source-uri-aware.d.ts +2 -17
  62. package/lib/base/source-uri-aware.d.ts.map +1 -1
  63. package/lib/base/source-uri-aware.js +4 -6
  64. package/lib/base/source-uri-aware.js.map +1 -1
  65. package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
  66. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  67. package/lib/base/tool-manager/glsp-tool-manager.js +10 -10
  68. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  69. package/lib/base/tool-manager/tool-actions.d.ts +14 -0
  70. package/lib/base/tool-manager/tool-actions.d.ts.map +1 -0
  71. package/lib/base/tool-manager/tool-actions.js +25 -0
  72. package/lib/base/tool-manager/tool-actions.js.map +1 -0
  73. package/lib/base/types.d.ts +146 -20
  74. package/lib/base/types.d.ts.map +1 -1
  75. package/lib/base/types.js +14 -26
  76. package/lib/base/types.js.map +1 -1
  77. package/lib/base/view/view-registry.d.ts.map +1 -1
  78. package/lib/base/view/view-registry.js +2 -2
  79. package/lib/base/view/view-registry.js.map +1 -1
  80. package/lib/features/change-bounds/model.d.ts +1 -1
  81. package/lib/features/change-bounds/model.d.ts.map +1 -1
  82. package/lib/features/change-bounds/model.js +3 -3
  83. package/lib/features/change-bounds/model.js.map +1 -1
  84. package/lib/features/change-bounds/movement-restrictor.d.ts +37 -7
  85. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  86. package/lib/features/change-bounds/movement-restrictor.js +55 -40
  87. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  88. package/lib/features/change-bounds/snap.d.ts +60 -4
  89. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  90. package/lib/features/change-bounds/snap.js +96 -9
  91. package/lib/features/change-bounds/snap.js.map +1 -1
  92. package/lib/features/change-bounds/snap.spec.d.ts +17 -0
  93. package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
  94. package/lib/features/change-bounds/snap.spec.js +82 -0
  95. package/lib/features/change-bounds/snap.spec.js.map +1 -0
  96. package/lib/features/command-palette/command-palette-tool.js +3 -3
  97. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  98. package/lib/features/command-palette/di.config.d.ts +2 -2
  99. package/lib/features/command-palette/di.config.d.ts.map +1 -1
  100. package/lib/features/command-palette/di.config.js +6 -6
  101. package/lib/features/command-palette/di.config.js.map +1 -1
  102. package/lib/features/command-palette/server-command-palette-provider.d.ts +1 -1
  103. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  104. package/lib/features/command-palette/server-command-palette-provider.js +13 -10
  105. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  106. package/lib/features/context-menu/delete-element-context-menu.d.ts +17 -1
  107. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  108. package/lib/features/context-menu/delete-element-context-menu.js +4 -4
  109. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  110. package/lib/features/context-menu/di.config.d.ts +1 -1
  111. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  112. package/lib/features/context-menu/di.config.js +8 -7
  113. package/lib/features/context-menu/di.config.js.map +1 -1
  114. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +34 -4
  115. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  116. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +37 -31
  117. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  118. package/lib/features/context-menu/server-context-menu-provider.d.ts +1 -1
  119. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  120. package/lib/features/context-menu/server-context-menu-provider.js +8 -7
  121. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  122. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +12 -15
  123. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  124. package/lib/features/copy-paste/copy-paste-context-menu.js +26 -33
  125. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  126. package/lib/features/copy-paste/copy-paste-handler.d.ts +1 -1
  127. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  128. package/lib/features/copy-paste/copy-paste-handler.js +10 -11
  129. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  130. package/lib/features/copy-paste/di.config.d.ts +1 -1
  131. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  132. package/lib/features/copy-paste/di.config.js +5 -7
  133. package/lib/features/copy-paste/di.config.js.map +1 -1
  134. package/lib/features/decoration/decoration-placer.d.ts +1 -1
  135. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  136. package/lib/features/decoration/decoration-placer.js +19 -3
  137. package/lib/features/decoration/decoration-placer.js.map +1 -1
  138. package/lib/features/decoration/di.config.d.ts +2 -2
  139. package/lib/features/decoration/di.config.d.ts.map +1 -1
  140. package/lib/features/decoration/di.config.js +4 -4
  141. package/lib/features/decoration/di.config.js.map +1 -1
  142. package/lib/features/edit-label/di.config.d.ts +1 -1
  143. package/lib/features/edit-label/di.config.d.ts.map +1 -1
  144. package/lib/features/edit-label/di.config.js +5 -5
  145. package/lib/features/edit-label/di.config.js.map +1 -1
  146. package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -1
  147. package/lib/features/edit-label/edit-label-tool.js +2 -2
  148. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  149. package/lib/features/edit-label/edit-label-validator.d.ts +4 -6
  150. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  151. package/lib/features/edit-label/edit-label-validator.js +11 -13
  152. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  153. package/lib/features/hints/di.config.js +4 -4
  154. package/lib/features/hints/di.config.js.map +1 -1
  155. package/lib/features/hints/type-hints.d.ts +15 -5
  156. package/lib/features/hints/type-hints.d.ts.map +1 -1
  157. package/lib/features/hints/type-hints.js +29 -26
  158. package/lib/features/hints/type-hints.js.map +1 -1
  159. package/lib/features/hover/di.config.d.ts +1 -1
  160. package/lib/features/hover/di.config.d.ts.map +1 -1
  161. package/lib/features/hover/di.config.js +14 -10
  162. package/lib/features/hover/di.config.js.map +1 -1
  163. package/lib/features/hover/hover.d.ts +16 -5
  164. package/lib/features/hover/hover.d.ts.map +1 -1
  165. package/lib/features/hover/hover.js +44 -19
  166. package/lib/features/hover/hover.js.map +1 -1
  167. package/lib/features/layout/di.config.d.ts +3 -3
  168. package/lib/features/layout/di.config.d.ts.map +1 -1
  169. package/lib/features/layout/di.config.js +12 -7
  170. package/lib/features/layout/di.config.js.map +1 -1
  171. package/lib/features/layout/freeform-layout.d.ts +17 -1
  172. package/lib/features/layout/freeform-layout.d.ts.map +1 -1
  173. package/lib/features/layout/freeform-layout.js +4 -4
  174. package/lib/features/layout/freeform-layout.js.map +1 -1
  175. package/lib/features/layout/hbox-layout.d.ts +41 -0
  176. package/lib/features/layout/hbox-layout.d.ts.map +1 -0
  177. package/lib/features/layout/hbox-layout.js +201 -0
  178. package/lib/features/layout/hbox-layout.js.map +1 -0
  179. package/lib/features/layout/layout-elements-action.d.ts +198 -0
  180. package/lib/features/layout/layout-elements-action.d.ts.map +1 -0
  181. package/lib/features/layout/layout-elements-action.js +391 -0
  182. package/lib/features/layout/layout-elements-action.js.map +1 -0
  183. package/lib/features/layout/layout-elements-action.spec.d.ts +3 -0
  184. package/lib/features/layout/layout-elements-action.spec.d.ts.map +1 -0
  185. package/lib/features/layout/{layout-commands.spec.js → layout-elements-action.spec.js} +81 -62
  186. package/lib/features/layout/layout-elements-action.spec.js.map +1 -0
  187. package/lib/features/layout/layouter.d.ts +37 -0
  188. package/lib/features/layout/layouter.d.ts.map +1 -0
  189. package/lib/features/layout/layouter.js +131 -0
  190. package/lib/features/layout/layouter.js.map +1 -0
  191. package/lib/features/layout/tests/freeform-layout.spec.d.ts +3 -0
  192. package/lib/features/layout/tests/freeform-layout.spec.d.ts.map +1 -0
  193. package/lib/features/layout/tests/freeform-layout.spec.js +201 -0
  194. package/lib/features/layout/tests/freeform-layout.spec.js.map +1 -0
  195. package/lib/features/layout/tests/hbox-layout.spec.d.ts +3 -0
  196. package/lib/features/layout/tests/hbox-layout.spec.d.ts.map +1 -0
  197. package/lib/features/layout/tests/hbox-layout.spec.js +161 -0
  198. package/lib/features/layout/tests/hbox-layout.spec.js.map +1 -0
  199. package/lib/features/layout/tests/layouter-test-util.d.ts +34 -0
  200. package/lib/features/layout/tests/layouter-test-util.d.ts.map +1 -0
  201. package/lib/features/layout/tests/layouter-test-util.js +96 -0
  202. package/lib/features/layout/tests/layouter-test-util.js.map +1 -0
  203. package/lib/features/layout/tests/vbox-layout.spec.d.ts +3 -0
  204. package/lib/features/layout/tests/vbox-layout.spec.d.ts.map +1 -0
  205. package/lib/features/layout/tests/vbox-layout.spec.js +161 -0
  206. package/lib/features/layout/tests/vbox-layout.spec.js.map +1 -0
  207. package/lib/features/layout/vbox-layout.d.ts +18 -2
  208. package/lib/features/layout/vbox-layout.d.ts.map +1 -1
  209. package/lib/features/layout/vbox-layout.js +26 -13
  210. package/lib/features/layout/vbox-layout.js.map +1 -1
  211. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  212. package/lib/features/mouse-tool/di.config.d.ts.map +1 -1
  213. package/lib/features/mouse-tool/di.config.js +2 -2
  214. package/lib/features/mouse-tool/di.config.js.map +1 -1
  215. package/lib/features/mouse-tool/mouse-tool.d.ts +9 -6
  216. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  217. package/lib/features/mouse-tool/mouse-tool.js +10 -48
  218. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  219. package/lib/features/navigation/di.config.js +4 -4
  220. package/lib/features/navigation/di.config.js.map +1 -1
  221. package/lib/features/navigation/navigation-action-handler.d.ts +31 -16
  222. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  223. package/lib/features/navigation/navigation-action-handler.js +52 -68
  224. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  225. package/lib/features/navigation/navigation-target-resolver.d.ts +3 -3
  226. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  227. package/lib/features/navigation/navigation-target-resolver.js +8 -9
  228. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  229. package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
  230. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  231. package/lib/features/reconnect/model.d.ts +1 -1
  232. package/lib/features/reconnect/model.d.ts.map +1 -1
  233. package/lib/features/reconnect/model.js +1 -1
  234. package/lib/features/reconnect/model.js.map +1 -1
  235. package/lib/features/save/di.config.d.ts +1 -1
  236. package/lib/features/save/di.config.d.ts.map +1 -1
  237. package/lib/features/save/di.config.js +3 -3
  238. package/lib/features/save/di.config.js.map +1 -1
  239. package/lib/features/save/save-keylistener.d.ts +1 -1
  240. package/lib/features/save/save-keylistener.d.ts.map +1 -1
  241. package/lib/features/save/save-keylistener.js +3 -3
  242. package/lib/features/save/save-keylistener.js.map +1 -1
  243. package/lib/features/select/di.config.d.ts +1 -1
  244. package/lib/features/select/di.config.d.ts.map +1 -1
  245. package/lib/features/select/di.config.js +7 -8
  246. package/lib/features/select/di.config.js.map +1 -1
  247. package/lib/features/select/select-feedback-action.d.ts +26 -22
  248. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  249. package/lib/features/select/select-feedback-action.js +19 -46
  250. package/lib/features/select/select-feedback-action.js.map +1 -1
  251. package/lib/features/select/select-mouse-listener.d.ts +4 -2
  252. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  253. package/lib/features/select/select-mouse-listener.js +63 -1
  254. package/lib/features/select/select-mouse-listener.js.map +1 -1
  255. package/lib/features/select/selection-service.d.ts +14 -5
  256. package/lib/features/select/selection-service.d.ts.map +1 -1
  257. package/lib/features/select/selection-service.js +55 -64
  258. package/lib/features/select/selection-service.js.map +1 -1
  259. package/lib/features/select/selection-service.spec.js +28 -25
  260. package/lib/features/select/selection-service.spec.js.map +1 -1
  261. package/lib/features/source-model-watcher/di.config.d.ts +4 -0
  262. package/lib/features/{model-source-watcher → source-model-watcher}/di.config.d.ts.map +1 -1
  263. package/lib/features/{model-source-watcher → source-model-watcher}/di.config.js +4 -4
  264. package/lib/features/source-model-watcher/di.config.js.map +1 -0
  265. package/lib/features/{model-source-watcher/model-source-changed-action-handler.d.ts → source-model-watcher/source-model-changed-action-handler.d.ts} +10 -10
  266. package/lib/features/source-model-watcher/source-model-changed-action-handler.d.ts.map +1 -0
  267. package/lib/features/{model-source-watcher/model-source-changed-action-handler.js → source-model-watcher/source-model-changed-action-handler.js} +28 -28
  268. package/lib/features/source-model-watcher/source-model-changed-action-handler.js.map +1 -0
  269. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +17 -9
  270. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  271. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +68 -38
  272. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  273. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +24 -12
  274. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  275. package/lib/features/tool-feedback/creation-tool-feedback.js +88 -35
  276. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  277. package/lib/features/tool-feedback/css-feedback.d.ts +17 -10
  278. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  279. package/lib/features/tool-feedback/css-feedback.js +42 -38
  280. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  281. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  282. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  283. package/lib/features/tool-feedback/di.config.js +18 -18
  284. package/lib/features/tool-feedback/di.config.js.map +1 -1
  285. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +45 -22
  286. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  287. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -114
  288. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  289. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
  290. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  291. package/lib/features/tool-feedback/feedback-action-dispatcher.js +4 -4
  292. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  293. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +21 -10
  294. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  295. package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -18
  296. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  297. package/lib/features/tool-feedback/model.d.ts +1 -2
  298. package/lib/features/tool-feedback/model.d.ts.map +1 -1
  299. package/lib/features/tool-feedback/model.js +1 -1
  300. package/lib/features/tool-feedback/model.js.map +1 -1
  301. package/lib/features/tool-feedback/view.d.ts +1 -1
  302. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  303. package/lib/features/tool-feedback/view.js +22 -5
  304. package/lib/features/tool-feedback/view.js.map +1 -1
  305. package/lib/features/tool-palette/di.config.d.ts +1 -1
  306. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  307. package/lib/features/tool-palette/di.config.js +5 -4
  308. package/lib/features/tool-palette/di.config.js.map +1 -1
  309. package/lib/features/tool-palette/tool-palette.d.ts +10 -7
  310. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  311. package/lib/features/tool-palette/tool-palette.js +39 -32
  312. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  313. package/lib/features/tools/base-glsp-tool.d.ts +3 -3
  314. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  315. package/lib/features/tools/base-glsp-tool.js +11 -11
  316. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  317. package/lib/features/tools/change-bounds-tool.d.ts +7 -9
  318. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  319. package/lib/features/tools/change-bounds-tool.js +48 -71
  320. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  321. package/lib/features/tools/delete-tool.d.ts +1 -1
  322. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  323. package/lib/features/tools/delete-tool.js +17 -17
  324. package/lib/features/tools/delete-tool.js.map +1 -1
  325. package/lib/features/tools/di.config.d.ts +9 -2
  326. package/lib/features/tools/di.config.d.ts.map +1 -1
  327. package/lib/features/tools/di.config.js +26 -15
  328. package/lib/features/tools/di.config.js.map +1 -1
  329. package/lib/features/tools/edge-creation-tool.d.ts +1 -1
  330. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  331. package/lib/features/tools/edge-creation-tool.js +28 -21
  332. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  333. package/lib/features/tools/edge-edit-tool.d.ts +3 -2
  334. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  335. package/lib/features/tools/edge-edit-tool.js +41 -36
  336. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  337. package/lib/features/{tool-palette/palette-item.d.ts → tools/enable-default-tools-on-focus-loss.d.ts} +11 -11
  338. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -0
  339. package/lib/features/tools/enable-default-tools-on-focus-loss.js +29 -0
  340. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -0
  341. package/lib/features/tools/marquee-behavior.d.ts +1 -1
  342. package/lib/features/tools/marquee-behavior.js +2 -2
  343. package/lib/features/tools/marquee-behavior.js.map +1 -1
  344. package/lib/features/tools/marquee-behavior.spec.js +63 -63
  345. package/lib/features/tools/marquee-behavior.spec.js.map +1 -1
  346. package/lib/features/tools/marquee-mouse-tool.d.ts +1 -1
  347. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  348. package/lib/features/tools/marquee-mouse-tool.js +20 -20
  349. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  350. package/lib/features/tools/marquee-tool.d.ts +1 -1
  351. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  352. package/lib/features/tools/marquee-tool.js +4 -4
  353. package/lib/features/tools/marquee-tool.js.map +1 -1
  354. package/lib/features/tools/model.d.ts +3 -2
  355. package/lib/features/tools/model.d.ts.map +1 -1
  356. package/lib/features/tools/model.js +0 -15
  357. package/lib/features/tools/model.js.map +1 -1
  358. package/lib/features/tools/node-creation-tool.d.ts +1 -1
  359. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  360. package/lib/features/tools/node-creation-tool.js +17 -17
  361. package/lib/features/tools/node-creation-tool.js.map +1 -1
  362. package/lib/features/tools/view.d.ts.map +1 -1
  363. package/lib/features/tools/view.js +2 -2
  364. package/lib/features/tools/view.js.map +1 -1
  365. package/lib/features/validation/di.config.d.ts +0 -15
  366. package/lib/features/validation/di.config.d.ts.map +1 -1
  367. package/lib/features/validation/di.config.js +9 -7
  368. package/lib/features/validation/di.config.js.map +1 -1
  369. package/lib/features/validation/issue-marker.d.ts +11 -5
  370. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  371. package/lib/features/validation/issue-marker.js +25 -5
  372. package/lib/features/validation/issue-marker.js.map +1 -1
  373. package/lib/features/validation/marker-navigator.d.ts +27 -25
  374. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  375. package/lib/features/validation/marker-navigator.js +64 -91
  376. package/lib/features/validation/marker-navigator.js.map +1 -1
  377. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  378. package/lib/features/validation/marker-navigator.spec.js +23 -37
  379. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  380. package/lib/features/validation/validate.d.ts +17 -30
  381. package/lib/features/validation/validate.d.ts.map +1 -1
  382. package/lib/features/validation/validate.js +66 -91
  383. package/lib/features/validation/validate.js.map +1 -1
  384. package/lib/features/viewport/di.config.d.ts +1 -1
  385. package/lib/features/viewport/di.config.d.ts.map +1 -1
  386. package/lib/features/viewport/di.config.js +7 -7
  387. package/lib/features/viewport/di.config.js.map +1 -1
  388. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +1 -1
  389. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  390. package/lib/features/viewport/glsp-scroll-mouse-listener.js +3 -3
  391. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  392. package/lib/index.d.ts +10 -11
  393. package/lib/index.d.ts.map +1 -1
  394. package/lib/index.js +26 -22
  395. package/lib/index.js.map +1 -1
  396. package/lib/lib/model.d.ts +3 -2
  397. package/lib/lib/model.d.ts.map +1 -1
  398. package/lib/lib/model.js +3 -18
  399. package/lib/lib/model.js.map +1 -1
  400. package/lib/model-source/glsp-diagram-server.d.ts +6 -6
  401. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  402. package/lib/model-source/glsp-diagram-server.js +8 -7
  403. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  404. package/lib/sprotty-reexport.d.ts +174 -0
  405. package/lib/sprotty-reexport.d.ts.map +1 -0
  406. package/lib/sprotty-reexport.js +301 -0
  407. package/lib/sprotty-reexport.js.map +1 -0
  408. package/lib/utils/argument-utils.js +5 -5
  409. package/lib/utils/argument-utils.js.map +1 -1
  410. package/lib/utils/layout-utils.d.ts +6 -22
  411. package/lib/utils/layout-utils.d.ts.map +1 -1
  412. package/lib/utils/layout-utils.js +1 -1
  413. package/lib/utils/layout-utils.js.map +1 -1
  414. package/lib/utils/smodel-util.d.ts +117 -11
  415. package/lib/utils/smodel-util.d.ts.map +1 -1
  416. package/lib/utils/smodel-util.js +142 -37
  417. package/lib/utils/smodel-util.js.map +1 -1
  418. package/lib/utils/viewpoint-util.d.ts +3 -3
  419. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  420. package/lib/utils/viewpoint-util.js +19 -3
  421. package/lib/utils/viewpoint-util.js.map +1 -1
  422. package/lib/views/base-view-module.d.ts.map +1 -1
  423. package/lib/views/base-view-module.js +21 -19
  424. package/lib/views/base-view-module.js.map +1 -1
  425. package/lib/views/compartments.js +2 -2
  426. package/lib/views/compartments.js.map +1 -1
  427. package/lib/views/glsp-edge-view.d.ts +1 -1
  428. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  429. package/lib/views/glsp-edge-view.js +1 -1
  430. package/lib/views/glsp-edge-view.js.map +1 -1
  431. package/lib/views/glsp-projection-view.d.ts +30 -0
  432. package/lib/views/glsp-projection-view.d.ts.map +1 -0
  433. package/lib/views/glsp-projection-view.js +148 -0
  434. package/lib/views/glsp-projection-view.js.map +1 -0
  435. package/lib/views/index.d.ts +1 -0
  436. package/lib/views/index.d.ts.map +1 -1
  437. package/lib/views/index.js +7 -2
  438. package/lib/views/index.js.map +1 -1
  439. package/lib/views/issue-marker-view.d.ts.map +1 -1
  440. package/lib/views/issue-marker-view.js +3 -3
  441. package/lib/views/issue-marker-view.js.map +1 -1
  442. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  443. package/lib/views/rounded-corner-view.js +2 -2
  444. package/lib/views/rounded-corner-view.js.map +1 -1
  445. package/package.json +10 -19
  446. package/src/base/action-dispatcher.ts +26 -16
  447. package/src/base/actions/focus-change-action.ts +25 -8
  448. package/src/base/actions/sprotty-actions.ts +26 -0
  449. package/src/base/auto-complete/auto-complete-actions.ts +7 -5
  450. package/src/base/auto-complete/auto-complete-widget.ts +15 -13
  451. package/src/base/command-stack.ts +7 -6
  452. package/src/base/container-modules.ts +6 -5
  453. package/src/base/di.config.ts +4 -5
  454. package/src/base/drag-aware-mouse-listener.ts +4 -4
  455. package/src/base/editor-context-service.ts +32 -12
  456. package/src/base/focus-tracker.ts +5 -4
  457. package/src/base/model/model-registry.ts +2 -2
  458. package/src/base/model/update-model-command.ts +54 -41
  459. package/src/base/model-initialization-constraint.ts +9 -11
  460. package/src/base/selection-clearing-mouse-listener.ts +1 -1
  461. package/src/base/source-uri-aware.ts +5 -4
  462. package/src/base/tool-manager/glsp-tool-manager.ts +9 -9
  463. package/src/base/tool-manager/tool-actions.ts +37 -0
  464. package/src/base/types.ts +31 -24
  465. package/src/base/view/view-registry.ts +2 -2
  466. package/src/features/change-bounds/model.ts +5 -5
  467. package/src/features/change-bounds/movement-restrictor.ts +74 -44
  468. package/src/features/change-bounds/snap.spec.ts +89 -0
  469. package/src/features/change-bounds/snap.ts +99 -12
  470. package/src/features/command-palette/di.config.ts +5 -7
  471. package/src/features/command-palette/server-command-palette-provider.ts +9 -8
  472. package/src/features/context-menu/delete-element-context-menu.ts +6 -6
  473. package/src/features/context-menu/di.config.ts +3 -2
  474. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +51 -29
  475. package/src/features/context-menu/server-context-menu-provider.ts +7 -6
  476. package/src/features/copy-paste/copy-paste-context-menu.ts +30 -23
  477. package/src/features/copy-paste/copy-paste-handler.ts +6 -6
  478. package/src/features/copy-paste/di.config.ts +7 -15
  479. package/src/features/decoration/decoration-placer.ts +4 -4
  480. package/src/features/decoration/di.config.ts +3 -5
  481. package/src/features/edit-label/di.config.ts +4 -5
  482. package/src/features/edit-label/edit-label-tool.ts +1 -2
  483. package/src/features/edit-label/edit-label-validator.ts +6 -10
  484. package/src/features/hints/di.config.ts +3 -3
  485. package/src/features/hints/type-hints.ts +33 -18
  486. package/src/features/hover/di.config.ts +8 -2
  487. package/src/features/hover/hover.ts +48 -28
  488. package/src/features/layout/di.config.ts +17 -7
  489. package/src/features/layout/freeform-layout.ts +6 -15
  490. package/src/features/layout/hbox-layout.ts +273 -0
  491. package/src/features/layout/{layout-commands.spec.ts → layout-elements-action.spec.ts} +89 -65
  492. package/src/features/layout/layout-elements-action.ts +486 -0
  493. package/src/features/layout/layouter.ts +137 -0
  494. package/src/features/layout/tests/freeform-layout.spec.ts +216 -0
  495. package/src/features/layout/tests/hbox-layout.spec.ts +171 -0
  496. package/src/features/layout/tests/layouter-test-util.ts +122 -0
  497. package/src/features/layout/tests/vbox-layout.spec.ts +171 -0
  498. package/src/features/layout/vbox-layout.ts +41 -24
  499. package/src/features/mouse-tool/di.config.ts +3 -4
  500. package/src/features/mouse-tool/mouse-tool.ts +18 -57
  501. package/src/features/navigation/navigation-action-handler.ts +76 -42
  502. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -3
  503. package/src/features/navigation/navigation-target-resolver.ts +8 -13
  504. package/src/features/reconnect/model.ts +2 -2
  505. package/src/features/save/di.config.ts +2 -3
  506. package/src/features/save/save-keylistener.ts +3 -3
  507. package/src/features/select/di.config.ts +6 -8
  508. package/src/features/select/select-feedback-action.ts +18 -46
  509. package/src/features/select/select-mouse-listener.ts +82 -3
  510. package/src/features/select/selection-service.spec.ts +12 -9
  511. package/src/features/select/selection-service.ts +52 -60
  512. package/src/features/{model-source-watcher → source-model-watcher}/di.config.ts +5 -5
  513. package/src/features/{model-source-watcher/model-source-changed-action-handler.ts → source-model-watcher/source-model-changed-action-handler.ts} +17 -22
  514. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +52 -22
  515. package/src/features/tool-feedback/creation-tool-feedback.ts +79 -30
  516. package/src/features/tool-feedback/css-feedback.ts +40 -37
  517. package/src/features/tool-feedback/di.config.ts +4 -5
  518. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +140 -88
  519. package/src/features/tool-feedback/feedback-action-dispatcher.ts +4 -3
  520. package/src/features/tool-feedback/marquee-tool-feedback.ts +38 -13
  521. package/src/features/tool-feedback/model.ts +1 -3
  522. package/src/features/tool-feedback/view.tsx +3 -3
  523. package/src/features/tool-palette/di.config.ts +3 -2
  524. package/src/features/tool-palette/tool-palette.ts +35 -19
  525. package/src/features/tools/base-glsp-tool.ts +11 -11
  526. package/src/features/tools/change-bounds-tool.ts +37 -67
  527. package/src/features/tools/delete-tool.ts +9 -9
  528. package/src/features/tools/di.config.ts +23 -12
  529. package/src/features/tools/edge-creation-tool.ts +21 -12
  530. package/src/features/tools/edge-edit-tool.ts +25 -21
  531. package/src/features/tools/enable-default-tools-on-focus-loss.ts +33 -0
  532. package/src/features/tools/marquee-behavior.ts +2 -2
  533. package/src/features/tools/marquee-mouse-tool.ts +13 -14
  534. package/src/features/tools/marquee-tool.ts +3 -3
  535. package/src/features/tools/model.ts +4 -3
  536. package/src/features/tools/node-creation-tool.ts +8 -8
  537. package/src/features/tools/view.tsx +2 -3
  538. package/src/features/validation/di.config.ts +13 -11
  539. package/src/features/validation/issue-marker.ts +34 -12
  540. package/src/features/validation/marker-navigator.spec.ts +4 -2
  541. package/src/features/validation/marker-navigator.ts +67 -82
  542. package/src/features/validation/validate.ts +62 -90
  543. package/src/features/viewport/di.config.ts +1 -2
  544. package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
  545. package/src/index.ts +12 -12
  546. package/src/lib/model.ts +4 -4
  547. package/src/model-source/glsp-diagram-server.ts +15 -15
  548. package/src/sprotty-reexport.ts +288 -0
  549. package/src/utils/layout-utils.ts +9 -29
  550. package/src/utils/smodel-util.ts +139 -43
  551. package/src/utils/viewpoint-util.ts +5 -14
  552. package/src/views/base-view-module.ts +5 -1
  553. package/src/views/compartments.tsx +1 -1
  554. package/src/views/glsp-edge-view.tsx +4 -4
  555. package/src/views/glsp-projection-view.tsx +173 -0
  556. package/src/views/index.ts +2 -0
  557. package/src/views/issue-marker-view.tsx +2 -2
  558. package/src/views/rounded-corner-view.tsx +2 -3
  559. package/lib/features/layout/layout-commands.d.ts +0 -153
  560. package/lib/features/layout/layout-commands.d.ts.map +0 -1
  561. package/lib/features/layout/layout-commands.js +0 -412
  562. package/lib/features/layout/layout-commands.js.map +0 -1
  563. package/lib/features/layout/layout-commands.spec.d.ts +0 -3
  564. package/lib/features/layout/layout-commands.spec.d.ts.map +0 -1
  565. package/lib/features/layout/layout-commands.spec.js.map +0 -1
  566. package/lib/features/model-source-watcher/di.config.d.ts +0 -4
  567. package/lib/features/model-source-watcher/di.config.js.map +0 -1
  568. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +0 -1
  569. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +0 -1
  570. package/lib/features/tool-palette/palette-item.d.ts.map +0 -1
  571. package/lib/features/tool-palette/palette-item.js.map +0 -1
  572. package/lib/protocol-reexport.d.ts +0 -45
  573. package/lib/protocol-reexport.d.ts.map +0 -1
  574. package/lib/protocol-reexport.js +0 -75
  575. package/lib/protocol-reexport.js.map +0 -1
  576. package/src/features/layout/layout-commands.ts +0 -424
  577. package/src/features/tool-palette/palette-item.ts +0 -38
  578. package/src/protocol-reexport.ts +0 -64
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,11 +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 { isSetContextActionsAction, RequestContextActions, RequestMarkersAction, SetContextActions } from '@eclipse-glsp/protocol';
16
+ import { Action, PaletteItem, RequestContextActions, RequestMarkersAction, SetContextActions } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable, postConstruct } from 'inversify';
18
18
  import {
19
19
  AbstractUIExtension,
20
- Action,
21
20
  EnableDefaultToolsAction,
22
21
  EnableToolsAction,
23
22
  IActionHandler,
@@ -33,7 +32,6 @@ import { GLSPActionDispatcher } from '../../base/action-dispatcher';
33
32
  import { EditModeListener, EditorContextService } from '../../base/editor-context-service';
34
33
  import { MouseDeleteTool } from '../tools/delete-tool';
35
34
  import { MarqueeMouseTool } from '../tools/marquee-mouse-tool';
36
- import { PaletteItem } from './palette-item';
37
35
 
38
36
  const CLICKED_CSS_CLASS = 'clicked';
39
37
  const SEARCH_ICON_ID = 'search';
@@ -41,12 +39,21 @@ const PALETTE_ICON_ID = 'symbol-color';
41
39
  const CHEVRON_DOWN_ICON_ID = 'chevron-right';
42
40
  const PALETTE_HEIGHT = '500px';
43
41
 
44
- @injectable()
45
- export class EnableToolPaletteAction implements Action {
46
- static readonly KIND = 'enableToolPalette';
47
- readonly kind = EnableToolPaletteAction.KIND;
42
+ export interface EnableToolPaletteAction extends Action {
43
+ kind: typeof EnableToolPaletteAction.KIND;
48
44
  }
49
45
 
46
+ export namespace EnableToolPaletteAction {
47
+ export const KIND = 'enableToolPalette';
48
+
49
+ export function is(object: any): object is EnableToolPaletteAction {
50
+ return Action.hasKind(object, KIND);
51
+ }
52
+
53
+ export function create(): EnableToolPaletteAction {
54
+ return { kind: KIND };
55
+ }
56
+ }
50
57
  @injectable()
51
58
  export class ToolPalette extends AbstractUIExtension implements IActionHandler, EditModeListener {
52
59
  static readonly ID = 'tool-palette';
@@ -75,7 +82,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
75
82
  this.editorContext.register(this);
76
83
  }
77
84
 
78
- initialize(): boolean {
85
+ override initialize(): boolean {
79
86
  if (!this.paletteItems) {
80
87
  return false;
81
88
  }
@@ -88,7 +95,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
88
95
  this.lastActivebutton = this.defaultToolsButton;
89
96
  }
90
97
 
91
- protected onBeforeShow(_containerElement: HTMLElement, root: Readonly<SModelRoot>): void {
98
+ protected override onBeforeShow(_containerElement: HTMLElement, root: Readonly<SModelRoot>): void {
92
99
  this.modelRootId = root.id;
93
100
  this.containerElement.style.maxHeight = PALETTE_HEIGHT;
94
101
  }
@@ -215,7 +222,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
215
222
  validateActionButton.title = 'Validate model';
216
223
  validateActionButton.onclick = _event => {
217
224
  const modelIds: string[] = [this.modelRootId];
218
- this.actionDispatcher.dispatch(new RequestMarkersAction(modelIds));
225
+ this.actionDispatcher.dispatch(RequestMarkersAction.create(modelIds));
219
226
  };
220
227
  return validateActionButton;
221
228
  }
@@ -284,7 +291,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
284
291
  protected onClickStaticToolButton(button: HTMLElement, toolId?: string) {
285
292
  return (_ev: MouseEvent) => {
286
293
  if (!this.editorContext.isReadonly) {
287
- const action = toolId ? new EnableToolsAction([toolId]) : new EnableDefaultToolsAction();
294
+ const action = toolId ? EnableToolsAction.create([toolId]) : EnableDefaultToolsAction.create();
288
295
  this.actionDispatcher.dispatch(action);
289
296
  this.changeActiveButton(button);
290
297
  button.focus();
@@ -307,23 +314,30 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
307
314
 
308
315
  handle(action: Action): ICommand | Action | void {
309
316
  if (action.kind === EnableToolPaletteAction.KIND) {
310
- const requestAction = new RequestContextActions(ToolPalette.ID, {
311
- selectedElementIds: []
317
+ const requestAction = RequestContextActions.create({
318
+ contextId: ToolPalette.ID,
319
+ editorContext: {
320
+ selectedElementIds: []
321
+ }
312
322
  });
313
323
  this.actionDispatcher.requestUntil(requestAction).then(response => {
314
- if (isSetContextActionsAction(response)) {
324
+ if (SetContextActions.is(response)) {
315
325
  this.paletteItems = response.actions.map(e => e as PaletteItem);
316
- this.actionDispatcher.dispatch(new SetUIExtensionVisibilityAction(ToolPalette.ID, !this.editorContext.isReadonly));
326
+ this.actionDispatcher.dispatch(
327
+ SetUIExtensionVisibilityAction.create({ extensionId: ToolPalette.ID, visible: !this.editorContext.isReadonly })
328
+ );
317
329
  }
318
330
  });
319
- } else if (action instanceof EnableDefaultToolsAction) {
331
+ } else if (action.kind === EnableDefaultToolsAction.KIND) {
320
332
  this.changeActiveButton();
321
333
  this.restoreFocus();
322
334
  }
323
335
  }
324
336
 
325
337
  editModeChanged(_oldValue: string, _newValue: string): void {
326
- this.actionDispatcher.dispatch(new SetUIExtensionVisibilityAction(ToolPalette.ID, !this.editorContext.isReadonly));
338
+ this.actionDispatcher.dispatch(
339
+ SetUIExtensionVisibilityAction.create({ extensionId: ToolPalette.ID, visible: !this.editorContext.isReadonly })
340
+ );
327
341
  }
328
342
 
329
343
  protected clearOnEscape(event: KeyboardEvent): void {
@@ -335,7 +349,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
335
349
 
336
350
  protected clearToolOnEscape(event: KeyboardEvent): void {
337
351
  if (matchesKeystroke(event, 'Escape')) {
338
- this.actionDispatcher.dispatch(new EnableDefaultToolsAction());
352
+ this.actionDispatcher.dispatch(EnableDefaultToolsAction.create());
339
353
  }
340
354
  }
341
355
 
@@ -410,10 +424,12 @@ export function createToolGroup(item: PaletteItem): HTMLElement {
410
424
  }
411
425
 
412
426
  export function changeCSSClass(element: Element, css: string): void {
427
+ // eslint-disable-next-line chai-friendly/no-unused-expressions
413
428
  element.classList.contains(css) ? element.classList.remove(css) : element.classList.add(css);
414
429
  }
415
430
 
416
431
  export function changeCodiconClass(element: Element, codiconId: string): void {
432
+ // eslint-disable-next-line chai-friendly/no-unused-expressions
417
433
  element.classList.contains(codiconCSSClasses(codiconId)[1])
418
434
  ? element.classList.remove(codiconCSSClasses(codiconId)[1])
419
435
  : element.classList.add(codiconCSSClasses(codiconId)[1]);
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020-2021 EclipseSource and others.
2
+ * Copyright (c) 2020-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -15,18 +15,18 @@
15
15
  ********************************************************************************/
16
16
  import { Action } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
- import { IActionDispatcher, KeyTool, TYPES } from 'sprotty';
18
+ import { IActionDispatcher, KeyTool } from 'sprotty';
19
19
  import { EditorContextService } from '../../base/editor-context-service';
20
20
  import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
21
- import { GLSP_TYPES } from '../../base/types';
21
+ import { TYPES } from '../../base/types';
22
22
  import { IMouseTool } from '../mouse-tool/mouse-tool';
23
23
  import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
24
24
 
25
25
  @injectable()
26
26
  export abstract class BaseGLSPTool implements GLSPTool {
27
- @inject(GLSP_TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
27
+ @inject(TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
28
28
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher;
29
- @inject(GLSP_TYPES.MouseTool) protected mouseTool: IMouseTool;
29
+ @inject(TYPES.MouseTool) protected mouseTool: IMouseTool;
30
30
  @inject(KeyTool) protected keyTool: KeyTool;
31
31
  @inject(EditorContextService) protected readonly editorContext: EditorContextService;
32
32
 
@@ -39,15 +39,15 @@ export abstract class BaseGLSPTool implements GLSPTool {
39
39
  return true;
40
40
  }
41
41
 
42
- dispatchFeedback(actions: Action[], feedbackeEmitter?: IFeedbackEmitter): void {
43
- this.feedbackDispatcher.registerFeedback(feedbackeEmitter ? feedbackeEmitter : this, actions);
44
- }
45
-
46
42
  dispatchActions(actions: Action[]): void {
47
43
  this.actionDispatcher.dispatchAll(actions);
48
44
  }
49
45
 
50
- deregisterFeedback(actions: Action[], feedbackeEmitter?: IFeedbackEmitter): void {
51
- this.feedbackDispatcher.deregisterFeedback(feedbackeEmitter ? feedbackeEmitter : this, actions);
46
+ dispatchFeedback(actions: Action[], feedbackEmitter?: IFeedbackEmitter): void {
47
+ this.feedbackDispatcher.registerFeedback(feedbackEmitter ?? this, actions);
48
+ }
49
+
50
+ deregisterFeedback(actions: Action[], feedbackEmitter?: IFeedbackEmitter): void {
51
+ this.feedbackDispatcher.deregisterFeedback(feedbackEmitter ?? this, actions);
52
52
  }
53
53
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -19,32 +19,30 @@ import {
19
19
  ChangeBoundsOperation,
20
20
  ChangeRoutingPointsOperation,
21
21
  CompoundOperation,
22
+ Dimension,
23
+ ElementAndBounds,
22
24
  ElementAndRoutingPoints,
23
25
  Operation,
24
- Point
26
+ Point,
27
+ SetBoundsAction
25
28
  } from '@eclipse-glsp/protocol';
26
29
  import { inject, injectable, optional } from 'inversify';
27
30
  import {
28
31
  BoundsAware,
29
- Dimension,
30
32
  EdgeRouterRegistry,
31
- ElementAndBounds,
32
33
  findParentByFeature,
33
34
  ISnapper,
34
35
  isSelected,
35
- isViewport,
36
36
  MouseListener,
37
37
  SChildElement,
38
38
  SConnectableElement,
39
- SetBoundsAction,
40
39
  SModelElement,
41
40
  SModelRoot,
42
- SParentElement,
43
- TYPES
41
+ SParentElement
44
42
  } from 'sprotty';
45
43
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
46
- import { GLSP_TYPES } from '../../base/types';
47
- import { isValidMove, isValidSize, WriteablePoint } from '../../utils/layout-utils';
44
+ import { TYPES } from '../../base/types';
45
+ import { isValidMove, isValidSize } from '../../utils/layout-utils';
48
46
  import {
49
47
  forEachElement,
50
48
  isNonRoutableSelectedMovableBoundsAware,
@@ -57,6 +55,7 @@ import {
57
55
  IMovementRestrictor,
58
56
  removeMovementRestrictionFeedback
59
57
  } from '../change-bounds/movement-restrictor';
58
+ import { PointPositionUpdater } from '../change-bounds/snap';
60
59
  import { SelectionListener, SelectionService } from '../select/selection-service';
61
60
  import {
62
61
  FeedbackMoveMouseListener,
@@ -83,10 +82,10 @@ import { BaseGLSPTool } from './base-glsp-tool';
83
82
  export class ChangeBoundsTool extends BaseGLSPTool {
84
83
  static ID = 'glsp.change-bounds-tool';
85
84
 
86
- @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService;
85
+ @inject(TYPES.SelectionService) protected selectionService: SelectionService;
87
86
  @inject(EdgeRouterRegistry) @optional() readonly edgeRouterRegistry?: EdgeRouterRegistry;
88
87
  @inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
89
- @inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor;
88
+ @inject(TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor;
90
89
  protected feedbackMoveMouseListener: MouseListener;
91
90
  protected changeBoundsListener: MouseListener & SelectionListener;
92
91
 
@@ -118,7 +117,7 @@ export class ChangeBoundsTool extends BaseGLSPTool {
118
117
  this.selectionService.deregister(this.changeBoundsListener);
119
118
  this.mouseTool.deregister(this.feedbackMoveMouseListener);
120
119
  this.deregisterFeedback([], this.feedbackMoveMouseListener);
121
- this.deregisterFeedback([new HideChangeBoundsToolResizeFeedbackAction()], this.changeBoundsListener);
120
+ this.deregisterFeedback([HideChangeBoundsToolResizeFeedbackAction.create()], this.changeBoundsListener);
122
121
  }
123
122
  }
124
123
 
@@ -127,8 +126,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
127
126
 
128
127
  // members for calculating the correct position change
129
128
  protected initialBounds: Bounds | undefined;
130
- protected lastDragPosition?: Point;
131
- protected positionDelta: WriteablePoint = { x: 0, y: 0 };
129
+ protected pointPositionUpdater: PointPositionUpdater;
132
130
 
133
131
  // members for resize mode
134
132
  protected activeResizeElement?: SModelElement;
@@ -136,11 +134,14 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
136
134
 
137
135
  constructor(protected tool: ChangeBoundsTool) {
138
136
  super();
137
+ this.pointPositionUpdater = new PointPositionUpdater(tool.snapper);
139
138
  }
140
139
 
141
- mouseDown(target: SModelElement, event: MouseEvent): Action[] {
140
+ override mouseDown(target: SModelElement, event: MouseEvent): Action[] {
142
141
  super.mouseDown(target, event);
143
- if (event.button !== 0) {
142
+ // If another button than the left mouse button was clicked or we are
143
+ // still on the root element we don't need to execute the tool behavior
144
+ if (event.button !== 0 || target instanceof SModelRoot) {
144
145
  return [];
145
146
  }
146
147
  // check if we have a resize handle (only single-selection)
@@ -157,7 +158,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
157
158
  return [];
158
159
  }
159
160
 
160
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
161
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
161
162
  super.mouseMove(target, event);
162
163
  if (this.isMouseDrag && this.activeResizeHandle) {
163
164
  // rely on the FeedbackMoveMouseListener to update the element bounds of selected elements
@@ -166,7 +167,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
166
167
  cursorFeedbackAction(this.activeResizeHandle.isNwSeResize() ? CursorCSS.RESIZE_NWSE : CursorCSS.RESIZE_NESW),
167
168
  applyCssClasses(this.activeResizeHandle, ChangeBoundsListener.CSS_CLASS_ACTIVE)
168
169
  ];
169
- const positionUpdate = this.updatePosition(target, event);
170
+ const positionUpdate = this.pointPositionUpdater.updatePosition(target, { x: event.pageX, y: event.pageY }, !event.altKey);
170
171
  if (positionUpdate) {
171
172
  const resizeActions = this.handleResizeOnClient(positionUpdate);
172
173
  actions.push(...resizeActions);
@@ -176,8 +177,8 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
176
177
  return [];
177
178
  }
178
179
 
179
- draggingMouseUp(target: SModelElement, event: MouseEvent): Action[] {
180
- if (this.lastDragPosition === undefined) {
180
+ override draggingMouseUp(target: SModelElement, event: MouseEvent): Action[] {
181
+ if (this.pointPositionUpdater.isLastDragPositionUndefined()) {
181
182
  this.resetPosition();
182
183
  return [];
183
184
  }
@@ -200,16 +201,16 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
200
201
  operations.push(...this.handleMoveElementsOnServer(target));
201
202
  operations.push(...this.handleMoveRoutingPointsOnServer(target));
202
203
  if (operations.length > 0) {
203
- return [new CompoundOperation(operations)];
204
+ return [CompoundOperation.create(operations)];
204
205
  }
205
206
  return operations;
206
207
  }
207
208
 
208
- protected handleMoveElementsOnServer(target: SModelElement): Action[] {
209
+ protected handleMoveElementsOnServer(target: SModelElement): Operation[] {
209
210
  const result: Operation[] = [];
210
211
  const newBounds: ElementAndBounds[] = [];
211
212
  const selectedElements: (SModelElement & BoundsAware)[] = [];
212
- forEachElement(target, isNonRoutableSelectedMovableBoundsAware, element => {
213
+ forEachElement(target.index, isNonRoutableSelectedMovableBoundsAware, element => {
213
214
  selectedElements.push(element);
214
215
  });
215
216
 
@@ -220,7 +221,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
220
221
  .forEach(bounds => newBounds.push(...bounds));
221
222
 
222
223
  if (newBounds.length > 0) {
223
- result.push(new ChangeBoundsOperation(newBounds));
224
+ result.push(ChangeBoundsOperation.create(newBounds));
224
225
  }
225
226
  return result;
226
227
  }
@@ -235,10 +236,10 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
235
236
  return false;
236
237
  }
237
238
 
238
- protected handleMoveRoutingPointsOnServer(target: SModelElement): Action[] {
239
+ protected handleMoveRoutingPointsOnServer(target: SModelElement): Operation[] {
239
240
  const result: Operation[] = [];
240
241
  const newRoutingPoints: ElementAndRoutingPoints[] = [];
241
- forEachElement(target, isNonRoutableSelectedMovableBoundsAware, element => {
242
+ forEachElement(target.index, isNonRoutableSelectedMovableBoundsAware, element => {
242
243
  // If client routing is enabled -> delegate routingpoints of connected edges to server
243
244
  if (this.tool.edgeRouterRegistry && element instanceof SConnectableElement) {
244
245
  element.incomingEdges.map(toElementAndRoutingPoints).forEach(ear => newRoutingPoints.push(ear));
@@ -246,7 +247,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
246
247
  }
247
248
  });
248
249
  if (newRoutingPoints.length > 0) {
249
- result.push(new ChangeRoutingPointsOperation(newRoutingPoints));
250
+ result.push(ChangeRoutingPointsOperation.create(newRoutingPoints));
250
251
  }
251
252
  return result;
252
253
  }
@@ -287,7 +288,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
287
288
  // only allow one element to have the element resize handles
288
289
  this.activeResizeElement = moveableElement;
289
290
  if (isResizable(this.activeResizeElement)) {
290
- this.tool.dispatchFeedback([new ShowChangeBoundsToolResizeFeedbackAction(this.activeResizeElement.id)], this);
291
+ this.tool.dispatchFeedback([ShowChangeBoundsToolResizeFeedbackAction.create(this.activeResizeElement.id)], this);
291
292
  }
292
293
  return true;
293
294
  }
@@ -299,7 +300,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
299
300
  }
300
301
 
301
302
  protected initPosition(event: MouseEvent): void {
302
- this.lastDragPosition = { x: event.pageX, y: event.pageY };
303
+ this.pointPositionUpdater.updateLastDragPosition({ x: event.pageX, y: event.pageY });
303
304
  if (this.activeResizeHandle) {
304
305
  const resizeElement = findParentByFeature(this.activeResizeHandle, isResizable);
305
306
  this.initialBounds = {
@@ -311,39 +312,9 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
311
312
  }
312
313
  }
313
314
 
314
- protected updatePosition(target: SModelElement, event: MouseEvent): Point | undefined {
315
- if (this.lastDragPosition) {
316
- const newDragPosition = { x: event.pageX, y: event.pageY };
317
-
318
- const viewport = findParentByFeature(target, isViewport);
319
- const zoom = viewport ? viewport.zoom : 1;
320
- const dx = (event.pageX - this.lastDragPosition.x) / zoom;
321
- const dy = (event.pageY - this.lastDragPosition.y) / zoom;
322
- const deltaToLastPosition = { x: dx, y: dy };
323
- this.lastDragPosition = newDragPosition;
324
-
325
- // update position delta with latest delta
326
- this.positionDelta.x += deltaToLastPosition.x;
327
- this.positionDelta.y += deltaToLastPosition.y;
328
-
329
- // snap our delta and only send update if the position actually changes
330
- // otherwise accumulate delta until we do snap to an update
331
- const positionUpdate = this.snap(this.positionDelta, target, !event.altKey);
332
- if (positionUpdate.x === 0 && positionUpdate.y === 0) {
333
- return undefined;
334
- }
335
-
336
- // we update our position so we update our delta by the snapped position
337
- this.positionDelta.x -= positionUpdate.x;
338
- this.positionDelta.y -= positionUpdate.y;
339
- return positionUpdate;
340
- }
341
- return undefined;
342
- }
343
-
344
315
  protected reset(): void {
345
316
  if (this.activeResizeElement && isResizable(this.activeResizeElement)) {
346
- this.tool.dispatchFeedback([new HideChangeBoundsToolResizeFeedbackAction()], this);
317
+ this.tool.dispatchFeedback([HideChangeBoundsToolResizeFeedbackAction.create()], this);
347
318
  }
348
319
  this.tool.dispatchActions([cursorFeedbackAction(CursorCSS.DEFAULT)]);
349
320
  this.resetPosition();
@@ -351,8 +322,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
351
322
 
352
323
  protected resetPosition(): void {
353
324
  this.activeResizeHandle = undefined;
354
- this.lastDragPosition = undefined;
355
- this.positionDelta = { x: 0, y: 0 };
325
+ this.pointPositionUpdater.resetPosition();
356
326
  }
357
327
 
358
328
  protected handleResizeOnClient(positionUpdate: Point): Action[] {
@@ -418,13 +388,13 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
418
388
 
419
389
  protected createChangeBoundsAction(element: SModelElement & BoundsAware): Action[] {
420
390
  if (this.isValidBoundChange(element, element.bounds, element.bounds)) {
421
- return [new ChangeBoundsOperation([toElementAndBounds(element)])];
391
+ return [ChangeBoundsOperation.create([toElementAndBounds(element)])];
422
392
  } else if (this.initialBounds) {
423
393
  const actions: Action[] = [];
424
394
  if (this.tool.movementRestrictor) {
425
395
  actions.push(removeMovementRestrictionFeedback(element, this.tool.movementRestrictor));
426
396
  }
427
- actions.push(new SetBoundsAction([{ elementId: element.id, newPosition: this.initialBounds, newSize: this.initialBounds }]));
397
+ actions.push(SetBoundsAction.create([{ elementId: element.id, newPosition: this.initialBounds, newSize: this.initialBounds }]));
428
398
  return actions;
429
399
  }
430
400
  return [];
@@ -446,12 +416,12 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
446
416
  if (this.tool.movementRestrictor) {
447
417
  result.push(removeMovementRestrictionFeedback(element, this.tool.movementRestrictor));
448
418
  }
449
- result.push(new SetBoundsAction([{ elementId: element.id, newPosition, newSize }]));
419
+ result.push(SetBoundsAction.create([{ elementId: element.id, newPosition, newSize }]));
450
420
  } else if (this.isValidSize(element, newSize)) {
451
421
  if (this.tool.movementRestrictor) {
452
422
  result.push(createMovementRestrictionFeedback(element, this.tool.movementRestrictor));
453
423
  }
454
- result.push(new SetBoundsAction([{ elementId: element.id, newPosition, newSize }]));
424
+ result.push(SetBoundsAction.create([{ elementId: element.id, newPosition, newSize }]));
455
425
  }
456
426
 
457
427
  return result;
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -28,7 +28,7 @@ import {
28
28
  } from 'sprotty';
29
29
  import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
30
30
  import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
31
- import { GLSP_TYPES } from '../../base/types';
31
+ import { TYPES } from '../../base/types';
32
32
  import { IMouseTool } from '../mouse-tool/mouse-tool';
33
33
  import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
34
34
  import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
@@ -60,7 +60,7 @@ export class DelKeyDeleteTool implements GLSPTool {
60
60
 
61
61
  @injectable()
62
62
  export class DeleteKeyListener extends KeyListener {
63
- keyDown(element: SModelElement, event: KeyboardEvent): Action[] {
63
+ override keyDown(element: SModelElement, event: KeyboardEvent): Action[] {
64
64
  if (matchesKeystroke(event, 'Delete')) {
65
65
  const deleteElementIds = Array.from(
66
66
  element.root.index
@@ -70,7 +70,7 @@ export class DeleteKeyListener extends KeyListener {
70
70
  .map(e => e.id)
71
71
  );
72
72
  if (deleteElementIds.length > 0) {
73
- return [new DeleteElementOperation(deleteElementIds)];
73
+ return [DeleteElementOperation.create(deleteElementIds)];
74
74
  }
75
75
  }
76
76
  return [];
@@ -88,8 +88,8 @@ export class MouseDeleteTool implements GLSPTool {
88
88
 
89
89
  protected deleteToolMouseListener: DeleteToolMouseListener = new DeleteToolMouseListener();
90
90
 
91
- @inject(GLSP_TYPES.MouseTool) protected mouseTool: IMouseTool;
92
- @inject(GLSP_TYPES.IFeedbackActionDispatcher) protected readonly feedbackDispatcher: IFeedbackActionDispatcher;
91
+ @inject(TYPES.MouseTool) protected mouseTool: IMouseTool;
92
+ @inject(TYPES.IFeedbackActionDispatcher) protected readonly feedbackDispatcher: IFeedbackActionDispatcher;
93
93
 
94
94
  get id(): string {
95
95
  return MouseDeleteTool.ID;
@@ -108,15 +108,15 @@ export class MouseDeleteTool implements GLSPTool {
108
108
 
109
109
  @injectable()
110
110
  export class DeleteToolMouseListener extends MouseListener {
111
- mouseUp(target: SModelElement, event: MouseEvent): Action[] {
111
+ override mouseUp(target: SModelElement, event: MouseEvent): Action[] {
112
112
  const deletableParent = findParentByFeature(target, isDeletable);
113
113
  if (deletableParent === undefined) {
114
114
  return [];
115
115
  }
116
116
  const result: Action[] = [];
117
- result.push(new DeleteElementOperation([deletableParent.id]));
117
+ result.push(DeleteElementOperation.create([deletableParent.id]));
118
118
  if (!isCtrlOrCmd(event)) {
119
- result.push(new EnableDefaultToolsAction());
119
+ result.push(EnableDefaultToolsAction.create());
120
120
  }
121
121
  return result;
122
122
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -16,30 +16,36 @@
16
16
  import { TriggerEdgeCreationAction, TriggerNodeCreationAction } from '@eclipse-glsp/protocol';
17
17
  import { ContainerModule, interfaces } from 'inversify';
18
18
  import { configureActionHandler, configureModelElement } from 'sprotty';
19
- import { GLSP_TYPES } from '../../base/types';
19
+ import { FocusStateChangedAction } from '../../base/actions/focus-change-action';
20
+ import { TYPES } from '../../base/types';
20
21
  import { MARQUEE } from '../tool-feedback/marquee-tool-feedback';
21
22
  import { ChangeBoundsTool } from './change-bounds-tool';
22
23
  import { DelKeyDeleteTool, MouseDeleteTool } from './delete-tool';
23
24
  import { EdgeCreationTool } from './edge-creation-tool';
24
25
  import { EdgeEditTool } from './edge-edit-tool';
26
+ import { EnableDefaultToolsOnFocusLossHandler } from './enable-default-tools-on-focus-loss';
25
27
  import { MarqueeMouseTool } from './marquee-mouse-tool';
26
28
  import { MarqueeTool } from './marquee-tool';
27
29
  import { MarqueeNode } from './model';
28
30
  import { NodeCreationTool } from './node-creation-tool';
29
31
  import { MarqueeView } from './view';
30
32
 
31
- const toolsModule = new ContainerModule((bind, _unbind, isBound) => {
33
+ /**
34
+ * Registers the default tools of GLSP (node and edge creation, changing bounds, edge editing, deletion)
35
+ * and adds the marquee selection tool.
36
+ */
37
+ export const toolsModule = new ContainerModule((bind, _unbind, isBound) => {
32
38
  // Register default tools
33
- bind(GLSP_TYPES.IDefaultTool).to(ChangeBoundsTool);
34
- bind(GLSP_TYPES.IDefaultTool).to(EdgeEditTool);
35
- bind(GLSP_TYPES.IDefaultTool).to(DelKeyDeleteTool);
39
+ bind(TYPES.IDefaultTool).to(ChangeBoundsTool);
40
+ bind(TYPES.IDefaultTool).to(EdgeEditTool);
41
+ bind(TYPES.IDefaultTool).to(DelKeyDeleteTool);
36
42
 
37
43
  // Register tools
38
- bind(GLSP_TYPES.ITool).to(MouseDeleteTool);
44
+ bind(TYPES.ITool).to(MouseDeleteTool);
39
45
  bind(NodeCreationTool).toSelf().inSingletonScope();
40
46
  bind(EdgeCreationTool).toSelf().inSingletonScope();
41
- bind(GLSP_TYPES.ITool).toService(EdgeCreationTool);
42
- bind(GLSP_TYPES.ITool).toService(NodeCreationTool);
47
+ bind(TYPES.ITool).toService(EdgeCreationTool);
48
+ bind(TYPES.ITool).toService(NodeCreationTool);
43
49
 
44
50
  configureMarqueeTool({ bind, isBound });
45
51
  configureActionHandler({ bind, isBound }, TriggerNodeCreationAction.KIND, NodeCreationTool);
@@ -48,8 +54,13 @@ const toolsModule = new ContainerModule((bind, _unbind, isBound) => {
48
54
 
49
55
  export function configureMarqueeTool(context: { bind: interfaces.Bind; isBound: interfaces.IsBound }): void {
50
56
  configureModelElement(context, MARQUEE, MarqueeNode, MarqueeView);
51
- context.bind(GLSP_TYPES.IDefaultTool).to(MarqueeTool);
52
- context.bind(GLSP_TYPES.ITool).to(MarqueeMouseTool);
57
+ context.bind(TYPES.IDefaultTool).to(MarqueeTool);
58
+ context.bind(TYPES.ITool).to(MarqueeMouseTool);
53
59
  }
54
60
 
55
- export default toolsModule;
61
+ /**
62
+ * Enables the default tools in the tool manager if the diagram looses focus.
63
+ */
64
+ export const enableDefaultToolsOnFocusLossModule = new ContainerModule((bind, _unbind, isBound) => {
65
+ configureActionHandler({ bind, isBound }, FocusStateChangedAction.KIND, EnableDefaultToolsOnFocusLossHandler);
66
+ });