@eclipse-glsp/client 0.9.0-next.f6bfed94 → 0.10.0-next.ab6a367.154

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 (487) hide show
  1. package/LICENSE +642 -277
  2. package/README.md +2 -1
  3. package/css/command-palette.css +3 -0
  4. package/css/decoration.css +3 -2
  5. package/css/glsp-sprotty.css +1 -1
  6. package/css/tool-palette.css +31 -14
  7. package/lib/base/action-dispatcher.d.ts +17 -1
  8. package/lib/base/action-dispatcher.d.ts.map +1 -1
  9. package/lib/base/action-dispatcher.js +2 -1
  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/{args.d.ts → argumentable.d.ts} +2 -4
  14. package/lib/base/argumentable.d.ts.map +1 -0
  15. package/lib/base/{args.js → argumentable.js} +1 -1
  16. package/lib/base/argumentable.js.map +1 -0
  17. package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
  18. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  19. package/lib/base/auto-complete/auto-complete-widget.d.ts +2 -2
  20. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  21. package/lib/base/auto-complete/auto-complete-widget.js +20 -4
  22. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  23. package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
  24. package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
  25. package/lib/base/auto-complete/validation-decorator.js +9 -8
  26. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  27. package/lib/base/command-stack.d.ts.map +1 -1
  28. package/lib/base/command-stack.js +3 -3
  29. package/lib/base/command-stack.js.map +1 -1
  30. package/lib/base/container-modules.d.ts +40 -0
  31. package/lib/base/container-modules.d.ts.map +1 -0
  32. package/lib/base/container-modules.js +100 -0
  33. package/lib/base/container-modules.js.map +1 -0
  34. package/lib/base/di.config.d.ts +1 -0
  35. package/lib/base/di.config.d.ts.map +1 -1
  36. package/lib/base/di.config.js +22 -6
  37. package/lib/base/di.config.js.map +1 -1
  38. package/lib/base/drag-aware-mouse-listener.d.ts +2 -1
  39. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  40. package/lib/base/drag-aware-mouse-listener.js +0 -15
  41. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  42. package/lib/base/{editor-context.d.ts → editor-context-service.d.ts} +18 -22
  43. package/lib/base/editor-context-service.d.ts.map +1 -0
  44. package/lib/base/{editor-context.js → editor-context-service.js} +6 -7
  45. package/lib/base/editor-context-service.js.map +1 -0
  46. package/lib/base/focus-tracker.d.ts +17 -1
  47. package/lib/base/focus-tracker.d.ts.map +1 -1
  48. package/lib/base/focus-tracker.js +0 -15
  49. package/lib/base/focus-tracker.js.map +1 -1
  50. package/lib/base/model/update-model-command.d.ts +17 -3
  51. package/lib/base/model/update-model-command.d.ts.map +1 -1
  52. package/lib/base/model/update-model-command.js +6 -10
  53. package/lib/base/model/update-model-command.js.map +1 -1
  54. package/lib/base/model-initialization-constraint.d.ts +16 -1
  55. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  56. package/lib/base/model-initialization-constraint.js +3 -2
  57. package/lib/base/model-initialization-constraint.js.map +1 -1
  58. package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
  59. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  60. package/lib/base/tool-manager/glsp-tool-manager.js +6 -7
  61. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  62. package/lib/base/types.d.ts +3 -1
  63. package/lib/base/types.d.ts.map +1 -1
  64. package/lib/base/types.js +4 -2
  65. package/lib/base/types.js.map +1 -1
  66. package/lib/features/change-bounds/model.d.ts.map +1 -1
  67. package/lib/features/change-bounds/model.js.map +1 -1
  68. package/lib/features/change-bounds/movement-restrictor.d.ts +17 -1
  69. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  70. package/lib/features/change-bounds/movement-restrictor.js +0 -15
  71. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  72. package/lib/features/change-bounds/snap.d.ts +17 -1
  73. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  74. package/lib/features/change-bounds/snap.js +0 -15
  75. package/lib/features/change-bounds/snap.js.map +1 -1
  76. package/lib/features/command-palette/server-command-palette-provider.d.ts +18 -2
  77. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  78. package/lib/features/command-palette/server-command-palette-provider.js +6 -6
  79. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  80. package/lib/features/context-menu/delete-element-context-menu.d.ts +1 -1
  81. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  82. package/lib/features/context-menu/delete-element-context-menu.js +3 -3
  83. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  84. package/lib/features/context-menu/server-context-menu-provider.d.ts +18 -2
  85. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  86. package/lib/features/context-menu/server-context-menu-provider.js +6 -6
  87. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  88. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +17 -1
  89. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  90. package/lib/features/copy-paste/copy-paste-context-menu.js +6 -6
  91. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  92. package/lib/features/copy-paste/copy-paste-handler.d.ts +17 -2
  93. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  94. package/lib/features/copy-paste/copy-paste-handler.js +7 -7
  95. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  96. package/lib/features/copy-paste/di.config.d.ts +1 -1
  97. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  98. package/lib/features/copy-paste/di.config.js +5 -5
  99. package/lib/features/copy-paste/di.config.js.map +1 -1
  100. package/lib/features/decoration/decoration-placer.d.ts +17 -1
  101. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  102. package/lib/features/decoration/decoration-placer.js +0 -15
  103. package/lib/features/decoration/decoration-placer.js.map +1 -1
  104. package/lib/features/edit-label/edit-label-validator.d.ts +16 -1
  105. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  106. package/lib/features/edit-label/edit-label-validator.js +5 -5
  107. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  108. package/lib/features/hints/di.config.d.ts +0 -15
  109. package/lib/features/hints/di.config.d.ts.map +1 -1
  110. package/lib/features/hints/di.config.js +3 -3
  111. package/lib/features/hints/di.config.js.map +1 -1
  112. package/lib/features/hints/model.d.ts +2 -1
  113. package/lib/features/hints/model.d.ts.map +1 -1
  114. package/lib/features/hints/model.js.map +1 -1
  115. package/lib/features/hints/type-hints.d.ts +17 -45
  116. package/lib/features/hints/type-hints.d.ts.map +1 -1
  117. package/lib/features/hints/type-hints.js +3 -20
  118. package/lib/features/hints/type-hints.js.map +1 -1
  119. package/lib/features/hover/di.config.d.ts +1 -1
  120. package/lib/features/hover/di.config.d.ts.map +1 -1
  121. package/lib/features/hover/di.config.js +1 -1
  122. package/lib/features/hover/di.config.js.map +1 -1
  123. package/lib/features/hover/hover.d.ts +17 -1
  124. package/lib/features/hover/hover.d.ts.map +1 -1
  125. package/lib/features/hover/hover.js +3 -2
  126. package/lib/features/hover/hover.js.map +1 -1
  127. package/lib/features/layout/di.config.d.ts +1 -1
  128. package/lib/features/layout/di.config.d.ts.map +1 -1
  129. package/lib/features/layout/di.config.js +6 -2
  130. package/lib/features/layout/di.config.js.map +1 -1
  131. package/lib/features/layout/freeform-layout.d.ts +16 -0
  132. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  133. package/lib/features/layout/freeform-layout.js +107 -0
  134. package/lib/features/layout/freeform-layout.js.map +1 -0
  135. package/lib/features/layout/layout-commands.d.ts +17 -1
  136. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  137. package/lib/features/layout/layout-commands.js +3 -3
  138. package/lib/features/layout/layout-commands.js.map +1 -1
  139. package/lib/features/layout/layout-commands.spec.d.ts +0 -15
  140. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
  141. package/lib/features/layout/layout-commands.spec.js +4 -4
  142. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  143. package/lib/features/layout/vbox-layout.d.ts +25 -0
  144. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  145. package/lib/features/layout/vbox-layout.js +188 -0
  146. package/lib/features/layout/vbox-layout.js.map +1 -0
  147. package/lib/features/model-source-watcher/di.config.d.ts +0 -15
  148. package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
  149. package/lib/features/model-source-watcher/di.config.js +4 -4
  150. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  151. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
  152. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  153. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +7 -8
  154. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  155. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  156. package/lib/features/mouse-tool/mouse-tool.js +2 -1
  157. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  158. package/lib/features/navigation/di.config.d.ts +0 -15
  159. package/lib/features/navigation/di.config.d.ts.map +1 -1
  160. package/lib/features/navigation/di.config.js +7 -6
  161. package/lib/features/navigation/di.config.js.map +1 -1
  162. package/lib/features/navigation/navigation-action-handler.d.ts +19 -38
  163. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  164. package/lib/features/navigation/navigation-action-handler.js +12 -67
  165. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  166. package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
  167. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  168. package/lib/features/navigation/navigation-target-resolver.js +6 -83
  169. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  170. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +0 -15
  171. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  172. package/lib/features/navigation/navigation-target-resolver.spec.js +16 -16
  173. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  174. package/lib/features/save/di.config.js +2 -2
  175. package/lib/features/save/di.config.js.map +1 -1
  176. package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +3 -9
  177. package/lib/features/save/save-keylistener.d.ts.map +1 -0
  178. package/lib/features/save/{save.js → save-keylistener.js} +4 -15
  179. package/lib/features/save/save-keylistener.js.map +1 -0
  180. package/lib/features/select/selection-service.d.ts +17 -1
  181. package/lib/features/select/selection-service.d.ts.map +1 -1
  182. package/lib/features/select/selection-service.js +5 -5
  183. package/lib/features/select/selection-service.js.map +1 -1
  184. package/lib/features/select/selection-service.spec.js +0 -16
  185. package/lib/features/select/selection-service.spec.js.map +1 -1
  186. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +18 -1
  187. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  188. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +13 -18
  189. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  190. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +17 -1
  191. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  192. package/lib/features/tool-feedback/creation-tool-feedback.js +0 -15
  193. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  194. package/lib/features/tool-feedback/css-feedback.d.ts +17 -1
  195. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  196. package/lib/features/tool-feedback/css-feedback.js +2 -2
  197. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  198. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +17 -1
  199. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  200. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +0 -15
  201. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  202. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +17 -1
  203. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  204. package/lib/features/tool-feedback/feedback-action-dispatcher.js +0 -15
  205. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  206. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +17 -1
  207. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  208. package/lib/features/tool-feedback/marquee-tool-feedback.js +0 -15
  209. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  210. package/lib/features/tool-feedback/view.d.ts +17 -1
  211. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  212. package/lib/features/tool-feedback/view.js +0 -15
  213. package/lib/features/tool-feedback/view.js.map +1 -1
  214. package/lib/features/tool-palette/di.config.d.ts +1 -1
  215. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  216. package/lib/features/tool-palette/di.config.js +1 -1
  217. package/lib/features/tool-palette/di.config.js.map +1 -1
  218. package/lib/features/tool-palette/palette-item.d.ts +1 -2
  219. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  220. package/lib/features/tool-palette/palette-item.js +3 -4
  221. package/lib/features/tool-palette/palette-item.js.map +1 -1
  222. package/lib/features/tool-palette/tool-palette.d.ts +19 -3
  223. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  224. package/lib/features/tool-palette/tool-palette.js +38 -31
  225. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  226. package/lib/features/tools/base-glsp-tool.d.ts +18 -2
  227. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  228. package/lib/features/tools/base-glsp-tool.js +3 -18
  229. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  230. package/lib/features/tools/change-bounds-tool.d.ts +18 -1
  231. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  232. package/lib/features/tools/change-bounds-tool.js +21 -6
  233. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  234. package/lib/features/tools/delete-tool.d.ts +17 -1
  235. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  236. package/lib/features/tools/delete-tool.js +3 -3
  237. package/lib/features/tools/delete-tool.js.map +1 -1
  238. package/lib/features/tools/di.config.d.ts +0 -15
  239. package/lib/features/tools/di.config.d.ts.map +1 -1
  240. package/lib/features/tools/di.config.js +4 -4
  241. package/lib/features/tools/di.config.js.map +1 -1
  242. package/lib/features/tools/edge-creation-tool.d.ts +17 -2
  243. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  244. package/lib/features/tools/edge-creation-tool.js +4 -4
  245. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  246. package/lib/features/tools/edge-edit-tool.d.ts +17 -1
  247. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  248. package/lib/features/tools/edge-edit-tool.js +3 -3
  249. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  250. package/lib/features/tools/marquee-behavior.d.ts +42 -0
  251. package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
  252. package/lib/features/tools/marquee-behavior.js +128 -0
  253. package/lib/features/tools/marquee-behavior.js.map +1 -0
  254. package/{src/features/undo-redo/model.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -12
  255. package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
  256. package/lib/features/tools/marquee-behavior.spec.js +165 -0
  257. package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
  258. package/lib/features/tools/marquee-mouse-tool.d.ts +24 -13
  259. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  260. package/lib/features/tools/marquee-mouse-tool.js +33 -121
  261. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  262. package/lib/features/tools/marquee-tool.d.ts +17 -1
  263. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  264. package/lib/features/tools/marquee-tool.js +0 -15
  265. package/lib/features/tools/marquee-tool.js.map +1 -1
  266. package/lib/features/tools/node-creation-tool.d.ts +17 -2
  267. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  268. package/lib/features/tools/node-creation-tool.js +4 -4
  269. package/lib/features/tools/node-creation-tool.js.map +1 -1
  270. package/lib/features/validation/issue-marker.d.ts +2 -2
  271. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  272. package/lib/features/validation/issue-marker.js +5 -5
  273. package/lib/features/validation/issue-marker.js.map +1 -1
  274. package/lib/features/validation/marker-navigator.d.ts +17 -1
  275. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  276. package/lib/features/validation/marker-navigator.js +2 -1
  277. package/lib/features/validation/marker-navigator.js.map +1 -1
  278. package/lib/features/validation/marker-navigator.spec.d.ts +0 -15
  279. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  280. package/lib/features/validation/marker-navigator.spec.js +9 -9
  281. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  282. package/lib/features/validation/validate.d.ts +18 -29
  283. package/lib/features/validation/validate.d.ts.map +1 -1
  284. package/lib/features/validation/validate.js +11 -49
  285. package/lib/features/validation/validate.js.map +1 -1
  286. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +18 -2
  287. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  288. package/lib/features/viewport/glsp-scroll-mouse-listener.js +0 -15
  289. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  290. package/lib/index.d.ts +6 -12
  291. package/lib/index.d.ts.map +1 -1
  292. package/lib/index.js +6 -12
  293. package/lib/index.js.map +1 -1
  294. package/lib/model-source/glsp-diagram-server.d.ts +2 -4
  295. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  296. package/lib/model-source/glsp-diagram-server.js +20 -6
  297. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  298. package/lib/protocol-reexport.d.ts +45 -0
  299. package/lib/protocol-reexport.d.ts.map +1 -0
  300. package/lib/protocol-reexport.js +75 -0
  301. package/lib/protocol-reexport.js.map +1 -0
  302. package/lib/utils/argument-utils.d.ts.map +1 -1
  303. package/lib/utils/argument-utils.js +6 -6
  304. package/lib/utils/argument-utils.js.map +1 -1
  305. package/lib/utils/layout-utils.d.ts +2 -1
  306. package/lib/utils/layout-utils.d.ts.map +1 -1
  307. package/lib/utils/marker.d.ts +0 -38
  308. package/lib/utils/marker.d.ts.map +1 -1
  309. package/lib/utils/marker.js +6 -11
  310. package/lib/utils/marker.js.map +1 -1
  311. package/lib/utils/smodel-util.d.ts +1 -1
  312. package/lib/utils/smodel-util.d.ts.map +1 -1
  313. package/lib/utils/smodel-util.js +0 -15
  314. package/lib/utils/smodel-util.js.map +1 -1
  315. package/lib/utils/viewpoint-util.d.ts +2 -1
  316. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  317. package/lib/utils/viewpoint-util.js +0 -15
  318. package/lib/utils/viewpoint-util.js.map +1 -1
  319. package/lib/views/base-view-module.d.ts +0 -15
  320. package/lib/views/base-view-module.d.ts.map +1 -1
  321. package/lib/views/base-view-module.js +20 -20
  322. package/lib/views/base-view-module.js.map +1 -1
  323. package/lib/views/compartments.d.ts +6 -0
  324. package/lib/views/compartments.d.ts.map +1 -0
  325. package/lib/{base/actions/edit-mode-action.js → views/compartments.js} +18 -26
  326. package/lib/views/compartments.js.map +1 -0
  327. package/lib/views/glsp-edge-view.d.ts +17 -1
  328. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  329. package/lib/views/glsp-edge-view.js +0 -15
  330. package/lib/views/glsp-edge-view.js.map +1 -1
  331. package/lib/views/index.d.ts +1 -1
  332. package/lib/views/index.d.ts.map +1 -1
  333. package/lib/views/index.js +1 -1
  334. package/lib/views/index.js.map +1 -1
  335. package/lib/views/issue-marker-view.d.ts +1 -0
  336. package/lib/views/issue-marker-view.d.ts.map +1 -1
  337. package/lib/views/issue-marker-view.js +17 -8
  338. package/lib/views/issue-marker-view.js.map +1 -1
  339. package/lib/views/rounded-corner.d.ts +2 -1
  340. package/lib/views/rounded-corner.d.ts.map +1 -1
  341. package/package.json +8 -5
  342. package/src/base/action-dispatcher.ts +2 -2
  343. package/src/base/actions/focus-change-action.ts +1 -1
  344. package/src/base/{args.ts → argumentable.ts} +1 -4
  345. package/src/base/auto-complete/auto-complete-actions.ts +1 -1
  346. package/src/base/auto-complete/auto-complete-widget.ts +3 -4
  347. package/src/base/auto-complete/validation-decorator.ts +7 -6
  348. package/src/base/command-stack.ts +1 -2
  349. package/src/base/container-modules.ts +112 -0
  350. package/src/base/di.config.ts +3 -3
  351. package/src/base/drag-aware-mouse-listener.ts +2 -1
  352. package/src/base/{editor-context.ts → editor-context-service.ts} +2 -27
  353. package/src/base/focus-tracker.ts +2 -2
  354. package/src/base/model/update-model-command.ts +3 -9
  355. package/src/base/model-initialization-constraint.ts +3 -2
  356. package/src/base/tool-manager/glsp-tool-manager.ts +3 -5
  357. package/src/base/types.ts +4 -2
  358. package/src/features/change-bounds/model.ts +0 -1
  359. package/src/features/change-bounds/movement-restrictor.ts +2 -2
  360. package/src/features/change-bounds/snap.ts +3 -2
  361. package/src/features/command-palette/server-command-palette-provider.ts +3 -4
  362. package/src/features/context-menu/delete-element-context-menu.ts +3 -4
  363. package/src/features/context-menu/server-context-menu-provider.ts +3 -4
  364. package/src/features/copy-paste/copy-paste-context-menu.ts +2 -13
  365. package/src/features/copy-paste/copy-paste-handler.ts +3 -4
  366. package/src/features/copy-paste/di.config.ts +2 -3
  367. package/src/features/decoration/decoration-placer.ts +2 -1
  368. package/src/features/edit-label/edit-label-validator.ts +1 -1
  369. package/src/features/hints/di.config.ts +2 -3
  370. package/src/features/hints/model.ts +2 -1
  371. package/src/features/hints/type-hints.ts +1 -64
  372. package/src/features/hover/di.config.ts +1 -2
  373. package/src/features/hover/hover.ts +1 -5
  374. package/src/features/layout/di.config.ts +8 -4
  375. package/src/features/layout/freeform-layout.ts +133 -0
  376. package/src/features/layout/layout-commands.spec.ts +3 -8
  377. package/src/features/layout/layout-commands.ts +1 -3
  378. package/src/features/layout/vbox-layout.ts +256 -0
  379. package/src/features/model-source-watcher/di.config.ts +3 -4
  380. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +8 -4
  381. package/src/features/mouse-tool/mouse-tool.ts +2 -1
  382. package/src/features/navigation/di.config.ts +4 -10
  383. package/src/features/navigation/navigation-action-handler.ts +16 -62
  384. package/src/features/navigation/navigation-target-resolver.spec.ts +2 -4
  385. package/src/features/navigation/navigation-target-resolver.ts +8 -88
  386. package/src/features/save/di.config.ts +1 -1
  387. package/src/features/save/{save.ts → save-keylistener.ts} +2 -10
  388. package/src/features/select/selection-service.spec.ts +2 -2
  389. package/src/features/select/selection-service.ts +1 -5
  390. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +16 -5
  391. package/src/features/tool-feedback/creation-tool-feedback.ts +1 -3
  392. package/src/features/tool-feedback/css-feedback.ts +2 -2
  393. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +1 -3
  394. package/src/features/tool-feedback/feedback-action-dispatcher.ts +2 -1
  395. package/src/features/tool-feedback/marquee-tool-feedback.ts +1 -3
  396. package/src/features/tool-feedback/view.tsx +2 -2
  397. package/src/features/tool-palette/di.config.ts +1 -3
  398. package/src/features/tool-palette/palette-item.ts +1 -3
  399. package/src/features/tool-palette/tool-palette.ts +32 -26
  400. package/src/features/tools/base-glsp-tool.ts +4 -4
  401. package/src/features/tools/change-bounds-tool.ts +29 -10
  402. package/src/features/tools/delete-tool.ts +1 -3
  403. package/src/features/tools/di.config.ts +2 -3
  404. package/src/features/tools/edge-creation-tool.ts +1 -3
  405. package/src/features/tools/edge-edit-tool.ts +1 -2
  406. package/src/features/tools/marquee-behavior.spec.ts +175 -0
  407. package/src/features/tools/marquee-behavior.ts +158 -0
  408. package/src/features/tools/marquee-mouse-tool.ts +35 -146
  409. package/src/features/tools/marquee-tool.ts +2 -2
  410. package/src/features/tools/node-creation-tool.ts +1 -3
  411. package/src/features/validation/issue-marker.ts +2 -3
  412. package/src/features/validation/marker-navigator.spec.ts +3 -5
  413. package/src/features/validation/marker-navigator.ts +1 -4
  414. package/src/features/validation/validate.ts +4 -33
  415. package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -3
  416. package/src/index.ts +6 -12
  417. package/src/model-source/glsp-diagram-server.ts +10 -14
  418. package/src/protocol-reexport.ts +64 -0
  419. package/src/utils/argument-utils.ts +1 -2
  420. package/src/utils/layout-utils.ts +2 -2
  421. package/src/utils/marker.ts +2 -26
  422. package/src/utils/smodel-util.ts +1 -1
  423. package/src/utils/viewpoint-util.ts +1 -2
  424. package/src/views/base-view-module.ts +1 -2
  425. package/src/{base/actions/edit-mode-action.ts → views/compartments.tsx} +18 -13
  426. package/src/views/glsp-edge-view.tsx +2 -2
  427. package/src/views/index.ts +1 -1
  428. package/src/views/issue-marker-view.tsx +18 -8
  429. package/src/views/rounded-corner.ts +2 -2
  430. package/lib/base/actions/context-actions.d.ts +0 -36
  431. package/lib/base/actions/context-actions.d.ts.map +0 -1
  432. package/lib/base/actions/context-actions.js +0 -44
  433. package/lib/base/actions/context-actions.js.map +0 -1
  434. package/lib/base/actions/edit-mode-action.d.ts +0 -13
  435. package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
  436. package/lib/base/actions/edit-mode-action.js.map +0 -1
  437. package/lib/base/actions/edit-validation-actions.d.ts +0 -78
  438. package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
  439. package/lib/base/actions/edit-validation-actions.js +0 -80
  440. package/lib/base/actions/edit-validation-actions.js.map +0 -1
  441. package/lib/base/args.d.ts.map +0 -1
  442. package/lib/base/args.js.map +0 -1
  443. package/lib/base/editor-context.d.ts.map +0 -1
  444. package/lib/base/editor-context.js.map +0 -1
  445. package/lib/base/operations/operation.d.ts +0 -135
  446. package/lib/base/operations/operation.d.ts.map +0 -1
  447. package/lib/base/operations/operation.js +0 -191
  448. package/lib/base/operations/operation.js.map +0 -1
  449. package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
  450. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
  451. package/lib/features/copy-paste/copy-paste-actions.js +0 -58
  452. package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
  453. package/lib/features/hints/request-type-hints-action.d.ts +0 -32
  454. package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
  455. package/lib/features/hints/request-type-hints-action.js +0 -28
  456. package/lib/features/hints/request-type-hints-action.js.map +0 -1
  457. package/lib/features/model-source-watcher/model-source-changed-action.d.ts +0 -24
  458. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
  459. package/lib/features/model-source-watcher/model-source-changed-action.js +0 -16
  460. package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
  461. package/lib/features/save/save.d.ts.map +0 -1
  462. package/lib/features/save/save.js.map +0 -1
  463. package/lib/features/undo-redo/model.d.ts +0 -27
  464. package/lib/features/undo-redo/model.d.ts.map +0 -1
  465. package/lib/features/undo-redo/model.js +0 -18
  466. package/lib/features/undo-redo/model.js.map +0 -1
  467. package/lib/model-source/glsp-server-status.d.ts +0 -30
  468. package/lib/model-source/glsp-server-status.d.ts.map +0 -1
  469. package/lib/model-source/glsp-server-status.js +0 -44
  470. package/lib/model-source/glsp-server-status.js.map +0 -1
  471. package/lib/utils/array-utils.d.ts +0 -28
  472. package/lib/utils/array-utils.d.ts.map +0 -1
  473. package/lib/utils/array-utils.js +0 -56
  474. package/lib/utils/array-utils.js.map +0 -1
  475. package/lib/views/default-types.d.ts +0 -37
  476. package/lib/views/default-types.d.ts.map +0 -1
  477. package/lib/views/default-types.js +0 -47
  478. package/lib/views/default-types.js.map +0 -1
  479. package/src/base/actions/context-actions.ts +0 -43
  480. package/src/base/actions/edit-validation-actions.ts +0 -115
  481. package/src/base/operations/operation.ts +0 -204
  482. package/src/features/copy-paste/copy-paste-actions.ts +0 -63
  483. package/src/features/hints/request-type-hints-action.ts +0 -41
  484. package/src/features/model-source-watcher/model-source-changed-action.ts +0 -26
  485. package/src/model-source/glsp-server-status.ts +0 -38
  486. package/src/utils/array-utils.ts +0 -57
  487. 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
@@ -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
+ }
@@ -14,19 +14,16 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  /* eslint-disable import/no-deprecated,no-unused-expressions */
17
- import 'mocha';
18
- import 'reflect-metadata';
19
-
17
+ import { Action, Bounds, ChangeBoundsOperation, ElementAndBounds } from '@eclipse-glsp/protocol';
20
18
  import { expect } from 'chai';
21
19
  import { Container } from 'inversify';
20
+ import 'mocha';
21
+ import 'reflect-metadata';
22
22
  import {
23
- Action,
24
23
  AnimationFrameSyncer,
25
- Bounds,
26
24
  CommandExecutionContext,
27
25
  ConsoleLogger,
28
26
  defaultModule,
29
- ElementAndBounds,
30
27
  ElementMove,
31
28
  FeatureSet,
32
29
  IActionDispatcher,
@@ -41,8 +38,6 @@ import {
41
38
  SModelRoot,
42
39
  TYPES
43
40
  } from 'sprotty';
44
-
45
- import { ChangeBoundsOperation } from '../../base/operations/operation';
46
41
  import { GLSP_TYPES } from '../../base/types';
47
42
  import { resizeFeature } from '../change-bounds/model';
48
43
  import { SelectionService } from '../select/selection-service';
@@ -13,13 +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, ChangeBoundsOperation, ElementAndBounds } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable, optional } from 'inversify';
17
18
  import {
18
- Action,
19
19
  Command,
20
20
  CommandExecutionContext,
21
21
  CommandReturn,
22
- ElementAndBounds,
23
22
  ElementMove,
24
23
  IActionDispatcher,
25
24
  MoveAction,
@@ -27,7 +26,6 @@ import {
27
26
  SModelElement,
28
27
  TYPES
29
28
  } from 'sprotty';
30
- import { ChangeBoundsOperation } from '../../base/operations/operation';
31
29
  import { GLSP_TYPES } from '../../base/types';
32
30
  import { toValidElementAndBounds, toValidElementMove, WriteableElementAndBounds, WriteableElementMove } from '../../utils/layout-utils';
33
31
  import { BoundsAwareModelElement } from '../../utils/smodel-util';
@@ -0,0 +1,256 @@
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
+ EMPTY_BOUNDS,
22
+ isBoundsAware,
23
+ isLayoutableChild,
24
+ isValidDimension,
25
+ LayoutContainer,
26
+ Point,
27
+ SChildElement,
28
+ SModelElement,
29
+ SParentElement,
30
+ StatefulLayouter,
31
+ VBoxLayouter,
32
+ VBoxLayoutOptions
33
+ } from 'sprotty';
34
+
35
+ export interface VBoxLayoutOptionsExt extends VBoxLayoutOptions {
36
+ hGrab: boolean;
37
+ vGrab: boolean;
38
+ prefWidth: number | null;
39
+ prefHeight: number | null;
40
+ }
41
+
42
+ /**
43
+ * Extends VBoxLayouter to support additional layout options
44
+ */
45
+ @injectable()
46
+ export class VBoxLayouterExt extends VBoxLayouter {
47
+ static KIND = VBoxLayouter.KIND;
48
+
49
+ layout(container: SParentElement & LayoutContainer, layouter: StatefulLayouter): void {
50
+ const boundsData = layouter.getBoundsData(container);
51
+ const options = this.getLayoutOptions(container);
52
+ const childrenSize = this.getChildrenSize(container, options, layouter);
53
+
54
+ const fixedSize = this.getFixedContainerBounds(container, options, layouter);
55
+
56
+ const maxWidth =
57
+ options.paddingFactor *
58
+ (options.resizeContainer
59
+ ? Math.max(fixedSize.width - options.paddingLeft - options.paddingRight, childrenSize.width)
60
+ : Math.max(0, fixedSize.width - options.paddingLeft - options.paddingRight));
61
+ const maxHeight =
62
+ options.paddingFactor *
63
+ (options.resizeContainer
64
+ ? Math.max(fixedSize.height - options.paddingTop - options.paddingBottom, childrenSize.height)
65
+ : Math.max(0, fixedSize.height - options.paddingTop - options.paddingBottom));
66
+
67
+ // Remaining size that can be grabbed by children with the vGrab option
68
+ const grabHeight: number = maxHeight - childrenSize.height;
69
+ // Number of children that request vGrab
70
+ // FIXME: This approach works fine when only 1 child uses VGrab, but may cause rounding issues
71
+ // when the grabHeight can't be equally shared by all children.
72
+ const grabbingChildren = container.children
73
+ .map(child => this.getChildLayoutOptions(child, options))
74
+ .filter(opt => opt.vGrab).length;
75
+
76
+ if (maxWidth > 0 && maxHeight > 0) {
77
+ const offset = this.layoutChildren(container, layouter, options, maxWidth, maxHeight, grabHeight, grabbingChildren);
78
+ boundsData.bounds = this.getFinalContainerBounds(container, offset, options, childrenSize.width, childrenSize.height);
79
+ boundsData.boundsChanged = true;
80
+ }
81
+ }
82
+
83
+ protected getChildrenSize(
84
+ container: SParentElement & LayoutContainer,
85
+ containerOptions: VBoxLayoutOptionsExt,
86
+ layouter: StatefulLayouter
87
+ ): Dimension {
88
+ let maxWidth = -1;
89
+ let maxHeight = 0;
90
+ let isFirst = true;
91
+ container.children.forEach(child => {
92
+ if (isLayoutableChild(child)) {
93
+ const bounds = layouter.getBoundsData(child).bounds;
94
+ if (bounds !== undefined && isValidDimension(bounds)) {
95
+ maxHeight += bounds.height;
96
+ if (isFirst) {
97
+ isFirst = false;
98
+ } else {
99
+ maxHeight += containerOptions.vGap;
100
+ }
101
+ maxWidth = Math.max(maxWidth, bounds.width);
102
+ }
103
+ }
104
+ });
105
+ const result = {
106
+ width: maxWidth,
107
+ height: maxHeight
108
+ };
109
+ return result;
110
+ }
111
+
112
+ protected layoutChildren(
113
+ container: SParentElement & LayoutContainer,
114
+ layouter: StatefulLayouter,
115
+ containerOptions: VBoxLayoutOptionsExt,
116
+ maxWidth: number,
117
+ maxHeight: number,
118
+ grabHeight?: number,
119
+ grabbingChildren?: number
120
+ ): Point {
121
+ let currentOffset: Point = {
122
+ x: containerOptions.paddingLeft + 0.5 * (maxWidth - maxWidth / containerOptions.paddingFactor),
123
+ y: containerOptions.paddingTop + 0.5 * (maxHeight - maxHeight / containerOptions.paddingFactor)
124
+ };
125
+
126
+ container.children.forEach(child => {
127
+ if (isLayoutableChild(child)) {
128
+ const boundsData = layouter.getBoundsData(child);
129
+ const bounds = boundsData.bounds;
130
+ const childOptions = this.getChildLayoutOptions(child, containerOptions);
131
+ if (bounds !== undefined && isValidDimension(bounds)) {
132
+ currentOffset = this.layoutChild(
133
+ child,
134
+ boundsData,
135
+ bounds,
136
+ childOptions,
137
+ containerOptions,
138
+ currentOffset,
139
+ maxWidth,
140
+ maxHeight,
141
+ grabHeight,
142
+ grabbingChildren
143
+ );
144
+ }
145
+ }
146
+ });
147
+ return currentOffset;
148
+ }
149
+
150
+ protected layoutChild(
151
+ child: SChildElement,
152
+ boundsData: BoundsData,
153
+ bounds: Bounds,
154
+ childOptions: VBoxLayoutOptionsExt,
155
+ containerOptions: VBoxLayoutOptionsExt,
156
+ currentOffset: Point,
157
+ maxWidth: number,
158
+ maxHeight: number,
159
+ grabHeight?: number,
160
+ grabbingChildren?: number
161
+ ): Point {
162
+ let offset = super.layoutChild(child, boundsData, bounds, childOptions, containerOptions, currentOffset, maxWidth, maxHeight);
163
+ if (childOptions.hGrab) {
164
+ boundsData.bounds = {
165
+ x: boundsData.bounds!.x,
166
+ y: boundsData.bounds!.y,
167
+ width: maxWidth,
168
+ height: boundsData.bounds!.height
169
+ };
170
+ boundsData.boundsChanged = true;
171
+ }
172
+ if (childOptions.vGrab && grabHeight && grabbingChildren) {
173
+ const height = boundsData.bounds!.height + grabHeight / grabbingChildren;
174
+ boundsData.bounds = {
175
+ x: boundsData.bounds!.x,
176
+ y: boundsData.bounds!.y,
177
+ width: boundsData.bounds!.width,
178
+ height: height
179
+ };
180
+ boundsData.boundsChanged = true;
181
+ offset = { x: currentOffset.x, y: currentOffset.y + height };
182
+ }
183
+ return offset;
184
+ }
185
+
186
+ protected getFixedContainerBounds(container: SModelElement, layoutOptions: VBoxLayoutOptionsExt, layouter: StatefulLayouter): Bounds {
187
+ const currentContainer = container;
188
+ // eslint-disable-next-line no-constant-condition
189
+ if (isBoundsAware(currentContainer)) {
190
+ const bounds = currentContainer.bounds;
191
+ const elementOptions = this.getElementLayoutOptions(currentContainer);
192
+ const width = elementOptions?.prefWidth ?? 0;
193
+ const height = elementOptions?.prefHeight ?? 0;
194
+ return { ...bounds, width, height };
195
+ }
196
+ return EMPTY_BOUNDS;
197
+ }
198
+
199
+ protected getChildLayoutOptions(child: SChildElement, containerOptions: VBoxLayoutOptionsExt): VBoxLayoutOptionsExt {
200
+ return super.getChildLayoutOptions(child, containerOptions) as VBoxLayoutOptionsExt;
201
+ }
202
+
203
+ protected getLayoutOptions(element: SModelElement): VBoxLayoutOptionsExt {
204
+ return super.getLayoutOptions(element) as VBoxLayoutOptionsExt;
205
+ }
206
+
207
+ protected getElementLayoutOptions(element: SModelElement): VBoxLayoutOptionsExt | undefined {
208
+ return (element as any).layoutOptions;
209
+ }
210
+
211
+ protected getFinalContainerBounds(
212
+ container: SParentElement & LayoutContainer,
213
+ lastOffset: Point,
214
+ options: VBoxLayoutOptionsExt,
215
+ maxWidth: number,
216
+ maxHeight: number
217
+ ): Bounds {
218
+ const elementOptions = this.getElementLayoutOptions(container);
219
+ const width = elementOptions?.prefWidth ?? options.minWidth;
220
+ const height = elementOptions?.prefHeight ?? options.minHeight;
221
+
222
+ const result = {
223
+ x: container.bounds.x,
224
+ y: container.bounds.y,
225
+ width: Math.max(width, maxWidth + options.paddingLeft + options.paddingRight),
226
+ height: Math.max(height, maxHeight + options.paddingTop + options.paddingBottom)
227
+ };
228
+
229
+ return result;
230
+ }
231
+
232
+ protected getDefaultLayoutOptions(): VBoxLayoutOptionsExt {
233
+ return {
234
+ resizeContainer: true,
235
+ paddingTop: 5,
236
+ paddingBottom: 5,
237
+ paddingLeft: 5,
238
+ paddingRight: 5,
239
+ paddingFactor: 1,
240
+ vGap: 1,
241
+ hAlign: 'center',
242
+ minWidth: 0,
243
+ minHeight: 0,
244
+ hGrab: false,
245
+ vGrab: false,
246
+ // eslint-disable-next-line no-null/no-null
247
+ prefHeight: null,
248
+ // eslint-disable-next-line no-null/no-null
249
+ prefWidth: null
250
+ };
251
+ }
252
+
253
+ protected spread(a: VBoxLayoutOptionsExt, b: VBoxLayoutOptionsExt): VBoxLayoutOptionsExt {
254
+ return { ...a, ...b };
255
+ }
256
+ }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020 EclipseSource and others.
2
+ * Copyright (c) 2020-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,10 +13,9 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { ModelSourceChangedAction } from '@eclipse-glsp/protocol';
16
17
  import { ContainerModule } from 'inversify';
17
- import { configureActionHandler } from 'sprotty/lib';
18
-
19
- import { ModelSourceChangedAction } from './model-source-changed-action';
18
+ import { configureActionHandler } from 'sprotty';
20
19
  import { ModelSourceChangedActionHandler } from './model-source-changed-action-handler';
21
20
 
22
21
  const modelSourceWatcherModule = new ContainerModule((bind, _unbind, isBound) => {
@@ -13,11 +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 {
17
+ Action,
18
+ GLSPServerStatusAction,
19
+ isModelSourceChangedAction,
20
+ ModelSourceChangedAction,
21
+ ServerMessageAction
22
+ } from '@eclipse-glsp/protocol';
16
23
  import { inject, injectable, optional } from 'inversify';
17
- import { Action, IActionDispatcher, IActionHandler, TYPES, ViewerOptions } from 'sprotty/lib';
18
-
19
- import { GLSPServerStatusAction, ServerMessageAction } from '../../model-source/glsp-server-status';
20
- import { isModelSourceChangedAction, ModelSourceChangedAction } from './model-source-changed-action';
24
+ import { IActionDispatcher, IActionHandler, TYPES, ViewerOptions } from 'sprotty';
21
25
 
22
26
  /**
23
27
  * An external handler of the model source change event.
@@ -13,9 +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 { Action, isAction } from '@eclipse-glsp/protocol';
16
17
  import { injectable, multiInject, optional } from 'inversify';
17
18
  import { On, VNode, VNodeData } from 'snabbdom';
18
- import { Action, isAction, MouseListener, MouseTool, SModelElement, SModelRoot, TYPES } from 'sprotty';
19
+ import { MouseListener, MouseTool, SModelElement, SModelRoot, TYPES } from 'sprotty';
19
20
  import { getRank } from '../rank/model';
20
21
 
21
22
  export interface IMouseTool {
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020 EclipseSource and others.
2
+ * Copyright (c) 2020-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,16 +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 { NavigateToExternalTargetAction, NavigateToTargetAction } from '@eclipse-glsp/protocol';
16
17
  import { ContainerModule } from 'inversify';
17
- import { configureActionHandler } from 'sprotty/lib';
18
-
19
- import {
20
- NavigateAction,
21
- NavigateToExternalTargetAction,
22
- NavigateToTargetAction,
23
- NavigationActionHandler,
24
- ProcessNavigationArgumentsAction
25
- } from './navigation-action-handler';
18
+ import { configureActionHandler } from 'sprotty';
19
+ import { NavigateAction, NavigationActionHandler, ProcessNavigationArgumentsAction } from './navigation-action-handler';
26
20
  import { NavigationTargetResolver } from './navigation-target-resolver';
27
21
 
28
22
  export const navigationModule = new ContainerModule((bind, _unbind, isBound) => {
@@ -13,28 +13,29 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable } from 'inversify';
17
16
  import {
18
17
  Action,
19
- ActionHandlerRegistry,
18
+ Args,
20
19
  CenterAction,
21
- generateRequestId,
22
- IActionDispatcher,
23
- IActionHandler,
24
- ICommand,
25
- ILogger,
26
- RequestAction,
27
- ResponseAction,
20
+ GLSPServerStatusAction,
21
+ isNavigateToExternalTargetAction,
22
+ isNavigateToTargetAction,
23
+ isSetNavigationTargetsAction,
24
+ NavigateToExternalTargetAction,
25
+ NavigateToTargetAction,
26
+ NavigationTarget,
27
+ RequestNavigationTargetsAction,
28
28
  SelectAction,
29
29
  SelectAllAction,
30
- TYPES
31
- } from 'sprotty';
30
+ ServerMessageAction,
31
+ SetResolvedNavigationTargetAction
32
+ } from '@eclipse-glsp/protocol';
33
+ import { inject, injectable } from 'inversify';
34
+ import { ActionHandlerRegistry, IActionDispatcher, IActionHandler, ICommand, ILogger, TYPES } from 'sprotty';
32
35
 
33
- import { Args } from '../../base/args';
34
- import { EditorContext, EditorContextServiceProvider } from '../../base/editor-context';
36
+ import { EditorContextServiceProvider } from '../../base/editor-context-service';
35
37
  import { GLSP_TYPES } from '../../base/types';
36
- import { GLSPServerStatusAction, ServerMessageAction } from '../../model-source/glsp-server-status';
37
- import { NavigationTarget, NavigationTargetResolver, SetResolvedNavigationTargetAction } from './navigation-target-resolver';
38
+ import { NavigationTargetResolver } from './navigation-target-resolver';
38
39
 
39
40
  /**
40
41
  * Action for triggering a navigation of a certain target type.
@@ -57,53 +58,6 @@ export function isNavigateAction(action: Action): action is NavigateAction {
57
58
  return action !== undefined && action.kind === NavigateAction.KIND && (action as NavigateAction).targetTypeId !== undefined;
58
59
  }
59
60
 
60
- /** Action that is usually sent to the server to request navigation targets for a navigation type. */
61
- export class RequestNavigationTargetsAction implements RequestAction<SetNavigationTargetsAction> {
62
- static readonly KIND = 'requestNavigationTargets';
63
- kind = RequestNavigationTargetsAction.KIND;
64
- constructor(readonly targetTypeId: string, readonly editorContext: EditorContext, readonly requestId: string = generateRequestId()) {}
65
- }
66
-
67
- /** Action that is usually sent from the server to the client as a repsonse to a `RequestNavigationTargetsAction`. */
68
- export class SetNavigationTargetsAction implements ResponseAction {
69
- static readonly KIND = 'setNavigationTargets';
70
- kind = SetNavigationTargetsAction.KIND;
71
- constructor(readonly targets: NavigationTarget[], readonly responseId: string = '', readonly args?: Args) {}
72
- }
73
-
74
- export function isSetNavigationTargetsAction(action: Action): action is SetNavigationTargetsAction {
75
- return (
76
- action !== undefined &&
77
- action.kind === SetNavigationTargetsAction.KIND &&
78
- (action as SetNavigationTargetsAction).targets !== undefined
79
- );
80
- }
81
-
82
- /** Action that triggers the navigation to a particular navigation target, such as element IDs, queries, etc.. */
83
- export class NavigateToTargetAction implements Action {
84
- static readonly KIND = 'navigateToTarget';
85
- readonly kind = NavigateToTargetAction.KIND;
86
- constructor(readonly target: NavigationTarget) {}
87
- }
88
-
89
- export function isNavigateToTargetAction(action: Action): action is NavigateToTargetAction {
90
- return action !== undefined && action.kind === NavigateToTargetAction.KIND && (action as NavigateToTargetAction).target !== undefined;
91
- }
92
-
93
- export class NavigateToExternalTargetAction implements Action {
94
- static readonly KIND = 'navigateToExternalTarget';
95
- readonly kind = NavigateToExternalTargetAction.KIND;
96
- constructor(readonly target: NavigationTarget) {}
97
- }
98
-
99
- export function isNavigateToExternalTargetAction(action: Action): action is NavigateToExternalTargetAction {
100
- return (
101
- action !== undefined &&
102
- action.kind === NavigateToExternalTargetAction.KIND &&
103
- (action as NavigateToExternalTargetAction).target !== undefined
104
- );
105
- }
106
-
107
61
  /** Action to trigger the processing of additional navigation arguments.
108
62
  *
109
63
  * The resolution of a `NavigationTarget` may entail additional arguments. In this case, this action is
@@ -14,13 +14,11 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  /* eslint-disable no-unused-expressions */
17
+ import { NavigationTarget } from '@eclipse-glsp/protocol';
18
+ import { expect } from 'chai';
17
19
  import 'mocha';
18
20
  import 'reflect-metadata';
19
21
 
20
- import { expect } from 'chai';
21
-
22
- import { NavigationTarget } from './navigation-target-resolver';
23
-
24
22
  describe('NavigationTarget', () => {
25
23
  it('should be able to set and get element IDs', () => {
26
24
  const navigationTarget: NavigationTarget = { uri: 'uri' };