@eclipse-glsp/client 0.9.0-rc-01 → 0.9.0

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 (581) 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 +17 -1
  8. package/lib/base/action-dispatcher.d.ts.map +1 -1
  9. package/lib/base/action-dispatcher.js +41 -61
  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.map +1 -1
  105. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
  106. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  107. package/lib/features/context-menu/server-context-menu-provider.d.ts +18 -2
  108. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  109. package/lib/features/context-menu/server-context-menu-provider.js +30 -31
  110. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  111. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
  112. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  113. package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
  114. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  115. package/lib/features/copy-paste/copy-paste-handler.d.ts +19 -2
  116. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  117. package/lib/features/copy-paste/copy-paste-handler.js +70 -70
  118. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  119. package/lib/features/copy-paste/di.config.d.ts +1 -1
  120. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  121. package/lib/features/copy-paste/di.config.js +11 -11
  122. package/lib/features/copy-paste/di.config.js.map +1 -1
  123. package/lib/features/decoration/decoration-placer.d.ts +17 -1
  124. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  125. package/lib/features/decoration/decoration-placer.js +12 -46
  126. package/lib/features/decoration/decoration-placer.js.map +1 -1
  127. package/lib/features/decoration/di.config.js +4 -4
  128. package/lib/features/decoration/di.config.js.map +1 -1
  129. package/lib/features/edit-label/di.config.js +7 -7
  130. package/lib/features/edit-label/di.config.js.map +1 -1
  131. package/lib/features/edit-label/edit-label-tool.js +20 -43
  132. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  133. package/lib/features/edit-label/edit-label-validator.d.ts +16 -1
  134. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  135. package/lib/features/edit-label/edit-label-validator.js +40 -62
  136. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  137. package/lib/features/hints/di.config.d.ts +0 -15
  138. package/lib/features/hints/di.config.d.ts.map +1 -1
  139. package/lib/features/hints/di.config.js +9 -9
  140. package/lib/features/hints/di.config.js.map +1 -1
  141. package/lib/features/hints/model.d.ts +3 -2
  142. package/lib/features/hints/model.d.ts.map +1 -1
  143. package/lib/features/hints/model.js.map +1 -1
  144. package/lib/features/hints/type-hints.d.ts +17 -45
  145. package/lib/features/hints/type-hints.d.ts.map +1 -1
  146. package/lib/features/hints/type-hints.js +81 -140
  147. package/lib/features/hints/type-hints.js.map +1 -1
  148. package/lib/features/hover/di.config.d.ts +1 -1
  149. package/lib/features/hover/di.config.d.ts.map +1 -1
  150. package/lib/features/hover/di.config.js +8 -8
  151. package/lib/features/hover/di.config.js.map +1 -1
  152. package/lib/features/hover/hover.d.ts +17 -1
  153. package/lib/features/hover/hover.d.ts.map +1 -1
  154. package/lib/features/hover/hover.js +37 -77
  155. package/lib/features/hover/hover.js.map +1 -1
  156. package/lib/features/layout/di.config.d.ts +1 -1
  157. package/lib/features/layout/di.config.d.ts.map +1 -1
  158. package/lib/features/layout/di.config.js +11 -7
  159. package/lib/features/layout/di.config.js.map +1 -1
  160. package/lib/features/layout/freeform-layout.d.ts +16 -0
  161. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  162. package/lib/features/layout/freeform-layout.js +107 -0
  163. package/lib/features/layout/freeform-layout.js.map +1 -0
  164. package/lib/features/layout/layout-commands.d.ts +19 -3
  165. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  166. package/lib/features/layout/layout-commands.js +189 -265
  167. package/lib/features/layout/layout-commands.js.map +1 -1
  168. package/lib/features/layout/layout-commands.spec.d.ts +0 -15
  169. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
  170. package/lib/features/layout/layout-commands.spec.js +95 -89
  171. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  172. package/lib/features/layout/vbox-layout.d.ts +25 -0
  173. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  174. package/lib/features/layout/vbox-layout.js +188 -0
  175. package/lib/features/layout/vbox-layout.js.map +1 -0
  176. package/lib/features/model-source-watcher/di.config.d.ts +0 -15
  177. package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
  178. package/lib/features/model-source-watcher/di.config.js +7 -7
  179. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  180. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
  181. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  182. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -46
  183. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  184. package/lib/features/mouse-tool/di.config.js +5 -5
  185. package/lib/features/mouse-tool/di.config.js.map +1 -1
  186. package/lib/features/mouse-tool/mouse-tool.d.ts +2 -1
  187. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  188. package/lib/features/mouse-tool/mouse-tool.js +70 -215
  189. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  190. package/lib/features/navigation/di.config.d.ts +0 -15
  191. package/lib/features/navigation/di.config.d.ts.map +1 -1
  192. package/lib/features/navigation/di.config.js +11 -10
  193. package/lib/features/navigation/di.config.js.map +1 -1
  194. package/lib/features/navigation/navigation-action-handler.d.ts +19 -38
  195. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  196. package/lib/features/navigation/navigation-action-handler.js +118 -254
  197. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  198. package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
  199. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  200. package/lib/features/navigation/navigation-target-resolver.js +46 -188
  201. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  202. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +0 -15
  203. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  204. package/lib/features/navigation/navigation-target-resolver.spec.js +26 -26
  205. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  206. package/lib/features/rank/model.d.ts +1 -1
  207. package/lib/features/rank/model.js +2 -2
  208. package/lib/features/rank/model.js.map +1 -1
  209. package/lib/features/reconnect/model.d.ts +1 -1
  210. package/lib/features/reconnect/model.d.ts.map +1 -1
  211. package/lib/features/reconnect/model.js +9 -27
  212. package/lib/features/reconnect/model.js.map +1 -1
  213. package/lib/features/save/di.config.d.ts +1 -1
  214. package/lib/features/save/di.config.d.ts.map +1 -1
  215. package/lib/features/save/di.config.js +6 -6
  216. package/lib/features/save/di.config.js.map +1 -1
  217. package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -10
  218. package/lib/features/save/save-keylistener.d.ts.map +1 -0
  219. package/lib/features/{undo-redo/model.d.ts → save/save-keylistener.js} +16 -12
  220. package/lib/features/save/save-keylistener.js.map +1 -0
  221. package/lib/features/select/di.config.js +11 -11
  222. package/lib/features/select/di.config.js.map +1 -1
  223. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  224. package/lib/features/select/select-feedback-action.js +45 -71
  225. package/lib/features/select/select-feedback-action.js.map +1 -1
  226. package/lib/features/select/select-mouse-listener.js +7 -23
  227. package/lib/features/select/select-mouse-listener.js.map +1 -1
  228. package/lib/features/select/selection-service.d.ts +17 -1
  229. package/lib/features/select/selection-service.d.ts.map +1 -1
  230. package/lib/features/select/selection-service.js +134 -236
  231. package/lib/features/select/selection-service.js.map +1 -1
  232. package/lib/features/select/selection-service.spec.js +96 -139
  233. package/lib/features/select/selection-service.spec.js.map +1 -1
  234. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +19 -2
  235. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  236. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +102 -142
  237. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  238. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +17 -1
  239. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  240. package/lib/features/tool-feedback/creation-tool-feedback.js +69 -118
  241. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  242. package/lib/features/tool-feedback/css-feedback.d.ts +20 -2
  243. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  244. package/lib/features/tool-feedback/css-feedback.js +37 -81
  245. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  246. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  247. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  248. package/lib/features/tool-feedback/di.config.js +27 -27
  249. package/lib/features/tool-feedback/di.config.js.map +1 -1
  250. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +18 -2
  251. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  252. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -208
  253. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  254. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +19 -3
  255. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  256. package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
  257. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  258. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +17 -1
  259. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  260. package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -84
  261. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  262. package/lib/features/tool-feedback/model.d.ts +1 -1
  263. package/lib/features/tool-feedback/model.js +11 -27
  264. package/lib/features/tool-feedback/model.js.map +1 -1
  265. package/lib/features/tool-feedback/view.d.ts +21 -5
  266. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  267. package/lib/features/tool-feedback/view.js +29 -51
  268. package/lib/features/tool-feedback/view.js.map +1 -1
  269. package/lib/features/tool-palette/di.config.d.ts +1 -1
  270. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  271. package/lib/features/tool-palette/di.config.js +6 -6
  272. package/lib/features/tool-palette/di.config.js.map +1 -1
  273. package/lib/features/tool-palette/palette-item.d.ts +2 -3
  274. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  275. package/lib/features/tool-palette/palette-item.js +6 -6
  276. package/lib/features/tool-palette/palette-item.js.map +1 -1
  277. package/lib/features/tool-palette/tool-palette.d.ts +19 -3
  278. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  279. package/lib/features/tool-palette/tool-palette.js +199 -269
  280. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  281. package/lib/features/tools/base-glsp-tool.d.ts +18 -2
  282. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  283. package/lib/features/tools/base-glsp-tool.js +37 -59
  284. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  285. package/lib/features/tools/change-bounds-tool.d.ts +20 -3
  286. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  287. package/lib/features/tools/change-bounds-tool.js +192 -241
  288. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  289. package/lib/features/tools/delete-tool.d.ts +17 -1
  290. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  291. package/lib/features/tools/delete-tool.js +71 -104
  292. package/lib/features/tools/delete-tool.js.map +1 -1
  293. package/lib/features/tools/di.config.d.ts +0 -15
  294. package/lib/features/tools/di.config.d.ts.map +1 -1
  295. package/lib/features/tools/di.config.js +19 -19
  296. package/lib/features/tools/di.config.js.map +1 -1
  297. package/lib/features/tools/edge-creation-tool.d.ts +17 -2
  298. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  299. package/lib/features/tools/edge-creation-tool.js +62 -87
  300. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  301. package/lib/features/tools/edge-edit-tool.d.ts +17 -1
  302. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  303. package/lib/features/tools/edge-edit-tool.js +112 -183
  304. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  305. package/lib/features/tools/marquee-behavior.d.ts +42 -0
  306. package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
  307. package/lib/features/tools/marquee-behavior.js +128 -0
  308. package/lib/features/tools/marquee-behavior.js.map +1 -0
  309. package/{src/features/undo-redo/model.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -12
  310. package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
  311. package/lib/features/tools/marquee-behavior.spec.js +165 -0
  312. package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
  313. package/lib/features/tools/marquee-mouse-tool.d.ts +24 -13
  314. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  315. package/lib/features/tools/marquee-mouse-tool.js +86 -195
  316. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  317. package/lib/features/tools/marquee-tool.d.ts +17 -1
  318. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  319. package/lib/features/tools/marquee-tool.js +32 -73
  320. package/lib/features/tools/marquee-tool.js.map +1 -1
  321. package/lib/features/tools/model.js +4 -22
  322. package/lib/features/tools/model.js.map +1 -1
  323. package/lib/features/tools/node-creation-tool.d.ts +17 -2
  324. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  325. package/lib/features/tools/node-creation-tool.js +60 -90
  326. package/lib/features/tools/node-creation-tool.js.map +1 -1
  327. package/lib/features/tools/view.d.ts +1 -1
  328. package/lib/features/tools/view.d.ts.map +1 -1
  329. package/lib/features/tools/view.js +12 -31
  330. package/lib/features/tools/view.js.map +1 -1
  331. package/lib/features/validation/di.config.js +12 -12
  332. package/lib/features/validation/di.config.js.map +1 -1
  333. package/lib/features/validation/issue-marker.d.ts +2 -2
  334. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  335. package/lib/features/validation/issue-marker.js +17 -55
  336. package/lib/features/validation/issue-marker.js.map +1 -1
  337. package/lib/features/validation/marker-navigator.d.ts +17 -1
  338. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  339. package/lib/features/validation/marker-navigator.js +131 -164
  340. package/lib/features/validation/marker-navigator.js.map +1 -1
  341. package/lib/features/validation/marker-navigator.spec.d.ts +0 -15
  342. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  343. package/lib/features/validation/marker-navigator.spec.js +83 -77
  344. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  345. package/lib/features/validation/validate.d.ts +18 -29
  346. package/lib/features/validation/validate.d.ts.map +1 -1
  347. package/lib/features/validation/validate.js +147 -300
  348. package/lib/features/validation/validate.js.map +1 -1
  349. package/lib/features/viewport/di.config.js +10 -10
  350. package/lib/features/viewport/di.config.js.map +1 -1
  351. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +18 -2
  352. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  353. package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -47
  354. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  355. package/lib/index.d.ts +9 -15
  356. package/lib/index.d.ts.map +1 -1
  357. package/lib/index.js +29 -34
  358. package/lib/index.js.map +1 -1
  359. package/lib/lib/model.js +11 -27
  360. package/lib/lib/model.js.map +1 -1
  361. package/lib/model-source/glsp-diagram-server.d.ts +3 -5
  362. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  363. package/lib/model-source/glsp-diagram-server.js +60 -121
  364. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  365. package/lib/protocol-reexport.d.ts +45 -0
  366. package/lib/protocol-reexport.d.ts.map +1 -0
  367. package/lib/protocol-reexport.js +75 -0
  368. package/lib/protocol-reexport.js.map +1 -0
  369. package/lib/utils/argument-utils.d.ts +3 -3
  370. package/lib/utils/argument-utils.d.ts.map +1 -1
  371. package/lib/utils/argument-utils.js +32 -97
  372. package/lib/utils/argument-utils.js.map +1 -1
  373. package/lib/utils/html-utils.js +2 -2
  374. package/lib/utils/html-utils.js.map +1 -1
  375. package/lib/utils/layout-utils.d.ts +3 -2
  376. package/lib/utils/layout-utils.d.ts.map +1 -1
  377. package/lib/utils/layout-utils.js +5 -5
  378. package/lib/utils/layout-utils.js.map +1 -1
  379. package/lib/utils/marker.d.ts +0 -38
  380. package/lib/utils/marker.d.ts.map +1 -1
  381. package/lib/utils/marker.js +14 -61
  382. package/lib/utils/marker.js.map +1 -1
  383. package/lib/utils/smodel-util.d.ts +4 -4
  384. package/lib/utils/smodel-util.d.ts.map +1 -1
  385. package/lib/utils/smodel-util.js +16 -65
  386. package/lib/utils/smodel-util.js.map +1 -1
  387. package/lib/utils/viewpoint-util.d.ts +3 -2
  388. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  389. package/lib/utils/viewpoint-util.js +15 -30
  390. package/lib/utils/viewpoint-util.js.map +1 -1
  391. package/lib/views/base-view-module.d.ts +0 -15
  392. package/lib/views/base-view-module.d.ts.map +1 -1
  393. package/lib/views/base-view-module.js +28 -28
  394. package/lib/views/base-view-module.js.map +1 -1
  395. package/lib/views/compartments.d.ts +6 -0
  396. package/lib/views/compartments.d.ts.map +1 -0
  397. package/lib/views/compartments.js +43 -0
  398. package/lib/views/compartments.js.map +1 -0
  399. package/lib/views/glsp-edge-view.d.ts +18 -3
  400. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  401. package/lib/views/glsp-edge-view.js +32 -77
  402. package/lib/views/glsp-edge-view.js.map +1 -1
  403. package/lib/views/index.d.ts +1 -1
  404. package/lib/views/index.d.ts.map +1 -1
  405. package/lib/views/index.js +1 -1
  406. package/lib/views/index.js.map +1 -1
  407. package/lib/views/issue-marker-view.d.ts +2 -1
  408. package/lib/views/issue-marker-view.d.ts.map +1 -1
  409. package/lib/views/issue-marker-view.js +36 -50
  410. package/lib/views/issue-marker-view.js.map +1 -1
  411. package/lib/views/rounded-corner-view.d.ts +2 -3
  412. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  413. package/lib/views/rounded-corner-view.js +40 -70
  414. package/lib/views/rounded-corner-view.js.map +1 -1
  415. package/lib/views/rounded-corner.d.ts +2 -1
  416. package/lib/views/rounded-corner.d.ts.map +1 -1
  417. package/lib/views/rounded-corner.js +44 -65
  418. package/lib/views/rounded-corner.js.map +1 -1
  419. package/package.json +12 -19
  420. package/src/base/action-dispatcher.ts +3 -4
  421. package/src/base/actions/focus-change-action.ts +2 -2
  422. package/src/base/{args.ts → argumentable.ts} +2 -3
  423. package/src/base/auto-complete/auto-complete-actions.ts +1 -1
  424. package/src/base/auto-complete/auto-complete-widget.ts +37 -25
  425. package/src/base/auto-complete/validation-decorator.ts +12 -11
  426. package/src/base/command-stack.ts +2 -5
  427. package/src/base/container-modules.ts +112 -0
  428. package/src/base/di.config.ts +33 -18
  429. package/src/base/drag-aware-mouse-listener.ts +3 -4
  430. package/src/base/{editor-context.ts → editor-context-service.ts} +4 -31
  431. package/src/base/focus-tracker.ts +2 -4
  432. package/src/base/model/update-model-command.ts +8 -16
  433. package/src/base/model-initialization-constraint.ts +3 -2
  434. package/src/base/tool-manager/glsp-tool-manager.ts +3 -5
  435. package/src/base/types.ts +4 -2
  436. package/src/features/change-bounds/model.ts +15 -5
  437. package/src/features/change-bounds/movement-restrictor.ts +17 -9
  438. package/src/features/change-bounds/snap.ts +3 -2
  439. package/src/features/command-palette/server-command-palette-provider.ts +11 -9
  440. package/src/features/context-menu/delete-element-context-menu.ts +3 -4
  441. package/src/features/context-menu/di.config.ts +11 -9
  442. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +4 -3
  443. package/src/features/context-menu/server-context-menu-provider.ts +10 -7
  444. package/src/features/copy-paste/copy-paste-context-menu.ts +59 -30
  445. package/src/features/copy-paste/copy-paste-handler.ts +18 -10
  446. package/src/features/copy-paste/di.config.ts +2 -3
  447. package/src/features/decoration/decoration-placer.ts +3 -13
  448. package/src/features/edit-label/edit-label-validator.ts +11 -12
  449. package/src/features/hints/di.config.ts +2 -3
  450. package/src/features/hints/model.ts +4 -3
  451. package/src/features/hints/type-hints.ts +23 -90
  452. package/src/features/hover/di.config.ts +1 -2
  453. package/src/features/hover/hover.ts +2 -7
  454. package/src/features/layout/di.config.ts +8 -4
  455. package/src/features/layout/freeform-layout.ts +133 -0
  456. package/src/features/layout/layout-commands.spec.ts +82 -64
  457. package/src/features/layout/layout-commands.ts +43 -34
  458. package/src/features/layout/vbox-layout.ts +256 -0
  459. package/src/features/model-source-watcher/di.config.ts +3 -4
  460. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +11 -7
  461. package/src/features/mouse-tool/mouse-tool.ts +33 -23
  462. package/src/features/navigation/di.config.ts +4 -10
  463. package/src/features/navigation/navigation-action-handler.ts +33 -69
  464. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -7
  465. package/src/features/navigation/navigation-target-resolver.ts +13 -91
  466. package/src/features/rank/model.ts +2 -2
  467. package/src/features/reconnect/model.ts +2 -3
  468. package/src/features/save/di.config.ts +2 -3
  469. package/src/features/save/{save.ts → save-keylistener.ts} +3 -11
  470. package/src/features/select/select-feedback-action.ts +4 -6
  471. package/src/features/select/selection-service.spec.ts +11 -6
  472. package/src/features/select/selection-service.ts +14 -10
  473. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +26 -20
  474. package/src/features/tool-feedback/creation-tool-feedback.ts +17 -10
  475. package/src/features/tool-feedback/css-feedback.ts +9 -6
  476. package/src/features/tool-feedback/di.config.ts +2 -5
  477. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +19 -18
  478. package/src/features/tool-feedback/feedback-action-dispatcher.ts +8 -9
  479. package/src/features/tool-feedback/marquee-tool-feedback.ts +4 -5
  480. package/src/features/tool-feedback/model.ts +1 -2
  481. package/src/features/tool-feedback/view.tsx +17 -11
  482. package/src/features/tool-palette/di.config.ts +2 -4
  483. package/src/features/tool-palette/palette-item.ts +4 -6
  484. package/src/features/tool-palette/tool-palette.ts +44 -40
  485. package/src/features/tools/base-glsp-tool.ts +4 -4
  486. package/src/features/tools/change-bounds-tool.ts +64 -34
  487. package/src/features/tools/delete-tool.ts +9 -6
  488. package/src/features/tools/di.config.ts +2 -3
  489. package/src/features/tools/edge-creation-tool.ts +5 -10
  490. package/src/features/tools/edge-edit-tool.ts +10 -20
  491. package/src/features/tools/marquee-behavior.spec.ts +175 -0
  492. package/src/features/tools/marquee-behavior.ts +158 -0
  493. package/src/features/tools/marquee-mouse-tool.ts +43 -134
  494. package/src/features/tools/marquee-tool.ts +2 -3
  495. package/src/features/tools/node-creation-tool.ts +4 -11
  496. package/src/features/tools/view.tsx +17 -12
  497. package/src/features/validation/issue-marker.ts +2 -3
  498. package/src/features/validation/marker-navigator.spec.ts +18 -14
  499. package/src/features/validation/marker-navigator.ts +24 -12
  500. package/src/features/validation/validate.ts +7 -40
  501. package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -12
  502. package/src/index.ts +30 -19
  503. package/src/model-source/glsp-diagram-server.ts +12 -28
  504. package/src/protocol-reexport.ts +64 -0
  505. package/src/utils/argument-utils.ts +14 -11
  506. package/src/utils/layout-utils.ts +13 -7
  507. package/src/utils/marker.ts +2 -26
  508. package/src/utils/smodel-util.ts +15 -11
  509. package/src/utils/viewpoint-util.ts +4 -4
  510. package/src/views/base-view-module.ts +1 -2
  511. package/src/{base/actions/edit-mode-action.ts → views/compartments.tsx} +18 -14
  512. package/src/views/glsp-edge-view.tsx +21 -14
  513. package/src/views/index.ts +1 -1
  514. package/src/views/issue-marker-view.tsx +28 -19
  515. package/src/views/rounded-corner-view.tsx +38 -25
  516. package/src/views/rounded-corner.ts +5 -6
  517. package/lib/base/actions/context-actions.d.ts +0 -36
  518. package/lib/base/actions/context-actions.d.ts.map +0 -1
  519. package/lib/base/actions/context-actions.js +0 -51
  520. package/lib/base/actions/context-actions.js.map +0 -1
  521. package/lib/base/actions/edit-mode-action.d.ts +0 -13
  522. package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
  523. package/lib/base/actions/edit-mode-action.js +0 -56
  524. package/lib/base/actions/edit-mode-action.js.map +0 -1
  525. package/lib/base/actions/edit-validation-actions.d.ts +0 -78
  526. package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
  527. package/lib/base/actions/edit-validation-actions.js +0 -83
  528. package/lib/base/actions/edit-validation-actions.js.map +0 -1
  529. package/lib/base/actions/protocol-actions.d.ts +0 -41
  530. package/lib/base/actions/protocol-actions.d.ts.map +0 -1
  531. package/lib/base/actions/protocol-actions.js +0 -151
  532. package/lib/base/actions/protocol-actions.js.map +0 -1
  533. package/lib/base/args.d.ts.map +0 -1
  534. package/lib/base/args.js.map +0 -1
  535. package/lib/base/editor-context.d.ts.map +0 -1
  536. package/lib/base/editor-context.js +0 -174
  537. package/lib/base/editor-context.js.map +0 -1
  538. package/lib/base/operations/operation.d.ts +0 -135
  539. package/lib/base/operations/operation.d.ts.map +0 -1
  540. package/lib/base/operations/operation.js +0 -231
  541. package/lib/base/operations/operation.js.map +0 -1
  542. package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
  543. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
  544. package/lib/features/copy-paste/copy-paste-actions.js +0 -68
  545. package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
  546. package/lib/features/hints/request-type-hints-action.d.ts +0 -32
  547. package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
  548. package/lib/features/hints/request-type-hints-action.js +0 -30
  549. package/lib/features/hints/request-type-hints-action.js.map +0 -1
  550. package/lib/features/model-source-watcher/model-source-changed-action.d.ts +0 -24
  551. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
  552. package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
  553. package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
  554. package/lib/features/save/save.d.ts.map +0 -1
  555. package/lib/features/save/save.js +0 -62
  556. package/lib/features/save/save.js.map +0 -1
  557. package/lib/features/undo-redo/model.d.ts.map +0 -1
  558. package/lib/features/undo-redo/model.js +0 -22
  559. package/lib/features/undo-redo/model.js.map +0 -1
  560. package/lib/model-source/glsp-server-status.d.ts +0 -30
  561. package/lib/model-source/glsp-server-status.d.ts.map +0 -1
  562. package/lib/model-source/glsp-server-status.js +0 -61
  563. package/lib/model-source/glsp-server-status.js.map +0 -1
  564. package/lib/utils/array-utils.d.ts +0 -28
  565. package/lib/utils/array-utils.d.ts.map +0 -1
  566. package/lib/utils/array-utils.js +0 -61
  567. package/lib/utils/array-utils.js.map +0 -1
  568. package/lib/views/default-types.d.ts +0 -37
  569. package/lib/views/default-types.d.ts.map +0 -1
  570. package/lib/views/default-types.js +0 -47
  571. package/lib/views/default-types.js.map +0 -1
  572. package/src/base/actions/context-actions.ts +0 -43
  573. package/src/base/actions/edit-validation-actions.ts +0 -103
  574. package/src/base/actions/protocol-actions.ts +0 -82
  575. package/src/base/operations/operation.ts +0 -178
  576. package/src/features/copy-paste/copy-paste-actions.ts +0 -60
  577. package/src/features/hints/request-type-hints-action.ts +0 -36
  578. package/src/features/model-source-watcher/model-source-changed-action.ts +0 -26
  579. package/src/model-source/glsp-server-status.ts +0 -38
  580. package/src/utils/array-utils.ts +0 -55
  581. 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-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
@@ -30,7 +30,6 @@ 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
 
@@ -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,27 +13,22 @@
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,
21
20
  HoverMouseListener,
22
21
  PreRenderedElementSchema,
23
- RequestPopupModelAction,
24
- SetPopupModelAction,
25
22
  SIssueMarker,
26
23
  SIssueSeverity,
27
24
  SModelElement,
28
25
  SModelElementSchema,
29
26
  SModelRootSchema
30
27
  } from 'sprotty';
31
-
32
28
  import { GIssueMarker } from '../validation/issue-marker';
33
29
 
34
30
  @injectable()
35
31
  export class GlspHoverMouseListener extends HoverMouseListener {
36
-
37
32
  protected startMouseOverTimer(target: SModelElement, event: MouseEvent): Promise<Action> {
38
33
  this.stopMouseOverTimer();
39
34
  return new Promise(resolve => {
@@ -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
+ }
@@ -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,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';
@@ -58,7 +53,7 @@ import {
58
53
  } from './layout-commands';
59
54
 
60
55
  class MockActionDispatcher implements IActionDispatcher {
61
- constructor(public dispatchedActions: Action[] = []) { }
56
+ constructor(public dispatchedActions: Action[] = []) {}
62
57
  dispatch(action: Action): Promise<void> {
63
58
  this.dispatchedActions.push(action);
64
59
  return Promise.resolve();
@@ -84,15 +79,18 @@ const selectionService = container.get<SelectionService>(GLSP_TYPES.SelectionSer
84
79
  const actionDispatcher = new MockActionDispatcher();
85
80
 
86
81
  const node1 = {
87
- id: 'node1', type: 'node:circle',
82
+ id: 'node1',
83
+ type: 'node:circle',
88
84
  selected: true
89
85
  };
90
86
  const node2 = {
91
- id: 'node2', type: 'node:circle',
87
+ id: 'node2',
88
+ type: 'node:circle',
92
89
  selected: true
93
90
  };
94
91
  const node3 = {
95
- id: 'node3', type: 'node:circle',
92
+ id: 'node3',
93
+ type: 'node:circle',
96
94
  selected: true
97
95
  };
98
96
  const model = createModel();
@@ -123,7 +121,6 @@ const context: CommandExecutionContext = {
123
121
  const defaultSize = { height: 10, width: 10 };
124
122
 
125
123
  describe('AlignElementsCommand', () => {
126
-
127
124
  it('should align all elements left', () => {
128
125
  actionDispatcher.dispatchedActions = [];
129
126
  const newModel = initModel([
@@ -135,11 +132,13 @@ describe('AlignElementsCommand', () => {
135
132
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
136
133
  command.execute(newContext(newModel));
137
134
 
138
- assertAllBounds(new Map([
139
- ['node1', { x: 111, y: 111, width: defaultSize.width, height: defaultSize.height }],
140
- ['node2', { x: 111, y: 222, width: defaultSize.width, height: defaultSize.height }],
141
- ['node3', { x: 111, y: 333, width: defaultSize.width, height: defaultSize.height }]
142
- ]));
135
+ assertAllBounds(
136
+ new Map([
137
+ ['node1', { x: 111, y: 111, width: defaultSize.width, height: defaultSize.height }],
138
+ ['node2', { x: 111, y: 222, width: defaultSize.width, height: defaultSize.height }],
139
+ ['node3', { x: 111, y: 333, width: defaultSize.width, height: defaultSize.height }]
140
+ ])
141
+ );
143
142
  });
144
143
 
145
144
  it('should align all elements right', () => {
@@ -153,11 +152,13 @@ describe('AlignElementsCommand', () => {
153
152
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
154
153
  command.execute(newContext(newModel));
155
154
 
156
- assertAllBounds(new Map([
157
- ['node1', { x: 333, y: 111, width: defaultSize.width, height: defaultSize.height }],
158
- ['node2', { x: 333, y: 222, width: defaultSize.width, height: defaultSize.height }],
159
- ['node3', { x: 333, y: 333, width: defaultSize.width, height: defaultSize.height }]
160
- ]));
155
+ assertAllBounds(
156
+ new Map([
157
+ ['node1', { x: 333, y: 111, width: defaultSize.width, height: defaultSize.height }],
158
+ ['node2', { x: 333, y: 222, width: defaultSize.width, height: defaultSize.height }],
159
+ ['node3', { x: 333, y: 333, width: defaultSize.width, height: defaultSize.height }]
160
+ ])
161
+ );
161
162
  });
162
163
 
163
164
  it('should align all elements center', () => {
@@ -171,11 +172,13 @@ describe('AlignElementsCommand', () => {
171
172
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
172
173
  command.execute(newContext(newModel));
173
174
 
174
- assertAllBounds(new Map([
175
- ['node1', { x: 222, y: 111, width: defaultSize.width, height: defaultSize.height }],
176
- ['node2', { x: 222, y: 222, width: defaultSize.width, height: defaultSize.height }],
177
- ['node3', { x: 222, y: 333, width: defaultSize.width, height: defaultSize.height }]
178
- ]));
175
+ assertAllBounds(
176
+ new Map([
177
+ ['node1', { x: 222, y: 111, width: defaultSize.width, height: defaultSize.height }],
178
+ ['node2', { x: 222, y: 222, width: defaultSize.width, height: defaultSize.height }],
179
+ ['node3', { x: 222, y: 333, width: defaultSize.width, height: defaultSize.height }]
180
+ ])
181
+ );
179
182
  });
180
183
 
181
184
  it('should align all elements top', () => {
@@ -189,11 +192,13 @@ describe('AlignElementsCommand', () => {
189
192
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
190
193
  command.execute(newContext(newModel));
191
194
 
192
- assertAllBounds(new Map([
193
- ['node1', { x: 111, y: 111, width: defaultSize.width, height: defaultSize.height }],
194
- ['node2', { x: 222, y: 111, width: defaultSize.width, height: defaultSize.height }],
195
- ['node3', { x: 333, y: 111, width: defaultSize.width, height: defaultSize.height }]
196
- ]));
195
+ assertAllBounds(
196
+ new Map([
197
+ ['node1', { x: 111, y: 111, width: defaultSize.width, height: defaultSize.height }],
198
+ ['node2', { x: 222, y: 111, width: defaultSize.width, height: defaultSize.height }],
199
+ ['node3', { x: 333, y: 111, width: defaultSize.width, height: defaultSize.height }]
200
+ ])
201
+ );
197
202
  });
198
203
 
199
204
  it('should align all elements bottom', () => {
@@ -207,11 +212,13 @@ describe('AlignElementsCommand', () => {
207
212
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
208
213
  command.execute(newContext(newModel));
209
214
 
210
- assertAllBounds(new Map([
211
- ['node1', { x: 111, y: 333, width: defaultSize.width, height: defaultSize.height }],
212
- ['node2', { x: 222, y: 333, width: defaultSize.width, height: defaultSize.height }],
213
- ['node3', { x: 333, y: 333, width: defaultSize.width, height: defaultSize.height }]
214
- ]));
215
+ assertAllBounds(
216
+ new Map([
217
+ ['node1', { x: 111, y: 333, width: defaultSize.width, height: defaultSize.height }],
218
+ ['node2', { x: 222, y: 333, width: defaultSize.width, height: defaultSize.height }],
219
+ ['node3', { x: 333, y: 333, width: defaultSize.width, height: defaultSize.height }]
220
+ ])
221
+ );
215
222
  });
216
223
 
217
224
  it('should align all elements middle', () => {
@@ -225,17 +232,17 @@ describe('AlignElementsCommand', () => {
225
232
  const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
226
233
  command.execute(newContext(newModel));
227
234
 
228
- assertAllBounds(new Map([
229
- ['node1', { x: 111, y: 222, width: defaultSize.width, height: defaultSize.height }],
230
- ['node2', { x: 222, y: 222, width: defaultSize.width, height: defaultSize.height }],
231
- ['node3', { x: 333, y: 222, width: defaultSize.width, height: defaultSize.height }]
232
- ]));
235
+ assertAllBounds(
236
+ new Map([
237
+ ['node1', { x: 111, y: 222, width: defaultSize.width, height: defaultSize.height }],
238
+ ['node2', { x: 222, y: 222, width: defaultSize.width, height: defaultSize.height }],
239
+ ['node3', { x: 333, y: 222, width: defaultSize.width, height: defaultSize.height }]
240
+ ])
241
+ );
233
242
  });
234
-
235
243
  });
236
244
 
237
245
  describe('ResizeElementsCommand', () => {
238
-
239
246
  it('should make same width as last', () => {
240
247
  actionDispatcher.dispatchedActions = [];
241
248
  const newModel = initModel([
@@ -248,11 +255,13 @@ describe('ResizeElementsCommand', () => {
248
255
  command.execute(newContext(newModel));
249
256
 
250
257
  // resize is keeping the center, so the X moves by diff / 2
251
- assertAllBoundsInChangeBounds(new Map([
252
- ['node1', { x: 90, y: 100, height: 10, width: 30 }],
253
- ['node2', { x: 95, y: 200, height: 20, width: 30 }],
254
- ['node3', { x: 100, y: 300, height: 30, width: 30 }]
255
- ]));
258
+ assertAllBoundsInChangeBounds(
259
+ new Map([
260
+ ['node1', { x: 90, y: 100, height: 10, width: 30 }],
261
+ ['node2', { x: 95, y: 200, height: 20, width: 30 }],
262
+ ['node3', { x: 100, y: 300, height: 30, width: 30 }]
263
+ ])
264
+ );
256
265
  });
257
266
 
258
267
  it('should make same height as last', () => {
@@ -267,11 +276,13 @@ describe('ResizeElementsCommand', () => {
267
276
  command.execute(newContext(newModel));
268
277
 
269
278
  // resize is keeping the center, so the Y moves by diff / 2
270
- assertAllBoundsInChangeBounds(new Map([
271
- ['node1', { x: 100, y: 90, height: 30, width: 10 }],
272
- ['node2', { x: 100, y: 195, height: 30, width: 20 }],
273
- ['node3', { x: 100, y: 300, height: 30, width: 30 }]
274
- ]));
279
+ assertAllBoundsInChangeBounds(
280
+ new Map([
281
+ ['node1', { x: 100, y: 90, height: 30, width: 10 }],
282
+ ['node2', { x: 100, y: 195, height: 30, width: 20 }],
283
+ ['node3', { x: 100, y: 300, height: 30, width: 30 }]
284
+ ])
285
+ );
275
286
  });
276
287
 
277
288
  it('should make same width and height as last', () => {
@@ -286,13 +297,14 @@ describe('ResizeElementsCommand', () => {
286
297
  command.execute(newContext(newModel));
287
298
 
288
299
  // resize is keeping the center, so the Y moves by diff / 2
289
- assertAllBoundsInChangeBounds(new Map([
290
- ['node1', { x: 90, y: 90, height: 30, width: 30 }],
291
- ['node2', { x: 95, y: 195, height: 30, width: 30 }],
292
- ['node3', { x: 100, y: 300, height: 30, width: 30 }]
293
- ]));
300
+ assertAllBoundsInChangeBounds(
301
+ new Map([
302
+ ['node1', { x: 90, y: 90, height: 30, width: 30 }],
303
+ ['node2', { x: 95, y: 195, height: 30, width: 30 }],
304
+ ['node3', { x: 100, y: 300, height: 30, width: 30 }]
305
+ ])
306
+ );
294
307
  });
295
-
296
308
  });
297
309
 
298
310
  function initModel(elementAndBounds: ElementAndBounds[]): SModelRoot {
@@ -350,11 +362,17 @@ function getElementAndBoundsById(id: string, elementAndBounds: ElementAndBounds[
350
362
  }
351
363
 
352
364
  function dispatchedElementMoves(): ElementMove[] {
353
- return actionDispatcher.dispatchedActions.filter(isMoveAction).map(a => a.moves).reduce((acc, val) => acc.concat(val), []);
365
+ return actionDispatcher.dispatchedActions
366
+ .filter(isMoveAction)
367
+ .map(a => a.moves)
368
+ .reduce((acc, val) => acc.concat(val), []);
354
369
  }
355
370
 
356
371
  function dispatchedChangeBounds(): ElementAndBounds[] {
357
- return actionDispatcher.dispatchedActions.filter(isChangeBounds).map(a => a.newBounds).reduce((acc, val) => acc.concat(val), []);
372
+ return actionDispatcher.dispatchedActions
373
+ .filter(isChangeBounds)
374
+ .map(a => a.newBounds)
375
+ .reduce((acc, val) => acc.concat(val), []);
358
376
  }
359
377
 
360
378
  function isMoveAction(action: Action): action is MoveAction {