@eclipse-glsp/client 0.9.0 → 0.10.0-next.17bfb07.173

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 (531) hide show
  1. package/css/glsp-sprotty.css +110 -8
  2. package/lib/base/action-dispatcher.d.ts +4 -3
  3. package/lib/base/action-dispatcher.d.ts.map +1 -1
  4. package/lib/base/action-dispatcher.js +22 -12
  5. package/lib/base/action-dispatcher.js.map +1 -1
  6. package/lib/base/actions/focus-change-action.d.ts +16 -7
  7. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  8. package/lib/base/actions/focus-change-action.js +31 -12
  9. package/lib/base/actions/focus-change-action.js.map +1 -1
  10. package/lib/base/actions/sprotty-actions.d.ts +7 -0
  11. package/lib/base/actions/sprotty-actions.d.ts.map +1 -0
  12. package/lib/{features/tool-palette/palette-item.js → base/actions/sprotty-actions.js} +4 -20
  13. package/lib/base/actions/sprotty-actions.js.map +1 -0
  14. package/lib/base/auto-complete/auto-complete-actions.d.ts +5 -3
  15. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  16. package/lib/base/auto-complete/auto-complete-actions.js +24 -5
  17. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  18. package/lib/base/auto-complete/auto-complete-widget.d.ts +9 -2
  19. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  20. package/lib/base/auto-complete/auto-complete-widget.js +16 -9
  21. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  22. package/lib/base/auto-complete/validation-decorator.js +2 -2
  23. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  24. package/lib/base/command-stack.d.ts.map +1 -1
  25. package/lib/base/command-stack.js +6 -5
  26. package/lib/base/command-stack.js.map +1 -1
  27. package/lib/base/container-modules.d.ts.map +1 -1
  28. package/lib/base/container-modules.js +2 -1
  29. package/lib/base/container-modules.js.map +1 -1
  30. package/lib/base/di.config.d.ts +1 -1
  31. package/lib/base/di.config.d.ts.map +1 -1
  32. package/lib/base/di.config.js +13 -14
  33. package/lib/base/di.config.js.map +1 -1
  34. package/lib/base/drag-aware-mouse-listener.d.ts +1 -1
  35. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  36. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  37. package/lib/base/editor-context-service.d.ts +18 -5
  38. package/lib/base/editor-context-service.d.ts.map +1 -1
  39. package/lib/base/editor-context-service.js +39 -22
  40. package/lib/base/editor-context-service.js.map +1 -1
  41. package/lib/base/focus-tracker.d.ts +1 -1
  42. package/lib/base/focus-tracker.d.ts.map +1 -1
  43. package/lib/base/focus-tracker.js +4 -4
  44. package/lib/base/focus-tracker.js.map +1 -1
  45. package/lib/base/model/model-registry.d.ts.map +1 -1
  46. package/lib/base/model/model-registry.js +2 -2
  47. package/lib/base/model/model-registry.js.map +1 -1
  48. package/lib/base/model/update-model-command.d.ts +1 -1
  49. package/lib/base/model/update-model-command.d.ts.map +1 -1
  50. package/lib/base/model/update-model-command.js +15 -15
  51. package/lib/base/model/update-model-command.js.map +1 -1
  52. package/lib/base/model-initialization-constraint.d.ts +4 -5
  53. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  54. package/lib/base/model-initialization-constraint.js +11 -13
  55. package/lib/base/model-initialization-constraint.js.map +1 -1
  56. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  57. package/lib/base/selection-clearing-mouse-listener.js +1 -1
  58. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  59. package/lib/base/source-uri-aware.d.ts +2 -17
  60. package/lib/base/source-uri-aware.d.ts.map +1 -1
  61. package/lib/base/source-uri-aware.js +4 -6
  62. package/lib/base/source-uri-aware.js.map +1 -1
  63. package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
  64. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  65. package/lib/base/tool-manager/glsp-tool-manager.js +10 -10
  66. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  67. package/lib/base/tool-manager/tool-actions.d.ts +14 -0
  68. package/lib/base/tool-manager/tool-actions.d.ts.map +1 -0
  69. package/lib/base/tool-manager/tool-actions.js +25 -0
  70. package/lib/base/tool-manager/tool-actions.js.map +1 -0
  71. package/lib/base/types.d.ts +144 -20
  72. package/lib/base/types.d.ts.map +1 -1
  73. package/lib/base/types.js +14 -26
  74. package/lib/base/types.js.map +1 -1
  75. package/lib/base/view/view-registry.d.ts.map +1 -1
  76. package/lib/base/view/view-registry.js +2 -2
  77. package/lib/base/view/view-registry.js.map +1 -1
  78. package/lib/features/change-bounds/model.d.ts +1 -1
  79. package/lib/features/change-bounds/model.d.ts.map +1 -1
  80. package/lib/features/change-bounds/model.js +3 -3
  81. package/lib/features/change-bounds/model.js.map +1 -1
  82. package/lib/features/change-bounds/movement-restrictor.d.ts +37 -7
  83. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  84. package/lib/features/change-bounds/movement-restrictor.js +55 -40
  85. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  86. package/lib/features/change-bounds/snap.d.ts +42 -2
  87. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  88. package/lib/features/change-bounds/snap.js +78 -2
  89. package/lib/features/change-bounds/snap.js.map +1 -1
  90. package/lib/features/change-bounds/snap.spec.d.ts +17 -0
  91. package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
  92. package/lib/features/change-bounds/snap.spec.js +82 -0
  93. package/lib/features/change-bounds/snap.spec.js.map +1 -0
  94. package/lib/features/command-palette/command-palette-tool.js +3 -3
  95. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  96. package/lib/features/command-palette/di.config.d.ts +2 -2
  97. package/lib/features/command-palette/di.config.d.ts.map +1 -1
  98. package/lib/features/command-palette/di.config.js +6 -6
  99. package/lib/features/command-palette/di.config.js.map +1 -1
  100. package/lib/features/command-palette/server-command-palette-provider.d.ts +1 -1
  101. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  102. package/lib/features/command-palette/server-command-palette-provider.js +13 -10
  103. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  104. package/lib/features/context-menu/delete-element-context-menu.d.ts +17 -1
  105. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  106. package/lib/features/context-menu/delete-element-context-menu.js +4 -4
  107. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  108. package/lib/features/context-menu/di.config.d.ts +1 -1
  109. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  110. package/lib/features/context-menu/di.config.js +8 -7
  111. package/lib/features/context-menu/di.config.js.map +1 -1
  112. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +33 -1
  113. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  114. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +41 -28
  115. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  116. package/lib/features/context-menu/server-context-menu-provider.d.ts +1 -1
  117. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  118. package/lib/features/context-menu/server-context-menu-provider.js +8 -7
  119. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  120. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +12 -15
  121. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  122. package/lib/features/copy-paste/copy-paste-context-menu.js +26 -33
  123. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  124. package/lib/features/copy-paste/copy-paste-handler.d.ts +1 -1
  125. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  126. package/lib/features/copy-paste/copy-paste-handler.js +10 -11
  127. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  128. package/lib/features/copy-paste/di.config.d.ts +1 -1
  129. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  130. package/lib/features/copy-paste/di.config.js +5 -7
  131. package/lib/features/copy-paste/di.config.js.map +1 -1
  132. package/lib/features/decoration/decoration-placer.d.ts +1 -1
  133. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  134. package/lib/features/decoration/decoration-placer.js +19 -3
  135. package/lib/features/decoration/decoration-placer.js.map +1 -1
  136. package/lib/features/decoration/di.config.d.ts +2 -2
  137. package/lib/features/decoration/di.config.d.ts.map +1 -1
  138. package/lib/features/decoration/di.config.js +4 -4
  139. package/lib/features/decoration/di.config.js.map +1 -1
  140. package/lib/features/edit-label/di.config.d.ts +1 -1
  141. package/lib/features/edit-label/di.config.d.ts.map +1 -1
  142. package/lib/features/edit-label/di.config.js +5 -5
  143. package/lib/features/edit-label/di.config.js.map +1 -1
  144. package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -1
  145. package/lib/features/edit-label/edit-label-tool.js +2 -2
  146. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  147. package/lib/features/edit-label/edit-label-validator.d.ts +4 -6
  148. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  149. package/lib/features/edit-label/edit-label-validator.js +11 -13
  150. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  151. package/lib/features/hints/di.config.js +4 -4
  152. package/lib/features/hints/di.config.js.map +1 -1
  153. package/lib/features/hints/type-hints.d.ts +15 -5
  154. package/lib/features/hints/type-hints.d.ts.map +1 -1
  155. package/lib/features/hints/type-hints.js +29 -26
  156. package/lib/features/hints/type-hints.js.map +1 -1
  157. package/lib/features/hover/di.config.d.ts +1 -1
  158. package/lib/features/hover/di.config.d.ts.map +1 -1
  159. package/lib/features/hover/di.config.js +14 -10
  160. package/lib/features/hover/di.config.js.map +1 -1
  161. package/lib/features/hover/hover.d.ts +16 -4
  162. package/lib/features/hover/hover.d.ts.map +1 -1
  163. package/lib/features/hover/hover.js +42 -4
  164. package/lib/features/hover/hover.js.map +1 -1
  165. package/lib/features/layout/di.config.d.ts +3 -3
  166. package/lib/features/layout/di.config.d.ts.map +1 -1
  167. package/lib/features/layout/di.config.js +11 -7
  168. package/lib/features/layout/di.config.js.map +1 -1
  169. package/lib/features/layout/freeform-layout.d.ts +17 -1
  170. package/lib/features/layout/freeform-layout.d.ts.map +1 -1
  171. package/lib/features/layout/freeform-layout.js +4 -4
  172. package/lib/features/layout/freeform-layout.js.map +1 -1
  173. package/lib/features/layout/hbox-layout.d.ts +41 -0
  174. package/lib/features/layout/hbox-layout.d.ts.map +1 -0
  175. package/lib/features/layout/hbox-layout.js +189 -0
  176. package/lib/features/layout/hbox-layout.js.map +1 -0
  177. package/lib/features/layout/layout-elements-action.d.ts +198 -0
  178. package/lib/features/layout/layout-elements-action.d.ts.map +1 -0
  179. package/lib/features/layout/layout-elements-action.js +391 -0
  180. package/lib/features/layout/layout-elements-action.js.map +1 -0
  181. package/lib/features/layout/layout-elements-action.spec.d.ts +3 -0
  182. package/lib/features/layout/layout-elements-action.spec.d.ts.map +1 -0
  183. package/lib/features/layout/{layout-commands.spec.js → layout-elements-action.spec.js} +81 -62
  184. package/lib/features/layout/layout-elements-action.spec.js.map +1 -0
  185. package/lib/features/layout/vbox-layout.d.ts +17 -1
  186. package/lib/features/layout/vbox-layout.d.ts.map +1 -1
  187. package/lib/features/layout/vbox-layout.js +9 -8
  188. package/lib/features/layout/vbox-layout.js.map +1 -1
  189. package/lib/features/model-source-watcher/di.config.js +1 -1
  190. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  191. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +1 -1
  192. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  193. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +11 -11
  194. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  195. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  196. package/lib/features/mouse-tool/di.config.d.ts.map +1 -1
  197. package/lib/features/mouse-tool/di.config.js +2 -2
  198. package/lib/features/mouse-tool/di.config.js.map +1 -1
  199. package/lib/features/mouse-tool/mouse-tool.d.ts +9 -5
  200. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  201. package/lib/features/mouse-tool/mouse-tool.js +11 -53
  202. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  203. package/lib/features/navigation/di.config.js +4 -4
  204. package/lib/features/navigation/di.config.js.map +1 -1
  205. package/lib/features/navigation/navigation-action-handler.d.ts +31 -16
  206. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  207. package/lib/features/navigation/navigation-action-handler.js +52 -68
  208. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  209. package/lib/features/navigation/navigation-target-resolver.d.ts +3 -3
  210. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  211. package/lib/features/navigation/navigation-target-resolver.js +9 -10
  212. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  213. package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
  214. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  215. package/lib/features/reconnect/model.d.ts +1 -1
  216. package/lib/features/reconnect/model.d.ts.map +1 -1
  217. package/lib/features/reconnect/model.js +1 -1
  218. package/lib/features/reconnect/model.js.map +1 -1
  219. package/lib/features/save/di.config.d.ts +1 -1
  220. package/lib/features/save/di.config.d.ts.map +1 -1
  221. package/lib/features/save/di.config.js +3 -3
  222. package/lib/features/save/di.config.js.map +1 -1
  223. package/lib/features/save/save-keylistener.d.ts +1 -1
  224. package/lib/features/save/save-keylistener.d.ts.map +1 -1
  225. package/lib/features/save/save-keylistener.js +3 -3
  226. package/lib/features/save/save-keylistener.js.map +1 -1
  227. package/lib/features/select/di.config.d.ts +1 -1
  228. package/lib/features/select/di.config.d.ts.map +1 -1
  229. package/lib/features/select/di.config.js +7 -8
  230. package/lib/features/select/di.config.js.map +1 -1
  231. package/lib/features/select/select-feedback-action.d.ts +26 -22
  232. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  233. package/lib/features/select/select-feedback-action.js +19 -46
  234. package/lib/features/select/select-feedback-action.js.map +1 -1
  235. package/lib/features/select/select-mouse-listener.d.ts +1 -1
  236. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  237. package/lib/features/select/select-mouse-listener.js +1 -1
  238. package/lib/features/select/select-mouse-listener.js.map +1 -1
  239. package/lib/features/select/selection-service.d.ts +14 -5
  240. package/lib/features/select/selection-service.d.ts.map +1 -1
  241. package/lib/features/select/selection-service.js +55 -64
  242. package/lib/features/select/selection-service.js.map +1 -1
  243. package/lib/features/select/selection-service.spec.js +28 -25
  244. package/lib/features/select/selection-service.spec.js.map +1 -1
  245. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +17 -9
  246. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  247. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +68 -38
  248. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  249. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +24 -12
  250. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  251. package/lib/features/tool-feedback/creation-tool-feedback.js +88 -35
  252. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  253. package/lib/features/tool-feedback/css-feedback.d.ts +17 -10
  254. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  255. package/lib/features/tool-feedback/css-feedback.js +42 -38
  256. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  257. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  258. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  259. package/lib/features/tool-feedback/di.config.js +18 -18
  260. package/lib/features/tool-feedback/di.config.js.map +1 -1
  261. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +45 -22
  262. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  263. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -114
  264. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  265. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
  266. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  267. package/lib/features/tool-feedback/feedback-action-dispatcher.js +4 -4
  268. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  269. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +21 -10
  270. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  271. package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -18
  272. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  273. package/lib/features/tool-feedback/model.d.ts +1 -2
  274. package/lib/features/tool-feedback/model.d.ts.map +1 -1
  275. package/lib/features/tool-feedback/model.js +1 -1
  276. package/lib/features/tool-feedback/model.js.map +1 -1
  277. package/lib/features/tool-feedback/view.d.ts +1 -1
  278. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  279. package/lib/features/tool-feedback/view.js +22 -5
  280. package/lib/features/tool-feedback/view.js.map +1 -1
  281. package/lib/features/tool-palette/di.config.d.ts +1 -1
  282. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  283. package/lib/features/tool-palette/di.config.js +5 -4
  284. package/lib/features/tool-palette/di.config.js.map +1 -1
  285. package/lib/features/tool-palette/tool-palette.d.ts +10 -7
  286. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  287. package/lib/features/tool-palette/tool-palette.js +39 -32
  288. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  289. package/lib/features/tools/base-glsp-tool.d.ts +3 -3
  290. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  291. package/lib/features/tools/base-glsp-tool.js +11 -11
  292. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  293. package/lib/features/tools/change-bounds-tool.d.ts +7 -9
  294. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  295. package/lib/features/tools/change-bounds-tool.js +48 -71
  296. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  297. package/lib/features/tools/delete-tool.d.ts +1 -1
  298. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  299. package/lib/features/tools/delete-tool.js +17 -17
  300. package/lib/features/tools/delete-tool.js.map +1 -1
  301. package/lib/features/tools/di.config.d.ts +9 -2
  302. package/lib/features/tools/di.config.d.ts.map +1 -1
  303. package/lib/features/tools/di.config.js +26 -15
  304. package/lib/features/tools/di.config.js.map +1 -1
  305. package/lib/features/tools/edge-creation-tool.d.ts +1 -1
  306. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  307. package/lib/features/tools/edge-creation-tool.js +28 -21
  308. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  309. package/lib/features/tools/edge-edit-tool.d.ts +3 -2
  310. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  311. package/lib/features/tools/edge-edit-tool.js +41 -36
  312. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  313. package/lib/features/{tool-palette/palette-item.d.ts → tools/enable-default-tools-on-focus-loss.d.ts} +11 -11
  314. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -0
  315. package/lib/features/tools/enable-default-tools-on-focus-loss.js +29 -0
  316. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -0
  317. package/lib/features/tools/marquee-behavior.d.ts +1 -1
  318. package/lib/features/tools/marquee-behavior.js +2 -2
  319. package/lib/features/tools/marquee-behavior.js.map +1 -1
  320. package/lib/features/tools/marquee-behavior.spec.js +63 -63
  321. package/lib/features/tools/marquee-behavior.spec.js.map +1 -1
  322. package/lib/features/tools/marquee-mouse-tool.d.ts +1 -1
  323. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  324. package/lib/features/tools/marquee-mouse-tool.js +20 -20
  325. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  326. package/lib/features/tools/marquee-tool.d.ts +1 -1
  327. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  328. package/lib/features/tools/marquee-tool.js +4 -4
  329. package/lib/features/tools/marquee-tool.js.map +1 -1
  330. package/lib/features/tools/model.d.ts +3 -2
  331. package/lib/features/tools/model.d.ts.map +1 -1
  332. package/lib/features/tools/model.js +0 -15
  333. package/lib/features/tools/model.js.map +1 -1
  334. package/lib/features/tools/node-creation-tool.d.ts +1 -1
  335. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  336. package/lib/features/tools/node-creation-tool.js +17 -17
  337. package/lib/features/tools/node-creation-tool.js.map +1 -1
  338. package/lib/features/tools/view.d.ts.map +1 -1
  339. package/lib/features/tools/view.js +2 -2
  340. package/lib/features/tools/view.js.map +1 -1
  341. package/lib/features/validation/di.config.d.ts +0 -15
  342. package/lib/features/validation/di.config.d.ts.map +1 -1
  343. package/lib/features/validation/di.config.js +9 -7
  344. package/lib/features/validation/di.config.js.map +1 -1
  345. package/lib/features/validation/marker-navigator.d.ts +27 -25
  346. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  347. package/lib/features/validation/marker-navigator.js +64 -91
  348. package/lib/features/validation/marker-navigator.js.map +1 -1
  349. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  350. package/lib/features/validation/marker-navigator.spec.js +23 -37
  351. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  352. package/lib/features/validation/validate.d.ts +16 -30
  353. package/lib/features/validation/validate.d.ts.map +1 -1
  354. package/lib/features/validation/validate.js +61 -92
  355. package/lib/features/validation/validate.js.map +1 -1
  356. package/lib/features/viewport/di.config.d.ts +1 -1
  357. package/lib/features/viewport/di.config.d.ts.map +1 -1
  358. package/lib/features/viewport/di.config.js +7 -7
  359. package/lib/features/viewport/di.config.js.map +1 -1
  360. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +1 -1
  361. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  362. package/lib/features/viewport/glsp-scroll-mouse-listener.js +3 -3
  363. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  364. package/lib/index.d.ts +8 -9
  365. package/lib/index.d.ts.map +1 -1
  366. package/lib/index.js +15 -11
  367. package/lib/index.js.map +1 -1
  368. package/lib/lib/model.d.ts +3 -2
  369. package/lib/lib/model.d.ts.map +1 -1
  370. package/lib/lib/model.js +3 -18
  371. package/lib/lib/model.js.map +1 -1
  372. package/lib/model-source/glsp-diagram-server.d.ts +6 -6
  373. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  374. package/lib/model-source/glsp-diagram-server.js +8 -7
  375. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  376. package/lib/sprotty-reexport.d.ts +174 -0
  377. package/lib/sprotty-reexport.d.ts.map +1 -0
  378. package/lib/sprotty-reexport.js +299 -0
  379. package/lib/sprotty-reexport.js.map +1 -0
  380. package/lib/utils/argument-utils.js +5 -5
  381. package/lib/utils/argument-utils.js.map +1 -1
  382. package/lib/utils/layout-utils.d.ts +6 -22
  383. package/lib/utils/layout-utils.d.ts.map +1 -1
  384. package/lib/utils/layout-utils.js +1 -1
  385. package/lib/utils/layout-utils.js.map +1 -1
  386. package/lib/utils/smodel-util.d.ts +117 -11
  387. package/lib/utils/smodel-util.d.ts.map +1 -1
  388. package/lib/utils/smodel-util.js +142 -37
  389. package/lib/utils/smodel-util.js.map +1 -1
  390. package/lib/utils/viewpoint-util.d.ts +3 -3
  391. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  392. package/lib/utils/viewpoint-util.js +19 -3
  393. package/lib/utils/viewpoint-util.js.map +1 -1
  394. package/lib/views/base-view-module.d.ts.map +1 -1
  395. package/lib/views/base-view-module.js +21 -19
  396. package/lib/views/base-view-module.js.map +1 -1
  397. package/lib/views/compartments.js +2 -2
  398. package/lib/views/compartments.js.map +1 -1
  399. package/lib/views/glsp-edge-view.d.ts +1 -1
  400. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  401. package/lib/views/glsp-edge-view.js +1 -1
  402. package/lib/views/glsp-edge-view.js.map +1 -1
  403. package/lib/views/index.js +6 -2
  404. package/lib/views/index.js.map +1 -1
  405. package/lib/views/issue-marker-view.d.ts.map +1 -1
  406. package/lib/views/issue-marker-view.js +3 -3
  407. package/lib/views/issue-marker-view.js.map +1 -1
  408. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  409. package/lib/views/rounded-corner-view.js +2 -2
  410. package/lib/views/rounded-corner-view.js.map +1 -1
  411. package/package.json +8 -18
  412. package/src/base/action-dispatcher.ts +26 -16
  413. package/src/base/actions/focus-change-action.ts +25 -8
  414. package/src/base/actions/sprotty-actions.ts +26 -0
  415. package/src/base/auto-complete/auto-complete-actions.ts +7 -5
  416. package/src/base/auto-complete/auto-complete-widget.ts +15 -13
  417. package/src/base/command-stack.ts +7 -6
  418. package/src/base/container-modules.ts +4 -3
  419. package/src/base/di.config.ts +4 -5
  420. package/src/base/drag-aware-mouse-listener.ts +4 -4
  421. package/src/base/editor-context-service.ts +38 -16
  422. package/src/base/focus-tracker.ts +5 -4
  423. package/src/base/model/model-registry.ts +2 -2
  424. package/src/base/model/update-model-command.ts +9 -10
  425. package/src/base/model-initialization-constraint.ts +9 -11
  426. package/src/base/selection-clearing-mouse-listener.ts +1 -1
  427. package/src/base/source-uri-aware.ts +5 -4
  428. package/src/base/tool-manager/glsp-tool-manager.ts +9 -9
  429. package/src/base/tool-manager/tool-actions.ts +37 -0
  430. package/src/base/types.ts +31 -24
  431. package/src/base/view/view-registry.ts +2 -2
  432. package/src/features/change-bounds/model.ts +5 -5
  433. package/src/features/change-bounds/movement-restrictor.ts +74 -44
  434. package/src/features/change-bounds/snap.spec.ts +89 -0
  435. package/src/features/change-bounds/snap.ts +86 -3
  436. package/src/features/command-palette/di.config.ts +5 -7
  437. package/src/features/command-palette/server-command-palette-provider.ts +9 -8
  438. package/src/features/context-menu/delete-element-context-menu.ts +6 -6
  439. package/src/features/context-menu/di.config.ts +3 -2
  440. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +45 -17
  441. package/src/features/context-menu/server-context-menu-provider.ts +7 -6
  442. package/src/features/copy-paste/copy-paste-context-menu.ts +30 -23
  443. package/src/features/copy-paste/copy-paste-handler.ts +6 -6
  444. package/src/features/copy-paste/di.config.ts +7 -15
  445. package/src/features/decoration/decoration-placer.ts +4 -4
  446. package/src/features/decoration/di.config.ts +3 -5
  447. package/src/features/edit-label/di.config.ts +4 -5
  448. package/src/features/edit-label/edit-label-tool.ts +1 -2
  449. package/src/features/edit-label/edit-label-validator.ts +6 -10
  450. package/src/features/hints/di.config.ts +3 -3
  451. package/src/features/hints/type-hints.ts +33 -18
  452. package/src/features/hover/di.config.ts +8 -2
  453. package/src/features/hover/hover.ts +53 -11
  454. package/src/features/layout/di.config.ts +11 -7
  455. package/src/features/layout/freeform-layout.ts +6 -15
  456. package/src/features/layout/hbox-layout.ts +256 -0
  457. package/src/features/layout/{layout-commands.spec.ts → layout-elements-action.spec.ts} +89 -65
  458. package/src/features/layout/layout-elements-action.ts +486 -0
  459. package/src/features/layout/vbox-layout.ts +20 -20
  460. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +7 -12
  461. package/src/features/mouse-tool/di.config.ts +3 -4
  462. package/src/features/mouse-tool/mouse-tool.ts +18 -59
  463. package/src/features/navigation/navigation-action-handler.ts +76 -42
  464. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -3
  465. package/src/features/navigation/navigation-target-resolver.ts +9 -14
  466. package/src/features/reconnect/model.ts +2 -2
  467. package/src/features/save/di.config.ts +2 -3
  468. package/src/features/save/save-keylistener.ts +3 -3
  469. package/src/features/select/di.config.ts +6 -8
  470. package/src/features/select/select-feedback-action.ts +18 -46
  471. package/src/features/select/select-mouse-listener.ts +1 -2
  472. package/src/features/select/selection-service.spec.ts +12 -9
  473. package/src/features/select/selection-service.ts +52 -60
  474. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +52 -22
  475. package/src/features/tool-feedback/creation-tool-feedback.ts +79 -30
  476. package/src/features/tool-feedback/css-feedback.ts +40 -37
  477. package/src/features/tool-feedback/di.config.ts +4 -5
  478. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +140 -88
  479. package/src/features/tool-feedback/feedback-action-dispatcher.ts +4 -3
  480. package/src/features/tool-feedback/marquee-tool-feedback.ts +38 -13
  481. package/src/features/tool-feedback/model.ts +1 -3
  482. package/src/features/tool-feedback/view.tsx +3 -3
  483. package/src/features/tool-palette/di.config.ts +3 -2
  484. package/src/features/tool-palette/tool-palette.ts +35 -19
  485. package/src/features/tools/base-glsp-tool.ts +11 -11
  486. package/src/features/tools/change-bounds-tool.ts +37 -67
  487. package/src/features/tools/delete-tool.ts +9 -9
  488. package/src/features/tools/di.config.ts +23 -12
  489. package/src/features/tools/edge-creation-tool.ts +21 -12
  490. package/src/features/tools/edge-edit-tool.ts +25 -21
  491. package/src/features/tools/enable-default-tools-on-focus-loss.ts +33 -0
  492. package/src/features/tools/marquee-behavior.ts +2 -2
  493. package/src/features/tools/marquee-mouse-tool.ts +13 -14
  494. package/src/features/tools/marquee-tool.ts +3 -3
  495. package/src/features/tools/model.ts +4 -3
  496. package/src/features/tools/node-creation-tool.ts +8 -8
  497. package/src/features/tools/view.tsx +2 -3
  498. package/src/features/validation/di.config.ts +13 -11
  499. package/src/features/validation/marker-navigator.spec.ts +4 -2
  500. package/src/features/validation/marker-navigator.ts +67 -82
  501. package/src/features/validation/validate.ts +57 -91
  502. package/src/features/viewport/di.config.ts +1 -2
  503. package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
  504. package/src/index.ts +9 -9
  505. package/src/lib/model.ts +4 -4
  506. package/src/model-source/glsp-diagram-server.ts +15 -15
  507. package/src/sprotty-reexport.ts +283 -0
  508. package/src/utils/layout-utils.ts +9 -29
  509. package/src/utils/smodel-util.ts +139 -43
  510. package/src/utils/viewpoint-util.ts +5 -14
  511. package/src/views/base-view-module.ts +5 -1
  512. package/src/views/compartments.tsx +1 -1
  513. package/src/views/glsp-edge-view.tsx +4 -4
  514. package/src/views/issue-marker-view.tsx +2 -2
  515. package/src/views/rounded-corner-view.tsx +2 -3
  516. package/lib/features/layout/layout-commands.d.ts +0 -153
  517. package/lib/features/layout/layout-commands.d.ts.map +0 -1
  518. package/lib/features/layout/layout-commands.js +0 -412
  519. package/lib/features/layout/layout-commands.js.map +0 -1
  520. package/lib/features/layout/layout-commands.spec.d.ts +0 -3
  521. package/lib/features/layout/layout-commands.spec.d.ts.map +0 -1
  522. package/lib/features/layout/layout-commands.spec.js.map +0 -1
  523. package/lib/features/tool-palette/palette-item.d.ts.map +0 -1
  524. package/lib/features/tool-palette/palette-item.js.map +0 -1
  525. package/lib/protocol-reexport.d.ts +0 -45
  526. package/lib/protocol-reexport.d.ts.map +0 -1
  527. package/lib/protocol-reexport.js +0 -75
  528. package/lib/protocol-reexport.js.map +0 -1
  529. package/src/features/layout/layout-commands.ts +0 -424
  530. package/src/features/tool-palette/palette-item.ts +0 -38
  531. package/src/protocol-reexport.ts +0 -64
@@ -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
@@ -13,25 +13,51 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, Args, distinctAdd, EditMode, EditorContext, isSetEditModeAction, remove } from '@eclipse-glsp/protocol';
17
- import { inject, injectable, multiInject, optional } from 'inversify';
18
- import { IActionHandler, ModelSource, MousePositionTracker, SModelElement, SModelRoot, TYPES } from 'sprotty';
16
+ import { Action, Args, distinctAdd, EditMode, EditorContext, remove, SetEditModeAction } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable, multiInject, optional, postConstruct } from 'inversify';
18
+ import { IActionHandler, ModelSource, MousePositionTracker, SModelElement, SModelRoot } from 'sprotty';
19
19
  import { SelectionService } from '../features/select/selection-service';
20
20
  import { isSourceUriAware } from './source-uri-aware';
21
- import { GLSP_TYPES } from './types';
21
+ import { TYPES } from './types';
22
22
 
23
23
  export interface EditModeListener {
24
24
  editModeChanged(newValue: string, oldvalue: string): void;
25
25
  }
26
26
 
27
+ /**
28
+ * The `EditorContextService` is a central injectable component that gives read-only access to
29
+ * certain aspects of the diagram, such as the currently selected elements, the model root,
30
+ * the edit mode, the latest position of the mouse in the diagram.
31
+ *
32
+ * It has been introduced for two main reasons:
33
+ * 1. to simplify accessing the model root and the current selection from components that are
34
+ * not commands,
35
+ * 2. to conveniently create an EditorContext, which is a context object sent as part of several
36
+ * actions to the server to describe the current state of the editor (selection, last mouse
37
+ * position, etc.).
38
+ */
27
39
  @injectable()
28
40
  export class EditorContextService implements IActionHandler {
29
- @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService;
30
- @inject(MousePositionTracker) protected mousePositionTracker: MousePositionTracker;
31
- @inject(TYPES.ModelSourceProvider) protected modelSource: () => Promise<ModelSource>;
41
+ @inject(TYPES.SelectionService)
42
+ protected selectionService: SelectionService;
43
+
44
+ @inject(MousePositionTracker)
45
+ protected mousePositionTracker: MousePositionTracker;
46
+
47
+ @multiInject(TYPES.IEditModeListener)
48
+ @optional()
49
+ protected editModeListeners: EditModeListener[] = [];
50
+
51
+ @inject(TYPES.ModelSourceProvider)
52
+ protected modelSourceProvider: () => Promise<ModelSource>;
53
+
32
54
  protected _editMode: string;
55
+ protected modelSource: ModelSource | undefined;
33
56
 
34
- constructor(@multiInject(GLSP_TYPES.IEditModeListener) @optional() protected editModeListeners: EditModeListener[] = []) {}
57
+ @postConstruct()
58
+ async initialize(): Promise<void> {
59
+ this.modelSource = await this.modelSourceProvider();
60
+ }
35
61
 
36
62
  register(editModeListener: EditModeListener): void {
37
63
  distinctAdd(this.editModeListeners, editModeListener);
@@ -58,7 +84,7 @@ export class EditorContextService implements IActionHandler {
58
84
  }
59
85
 
60
86
  handle(action: Action): void {
61
- if (isSetEditModeAction(action)) {
87
+ if (SetEditModeAction.is(action)) {
62
88
  const oldValue = this._editMode;
63
89
  this._editMode = action.editMode;
64
90
  this.notifiyEditModeListeners(oldValue);
@@ -69,12 +95,8 @@ export class EditorContextService implements IActionHandler {
69
95
  this.editModeListeners.forEach(listener => listener.editModeChanged(oldValue, this.editMode));
70
96
  }
71
97
 
72
- async getSourceUri(): Promise<string | undefined> {
73
- const modelSource = await this.modelSource();
74
- if (isSourceUriAware(modelSource)) {
75
- return modelSource.getSourceURI();
76
- }
77
- return undefined;
98
+ get sourceUri(): string | undefined {
99
+ return this.modelSource && isSourceUriAware(this.modelSource) ? this.modelSource.sourceURI : undefined;
78
100
  }
79
101
 
80
102
  get editMode(): string {
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2021 EclipseSource and others.
2
+ * Copyright (c) 2021-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -15,8 +15,9 @@
15
15
  ********************************************************************************/
16
16
  import { Action } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
- import { IActionHandler, ICommand, TYPES, ViewerOptions } from 'sprotty';
19
- import { isFocusStateChangedAction } from './actions/focus-change-action';
18
+ import { IActionHandler, ICommand, ViewerOptions } from 'sprotty';
19
+ import { FocusStateChangedAction } from './actions/focus-change-action';
20
+ import { TYPES } from './types';
20
21
 
21
22
  @injectable()
22
23
  export class FocusTracker implements IActionHandler {
@@ -30,7 +31,7 @@ export class FocusTracker implements IActionHandler {
30
31
  }
31
32
 
32
33
  handle(action: Action): void | Action | ICommand {
33
- if (isFocusStateChangedAction(action)) {
34
+ if (FocusStateChangedAction.is(action)) {
34
35
  this._hasFocus = action.hasFocus;
35
36
  const placeholder = document.getElementById(this.options.baseDiv);
36
37
  if (!placeholder) {
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2021 EclipseSource and others.
2
+ * Copyright (c) 2021-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -18,7 +18,7 @@ import { SModelElement, SModelRegistry } from 'sprotty';
18
18
 
19
19
  @injectable()
20
20
  export class GLSPModelRegistry extends SModelRegistry {
21
- register(key: string, factory: (u: void) => SModelElement): void {
21
+ override register(key: string, factory: (u: void) => SModelElement): void {
22
22
  if (key === undefined) {
23
23
  throw new Error('Key is undefined');
24
24
  }
@@ -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,7 +13,7 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, isSetModelAction, UpdateModelAction } from '@eclipse-glsp/protocol';
16
+ import { Action, SetModelAction, UpdateModelAction } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable, multiInject, optional, postConstruct } from 'inversify';
18
18
  import {
19
19
  ActionHandlerRegistry,
@@ -24,20 +24,19 @@ import {
24
24
  IActionHandler,
25
25
  ILogger,
26
26
  SModelRoot,
27
- TYPES,
28
27
  UpdateModelCommand
29
28
  } from 'sprotty';
30
29
  import { IFeedbackActionDispatcher } from '../../features/tool-feedback/feedback-action-dispatcher';
31
30
  import { FeedbackCommand } from '../../features/tool-feedback/model';
32
- import { GLSP_TYPES } from '../types';
31
+ import { TYPES } from '../types';
33
32
 
34
33
  /* ActionHandler that transforms a SetModelAction into an (feedback-aware) UpdateModelAction. This can be done because in sprotty
35
34
  * UpdateModel behaves the same as SetModel if no model is present yet.*/
36
35
  @injectable()
37
36
  export class SetModelActionHandler implements IActionHandler {
38
37
  handle(action: Action): Action | void {
39
- if (isSetModelAction(action)) {
40
- return new UpdateModelAction(action.newRoot, false);
38
+ if (SetModelAction.is(action)) {
39
+ return UpdateModelAction.create(action.newRoot, { animate: false });
41
40
  }
42
41
  }
43
42
  }
@@ -53,14 +52,14 @@ export interface SModelRootListener {
53
52
  @injectable()
54
53
  export class FeedbackAwareUpdateModelCommand extends UpdateModelCommand {
55
54
  @inject(TYPES.ILogger) protected logger: ILogger;
56
- @inject(GLSP_TYPES.IFeedbackActionDispatcher) @optional() protected readonly feedbackActionDispatcher: IFeedbackActionDispatcher;
55
+ @inject(TYPES.IFeedbackActionDispatcher) @optional() protected readonly feedbackActionDispatcher: IFeedbackActionDispatcher;
57
56
  @inject(TYPES.ActionHandlerRegistryProvider) protected actionHandlerRegistryProvider: () => Promise<ActionHandlerRegistry>;
58
- @multiInject(GLSP_TYPES.SModelRootListener) @optional() protected modelRootListeners: SModelRootListener[] = [];
57
+ @multiInject(TYPES.SModelRootListener) @optional() protected modelRootListeners: SModelRootListener[] = [];
59
58
 
60
59
  protected actionHandlerRegistry?: ActionHandlerRegistry;
61
60
 
62
61
  constructor(@inject(TYPES.Action) action: UpdateModelAction) {
63
- super(action);
62
+ super({ animate: true, ...action });
64
63
  }
65
64
 
66
65
  @postConstruct()
@@ -68,7 +67,7 @@ export class FeedbackAwareUpdateModelCommand extends UpdateModelCommand {
68
67
  this.actionHandlerRegistryProvider().then(registry => (this.actionHandlerRegistry = registry));
69
68
  }
70
69
 
71
- protected performUpdate(oldRoot: SModelRoot, newRoot: SModelRoot, context: CommandExecutionContext): CommandReturn {
70
+ protected override performUpdate(oldRoot: SModelRoot, newRoot: SModelRoot, context: CommandExecutionContext): CommandReturn {
72
71
  if (this.feedbackActionDispatcher && this.actionHandlerRegistry) {
73
72
  // Create a temporary context wich defines the `newRoot` as `root`
74
73
  // This way we do not corrupt the redo/undo behavior of the super class
@@ -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
@@ -13,10 +13,9 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, UpdateModelAction } from '@eclipse-glsp/protocol';
16
+ import { Action, Deferred, SetModelAction, UpdateModelAction } from '@eclipse-glsp/protocol';
17
17
  import { injectable } from 'inversify';
18
18
  import { InitializeCanvasBoundsAction } from 'sprotty';
19
- import { Deferred } from 'sprotty/lib/utils/async';
20
19
 
21
20
  /**
22
21
  * The constraint defining when the initialization of the GLSP model is completed.
@@ -74,21 +73,20 @@ export abstract class ModelInitializationConstraint {
74
73
  */
75
74
  @injectable()
76
75
  export class DefaultModelInitializationConstraint extends ModelInitializationConstraint {
77
- protected seenNonEmptyUpdateModel = false;
76
+ protected seenNonEmptyModelAction = false;
78
77
 
79
78
  isInitializedAfter(action: Action): boolean {
80
- if (this.isNonEmptyUpdateModel(action)) {
81
- this.seenNonEmptyUpdateModel = true;
82
- } else if (this.seenNonEmptyUpdateModel && action.kind === InitializeCanvasBoundsAction.KIND) {
79
+ if (this.isNonEmptyModelAction(action)) {
80
+ this.seenNonEmptyModelAction = true;
81
+ } else if (this.seenNonEmptyModelAction && action.kind === InitializeCanvasBoundsAction.KIND) {
83
82
  return true;
84
83
  }
85
84
  return false;
86
85
  }
87
86
 
88
- protected isNonEmptyUpdateModel(action: Action): boolean {
89
- if (action && action.kind === UpdateModelAction.KIND) {
90
- const updateModelAction = action as UpdateModelAction;
91
- return updateModelAction.newRoot !== undefined && updateModelAction.newRoot.type !== 'NONE';
87
+ protected isNonEmptyModelAction(action: Action): boolean {
88
+ if (SetModelAction.is(action) || UpdateModelAction.is(action)) {
89
+ return action.newRoot.type !== 'NONE';
92
90
  }
93
91
  return false;
94
92
  }
@@ -30,7 +30,7 @@ import { MouseListener, SModelElement } from 'sprotty';
30
30
  */
31
31
  @injectable()
32
32
  export class SelectionClearingMouseListener extends MouseListener {
33
- mouseDown(_target: SModelElement, event: MouseEvent): never[] {
33
+ override mouseDown(_target: SModelElement, event: MouseEvent): never[] {
34
34
  const selection = document.getSelection();
35
35
  // eslint-disable-next-line no-null/no-null
36
36
  if (selection === null) {
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020 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
@@ -13,10 +13,11 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- export abstract class SourceUriAware {
17
- abstract getSourceURI(): string;
16
+ import { AnyObject, hasStringProp } from '@eclipse-glsp/protocol';
17
+ export interface SourceUriAware {
18
+ sourceURI: string;
18
19
  }
19
20
 
20
21
  export function isSourceUriAware(obj: any): obj is SourceUriAware {
21
- return obj !== undefined && typeof obj.getSourceURI === 'function';
22
+ return AnyObject.is(obj) && hasStringProp(obj, 'sourceURI');
22
23
  }
@@ -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
@@ -17,7 +17,7 @@ import { distinctAdd, EditMode } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable, multiInject, optional, postConstruct } from 'inversify';
18
18
  import { Tool, ToolManager } from 'sprotty';
19
19
  import { EditModeListener, EditorContextService, EditorContextServiceProvider } from '../editor-context-service';
20
- import { GLSP_TYPES } from '../types';
20
+ import { TYPES } from '../types';
21
21
 
22
22
  export interface IGLSPToolManager extends ToolManager {
23
23
  /* Disables all actives tools and activates only default tool with non-edit function*/
@@ -28,9 +28,9 @@ export interface IGLSPToolManager extends ToolManager {
28
28
  export class GLSPToolManager extends ToolManager implements IGLSPToolManager, EditModeListener {
29
29
  protected editorContext?: EditorContextService;
30
30
 
31
- @multiInject(GLSP_TYPES.ITool) @optional() tools: Tool[];
32
- @multiInject(GLSP_TYPES.IDefaultTool) @optional() defaultTools: Tool[];
33
- @inject(GLSP_TYPES.IEditorContextServiceProvider) contextServiceProvider: EditorContextServiceProvider;
31
+ @multiInject(TYPES.ITool) @optional() override tools: Tool[];
32
+ @multiInject(TYPES.IDefaultTool) @optional() override defaultTools: Tool[];
33
+ @inject(TYPES.IEditorContextServiceProvider) contextServiceProvider: EditorContextServiceProvider;
34
34
 
35
35
  @postConstruct()
36
36
  protected initialize(): void {
@@ -43,19 +43,19 @@ export class GLSPToolManager extends ToolManager implements IGLSPToolManager, Ed
43
43
  });
44
44
  }
45
45
 
46
- registerDefaultTools(...tools: Tool[]): void {
46
+ override registerDefaultTools(...tools: Tool[]): void {
47
47
  for (const tool of tools) {
48
48
  distinctAdd(this.defaultTools, tool);
49
49
  }
50
50
  }
51
51
 
52
- registerTools(...tools: Tool[]): void {
52
+ override registerTools(...tools: Tool[]): void {
53
53
  for (const tool of tools) {
54
54
  distinctAdd(this.tools, tool);
55
55
  }
56
56
  }
57
57
 
58
- enable(toolIds: string[]): void {
58
+ override enable(toolIds: string[]): void {
59
59
  this.disableActiveTools();
60
60
  let tools = toolIds.map(id => this.tool(id));
61
61
  if (this.editorContext && this.editorContext.isReadonly) {
@@ -90,6 +90,6 @@ export interface GLSPTool extends Tool {
90
90
  isEditTool: boolean;
91
91
  }
92
92
 
93
- export function isGLSPTool(tool: Tool): tool is GLSPTool {
93
+ export function isGLSPTool(tool: any): tool is GLSPTool {
94
94
  return 'isEditTool' in tool && typeof tool['isEditTool'] === 'boolean';
95
95
  }
@@ -0,0 +1,37 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022 STMicroelectronics and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { Action, hasArrayProp } from '@eclipse-glsp/protocol';
17
+ import { EnableDefaultToolsAction, EnableToolsAction } from 'sprotty/lib/base/tool-manager/tool';
18
+ /* eslint-disable no-shadow */
19
+
20
+ /**
21
+ * Use module augmentation to add the `is` utility function to the tool action namespaces provided by sprotty
22
+ */
23
+ declare module 'sprotty/lib/base/tool-manager/tool' {
24
+ export namespace EnableDefaultToolsAction {
25
+ export function is(object: any): object is EnableDefaultToolsAction;
26
+ }
27
+ export namespace EnableToolsAction {
28
+ export function is(object: any): object is EnableToolsAction;
29
+ }
30
+ }
31
+
32
+ EnableDefaultToolsAction.is = (object: any): object is EnableDefaultToolsAction => Action.hasKind(object, EnableDefaultToolsAction.KIND);
33
+
34
+ EnableToolsAction.is = (object: any): object is EnableToolsAction =>
35
+ Action.hasKind(object, EnableToolsAction.KIND) && hasArrayProp(object, 'toolIds');
36
+
37
+ export { EnableDefaultToolsAction, EnableToolsAction };
package/src/base/types.ts CHANGED
@@ -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,27 +13,34 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- export const GLSP_TYPES = {
17
- IAsyncClipboardService: Symbol.for('IAsyncClipboardService'),
18
- ICommandPaletteActionProviderRegistry: Symbol.for('ICommandPaletteActionProviderRegistry'),
19
- IEditorContextServiceProvider: Symbol.for('IEditorContextProvider'),
20
- IFeedbackActionDispatcher: Symbol.for('IFeedbackActionDispatcher'),
21
- IToolFactory: Symbol.for('Factory<Tool>'),
22
- ITypeHintProvider: Symbol.for('ITypeHintProvider'),
23
- IMovementRestrictor: Symbol.for('IMovmementRestrictor'),
24
- SelectionService: Symbol.for('SelectionService'),
25
- SelectionListener: Symbol.for('SelectionListener'),
26
- SModelRootListener: Symbol.for('SModelRootListener'),
27
- MouseTool: Symbol.for('MouseTool'),
28
- IContextMenuService: Symbol.for('IContextMenuService'),
29
- IContextMenuServiceProvider: Symbol.for('IContextMenuServiceProvider'),
30
- IContextMenuProviderRegistry: Symbol.for('IContextMenuProviderRegistry'),
31
- IContextMenuProvider: Symbol.for('IContextMenuProvider'),
32
- ICopyPasteHandler: Symbol.for('ICopyPasteHandler'),
33
- IGLSPToolManager: Symbol.for('IGLSPToolManager'),
34
- ITool: Symbol.for('ITool'),
35
- IDefaultTool: Symbol.for('IDefaultTool'),
36
- IEditModeListener: Symbol.for('IEditModeListener'),
37
- LayoutRegistration: Symbol.for('LayoutRegistration'),
38
- IMarqueeBehavior: Symbol.for('IMarqueeBehavior')
16
+ import { TYPES as SprottyTYPES } from 'sprotty';
17
+ /**
18
+ * Reexport of the TYPES namespace of sprotty augments with additional GLSP specific service
19
+ * identifiers.
20
+ */
21
+ export const TYPES = {
22
+ ...SprottyTYPES,
23
+ IAsyncClipboardService: Symbol('IAsyncClipboardService'),
24
+ IEditorContextServiceProvider: Symbol('IEditorContextProvider'),
25
+ IFeedbackActionDispatcher: Symbol('IFeedbackActionDispatcher'),
26
+ IToolFactory: Symbol('Factory<Tool>'),
27
+ ITypeHintProvider: Symbol('ITypeHintProvider'),
28
+ IMovementRestrictor: Symbol('IMovementRestrictor'),
29
+ SelectionService: Symbol('SelectionService'),
30
+ SelectionListener: Symbol('SelectionListener'),
31
+ SModelRootListener: Symbol('SModelRootListener'),
32
+ MouseTool: Symbol('MouseTool'),
33
+ IContextMenuProvider: Symbol('IContextMenuProvider'),
34
+ ICopyPasteHandler: Symbol('ICopyPasteHandler'),
35
+ ITool: Symbol('ITool'),
36
+ IDefaultTool: Symbol('IDefaultTool'),
37
+ IEditModeListener: Symbol('IEditModeListener'),
38
+ IMarqueeBehavior: Symbol('IMarqueeBehavior')
39
39
  };
40
+
41
+ /**
42
+ * Keep a reexport under the old deprecated namespace to avoid hard API breaks.
43
+ * This gives adopters a grace period but all deprecated API will be removed before the 1.0.0 release.
44
+ * @deprecated Please use `TYPES` from `@eclipse-glsp/client` instead
45
+ */
46
+ export const GLSP_TYPES = TYPES;
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2021 EclipseSource and others.
2
+ * Copyright (c) 2021-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -18,7 +18,7 @@ import { IView, ViewRegistry } from 'sprotty';
18
18
 
19
19
  @injectable()
20
20
  export class GLSPViewRegistry extends ViewRegistry {
21
- register(key: string, instance: IView): void {
21
+ override register(key: string, instance: IView): void {
22
22
  if (key === undefined) {
23
23
  throw new Error('Key is undefined');
24
24
  }
@@ -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
@@ -51,14 +51,14 @@ export class SResizeHandle extends SChildElement implements Hoverable {
51
51
  static readonly TYPE = 'resize-handle';
52
52
 
53
53
  constructor(
54
- public readonly location?: ResizeHandleLocation,
55
- public readonly type: string = SResizeHandle.TYPE,
56
- public readonly hoverFeedback: boolean = false
54
+ readonly location?: ResizeHandleLocation,
55
+ override readonly type: string = SResizeHandle.TYPE,
56
+ readonly hoverFeedback: boolean = false
57
57
  ) {
58
58
  super();
59
59
  }
60
60
 
61
- hasFeature(feature: symbol): boolean {
61
+ override hasFeature(feature: symbol): boolean {
62
62
  return feature === hoverFeedbackFeature;
63
63
  }
64
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
@@ -20,40 +20,35 @@ import { toAbsoluteBounds } from '../../utils/viewpoint-util';
20
20
  import { ModifyCSSFeedbackAction } from '../tool-feedback/css-feedback';
21
21
  import { isBoundsAwareMoveable, SResizeHandle } from './model';
22
22
 
23
+ /**
24
+ * A `MovementRestrictor` is an optional service that can be used by tools to validate
25
+ * whether a certain move operation (e.g. `ChangeBoundsOperation`) in the diagram is valid.
26
+ */
23
27
  export interface IMovementRestrictor {
24
- validate(newLocation: Point, element: SModelElement): boolean;
28
+ /**
29
+ * Validate whether moving the given element to a new given location is allowed.
30
+ * @param element The element that should be moved.
31
+ * @param newLocation The new location of the element.
32
+ * @returns `true` if the the element is movable and moving to the given location is allowed, `false` otherwise.
33
+ * Should also return `false` if the newLocation is `undefined`:
34
+ */
35
+ validate(element: SModelElement, newLocation?: Point): boolean;
36
+ /**
37
+ * Feedback css-classes. Can be applied to elements that did fail the validation.
38
+ */
25
39
  cssClasses?: string[];
26
40
  }
27
41
 
28
- export function createMovementRestrictionFeedback(
29
- element: SModelElement,
30
- movementRestrictor: IMovementRestrictor
31
- ): ModifyCSSFeedbackAction {
32
- const elements: SModelElement[] = [element];
33
- if (element instanceof SParentElement) {
34
- element.children.filter(child => child instanceof SResizeHandle).forEach(e => elements.push(e));
35
- }
36
- return new ModifyCSSFeedbackAction(elements, movementRestrictor.cssClasses);
37
- }
38
-
39
- export function removeMovementRestrictionFeedback(
40
- element: SModelElement,
41
- movementRestrictor: IMovementRestrictor
42
- ): ModifyCSSFeedbackAction {
43
- const elements: SModelElement[] = [element];
44
- if (element instanceof SParentElement) {
45
- element.children.filter(child => child instanceof SResizeHandle).forEach(e => elements.push(e));
46
- }
47
-
48
- return new ModifyCSSFeedbackAction(elements, undefined, movementRestrictor.cssClasses);
49
- }
50
-
42
+ /**
43
+ * A `IMovementRestrictor` that checks for overlapping elements. Move operations
44
+ * are only valid if the element does not collide with another element after moving.
45
+ */
51
46
  @injectable()
52
- export class NoOverlapMovmentRestrictor implements IMovementRestrictor {
47
+ export class NoOverlapMovementRestrictor implements IMovementRestrictor {
53
48
  cssClasses = ['movement-not-allowed'];
54
49
 
55
- validate(newLocation: Point, element: SModelElement): boolean {
56
- if (!isBoundsAwareMoveable(element)) {
50
+ validate(element: SModelElement, newLocation?: Point): boolean {
51
+ if (!isBoundsAwareMoveable(element) || !newLocation) {
57
52
  return false;
58
53
  }
59
54
  // Create ghost element at the newLocation
@@ -71,27 +66,62 @@ export class NoOverlapMovmentRestrictor implements IMovementRestrictor {
71
66
  .all()
72
67
  .filter(e => e.id !== ghostElement.id && e !== ghostElement.root && e instanceof SNode)
73
68
  .map(e => e as SModelElement & BoundsAware)
74
- ).some(e => areOverlapping(e, ghostElement));
69
+ ).some(e => this.areOverlapping(e, ghostElement));
75
70
  }
76
- }
77
71
 
78
- export function areOverlapping(element1: SModelElement & BoundsAware, element2: SModelElement & BoundsAware): boolean {
79
- const b1 = toAbsoluteBounds(element1);
80
- const b2 = toAbsoluteBounds(element2);
81
- const r1TopLeft: Point = b1;
82
- const r1BottomRight = { x: b1.x + b1.width, y: b1.y + b1.height };
83
- const r2TopLeft: Point = b2;
84
- const r2BottomRight = { x: b2.x + b2.width, y: b2.y + b2.height };
72
+ protected areOverlapping(element1: SModelElement & BoundsAware, element2: SModelElement & BoundsAware): boolean {
73
+ const b1 = toAbsoluteBounds(element1);
74
+ const b2 = toAbsoluteBounds(element2);
75
+ const r1TopLeft: Point = b1;
76
+ const r1BottomRight = { x: b1.x + b1.width, y: b1.y + b1.height };
77
+ const r2TopLeft: Point = b2;
78
+ const r2BottomRight = { x: b2.x + b2.width, y: b2.y + b2.height };
79
+
80
+ // If one rectangle is on left side of other
81
+ if (r1TopLeft.x > r2BottomRight.x || r2TopLeft.x > r1BottomRight.x) {
82
+ return false;
83
+ }
84
+
85
+ // If one rectangle is above other
86
+ if (r1BottomRight.y < r2TopLeft.y || r2BottomRight.y < r1TopLeft.y) {
87
+ return false;
88
+ }
85
89
 
86
- // If one rectangle is on left side of other
87
- if (r1TopLeft.x > r2BottomRight.x || r2TopLeft.x > r1BottomRight.x) {
88
- return false;
90
+ return true;
89
91
  }
92
+ }
90
93
 
91
- // If one rectangle is above other
92
- if (r1BottomRight.y < r2TopLeft.y || r2BottomRight.y < r1TopLeft.y) {
93
- return false;
94
+ /**
95
+ * Utility function to create an action that applies the given {@link IMovementRestrictor.cssClasses} to the given element.
96
+ * @param element The element on which the css classes should be applied.
97
+ * @param movementRestrictor The movement restrictor whose cssClasses should be applied.
98
+ * @returns The corresponding {@link ModifyCSSFeedbackAction}
99
+ */
100
+ export function createMovementRestrictionFeedback(
101
+ element: SModelElement,
102
+ movementRestrictor: IMovementRestrictor
103
+ ): ModifyCSSFeedbackAction {
104
+ const elements: SModelElement[] = [element];
105
+ if (element instanceof SParentElement) {
106
+ element.children.filter(child => child instanceof SResizeHandle).forEach(e => elements.push(e));
107
+ }
108
+ return ModifyCSSFeedbackAction.create({ elements, add: movementRestrictor.cssClasses });
109
+ }
110
+
111
+ /**
112
+ * Utility function to create an action that removes the given {@link IMovementRestrictor.cssClasses} from the given element.
113
+ * @param element The element from which the css classes should be removed.
114
+ * @param movementRestrictor The movement restrictor whose cssClasses should be removed.
115
+ * @returns The corresponding {@link ModifyCSSFeedbackAction}
116
+ */
117
+ export function removeMovementRestrictionFeedback(
118
+ element: SModelElement,
119
+ movementRestrictor: IMovementRestrictor
120
+ ): ModifyCSSFeedbackAction {
121
+ const elements: SModelElement[] = [element];
122
+ if (element instanceof SParentElement) {
123
+ element.children.filter(child => child instanceof SResizeHandle).forEach(e => elements.push(e));
94
124
  }
95
125
 
96
- return true;
126
+ return ModifyCSSFeedbackAction.create({ elements, remove: movementRestrictor.cssClasses });
97
127
  }