@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
@@ -0,0 +1,89 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022 EclipseSource 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
+
17
+ import { expect } from 'chai';
18
+ import { SModelElement } from 'sprotty';
19
+ import { GridSnapper, PointPositionUpdater } from './snap';
20
+
21
+ describe('GridSnapper', () => {
22
+ it('snap', () => {
23
+ const element = new SModelElement();
24
+ const snapper = new GridSnapper();
25
+ expect(snapper.snap({ x: 0, y: 0 }, element)).to.be.deep.equals({ x: 0, y: 0 });
26
+ expect(snapper.snap({ x: 4, y: 5 }, element)).to.be.deep.equals({ x: 0, y: 10 });
27
+ expect(snapper.snap({ x: 8, y: 11 }, element)).to.be.deep.equals({ x: 10, y: 10 });
28
+ expect(snapper.snap({ x: -7, y: -4 }, element)).to.be.deep.equals({ x: -10, y: -0 });
29
+ });
30
+ });
31
+
32
+ describe('PointPositionUpdater', () => {
33
+ it('updatePosition with no last drag position', () => {
34
+ const element = new SModelElement();
35
+ const updater = new PointPositionUpdater();
36
+ expect(updater.updatePosition(element, { x: 0, y: 0 }, false)).to.be.undefined;
37
+ expect(updater.updatePosition(element, { x: 0, y: 0 }, true)).to.be.undefined;
38
+ });
39
+
40
+ it('update last position and reset', () => {
41
+ const updater = new PointPositionUpdater();
42
+ expect(updater.isLastDragPositionUndefined()).to.be.true;
43
+ updater.updateLastDragPosition({ x: 0, y: 0 });
44
+ expect(updater.isLastDragPositionUndefined()).to.be.false;
45
+ updater.resetPosition();
46
+ expect(updater.isLastDragPositionUndefined()).to.be.true;
47
+ });
48
+
49
+ it('updatePosition with no snapper', () => {
50
+ const element = new SModelElement();
51
+ const updater = new PointPositionUpdater();
52
+ resetUpdater(updater);
53
+ expect(updater.updatePosition(element, { x: 0, y: 0 }, false)).to.be.undefined;
54
+ expect(updater.updatePosition(element, { x: 0, y: 0 }, true)).to.be.undefined;
55
+
56
+ resetUpdater(updater);
57
+ expect(updater.updatePosition(element, { x: 5, y: 3 }, false)).to.be.deep.equals({ x: 5, y: 3 });
58
+ expect(updater.updatePosition(element, { x: 5, y: 3 }, true)).to.be.undefined;
59
+ expect(updater.updatePosition(element, { x: 11, y: 6 }, false)).to.be.deep.equals({ x: 6, y: 3 });
60
+ expect(updater.updatePosition(element, { x: -3, y: 2 }, true)).to.be.deep.equals({ x: -14, y: -4 });
61
+ });
62
+
63
+ it('updatePosition with snapper', () => {
64
+ const element = new SModelElement();
65
+ const snapper = new GridSnapper();
66
+ const updater = new PointPositionUpdater(snapper);
67
+ resetUpdater(updater);
68
+ expect(updater.updatePosition(element, { x: 0, y: 0 }, false)).to.be.undefined;
69
+ expect(updater.updatePosition(element, { x: 0, y: 0 }, true)).to.be.undefined;
70
+
71
+ resetUpdater(updater);
72
+ expect(updater.updatePosition(element, { x: 5, y: 3 }, true)).to.be.deep.equals({ x: 10, y: 0 });
73
+ expect(updater.updatePosition(element, { x: 5, y: 3 }, true)).to.be.undefined;
74
+ expect(updater.updatePosition(element, { x: 11, y: 6 }, true)).to.be.deep.equals({ x: 0, y: 10 });
75
+ expect(updater.updatePosition(element, { x: -3, y: 2 }, true)).to.be.deep.equals({ x: -10, y: -10 });
76
+
77
+ // disable snapping (alt key)
78
+ resetUpdater(updater);
79
+ expect(updater.updatePosition(element, { x: 5, y: 3 }, false)).to.be.deep.equals({ x: 5, y: 3 });
80
+ expect(updater.updatePosition(element, { x: 5, y: 3 }, false)).to.be.undefined;
81
+ expect(updater.updatePosition(element, { x: 11, y: 6 }, false)).to.be.deep.equals({ x: 6, y: 3 });
82
+ expect(updater.updatePosition(element, { x: -3, y: 2 }, false)).to.be.deep.equals({ x: -14, y: -4 });
83
+ });
84
+
85
+ function resetUpdater(updater: PointPositionUpdater): void {
86
+ updater.resetPosition();
87
+ updater.updateLastDragPosition({ x: 0, y: 0 });
88
+ }
89
+ });
@@ -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,9 +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 { Point } from '@eclipse-glsp/protocol';
16
+ import { Point, Writable } from '@eclipse-glsp/protocol';
17
17
  import { injectable } from 'inversify';
18
- import { ISnapper, SModelElement } from 'sprotty';
18
+ import { findParentByFeature, ISnapper, isViewport, SModelElement } from 'sprotty';
19
19
 
20
20
  @injectable()
21
21
  export class GridSnapper implements ISnapper {
@@ -34,3 +34,86 @@ export class GridSnapper implements ISnapper {
34
34
  };
35
35
  }
36
36
  }
37
+
38
+ /**
39
+ * This class can be used to calculate the current position, when an element is
40
+ * moved. This includes node movements, node resizing (resize handle movement)
41
+ * or edge routing-point movements.
42
+ *
43
+ * You can initialize a this class with a optional {@link ISnapper}. If a
44
+ * snapper is present, the positions will be snapped to the defined grid.
45
+ */
46
+ export class PointPositionUpdater {
47
+ protected lastDragPosition?: Point;
48
+ protected positionDelta: Writable<Point> = { x: 0, y: 0 };
49
+
50
+ constructor(protected snapper?: ISnapper) {}
51
+
52
+ /**
53
+ * Init the position with the {@link Point} of your mouse cursor.
54
+ * This method is normally called in the `mouseDown` event.
55
+ * @param mousePosition current mouse position e.g `{x: event.pageX, y: event.pageY }`
56
+ */
57
+ public updateLastDragPosition(mousePosition: Point): void {
58
+ this.lastDragPosition = mousePosition;
59
+ }
60
+
61
+ /**
62
+ * Check if the mouse is currently not in a drag mode.
63
+ * @returns true if the last drag position is undefined
64
+ */
65
+ public isLastDragPositionUndefined(): boolean {
66
+ return this.lastDragPosition === undefined;
67
+ }
68
+
69
+ /**
70
+ * Reset the updater for new movements.
71
+ * This method is normally called in the `mouseUp` event.
72
+ */
73
+ public resetPosition(): void {
74
+ this.lastDragPosition = undefined;
75
+ this.positionDelta = { x: 0, y: 0 };
76
+ }
77
+
78
+ /**
79
+ * Calculate the current position of your movement.
80
+ * This method is normally called in the `mouseMove` event.
81
+ * @param target node which is moved around
82
+ * @param mousePosition current mouse position e.g `{x: event.pageX, y: event.pageY }`
83
+ * @param isSnapEnabled if a snapper is defined you can disable it, e.g when a specific key is pressed `!event.altKey`
84
+ * @returns current position or undefined if updater has no last drag position initialized
85
+ */
86
+ public updatePosition(target: SModelElement, mousePosition: Point, isSnapEnabled: boolean): Point | undefined {
87
+ if (this.lastDragPosition) {
88
+ const newDragPosition = mousePosition;
89
+
90
+ const viewport = findParentByFeature(target, isViewport);
91
+ const zoom = viewport?.zoom ?? 1;
92
+ const dx = (mousePosition.x - this.lastDragPosition.x) / zoom;
93
+ const dy = (mousePosition.y - this.lastDragPosition.y) / zoom;
94
+ const deltaToLastPosition = { x: dx, y: dy };
95
+ this.lastDragPosition = newDragPosition;
96
+
97
+ // update position delta with latest delta
98
+ this.positionDelta.x += deltaToLastPosition.x;
99
+ this.positionDelta.y += deltaToLastPosition.y;
100
+
101
+ // snap our delta and only send update if the position actually changes
102
+ // otherwise accumulate delta until we do snap to an update
103
+ const positionUpdate = this.snap(this.positionDelta, target, isSnapEnabled);
104
+ if (positionUpdate.x === 0 && positionUpdate.y === 0) {
105
+ return undefined;
106
+ }
107
+
108
+ // we update our position so we update our delta by the snapped position
109
+ this.positionDelta.x -= positionUpdate.x;
110
+ this.positionDelta.y -= positionUpdate.y;
111
+ return positionUpdate;
112
+ }
113
+ return undefined;
114
+ }
115
+
116
+ protected snap(position: Point, element: SModelElement, isSnap: boolean): Point {
117
+ return isSnap && this.snapper ? this.snapper.snap(position, element) : { x: position.x, y: position.y };
118
+ }
119
+ }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 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,12 +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 '../../../css/command-palette.css';
17
-
18
16
  import { ContainerModule } from 'inversify';
19
- import { CommandPalette, CommandPaletteActionProviderRegistry, TYPES } from 'sprotty';
20
-
21
- import { GLSP_TYPES } from '../../base/types';
17
+ import { CommandPalette, CommandPaletteActionProviderRegistry } from 'sprotty';
18
+ import '../../../css/command-palette.css';
19
+ import { TYPES } from '../../base/types';
22
20
  import { CommandPaletteTool } from './command-palette-tool';
23
21
  import { ServerCommandPaletteActionProvider } from './server-command-palette-provider';
24
22
 
@@ -28,7 +26,7 @@ const glspCommandPaletteModule = new ContainerModule(bind => {
28
26
  bind(CommandPaletteActionProviderRegistry).toSelf().inSingletonScope();
29
27
  bind(TYPES.ICommandPaletteActionProviderRegistry).toService(CommandPaletteActionProviderRegistry);
30
28
  bind(TYPES.ICommandPaletteActionProvider).to(ServerCommandPaletteActionProvider);
31
- bind(GLSP_TYPES.IDefaultTool).to(CommandPaletteTool);
29
+ bind(TYPES.IDefaultTool).to(CommandPaletteTool);
32
30
  });
33
31
 
34
32
  export default glspCommandPaletteModule;
@@ -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,12 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, isSetContextActionsAction, LabeledAction, Point, RequestContextActions } from '@eclipse-glsp/protocol';
16
+ import { Action, LabeledAction, Point, RequestContextActions, SetContextActions } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
- import { ICommandPaletteActionProvider, SModelElement, TYPES } from 'sprotty';
18
+ import { ICommandPaletteActionProvider, SModelElement } from 'sprotty';
19
19
  import { GLSPActionDispatcher } from '../../base/action-dispatcher';
20
20
  import { EditorContextService } from '../../base/editor-context-service';
21
+ import { TYPES } from '../../base/types';
21
22
 
22
23
  export namespace ServerCommandPalette {
23
24
  export const CONTEXT_ID = 'command-palette';
@@ -31,18 +32,18 @@ export class ServerCommandPaletteActionProvider implements ICommandPaletteAction
31
32
  @inject(EditorContextService) protected editorContext: EditorContextService;
32
33
 
33
34
  getActions(_root: Readonly<SModelElement>, text: string, _lastMousePosition?: Point, index?: number): Promise<LabeledAction[]> {
34
- const requestAction = new RequestContextActions(
35
- ServerCommandPalette.CONTEXT_ID,
36
- this.editorContext.get({
35
+ const requestAction = RequestContextActions.create({
36
+ contextId: ServerCommandPalette.CONTEXT_ID,
37
+ editorContext: this.editorContext.get({
37
38
  [ServerCommandPalette.TEXT]: text,
38
39
  [ServerCommandPalette.INDEX]: index ? index : 0
39
40
  })
40
- );
41
+ });
41
42
  return this.actionDispatcher.requestUntil(requestAction).then(response => this.getPaletteActionsFromResponse(response));
42
43
  }
43
44
 
44
45
  getPaletteActionsFromResponse(action: Action): LabeledAction[] {
45
- if (isSetContextActionsAction(action)) {
46
+ if (SetContextActions.is(action)) {
46
47
  return action.actions;
47
48
  }
48
49
  return [];
@@ -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,15 +13,15 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { DeleteElementOperation } from '@eclipse-glsp/protocol';
16
+ import { DeleteElementOperation, Point } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
- import { IContextMenuItemProvider, MenuItem, Point, SModelRoot } from 'sprotty';
18
+ import { IContextMenuItemProvider, MenuItem, SModelRoot } from 'sprotty';
19
19
  import { EditorContextService, EditorContextServiceProvider } from '../../base/editor-context-service';
20
- import { GLSP_TYPES } from '../../base/types';
20
+ import { TYPES } from '../../base/types';
21
21
 
22
22
  @injectable()
23
23
  export class DeleteElementContextMenuItemProvider implements IContextMenuItemProvider {
24
- @inject(GLSP_TYPES.IEditorContextServiceProvider) editorContextServiceProvider: EditorContextServiceProvider;
24
+ @inject(TYPES.IEditorContextServiceProvider) editorContextServiceProvider: EditorContextServiceProvider;
25
25
 
26
26
  async getItems(_root: Readonly<SModelRoot>, _lastMousePosition?: Point): Promise<MenuItem[]> {
27
27
  const editorContextService = await this.editorContextServiceProvider();
@@ -34,7 +34,7 @@ export class DeleteElementContextMenuItemProvider implements IContextMenuItemPro
34
34
  label: 'Delete',
35
35
  sortString: 'd',
36
36
  group: 'edit',
37
- actions: [new DeleteElementOperation(editorContextService.selectedElements.map(e => e.id))],
37
+ actions: [DeleteElementOperation.create(editorContextService.selectedElements.map(e => e.id))],
38
38
  isEnabled: () => !editorContextService.isReadonly && editorContextService.selectedElements.length > 0
39
39
  };
40
40
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019-2021 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,7 +14,8 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { ContainerModule } from 'inversify';
17
- import { ContextMenuProviderRegistry, IContextMenuService, TYPES } from 'sprotty';
17
+ import { ContextMenuProviderRegistry, IContextMenuService } from 'sprotty';
18
+ import { TYPES } from '../../base/types';
18
19
  import { SelectionServiceAwareContextMenuMouseListener } from './selection-service-aware-context-menu-mouse-listener';
19
20
  import { ServerContextMenuItemProvider } from './server-context-menu-provider';
20
21
 
@@ -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,39 +13,67 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { Action } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable, optional } from 'inversify';
17
18
  import {
18
- Action,
19
19
  ContextMenuProviderRegistry,
20
20
  findParentByFeature,
21
21
  IContextMenuServiceProvider,
22
22
  isSelectable,
23
23
  MouseListener,
24
- SModelElement,
25
- TYPES
24
+ SModelElement
26
25
  } from 'sprotty';
27
-
28
- import { GLSP_TYPES } from '../../base/types';
26
+ import { FocusStateChangedAction } from '../../base/actions/focus-change-action';
27
+ import { TYPES } from '../../base/types';
29
28
  import { SelectionService } from '../select/selection-service';
30
29
 
31
30
  @injectable()
32
31
  export class SelectionServiceAwareContextMenuMouseListener extends MouseListener {
33
32
  @inject(TYPES.IContextMenuServiceProvider) @optional() protected readonly contextMenuService: IContextMenuServiceProvider;
34
33
  @inject(TYPES.IContextMenuProviderRegistry) @optional() protected readonly menuProvider: ContextMenuProviderRegistry;
35
- @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService;
34
+ @inject(TYPES.SelectionService) protected selectionService: SelectionService;
36
35
 
37
- mouseDown(target: SModelElement, event: MouseEvent): (Action | Promise<Action>)[] {
36
+ /**
37
+ * Opens the context menu on right-click.
38
+ */
39
+ override mouseDown(target: SModelElement, event: MouseEvent): (Action | Promise<Action>)[] {
38
40
  if (event.button === 2 && this.contextMenuService && this.menuProvider) {
39
- const mousePosition = { x: event.x, y: event.y };
40
- const selectableTarget = findParentByFeature(target, isSelectable);
41
- if (selectableTarget) {
42
- selectableTarget.selected = true;
43
- this.selectionService.updateSelection(target.root, [selectableTarget.id], []);
44
- }
45
- Promise.all([this.contextMenuService(), this.menuProvider.getItems(target.root, mousePosition)]).then(
46
- ([menuService, menuItems]) => menuService.show(menuItems, mousePosition)
47
- );
41
+ return this.openContextMenu(event, target);
48
42
  }
49
43
  return [];
50
44
  }
45
+
46
+ /**
47
+ * Opens the context menu.
48
+ *
49
+ * - query the element on the click-target
50
+ * - select the element
51
+ * - query the context menu service and the context menu elements
52
+ * - show the context menu
53
+ * - send a focus state change to indicate that the diagram becomes inactive, once the context menu is shown
54
+ *
55
+ * When the context menu is closed, we focus the diagram element again.
56
+ */
57
+ protected openContextMenu(event: MouseEvent, target: SModelElement): Promise<Action>[] {
58
+ const mousePosition = { x: event.x, y: event.y };
59
+ const selectableTarget = findParentByFeature(target, isSelectable);
60
+ if (selectableTarget) {
61
+ selectableTarget.selected = true;
62
+ this.selectionService.updateSelection(target.root, [selectableTarget.id], []);
63
+ }
64
+
65
+ const result = Promise.all([this.contextMenuService(), this.menuProvider.getItems(target.root, mousePosition)])
66
+ .then(([menuService, menuItems]) => menuService.show(menuItems, mousePosition, () => this.focusEventTarget(event)))
67
+ .then((): Action => FocusStateChangedAction.create(false));
68
+
69
+ return [result];
70
+ }
71
+
72
+ protected focusEventTarget(event: MouseEvent): void {
73
+ const targetElement = event.target instanceof SVGElement ? event.target : undefined;
74
+ const svgParentElement = targetElement?.closest('svg');
75
+ if (svgParentElement) {
76
+ svgParentElement.focus();
77
+ }
78
+ }
51
79
  }
@@ -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,12 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, isSetContextActionsAction, LabeledAction, Point, RequestContextActions } from '@eclipse-glsp/protocol';
16
+ import { Action, LabeledAction, Point, RequestContextActions, SetContextActions } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
- import { IContextMenuItemProvider, isSelected, SModelElement, TYPES } from 'sprotty';
18
+ import { IContextMenuItemProvider, isSelected, SModelElement } from 'sprotty';
19
19
  import { GLSPActionDispatcher } from '../../base/action-dispatcher';
20
20
  import { EditorContextService } from '../../base/editor-context-service';
21
+ import { TYPES } from '../../base/types';
21
22
 
22
23
  export namespace ServerContextMenu {
23
24
  export const CONTEXT_ID = 'context-menu';
@@ -35,13 +36,13 @@ export class ServerContextMenuItemProvider implements IContextMenuItemProvider {
35
36
  .filter(isSelected)
36
37
  .map(e => e.id)
37
38
  );
38
- const context = this.editorContext.getWithSelection(selectedElementIds);
39
- const requestAction = new RequestContextActions(ServerContextMenu.CONTEXT_ID, context);
39
+ const editorContext = this.editorContext.getWithSelection(selectedElementIds);
40
+ const requestAction = RequestContextActions.create({ contextId: ServerContextMenu.CONTEXT_ID, editorContext });
40
41
  return this.actionDispatcher.requestUntil(requestAction).then(response => this.getContextActionsFromResponse(response));
41
42
  }
42
43
 
43
44
  getContextActionsFromResponse(action: Action): LabeledAction[] {
44
- if (isSetContextActionsAction(action)) {
45
+ if (SetContextActions.is(action)) {
45
46
  return action.actions;
46
47
  }
47
48
  return [];
@@ -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,45 +13,52 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { Action, GLSPServerStatusAction, Point, ServerMessageAction } from '@eclipse-glsp/protocol';
16
+ /* eslint-disable deprecation/deprecation */
17
+ import { Action, hasStringProp, Point, ServerMessageAction, ServerStatusAction } from '@eclipse-glsp/protocol';
17
18
  import { inject, injectable } from 'inversify';
18
- import { IActionDispatcher, IActionHandler, IContextMenuItemProvider, isSelected, MenuItem, SModelRoot, TYPES } from 'sprotty';
19
+ import { IActionDispatcher, IActionHandler, IContextMenuItemProvider, isSelected, MenuItem, SModelRoot } from 'sprotty';
20
+ import { TYPES } from '../../base/types';
19
21
 
20
- export class InvokeCopyAction implements Action {
21
- static readonly KIND = 'invoke-copy';
22
- constructor(public readonly kind = InvokeCopyAction.KIND) {}
22
+ /**
23
+ * An `InvokeCopyPasteAction` is dispatched by the client to initiate a cut, copy or paste operation.
24
+ */
25
+ export interface InvokeCopyPasteAction extends Action {
26
+ kind: typeof InvokeCopyPasteAction.KIND;
27
+ command: 'copy' | 'cut' | 'paste';
23
28
  }
24
29
 
25
- export class InvokePasteAction implements Action {
26
- static readonly KIND = 'invoke-paste';
27
- constructor(public readonly kind = InvokePasteAction.KIND) {}
28
- }
30
+ export namespace InvokeCopyPasteAction {
31
+ export const KIND = 'invokeCopyPaste';
32
+
33
+ export function is(object: any): object is InvokeCopyPasteAction {
34
+ return Action.hasKind(object, KIND) && hasStringProp(object, 'command');
35
+ }
29
36
 
30
- export class InvokeCutAction implements Action {
31
- static readonly KIND = 'invoke-cut';
32
- constructor(public readonly kind = InvokeCutAction.KIND) {}
37
+ export function create(command: 'copy' | 'cut' | 'paste'): InvokeCopyPasteAction {
38
+ return { kind: KIND, command };
39
+ }
33
40
  }
34
41
 
35
42
  @injectable()
36
43
  export class InvokeCopyPasteActionHandler implements IActionHandler {
37
44
  @inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
38
- handle(action: Action): void {
39
- switch (action.kind) {
40
- case InvokeCopyAction.KIND:
45
+ handle(action: InvokeCopyPasteAction): void {
46
+ switch (action.command) {
47
+ case 'copy':
41
48
  if (supportsCopy()) {
42
49
  document.execCommand('copy');
43
50
  } else {
44
51
  this.notifyUserToUseShortcut('copy');
45
52
  }
46
53
  break;
47
- case InvokePasteAction.KIND:
54
+ case 'paste':
48
55
  if (supportsPaste()) {
49
56
  document.execCommand('paste');
50
57
  } else {
51
58
  this.notifyUserToUseShortcut('paste');
52
59
  }
53
60
  break;
54
- case InvokeCutAction.KIND:
61
+ case 'cut':
55
62
  if (supportsCut()) {
56
63
  document.execCommand('cut');
57
64
  } else {
@@ -66,8 +73,8 @@ export class InvokeCopyPasteActionHandler implements IActionHandler {
66
73
  const timeout = 10000;
67
74
  const severity = 'WARNING';
68
75
  this.dispatcher.dispatchAll([
69
- { kind: GLSPServerStatusAction.KIND, severity, timeout, message } as GLSPServerStatusAction,
70
- { kind: ServerMessageAction.KIND, severity, timeout, message } as ServerMessageAction
76
+ ServerStatusAction.create(message, { severity, timeout }),
77
+ ServerMessageAction.create(message, { severity, timeout })
71
78
  ]);
72
79
  }
73
80
  }
@@ -88,7 +95,7 @@ export class CopyPasteContextMenuItemProvider implements IContextMenuItemProvide
88
95
  id: 'paste',
89
96
  label: 'Paste',
90
97
  group: 'copy-paste',
91
- actions: [new InvokePasteAction()],
98
+ actions: [InvokeCopyPasteAction.create('paste')],
92
99
  isEnabled: () => true
93
100
  };
94
101
  }
@@ -98,7 +105,7 @@ export class CopyPasteContextMenuItemProvider implements IContextMenuItemProvide
98
105
  id: 'cut',
99
106
  label: 'Cut',
100
107
  group: 'copy-paste',
101
- actions: [new InvokeCutAction()],
108
+ actions: [InvokeCopyPasteAction.create('cut')],
102
109
  isEnabled: () => hasSelectedElements
103
110
  };
104
111
  }
@@ -108,7 +115,7 @@ export class CopyPasteContextMenuItemProvider implements IContextMenuItemProvide
108
115
  id: 'copy',
109
116
  label: 'Copy',
110
117
  group: 'copy-paste',
111
- actions: [new InvokeCopyAction()],
118
+ actions: [InvokeCopyPasteAction.create('copy')],
112
119
  isEnabled: () => hasSelectedElements
113
120
  };
114
121
  }
@@ -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
@@ -15,11 +15,11 @@
15
15
  ********************************************************************************/
16
16
  import { ClipboardData, CutOperation, PasteOperation, RequestClipboardDataAction, SetClipboardDataAction } from '@eclipse-glsp/protocol';
17
17
  import { inject, injectable } from 'inversify';
18
- import { TYPES, ViewerOptions } from 'sprotty';
18
+ import { ViewerOptions } from 'sprotty';
19
19
  import { v4 as uuid } from 'uuid';
20
20
  import { GLSPActionDispatcher } from '../../base/action-dispatcher';
21
21
  import { EditorContextService } from '../../base/editor-context-service';
22
- import { GLSP_TYPES } from '../../base/types';
22
+ import { TYPES } from '../../base/types';
23
23
 
24
24
  export interface ICopyPasteHandler {
25
25
  handleCopy(event: ClipboardEvent): void;
@@ -96,7 +96,7 @@ const CLIPBOARD_DATA_FORMAT = 'text/plain';
96
96
  export class ServerCopyPasteHandler implements ICopyPasteHandler {
97
97
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: GLSPActionDispatcher;
98
98
  @inject(TYPES.ViewerOptions) protected viewerOptions: ViewerOptions;
99
- @inject(GLSP_TYPES.IAsyncClipboardService) protected clipboadService: IAsyncClipboardService;
99
+ @inject(TYPES.IAsyncClipboardService) protected clipboadService: IAsyncClipboardService;
100
100
  @inject(EditorContextService) protected editorContext: EditorContextService;
101
101
 
102
102
  handleCopy(event: ClipboardEvent): void {
@@ -118,7 +118,7 @@ export class ServerCopyPasteHandler implements ICopyPasteHandler {
118
118
  handleCut(event: ClipboardEvent): void {
119
119
  if (event.clipboardData && this.shouldCopy(event)) {
120
120
  this.handleCopy(event);
121
- this.actionDispatcher.dispatch(new CutOperation(this.editorContext.get()));
121
+ this.actionDispatcher.dispatch(CutOperation.create(this.editorContext.get()));
122
122
  event.preventDefault();
123
123
  }
124
124
  }
@@ -128,7 +128,7 @@ export class ServerCopyPasteHandler implements ICopyPasteHandler {
128
128
  const clipboardId = getClipboardIdFromDataTransfer(event.clipboardData);
129
129
  const clipboardData = this.clipboadService.get(clipboardId);
130
130
  if (clipboardData) {
131
- this.actionDispatcher.dispatch(new PasteOperation(clipboardData, this.editorContext.get()));
131
+ this.actionDispatcher.dispatch(PasteOperation.create({ clipboardData, editorContext: this.editorContext.get() }));
132
132
  }
133
133
  event.preventDefault();
134
134
  }