@eclipse-glsp/client 0.9.0-rc-01 → 0.10.0-next.bb1c2fd.157

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 (582) hide show
  1. package/LICENSE +642 -277
  2. package/README.md +4 -2
  3. package/css/command-palette.css +9 -5
  4. package/css/decoration.css +3 -2
  5. package/css/glsp-sprotty.css +16 -7
  6. package/css/tool-palette.css +44 -27
  7. package/lib/base/action-dispatcher.d.ts +19 -3
  8. package/lib/base/action-dispatcher.d.ts.map +1 -1
  9. package/lib/base/action-dispatcher.js +47 -65
  10. package/lib/base/action-dispatcher.js.map +1 -1
  11. package/lib/base/actions/focus-change-action.d.ts +1 -1
  12. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  13. package/lib/base/actions/focus-change-action.js +4 -5
  14. package/lib/base/actions/focus-change-action.js.map +1 -1
  15. package/lib/base/{args.d.ts → argumentable.d.ts} +3 -5
  16. package/lib/base/argumentable.d.ts.map +1 -0
  17. package/lib/base/{args.js → argumentable.js} +1 -1
  18. package/lib/base/argumentable.js.map +1 -0
  19. package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
  20. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  21. package/lib/base/auto-complete/auto-complete-widget.d.ts +3 -3
  22. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  23. package/lib/base/auto-complete/auto-complete-widget.js +119 -153
  24. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  25. package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
  26. package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
  27. package/lib/base/auto-complete/validation-decorator.js +44 -65
  28. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  29. package/lib/base/command-stack.d.ts.map +1 -1
  30. package/lib/base/command-stack.js +19 -37
  31. package/lib/base/command-stack.js.map +1 -1
  32. package/lib/base/container-modules.d.ts +40 -0
  33. package/lib/base/container-modules.d.ts.map +1 -0
  34. package/lib/base/container-modules.js +100 -0
  35. package/lib/base/container-modules.js.map +1 -0
  36. package/lib/base/di.config.d.ts +12 -2
  37. package/lib/base/di.config.d.ts.map +1 -1
  38. package/lib/base/di.config.js +43 -27
  39. package/lib/base/di.config.js.map +1 -1
  40. package/lib/base/drag-aware-mouse-listener.d.ts +3 -2
  41. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  42. package/lib/base/drag-aware-mouse-listener.js +23 -62
  43. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  44. package/lib/base/{editor-context.d.ts → editor-context-service.d.ts} +18 -22
  45. package/lib/base/editor-context-service.d.ts.map +1 -0
  46. package/lib/base/editor-context-service.js +109 -0
  47. package/lib/base/editor-context-service.js.map +1 -0
  48. package/lib/base/focus-tracker.d.ts +17 -1
  49. package/lib/base/focus-tracker.d.ts.map +1 -1
  50. package/lib/base/focus-tracker.js +19 -39
  51. package/lib/base/focus-tracker.js.map +1 -1
  52. package/lib/base/model/model-registry.js +10 -28
  53. package/lib/base/model/model-registry.js.map +1 -1
  54. package/lib/base/model/update-model-command.d.ts +19 -5
  55. package/lib/base/model/update-model-command.d.ts.map +1 -1
  56. package/lib/base/model/update-model-command.js +69 -94
  57. package/lib/base/model/update-model-command.js.map +1 -1
  58. package/lib/base/model-initialization-constraint.d.ts +16 -1
  59. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  60. package/lib/base/model-initialization-constraint.js +34 -54
  61. package/lib/base/model-initialization-constraint.js.map +1 -1
  62. package/lib/base/selection-clearing-mouse-listener.js +10 -28
  63. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  64. package/lib/base/source-uri-aware.js +2 -5
  65. package/lib/base/source-uri-aware.js.map +1 -1
  66. package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
  67. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  68. package/lib/base/tool-manager/glsp-tool-manager.js +58 -140
  69. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  70. package/lib/base/types.d.ts +3 -1
  71. package/lib/base/types.d.ts.map +1 -1
  72. package/lib/base/types.js +4 -2
  73. package/lib/base/types.js.map +1 -1
  74. package/lib/base/view/view-registry.js +10 -28
  75. package/lib/base/view/view-registry.js.map +1 -1
  76. package/lib/features/change-bounds/model.d.ts +3 -1
  77. package/lib/features/change-bounds/model.d.ts.map +1 -1
  78. package/lib/features/change-bounds/model.js +20 -31
  79. package/lib/features/change-bounds/model.js.map +1 -1
  80. package/lib/features/change-bounds/movement-restrictor.d.ts +17 -1
  81. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  82. package/lib/features/change-bounds/movement-restrictor.js +28 -42
  83. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  84. package/lib/features/change-bounds/snap.d.ts +17 -1
  85. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  86. package/lib/features/change-bounds/snap.js +13 -39
  87. package/lib/features/change-bounds/snap.js.map +1 -1
  88. package/lib/features/command-palette/command-palette-tool.js +30 -38
  89. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  90. package/lib/features/command-palette/di.config.js +6 -6
  91. package/lib/features/command-palette/di.config.js.map +1 -1
  92. package/lib/features/command-palette/server-command-palette-provider.d.ts +18 -2
  93. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  94. package/lib/features/command-palette/server-command-palette-provider.js +28 -33
  95. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  96. package/lib/features/context-menu/delete-element-context-menu.d.ts +1 -1
  97. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  98. package/lib/features/context-menu/delete-element-context-menu.js +20 -68
  99. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  100. package/lib/features/context-menu/di.config.d.ts +1 -1
  101. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  102. package/lib/features/context-menu/di.config.js +8 -8
  103. package/lib/features/context-menu/di.config.js.map +1 -1
  104. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +16 -0
  105. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  106. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +61 -71
  107. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  108. package/lib/features/context-menu/server-context-menu-provider.d.ts +18 -2
  109. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  110. package/lib/features/context-menu/server-context-menu-provider.js +30 -31
  111. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  112. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
  113. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  114. package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
  115. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  116. package/lib/features/copy-paste/copy-paste-handler.d.ts +19 -2
  117. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  118. package/lib/features/copy-paste/copy-paste-handler.js +70 -70
  119. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  120. package/lib/features/copy-paste/di.config.d.ts +1 -1
  121. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  122. package/lib/features/copy-paste/di.config.js +11 -11
  123. package/lib/features/copy-paste/di.config.js.map +1 -1
  124. package/lib/features/decoration/decoration-placer.d.ts +17 -1
  125. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  126. package/lib/features/decoration/decoration-placer.js +12 -46
  127. package/lib/features/decoration/decoration-placer.js.map +1 -1
  128. package/lib/features/decoration/di.config.js +4 -4
  129. package/lib/features/decoration/di.config.js.map +1 -1
  130. package/lib/features/edit-label/di.config.js +7 -7
  131. package/lib/features/edit-label/di.config.js.map +1 -1
  132. package/lib/features/edit-label/edit-label-tool.js +20 -43
  133. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  134. package/lib/features/edit-label/edit-label-validator.d.ts +16 -1
  135. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  136. package/lib/features/edit-label/edit-label-validator.js +40 -62
  137. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  138. package/lib/features/hints/di.config.d.ts +0 -15
  139. package/lib/features/hints/di.config.d.ts.map +1 -1
  140. package/lib/features/hints/di.config.js +9 -9
  141. package/lib/features/hints/di.config.js.map +1 -1
  142. package/lib/features/hints/model.d.ts +3 -2
  143. package/lib/features/hints/model.d.ts.map +1 -1
  144. package/lib/features/hints/model.js.map +1 -1
  145. package/lib/features/hints/type-hints.d.ts +17 -45
  146. package/lib/features/hints/type-hints.d.ts.map +1 -1
  147. package/lib/features/hints/type-hints.js +81 -140
  148. package/lib/features/hints/type-hints.js.map +1 -1
  149. package/lib/features/hover/di.config.d.ts +1 -1
  150. package/lib/features/hover/di.config.d.ts.map +1 -1
  151. package/lib/features/hover/di.config.js +11 -9
  152. package/lib/features/hover/di.config.js.map +1 -1
  153. package/lib/features/hover/hover.d.ts +28 -2
  154. package/lib/features/hover/hover.d.ts.map +1 -1
  155. package/lib/features/hover/hover.js +56 -76
  156. package/lib/features/hover/hover.js.map +1 -1
  157. package/lib/features/layout/di.config.d.ts +1 -1
  158. package/lib/features/layout/di.config.d.ts.map +1 -1
  159. package/lib/features/layout/di.config.js +11 -7
  160. package/lib/features/layout/di.config.js.map +1 -1
  161. package/lib/features/layout/freeform-layout.d.ts +16 -0
  162. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  163. package/lib/features/layout/freeform-layout.js +107 -0
  164. package/lib/features/layout/freeform-layout.js.map +1 -0
  165. package/lib/features/layout/layout-commands.d.ts +19 -3
  166. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  167. package/lib/features/layout/layout-commands.js +189 -265
  168. package/lib/features/layout/layout-commands.js.map +1 -1
  169. package/lib/features/layout/layout-commands.spec.d.ts +0 -15
  170. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
  171. package/lib/features/layout/layout-commands.spec.js +95 -89
  172. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  173. package/lib/features/layout/vbox-layout.d.ts +25 -0
  174. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  175. package/lib/features/layout/vbox-layout.js +188 -0
  176. package/lib/features/layout/vbox-layout.js.map +1 -0
  177. package/lib/features/model-source-watcher/di.config.d.ts +0 -15
  178. package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
  179. package/lib/features/model-source-watcher/di.config.js +7 -7
  180. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  181. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
  182. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  183. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -46
  184. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  185. package/lib/features/mouse-tool/di.config.js +5 -5
  186. package/lib/features/mouse-tool/di.config.js.map +1 -1
  187. package/lib/features/mouse-tool/mouse-tool.d.ts +2 -1
  188. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  189. package/lib/features/mouse-tool/mouse-tool.js +70 -215
  190. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  191. package/lib/features/navigation/di.config.d.ts +0 -15
  192. package/lib/features/navigation/di.config.d.ts.map +1 -1
  193. package/lib/features/navigation/di.config.js +11 -10
  194. package/lib/features/navigation/di.config.js.map +1 -1
  195. package/lib/features/navigation/navigation-action-handler.d.ts +19 -38
  196. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  197. package/lib/features/navigation/navigation-action-handler.js +118 -254
  198. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  199. package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
  200. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  201. package/lib/features/navigation/navigation-target-resolver.js +46 -188
  202. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  203. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +0 -15
  204. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  205. package/lib/features/navigation/navigation-target-resolver.spec.js +26 -26
  206. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  207. package/lib/features/rank/model.d.ts +1 -1
  208. package/lib/features/rank/model.js +2 -2
  209. package/lib/features/rank/model.js.map +1 -1
  210. package/lib/features/reconnect/model.d.ts +1 -1
  211. package/lib/features/reconnect/model.d.ts.map +1 -1
  212. package/lib/features/reconnect/model.js +9 -27
  213. package/lib/features/reconnect/model.js.map +1 -1
  214. package/lib/features/save/di.config.d.ts +1 -1
  215. package/lib/features/save/di.config.d.ts.map +1 -1
  216. package/lib/features/save/di.config.js +6 -6
  217. package/lib/features/save/di.config.js.map +1 -1
  218. package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -10
  219. package/lib/features/save/save-keylistener.d.ts.map +1 -0
  220. package/lib/features/{undo-redo/model.d.ts → save/save-keylistener.js} +16 -12
  221. package/lib/features/save/save-keylistener.js.map +1 -0
  222. package/lib/features/select/di.config.js +11 -11
  223. package/lib/features/select/di.config.js.map +1 -1
  224. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  225. package/lib/features/select/select-feedback-action.js +45 -71
  226. package/lib/features/select/select-feedback-action.js.map +1 -1
  227. package/lib/features/select/select-mouse-listener.js +7 -23
  228. package/lib/features/select/select-mouse-listener.js.map +1 -1
  229. package/lib/features/select/selection-service.d.ts +17 -1
  230. package/lib/features/select/selection-service.d.ts.map +1 -1
  231. package/lib/features/select/selection-service.js +134 -236
  232. package/lib/features/select/selection-service.js.map +1 -1
  233. package/lib/features/select/selection-service.spec.js +96 -139
  234. package/lib/features/select/selection-service.spec.js.map +1 -1
  235. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +19 -2
  236. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  237. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +102 -142
  238. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  239. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +18 -2
  240. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  241. package/lib/features/tool-feedback/creation-tool-feedback.js +95 -118
  242. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  243. package/lib/features/tool-feedback/css-feedback.d.ts +20 -2
  244. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  245. package/lib/features/tool-feedback/css-feedback.js +37 -81
  246. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  247. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  248. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  249. package/lib/features/tool-feedback/di.config.js +27 -27
  250. package/lib/features/tool-feedback/di.config.js.map +1 -1
  251. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +18 -2
  252. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  253. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -208
  254. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  255. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +19 -3
  256. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  257. package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
  258. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  259. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +17 -1
  260. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  261. package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -84
  262. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  263. package/lib/features/tool-feedback/model.d.ts +1 -1
  264. package/lib/features/tool-feedback/model.js +11 -27
  265. package/lib/features/tool-feedback/model.js.map +1 -1
  266. package/lib/features/tool-feedback/view.d.ts +21 -5
  267. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  268. package/lib/features/tool-feedback/view.js +29 -51
  269. package/lib/features/tool-feedback/view.js.map +1 -1
  270. package/lib/features/tool-palette/di.config.d.ts +1 -1
  271. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  272. package/lib/features/tool-palette/di.config.js +6 -6
  273. package/lib/features/tool-palette/di.config.js.map +1 -1
  274. package/lib/features/tool-palette/palette-item.d.ts +2 -3
  275. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  276. package/lib/features/tool-palette/palette-item.js +6 -6
  277. package/lib/features/tool-palette/palette-item.js.map +1 -1
  278. package/lib/features/tool-palette/tool-palette.d.ts +19 -3
  279. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  280. package/lib/features/tool-palette/tool-palette.js +199 -269
  281. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  282. package/lib/features/tools/base-glsp-tool.d.ts +18 -2
  283. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  284. package/lib/features/tools/base-glsp-tool.js +37 -59
  285. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  286. package/lib/features/tools/change-bounds-tool.d.ts +20 -3
  287. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  288. package/lib/features/tools/change-bounds-tool.js +192 -241
  289. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  290. package/lib/features/tools/delete-tool.d.ts +17 -1
  291. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  292. package/lib/features/tools/delete-tool.js +71 -104
  293. package/lib/features/tools/delete-tool.js.map +1 -1
  294. package/lib/features/tools/di.config.d.ts +0 -15
  295. package/lib/features/tools/di.config.d.ts.map +1 -1
  296. package/lib/features/tools/di.config.js +19 -19
  297. package/lib/features/tools/di.config.js.map +1 -1
  298. package/lib/features/tools/edge-creation-tool.d.ts +17 -2
  299. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  300. package/lib/features/tools/edge-creation-tool.js +62 -87
  301. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  302. package/lib/features/tools/edge-edit-tool.d.ts +17 -1
  303. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  304. package/lib/features/tools/edge-edit-tool.js +112 -183
  305. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  306. package/lib/features/tools/marquee-behavior.d.ts +42 -0
  307. package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
  308. package/lib/features/tools/marquee-behavior.js +128 -0
  309. package/lib/features/tools/marquee-behavior.js.map +1 -0
  310. package/{src/features/undo-redo/model.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -12
  311. package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
  312. package/lib/features/tools/marquee-behavior.spec.js +165 -0
  313. package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
  314. package/lib/features/tools/marquee-mouse-tool.d.ts +24 -13
  315. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  316. package/lib/features/tools/marquee-mouse-tool.js +86 -195
  317. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  318. package/lib/features/tools/marquee-tool.d.ts +17 -1
  319. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  320. package/lib/features/tools/marquee-tool.js +32 -73
  321. package/lib/features/tools/marquee-tool.js.map +1 -1
  322. package/lib/features/tools/model.js +4 -22
  323. package/lib/features/tools/model.js.map +1 -1
  324. package/lib/features/tools/node-creation-tool.d.ts +17 -2
  325. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  326. package/lib/features/tools/node-creation-tool.js +60 -90
  327. package/lib/features/tools/node-creation-tool.js.map +1 -1
  328. package/lib/features/tools/view.d.ts +1 -1
  329. package/lib/features/tools/view.d.ts.map +1 -1
  330. package/lib/features/tools/view.js +12 -31
  331. package/lib/features/tools/view.js.map +1 -1
  332. package/lib/features/validation/di.config.js +12 -12
  333. package/lib/features/validation/di.config.js.map +1 -1
  334. package/lib/features/validation/issue-marker.d.ts +2 -2
  335. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  336. package/lib/features/validation/issue-marker.js +17 -55
  337. package/lib/features/validation/issue-marker.js.map +1 -1
  338. package/lib/features/validation/marker-navigator.d.ts +17 -1
  339. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  340. package/lib/features/validation/marker-navigator.js +131 -164
  341. package/lib/features/validation/marker-navigator.js.map +1 -1
  342. package/lib/features/validation/marker-navigator.spec.d.ts +0 -15
  343. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  344. package/lib/features/validation/marker-navigator.spec.js +83 -77
  345. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  346. package/lib/features/validation/validate.d.ts +18 -29
  347. package/lib/features/validation/validate.d.ts.map +1 -1
  348. package/lib/features/validation/validate.js +147 -300
  349. package/lib/features/validation/validate.js.map +1 -1
  350. package/lib/features/viewport/di.config.js +10 -10
  351. package/lib/features/viewport/di.config.js.map +1 -1
  352. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +18 -2
  353. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  354. package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -47
  355. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  356. package/lib/index.d.ts +9 -15
  357. package/lib/index.d.ts.map +1 -1
  358. package/lib/index.js +29 -34
  359. package/lib/index.js.map +1 -1
  360. package/lib/lib/model.js +11 -27
  361. package/lib/lib/model.js.map +1 -1
  362. package/lib/model-source/glsp-diagram-server.d.ts +3 -5
  363. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  364. package/lib/model-source/glsp-diagram-server.js +60 -121
  365. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  366. package/lib/protocol-reexport.d.ts +45 -0
  367. package/lib/protocol-reexport.d.ts.map +1 -0
  368. package/lib/protocol-reexport.js +75 -0
  369. package/lib/protocol-reexport.js.map +1 -0
  370. package/lib/utils/argument-utils.d.ts +3 -3
  371. package/lib/utils/argument-utils.d.ts.map +1 -1
  372. package/lib/utils/argument-utils.js +32 -97
  373. package/lib/utils/argument-utils.js.map +1 -1
  374. package/lib/utils/html-utils.js +2 -2
  375. package/lib/utils/html-utils.js.map +1 -1
  376. package/lib/utils/layout-utils.d.ts +3 -2
  377. package/lib/utils/layout-utils.d.ts.map +1 -1
  378. package/lib/utils/layout-utils.js +5 -5
  379. package/lib/utils/layout-utils.js.map +1 -1
  380. package/lib/utils/marker.d.ts +0 -38
  381. package/lib/utils/marker.d.ts.map +1 -1
  382. package/lib/utils/marker.js +14 -61
  383. package/lib/utils/marker.js.map +1 -1
  384. package/lib/utils/smodel-util.d.ts +4 -4
  385. package/lib/utils/smodel-util.d.ts.map +1 -1
  386. package/lib/utils/smodel-util.js +16 -65
  387. package/lib/utils/smodel-util.js.map +1 -1
  388. package/lib/utils/viewpoint-util.d.ts +3 -2
  389. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  390. package/lib/utils/viewpoint-util.js +15 -30
  391. package/lib/utils/viewpoint-util.js.map +1 -1
  392. package/lib/views/base-view-module.d.ts +0 -15
  393. package/lib/views/base-view-module.d.ts.map +1 -1
  394. package/lib/views/base-view-module.js +28 -28
  395. package/lib/views/base-view-module.js.map +1 -1
  396. package/lib/views/compartments.d.ts +6 -0
  397. package/lib/views/compartments.d.ts.map +1 -0
  398. package/lib/views/compartments.js +43 -0
  399. package/lib/views/compartments.js.map +1 -0
  400. package/lib/views/glsp-edge-view.d.ts +18 -3
  401. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  402. package/lib/views/glsp-edge-view.js +32 -77
  403. package/lib/views/glsp-edge-view.js.map +1 -1
  404. package/lib/views/index.d.ts +1 -1
  405. package/lib/views/index.d.ts.map +1 -1
  406. package/lib/views/index.js +1 -1
  407. package/lib/views/index.js.map +1 -1
  408. package/lib/views/issue-marker-view.d.ts +2 -1
  409. package/lib/views/issue-marker-view.d.ts.map +1 -1
  410. package/lib/views/issue-marker-view.js +36 -50
  411. package/lib/views/issue-marker-view.js.map +1 -1
  412. package/lib/views/rounded-corner-view.d.ts +2 -3
  413. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  414. package/lib/views/rounded-corner-view.js +40 -70
  415. package/lib/views/rounded-corner-view.js.map +1 -1
  416. package/lib/views/rounded-corner.d.ts +2 -1
  417. package/lib/views/rounded-corner.d.ts.map +1 -1
  418. package/lib/views/rounded-corner.js +44 -65
  419. package/lib/views/rounded-corner.js.map +1 -1
  420. package/package.json +12 -19
  421. package/src/base/action-dispatcher.ts +12 -12
  422. package/src/base/actions/focus-change-action.ts +2 -2
  423. package/src/base/{args.ts → argumentable.ts} +2 -3
  424. package/src/base/auto-complete/auto-complete-actions.ts +1 -1
  425. package/src/base/auto-complete/auto-complete-widget.ts +37 -25
  426. package/src/base/auto-complete/validation-decorator.ts +12 -11
  427. package/src/base/command-stack.ts +2 -5
  428. package/src/base/container-modules.ts +112 -0
  429. package/src/base/di.config.ts +33 -18
  430. package/src/base/drag-aware-mouse-listener.ts +3 -4
  431. package/src/base/{editor-context.ts → editor-context-service.ts} +4 -31
  432. package/src/base/focus-tracker.ts +2 -4
  433. package/src/base/model/update-model-command.ts +8 -16
  434. package/src/base/model-initialization-constraint.ts +3 -2
  435. package/src/base/tool-manager/glsp-tool-manager.ts +3 -5
  436. package/src/base/types.ts +4 -2
  437. package/src/features/change-bounds/model.ts +15 -5
  438. package/src/features/change-bounds/movement-restrictor.ts +17 -9
  439. package/src/features/change-bounds/snap.ts +3 -2
  440. package/src/features/command-palette/server-command-palette-provider.ts +11 -9
  441. package/src/features/context-menu/delete-element-context-menu.ts +3 -4
  442. package/src/features/context-menu/di.config.ts +11 -9
  443. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +40 -10
  444. package/src/features/context-menu/server-context-menu-provider.ts +10 -7
  445. package/src/features/copy-paste/copy-paste-context-menu.ts +59 -30
  446. package/src/features/copy-paste/copy-paste-handler.ts +18 -10
  447. package/src/features/copy-paste/di.config.ts +2 -3
  448. package/src/features/decoration/decoration-placer.ts +3 -13
  449. package/src/features/edit-label/edit-label-validator.ts +11 -12
  450. package/src/features/hints/di.config.ts +2 -3
  451. package/src/features/hints/model.ts +4 -3
  452. package/src/features/hints/type-hints.ts +23 -90
  453. package/src/features/hover/di.config.ts +4 -3
  454. package/src/features/hover/hover.ts +26 -7
  455. package/src/features/layout/di.config.ts +8 -4
  456. package/src/features/layout/freeform-layout.ts +133 -0
  457. package/src/features/layout/layout-commands.spec.ts +82 -64
  458. package/src/features/layout/layout-commands.ts +43 -34
  459. package/src/features/layout/vbox-layout.ts +256 -0
  460. package/src/features/model-source-watcher/di.config.ts +3 -4
  461. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +11 -7
  462. package/src/features/mouse-tool/mouse-tool.ts +33 -23
  463. package/src/features/navigation/di.config.ts +4 -10
  464. package/src/features/navigation/navigation-action-handler.ts +33 -69
  465. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -7
  466. package/src/features/navigation/navigation-target-resolver.ts +13 -91
  467. package/src/features/rank/model.ts +2 -2
  468. package/src/features/reconnect/model.ts +2 -3
  469. package/src/features/save/di.config.ts +2 -3
  470. package/src/features/save/{save.ts → save-keylistener.ts} +3 -11
  471. package/src/features/select/select-feedback-action.ts +4 -6
  472. package/src/features/select/selection-service.spec.ts +11 -6
  473. package/src/features/select/selection-service.ts +14 -10
  474. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +26 -20
  475. package/src/features/tool-feedback/creation-tool-feedback.ts +49 -14
  476. package/src/features/tool-feedback/css-feedback.ts +9 -6
  477. package/src/features/tool-feedback/di.config.ts +2 -5
  478. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +19 -18
  479. package/src/features/tool-feedback/feedback-action-dispatcher.ts +8 -9
  480. package/src/features/tool-feedback/marquee-tool-feedback.ts +4 -5
  481. package/src/features/tool-feedback/model.ts +1 -2
  482. package/src/features/tool-feedback/view.tsx +17 -11
  483. package/src/features/tool-palette/di.config.ts +2 -4
  484. package/src/features/tool-palette/palette-item.ts +4 -6
  485. package/src/features/tool-palette/tool-palette.ts +44 -40
  486. package/src/features/tools/base-glsp-tool.ts +4 -4
  487. package/src/features/tools/change-bounds-tool.ts +64 -34
  488. package/src/features/tools/delete-tool.ts +9 -6
  489. package/src/features/tools/di.config.ts +2 -3
  490. package/src/features/tools/edge-creation-tool.ts +5 -10
  491. package/src/features/tools/edge-edit-tool.ts +10 -20
  492. package/src/features/tools/marquee-behavior.spec.ts +175 -0
  493. package/src/features/tools/marquee-behavior.ts +158 -0
  494. package/src/features/tools/marquee-mouse-tool.ts +43 -134
  495. package/src/features/tools/marquee-tool.ts +2 -3
  496. package/src/features/tools/node-creation-tool.ts +4 -11
  497. package/src/features/tools/view.tsx +17 -12
  498. package/src/features/validation/issue-marker.ts +2 -3
  499. package/src/features/validation/marker-navigator.spec.ts +18 -14
  500. package/src/features/validation/marker-navigator.ts +24 -12
  501. package/src/features/validation/validate.ts +7 -40
  502. package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -12
  503. package/src/index.ts +30 -19
  504. package/src/model-source/glsp-diagram-server.ts +12 -28
  505. package/src/protocol-reexport.ts +64 -0
  506. package/src/utils/argument-utils.ts +14 -11
  507. package/src/utils/layout-utils.ts +13 -7
  508. package/src/utils/marker.ts +2 -26
  509. package/src/utils/smodel-util.ts +15 -11
  510. package/src/utils/viewpoint-util.ts +4 -4
  511. package/src/views/base-view-module.ts +1 -2
  512. package/src/{base/actions/edit-mode-action.ts → views/compartments.tsx} +18 -14
  513. package/src/views/glsp-edge-view.tsx +21 -14
  514. package/src/views/index.ts +1 -1
  515. package/src/views/issue-marker-view.tsx +28 -19
  516. package/src/views/rounded-corner-view.tsx +38 -25
  517. package/src/views/rounded-corner.ts +5 -6
  518. package/lib/base/actions/context-actions.d.ts +0 -36
  519. package/lib/base/actions/context-actions.d.ts.map +0 -1
  520. package/lib/base/actions/context-actions.js +0 -51
  521. package/lib/base/actions/context-actions.js.map +0 -1
  522. package/lib/base/actions/edit-mode-action.d.ts +0 -13
  523. package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
  524. package/lib/base/actions/edit-mode-action.js +0 -56
  525. package/lib/base/actions/edit-mode-action.js.map +0 -1
  526. package/lib/base/actions/edit-validation-actions.d.ts +0 -78
  527. package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
  528. package/lib/base/actions/edit-validation-actions.js +0 -83
  529. package/lib/base/actions/edit-validation-actions.js.map +0 -1
  530. package/lib/base/actions/protocol-actions.d.ts +0 -41
  531. package/lib/base/actions/protocol-actions.d.ts.map +0 -1
  532. package/lib/base/actions/protocol-actions.js +0 -151
  533. package/lib/base/actions/protocol-actions.js.map +0 -1
  534. package/lib/base/args.d.ts.map +0 -1
  535. package/lib/base/args.js.map +0 -1
  536. package/lib/base/editor-context.d.ts.map +0 -1
  537. package/lib/base/editor-context.js +0 -174
  538. package/lib/base/editor-context.js.map +0 -1
  539. package/lib/base/operations/operation.d.ts +0 -135
  540. package/lib/base/operations/operation.d.ts.map +0 -1
  541. package/lib/base/operations/operation.js +0 -231
  542. package/lib/base/operations/operation.js.map +0 -1
  543. package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
  544. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
  545. package/lib/features/copy-paste/copy-paste-actions.js +0 -68
  546. package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
  547. package/lib/features/hints/request-type-hints-action.d.ts +0 -32
  548. package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
  549. package/lib/features/hints/request-type-hints-action.js +0 -30
  550. package/lib/features/hints/request-type-hints-action.js.map +0 -1
  551. package/lib/features/model-source-watcher/model-source-changed-action.d.ts +0 -24
  552. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
  553. package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
  554. package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
  555. package/lib/features/save/save.d.ts.map +0 -1
  556. package/lib/features/save/save.js +0 -62
  557. package/lib/features/save/save.js.map +0 -1
  558. package/lib/features/undo-redo/model.d.ts.map +0 -1
  559. package/lib/features/undo-redo/model.js +0 -22
  560. package/lib/features/undo-redo/model.js.map +0 -1
  561. package/lib/model-source/glsp-server-status.d.ts +0 -30
  562. package/lib/model-source/glsp-server-status.d.ts.map +0 -1
  563. package/lib/model-source/glsp-server-status.js +0 -61
  564. package/lib/model-source/glsp-server-status.js.map +0 -1
  565. package/lib/utils/array-utils.d.ts +0 -28
  566. package/lib/utils/array-utils.d.ts.map +0 -1
  567. package/lib/utils/array-utils.js +0 -61
  568. package/lib/utils/array-utils.js.map +0 -1
  569. package/lib/views/default-types.d.ts +0 -37
  570. package/lib/views/default-types.d.ts.map +0 -1
  571. package/lib/views/default-types.js +0 -47
  572. package/lib/views/default-types.js.map +0 -1
  573. package/src/base/actions/context-actions.ts +0 -43
  574. package/src/base/actions/edit-validation-actions.ts +0 -103
  575. package/src/base/actions/protocol-actions.ts +0 -82
  576. package/src/base/operations/operation.ts +0 -178
  577. package/src/features/copy-paste/copy-paste-actions.ts +0 -60
  578. package/src/features/hints/request-type-hints-action.ts +0 -36
  579. package/src/features/model-source-watcher/model-source-changed-action.ts +0 -26
  580. package/src/model-source/glsp-server-status.ts +0 -38
  581. package/src/utils/array-utils.ts +0 -55
  582. package/src/views/default-types.ts +0 -48
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,9 +13,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, EdgeTypeHint, isSetTypeHintsAction, ShapeTypeHint, TypeHint } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
18
  import {
18
- Action,
19
19
  CommandExecutionContext,
20
20
  CommandReturn,
21
21
  Connectable,
@@ -28,12 +28,10 @@ import {
28
28
  moveFeature,
29
29
  SEdge,
30
30
  SModelElement,
31
- SModelElementSchema,
32
31
  SModelRoot,
33
32
  SShapeElement,
34
33
  TYPES
35
34
  } from 'sprotty';
36
-
37
35
  import { GLSP_TYPES } from '../../base/types';
38
36
  import { getElementTypeId, hasCompatibleType } from '../../utils/smodel-util';
39
37
  import { resizeFeature } from '../change-bounds/model';
@@ -41,68 +39,6 @@ import { reconnectFeature } from '../reconnect/model';
41
39
  import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
42
40
  import { FeedbackCommand } from '../tool-feedback/model';
43
41
  import { Containable, containerFeature, reparentFeature } from './model';
44
- import { isSetTypeHintsAction } from './request-type-hints-action';
45
-
46
- export abstract class TypeHint {
47
- /**
48
- The id of the element.
49
- */
50
- readonly elementTypeId: string;
51
-
52
- /**
53
- * Specifies whether the element can be relocated.
54
- */
55
- readonly repositionable: boolean;
56
-
57
- /**
58
- * Specifices wheter the element can be deleted
59
- */
60
- readonly deletable: boolean;
61
- }
62
-
63
- export class ShapeTypeHint extends TypeHint {
64
- /**
65
- * Specifies whether the element can be resized.
66
- */
67
- readonly resizable: boolean;
68
-
69
- /**
70
- * Specifies whether the element can be moved to another parent
71
- */
72
- readonly reparentable: boolean;
73
-
74
- /**
75
- * The types of elements that can be contained by this element (if any)
76
- */
77
- readonly containableElementTypeIds?: string[];
78
- }
79
-
80
- export class EdgeTypeHint extends TypeHint {
81
- /**
82
- * Specifies whether the routing of this element can be changed.
83
- */
84
- readonly routable: boolean;
85
-
86
- /**
87
- * Allowed source element types for this edge type
88
- */
89
- readonly sourceElementTypeIds: string[];
90
-
91
- /**
92
- * Allowed targe element types for this edge type
93
- */
94
- readonly targetElementTypeIds: string[];
95
-
96
- isAllowedSource(input: SModelElement | SModelElementSchema | string): boolean {
97
- const type = getElementTypeId(input);
98
- return this.sourceElementTypeIds.includes(type);
99
-
100
- }
101
- isAllowedTarget(input: SModelElement | SModelElementSchema | string): boolean {
102
- const type = getElementTypeId(input);
103
- return this.targetElementTypeIds.includes(type);
104
- }
105
- }
106
42
 
107
43
  @injectable()
108
44
  export class ApplyTypeHintsAction implements Action {
@@ -111,7 +47,6 @@ export class ApplyTypeHintsAction implements Action {
111
47
 
112
48
  @injectable()
113
49
  export class ApplyTypeHintsCommand extends FeedbackCommand {
114
-
115
50
  public static KIND = 'applyTypeHints';
116
51
  public readonly priority = 10;
117
52
 
@@ -122,15 +57,13 @@ export class ApplyTypeHintsCommand extends FeedbackCommand {
122
57
  }
123
58
 
124
59
  execute(context: CommandExecutionContext): CommandReturn {
125
- context.root.index.all()
126
- .forEach(element => {
127
- if (element instanceof SShapeElement || element instanceof SModelRoot) {
128
- this.applyShapeTypeHint(element);
129
-
130
- } else if (element instanceof SEdge) {
131
- return this.applyEdgeTypeHint(element);
132
- }
133
- });
60
+ context.root.index.all().forEach(element => {
61
+ if (element instanceof SShapeElement || element instanceof SModelRoot) {
62
+ this.applyShapeTypeHint(element);
63
+ } else if (element instanceof SEdge) {
64
+ return this.applyEdgeTypeHint(element);
65
+ }
66
+ });
134
67
  return context.root;
135
68
  }
136
69
 
@@ -167,18 +100,14 @@ export class ApplyTypeHintsCommand extends FeedbackCommand {
167
100
  function createConnectable(validSourceEdges: string[], validTargetEdges: string[]): Connectable {
168
101
  return {
169
102
  canConnect: (routable, role) =>
170
- role === 'source' ?
171
- validSourceEdges.includes(routable.type) :
172
- validTargetEdges.includes(routable.type)
103
+ role === 'source' ? validSourceEdges.includes(routable.type) : validTargetEdges.includes(routable.type)
173
104
  };
174
105
  }
175
106
 
176
107
  function createContainable(hint: ShapeTypeHint): Containable {
177
108
  return {
178
109
  isContainableElement: element =>
179
- hint.containableElementTypeIds ?
180
- hint.containableElementTypeIds.includes(getElementTypeId(element)) :
181
- false
110
+ hint.containableElementTypeIds ? hint.containableElementTypeIds.includes(getElementTypeId(element)) : false
182
111
  };
183
112
  }
184
113
 
@@ -202,12 +131,11 @@ export interface ITypeHintProvider {
202
131
 
203
132
  @injectable()
204
133
  export class TypeHintProvider implements IActionHandler, ITypeHintProvider {
205
-
206
134
  @inject(GLSP_TYPES.IFeedbackActionDispatcher)
207
135
  protected feedbackActionDispatcher: IFeedbackActionDispatcher;
208
136
 
209
- protected shapeHints: Map<string, ShapeTypeHint> = new Map;
210
- protected edgeHints: Map<string, EdgeTypeHint> = new Map;
137
+ protected shapeHints: Map<string, ShapeTypeHint> = new Map();
138
+ protected edgeHints: Map<string, EdgeTypeHint> = new Map();
211
139
 
212
140
  handle(action: Action): ICommand | Action | void {
213
141
  if (isSetTypeHintsAction(action)) {
@@ -222,13 +150,19 @@ export class TypeHintProvider implements IActionHandler, ITypeHintProvider {
222
150
  if (role === 'source') {
223
151
  return Array.from(
224
152
  Array.from(this.edgeHints.values())
225
- .filter(hint => hint.sourceElementTypeIds.some(sourceElementTypeId => hasCompatibleType(elementTypeId, sourceElementTypeId)))
226
- .map(hint => hint.elementTypeId));
153
+ .filter(hint =>
154
+ hint.sourceElementTypeIds.some(sourceElementTypeId => hasCompatibleType(elementTypeId, sourceElementTypeId))
155
+ )
156
+ .map(hint => hint.elementTypeId)
157
+ );
227
158
  } else {
228
159
  return Array.from(
229
160
  Array.from(this.edgeHints.values())
230
- .filter(hint => hint.targetElementTypeIds.some(targetElementTypeId => hasCompatibleType(elementTypeId, targetElementTypeId)))
231
- .map(hint => hint.elementTypeId));
161
+ .filter(hint =>
162
+ hint.targetElementTypeIds.some(targetElementTypeId => hasCompatibleType(elementTypeId, targetElementTypeId))
163
+ )
164
+ .map(hint => hint.elementTypeId)
165
+ );
232
166
  }
233
167
  }
234
168
 
@@ -254,4 +188,3 @@ function getTypeHint<T extends TypeHint>(input: SModelElement | SModelElement |
254
188
  }
255
189
  return hint;
256
190
  }
257
-
@@ -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
@@ -30,13 +30,13 @@ import {
30
30
  TYPES
31
31
  } from 'sprotty';
32
32
  import { PopupPositionUpdater } from 'sprotty/lib/features/hover/popup-position-updater';
33
-
34
33
  import { FocusStateChangedAction } from '../../base/actions/focus-change-action';
35
34
  import { GlspHoverMouseListener } from './hover';
36
35
 
37
36
  const glspHoverModule = new ContainerModule((bind, _unbind, isBound) => {
38
37
  bind(TYPES.PopupVNodePostprocessor).to(PopupPositionUpdater).inSingletonScope();
39
- bind(TYPES.MouseListener).to(GlspHoverMouseListener);
38
+ bind(GlspHoverMouseListener).toSelf().inSingletonScope();
39
+ bind(TYPES.MouseListener).toService(GlspHoverMouseListener);
40
40
  bind(TYPES.PopupMouseListener).to(PopupHoverMouseListener);
41
41
  bind(TYPES.KeyListener).to(HoverKeyListener);
42
42
  bind<HoverState>(TYPES.HoverState).toConstantValue({
@@ -56,6 +56,7 @@ const glspHoverModule = new ContainerModule((bind, _unbind, isBound) => {
56
56
  configureActionHandler(context, SetViewportCommand.KIND, ClosePopupActionHandler);
57
57
  configureActionHandler(context, MoveCommand.KIND, ClosePopupActionHandler);
58
58
  configureActionHandler(context, FocusStateChangedAction.KIND, ClosePopupActionHandler);
59
+ configureActionHandler(context, FocusStateChangedAction.KIND, GlspHoverMouseListener);
59
60
  });
60
61
 
61
62
  export default glspHoverModule;
@@ -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,26 +13,45 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { Action, Bounds, RequestPopupModelAction, SetPopupModelAction } from '@eclipse-glsp/protocol';
16
17
  import { injectable } from 'inversify';
17
18
  import {
18
- Action,
19
- Bounds,
20
19
  EMPTY_ROOT,
20
+ HoverFeedbackAction,
21
21
  HoverMouseListener,
22
+ IActionHandler,
23
+ ICommand,
22
24
  PreRenderedElementSchema,
23
- RequestPopupModelAction,
24
- SetPopupModelAction,
25
25
  SIssueMarker,
26
26
  SIssueSeverity,
27
27
  SModelElement,
28
28
  SModelElementSchema,
29
29
  SModelRootSchema
30
30
  } from 'sprotty';
31
-
31
+ import { isFocusStateChangedAction } from '../../base/actions/focus-change-action';
32
32
  import { GIssueMarker } from '../validation/issue-marker';
33
33
 
34
34
  @injectable()
35
- export class GlspHoverMouseListener extends HoverMouseListener {
35
+ export class GlspHoverMouseListener extends HoverMouseListener implements IActionHandler {
36
+ /**
37
+ * Stops mouse over timer and remove hover feedback, if focus is lost.
38
+ *
39
+ * This fixes strange effects that appear if the mouse left the element via e.g. a context menu,
40
+ * which explicitly removes the focus of the diagram.
41
+ * @see SelectionServiceAwareContextMenuMouseListener
42
+ * @param action should be a `FocusStateChangedAction`
43
+ * @returns a `HoverFeedbackAction` resetting the state, if the specified action indicates lost focus
44
+ */
45
+ handle(action: Action): void | Action | ICommand {
46
+ if (isFocusStateChangedAction(action) && !action.hasFocus) {
47
+ this.stopMouseOverTimer();
48
+ if (this.lastHoverFeedbackElementId) {
49
+ const previousTargetId = this.lastHoverFeedbackElementId;
50
+ this.lastHoverFeedbackElementId = undefined;
51
+ return new HoverFeedbackAction(previousTargetId, false);
52
+ }
53
+ }
54
+ }
36
55
 
37
56
  protected startMouseOverTimer(target: SModelElement, event: MouseEvent): Promise<Action> {
38
57
  this.stopMouseOverTimer();
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,13 +14,17 @@
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 { configureCommand } from 'sprotty';
18
-
17
+ import { configureCommand, configureLayout, VBoxLayouter } from 'sprotty';
18
+ import { FreeFormLayouter } from './freeform-layout';
19
19
  import { AlignElementsCommand, ResizeElementsCommand } from './layout-commands';
20
+ import { VBoxLayouterExt } from './vbox-layout';
20
21
 
21
- const layoutCommandsModule = new ContainerModule((bind, _unbind, isBound) => {
22
+ const layoutCommandsModule = new ContainerModule((bind, _unbind, isBound, rebind) => {
22
23
  configureCommand({ bind, isBound }, ResizeElementsCommand);
23
24
  configureCommand({ bind, isBound }, AlignElementsCommand);
25
+
26
+ rebind(VBoxLayouter).to(VBoxLayouterExt);
27
+ configureLayout({ bind, isBound }, FreeFormLayouter.KIND, FreeFormLayouter);
24
28
  });
25
29
 
26
30
  export default layoutCommandsModule;
@@ -0,0 +1,133 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2021 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
+ import { injectable } from 'inversify';
17
+ import {
18
+ Bounds,
19
+ BoundsData,
20
+ Dimension,
21
+ isValidDimension,
22
+ LayoutContainer,
23
+ Point,
24
+ SChildElement,
25
+ SParentElement,
26
+ StatefulLayouter
27
+ } from 'sprotty';
28
+ import { AbstractLayout } from 'sprotty/lib/features/bounds/abstract-layout';
29
+ import { AbstractLayoutOptions } from 'sprotty/lib/features/bounds/layout-options';
30
+
31
+ /**
32
+ * Layouts children of a container with explit X/Y positions
33
+ */
34
+ @injectable()
35
+ export class FreeFormLayouter extends AbstractLayout<AbstractLayoutOptions> {
36
+ static KIND = 'freeform';
37
+
38
+ layout(container: SParentElement & LayoutContainer, layouter: StatefulLayouter): void {
39
+ const boundsData = layouter.getBoundsData(container);
40
+ const options = this.getLayoutOptions(container);
41
+ const childrenSize = this.getChildrenSize(container, options, layouter);
42
+
43
+ // The real size of the compartment will be determined by the parent node layout;
44
+ // we only need to compute the bounds required to layout the children.
45
+
46
+ const maxWidth = childrenSize.width > 0 ? childrenSize.width + options.paddingLeft + options.paddingRight : 0;
47
+ const maxHeight = childrenSize.height > 0 ? childrenSize.height + options.paddingTop + options.paddingBottom : 0;
48
+ if (maxWidth > 0 && maxHeight > 0) {
49
+ const offset = this.layoutChildren(container, layouter, options, maxWidth, maxHeight);
50
+ boundsData.bounds = this.getFinalContainerBounds(container, offset, options, maxWidth, maxHeight);
51
+ boundsData.boundsChanged = true;
52
+ } else {
53
+ boundsData.bounds = { x: boundsData.bounds!.x, y: boundsData.bounds!.y, width: 0, height: 0 };
54
+ boundsData.boundsChanged = true;
55
+ }
56
+ }
57
+
58
+ protected getChildrenSize(
59
+ container: SParentElement & LayoutContainer,
60
+ containerOptions: AbstractLayoutOptions,
61
+ layouter: StatefulLayouter
62
+ ): Dimension {
63
+ let maxX = 0;
64
+ let maxY = 0;
65
+ container.children.forEach(child => {
66
+ const bounds = layouter.getBoundsData(child).bounds;
67
+ if (bounds !== undefined && isValidDimension(bounds)) {
68
+ const childMaxX = bounds.x + bounds.width;
69
+ const childMaxY = bounds.y + bounds.height;
70
+ maxX = Math.max(maxX, childMaxX);
71
+ maxY = Math.max(maxY, childMaxY);
72
+ }
73
+ });
74
+ return {
75
+ width: maxX,
76
+ height: maxY
77
+ };
78
+ }
79
+
80
+ protected layoutChild(
81
+ child: SChildElement,
82
+ boundsData: BoundsData,
83
+ bounds: Bounds,
84
+ childOptions: AbstractLayoutOptions,
85
+ containerOptions: AbstractLayoutOptions,
86
+ currentOffset: Point,
87
+ maxWidth: number,
88
+ maxHeight: number
89
+ ): Point {
90
+ boundsData.bounds = {
91
+ x: (child as any).bounds.x,
92
+ y: (child as any).bounds.y,
93
+ width: bounds.width,
94
+ height: bounds.height
95
+ };
96
+ boundsData.boundsChanged = true;
97
+ return currentOffset;
98
+ }
99
+
100
+ protected getFinalContainerBounds(
101
+ container: SParentElement & LayoutContainer,
102
+ lastOffset: Point,
103
+ options: AbstractLayoutOptions,
104
+ maxWidth: number,
105
+ maxHeight: number
106
+ ): Bounds {
107
+ const result = {
108
+ x: container.bounds.x,
109
+ y: container.bounds.y,
110
+ width: Math.max(options.minWidth, maxWidth + options.paddingLeft + options.paddingRight),
111
+ height: Math.max(options.minHeight, maxHeight + options.paddingTop + options.paddingBottom)
112
+ };
113
+
114
+ return result;
115
+ }
116
+
117
+ protected getDefaultLayoutOptions(): AbstractLayoutOptions {
118
+ return {
119
+ resizeContainer: true,
120
+ paddingTop: 0,
121
+ paddingBottom: 0,
122
+ paddingLeft: 0,
123
+ paddingRight: 0,
124
+ paddingFactor: 1,
125
+ minWidth: 0,
126
+ minHeight: 0
127
+ };
128
+ }
129
+
130
+ protected spread(a: AbstractLayoutOptions, b: AbstractLayoutOptions): AbstractLayoutOptions {
131
+ return { ...a, ...b };
132
+ }
133
+ }