@eclipse-glsp/client 0.9.0-next.fd1a8bb6 → 0.10.0-next.827bd0d.158

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 (497) hide show
  1. package/LICENSE +642 -277
  2. package/README.md +4 -2
  3. package/css/command-palette.css +9 -5
  4. package/css/decoration.css +3 -2
  5. package/css/glsp-sprotty.css +16 -7
  6. package/css/tool-palette.css +44 -27
  7. package/lib/base/action-dispatcher.d.ts +19 -3
  8. package/lib/base/action-dispatcher.d.ts.map +1 -1
  9. package/lib/base/action-dispatcher.js +11 -8
  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 +4 -2
  35. package/lib/base/di.config.d.ts.map +1 -1
  36. package/lib/base/di.config.js +10 -8
  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 +19 -5
  51. package/lib/base/model/update-model-command.d.ts.map +1 -1
  52. package/lib/base/model/update-model-command.js +8 -12
  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 +2 -0
  67. package/lib/features/change-bounds/model.d.ts.map +1 -1
  68. package/lib/features/change-bounds/model.js +6 -0
  69. package/lib/features/change-bounds/model.js.map +1 -1
  70. package/lib/features/change-bounds/movement-restrictor.d.ts +17 -1
  71. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  72. package/lib/features/change-bounds/movement-restrictor.js +0 -15
  73. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  74. package/lib/features/change-bounds/snap.d.ts +17 -1
  75. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  76. package/lib/features/change-bounds/snap.js +0 -15
  77. package/lib/features/change-bounds/snap.js.map +1 -1
  78. package/lib/features/command-palette/server-command-palette-provider.d.ts +18 -2
  79. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  80. package/lib/features/command-palette/server-command-palette-provider.js +6 -6
  81. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  82. package/lib/features/context-menu/delete-element-context-menu.d.ts +1 -1
  83. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  84. package/lib/features/context-menu/delete-element-context-menu.js +3 -3
  85. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  86. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  87. package/lib/features/context-menu/di.config.js.map +1 -1
  88. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +16 -0
  89. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  90. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +36 -8
  91. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  92. package/lib/features/context-menu/server-context-menu-provider.d.ts +18 -2
  93. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  94. package/lib/features/context-menu/server-context-menu-provider.js +6 -6
  95. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  96. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +17 -1
  97. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  98. package/lib/features/copy-paste/copy-paste-context-menu.js +6 -6
  99. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  100. package/lib/features/copy-paste/copy-paste-handler.d.ts +17 -2
  101. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  102. package/lib/features/copy-paste/copy-paste-handler.js +7 -7
  103. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  104. package/lib/features/copy-paste/di.config.d.ts +1 -1
  105. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  106. package/lib/features/copy-paste/di.config.js +5 -5
  107. package/lib/features/copy-paste/di.config.js.map +1 -1
  108. package/lib/features/decoration/decoration-placer.d.ts +17 -1
  109. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  110. package/lib/features/decoration/decoration-placer.js +0 -15
  111. package/lib/features/decoration/decoration-placer.js.map +1 -1
  112. package/lib/features/edit-label/edit-label-validator.d.ts +16 -1
  113. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  114. package/lib/features/edit-label/edit-label-validator.js +5 -5
  115. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  116. package/lib/features/hints/di.config.d.ts +0 -15
  117. package/lib/features/hints/di.config.d.ts.map +1 -1
  118. package/lib/features/hints/di.config.js +3 -3
  119. package/lib/features/hints/di.config.js.map +1 -1
  120. package/lib/features/hints/model.d.ts +2 -1
  121. package/lib/features/hints/model.d.ts.map +1 -1
  122. package/lib/features/hints/model.js.map +1 -1
  123. package/lib/features/hints/type-hints.d.ts +17 -45
  124. package/lib/features/hints/type-hints.d.ts.map +1 -1
  125. package/lib/features/hints/type-hints.js +3 -20
  126. package/lib/features/hints/type-hints.js.map +1 -1
  127. package/lib/features/hover/di.config.d.ts +1 -1
  128. package/lib/features/hover/di.config.d.ts.map +1 -1
  129. package/lib/features/hover/di.config.js +4 -2
  130. package/lib/features/hover/di.config.js.map +1 -1
  131. package/lib/features/hover/hover.d.ts +28 -2
  132. package/lib/features/hover/hover.d.ts.map +1 -1
  133. package/lib/features/hover/hover.js +24 -3
  134. package/lib/features/hover/hover.js.map +1 -1
  135. package/lib/features/layout/di.config.d.ts +1 -1
  136. package/lib/features/layout/di.config.d.ts.map +1 -1
  137. package/lib/features/layout/di.config.js +6 -2
  138. package/lib/features/layout/di.config.js.map +1 -1
  139. package/lib/features/layout/freeform-layout.d.ts +16 -0
  140. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  141. package/lib/features/layout/freeform-layout.js +107 -0
  142. package/lib/features/layout/freeform-layout.js.map +1 -0
  143. package/lib/features/layout/layout-commands.d.ts +17 -1
  144. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  145. package/lib/features/layout/layout-commands.js +3 -3
  146. package/lib/features/layout/layout-commands.js.map +1 -1
  147. package/lib/features/layout/layout-commands.spec.d.ts +0 -15
  148. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
  149. package/lib/features/layout/layout-commands.spec.js +4 -4
  150. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  151. package/lib/features/layout/vbox-layout.d.ts +25 -0
  152. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  153. package/lib/features/layout/vbox-layout.js +188 -0
  154. package/lib/features/layout/vbox-layout.js.map +1 -0
  155. package/lib/features/model-source-watcher/di.config.d.ts +0 -15
  156. package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
  157. package/lib/features/model-source-watcher/di.config.js +4 -4
  158. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  159. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
  160. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  161. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +7 -8
  162. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  163. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  164. package/lib/features/mouse-tool/mouse-tool.js +2 -1
  165. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  166. package/lib/features/navigation/di.config.d.ts +0 -15
  167. package/lib/features/navigation/di.config.d.ts.map +1 -1
  168. package/lib/features/navigation/di.config.js +7 -6
  169. package/lib/features/navigation/di.config.js.map +1 -1
  170. package/lib/features/navigation/navigation-action-handler.d.ts +19 -38
  171. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  172. package/lib/features/navigation/navigation-action-handler.js +12 -67
  173. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  174. package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
  175. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  176. package/lib/features/navigation/navigation-target-resolver.js +6 -83
  177. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  178. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +0 -15
  179. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  180. package/lib/features/navigation/navigation-target-resolver.spec.js +16 -16
  181. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  182. package/lib/features/save/di.config.js +2 -2
  183. package/lib/features/save/di.config.js.map +1 -1
  184. package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +3 -9
  185. package/lib/features/save/save-keylistener.d.ts.map +1 -0
  186. package/lib/features/save/{save.js → save-keylistener.js} +4 -15
  187. package/lib/features/save/save-keylistener.js.map +1 -0
  188. package/lib/features/select/selection-service.d.ts +17 -1
  189. package/lib/features/select/selection-service.d.ts.map +1 -1
  190. package/lib/features/select/selection-service.js +5 -5
  191. package/lib/features/select/selection-service.js.map +1 -1
  192. package/lib/features/select/selection-service.spec.js +0 -16
  193. package/lib/features/select/selection-service.spec.js.map +1 -1
  194. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +18 -1
  195. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  196. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +16 -18
  197. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  198. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +18 -2
  199. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  200. package/lib/features/tool-feedback/creation-tool-feedback.js +30 -19
  201. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  202. package/lib/features/tool-feedback/css-feedback.d.ts +20 -2
  203. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  204. package/lib/features/tool-feedback/css-feedback.js +5 -3
  205. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  206. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +17 -1
  207. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  208. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +0 -15
  209. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  210. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +17 -1
  211. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  212. package/lib/features/tool-feedback/feedback-action-dispatcher.js +0 -15
  213. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  214. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +17 -1
  215. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  216. package/lib/features/tool-feedback/marquee-tool-feedback.js +0 -15
  217. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  218. package/lib/features/tool-feedback/view.d.ts +17 -1
  219. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  220. package/lib/features/tool-feedback/view.js +0 -15
  221. package/lib/features/tool-feedback/view.js.map +1 -1
  222. package/lib/features/tool-palette/di.config.d.ts +1 -1
  223. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  224. package/lib/features/tool-palette/di.config.js +1 -1
  225. package/lib/features/tool-palette/di.config.js.map +1 -1
  226. package/lib/features/tool-palette/palette-item.d.ts +1 -2
  227. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  228. package/lib/features/tool-palette/palette-item.js +3 -4
  229. package/lib/features/tool-palette/palette-item.js.map +1 -1
  230. package/lib/features/tool-palette/tool-palette.d.ts +19 -3
  231. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  232. package/lib/features/tool-palette/tool-palette.js +38 -31
  233. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  234. package/lib/features/tools/base-glsp-tool.d.ts +18 -2
  235. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  236. package/lib/features/tools/base-glsp-tool.js +3 -18
  237. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  238. package/lib/features/tools/change-bounds-tool.d.ts +20 -3
  239. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  240. package/lib/features/tools/change-bounds-tool.js +28 -13
  241. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  242. package/lib/features/tools/delete-tool.d.ts +17 -1
  243. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  244. package/lib/features/tools/delete-tool.js +3 -3
  245. package/lib/features/tools/delete-tool.js.map +1 -1
  246. package/lib/features/tools/di.config.d.ts +0 -15
  247. package/lib/features/tools/di.config.d.ts.map +1 -1
  248. package/lib/features/tools/di.config.js +4 -4
  249. package/lib/features/tools/di.config.js.map +1 -1
  250. package/lib/features/tools/edge-creation-tool.d.ts +17 -2
  251. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  252. package/lib/features/tools/edge-creation-tool.js +4 -4
  253. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  254. package/lib/features/tools/edge-edit-tool.d.ts +17 -1
  255. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  256. package/lib/features/tools/edge-edit-tool.js +5 -4
  257. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  258. package/lib/features/tools/marquee-behavior.d.ts +42 -0
  259. package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
  260. package/lib/features/tools/marquee-behavior.js +128 -0
  261. package/lib/features/tools/marquee-behavior.js.map +1 -0
  262. package/{src/features/undo-redo/model.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -12
  263. package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
  264. package/lib/features/tools/marquee-behavior.spec.js +165 -0
  265. package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
  266. package/lib/features/tools/marquee-mouse-tool.d.ts +24 -13
  267. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  268. package/lib/features/tools/marquee-mouse-tool.js +33 -121
  269. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  270. package/lib/features/tools/marquee-tool.d.ts +17 -1
  271. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  272. package/lib/features/tools/marquee-tool.js +0 -15
  273. package/lib/features/tools/marquee-tool.js.map +1 -1
  274. package/lib/features/tools/node-creation-tool.d.ts +17 -2
  275. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  276. package/lib/features/tools/node-creation-tool.js +4 -4
  277. package/lib/features/tools/node-creation-tool.js.map +1 -1
  278. package/lib/features/validation/issue-marker.d.ts +2 -2
  279. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  280. package/lib/features/validation/issue-marker.js +5 -5
  281. package/lib/features/validation/issue-marker.js.map +1 -1
  282. package/lib/features/validation/marker-navigator.d.ts +17 -1
  283. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  284. package/lib/features/validation/marker-navigator.js +2 -1
  285. package/lib/features/validation/marker-navigator.js.map +1 -1
  286. package/lib/features/validation/marker-navigator.spec.d.ts +0 -15
  287. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  288. package/lib/features/validation/marker-navigator.spec.js +9 -9
  289. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  290. package/lib/features/validation/validate.d.ts +18 -29
  291. package/lib/features/validation/validate.d.ts.map +1 -1
  292. package/lib/features/validation/validate.js +11 -49
  293. package/lib/features/validation/validate.js.map +1 -1
  294. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +18 -2
  295. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  296. package/lib/features/viewport/glsp-scroll-mouse-listener.js +0 -15
  297. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  298. package/lib/index.d.ts +6 -12
  299. package/lib/index.d.ts.map +1 -1
  300. package/lib/index.js +6 -12
  301. package/lib/index.js.map +1 -1
  302. package/lib/model-source/glsp-diagram-server.d.ts +2 -4
  303. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  304. package/lib/model-source/glsp-diagram-server.js +21 -6
  305. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  306. package/lib/protocol-reexport.d.ts +45 -0
  307. package/lib/protocol-reexport.d.ts.map +1 -0
  308. package/lib/protocol-reexport.js +75 -0
  309. package/lib/protocol-reexport.js.map +1 -0
  310. package/lib/utils/argument-utils.d.ts.map +1 -1
  311. package/lib/utils/argument-utils.js +6 -6
  312. package/lib/utils/argument-utils.js.map +1 -1
  313. package/lib/utils/layout-utils.d.ts +2 -1
  314. package/lib/utils/layout-utils.d.ts.map +1 -1
  315. package/lib/utils/marker.d.ts +0 -38
  316. package/lib/utils/marker.d.ts.map +1 -1
  317. package/lib/utils/marker.js +6 -11
  318. package/lib/utils/marker.js.map +1 -1
  319. package/lib/utils/smodel-util.d.ts +1 -1
  320. package/lib/utils/smodel-util.d.ts.map +1 -1
  321. package/lib/utils/smodel-util.js +0 -15
  322. package/lib/utils/smodel-util.js.map +1 -1
  323. package/lib/utils/viewpoint-util.d.ts +2 -1
  324. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  325. package/lib/utils/viewpoint-util.js +0 -15
  326. package/lib/utils/viewpoint-util.js.map +1 -1
  327. package/lib/views/base-view-module.d.ts +0 -15
  328. package/lib/views/base-view-module.d.ts.map +1 -1
  329. package/lib/views/base-view-module.js +20 -20
  330. package/lib/views/base-view-module.js.map +1 -1
  331. package/lib/views/compartments.d.ts +6 -0
  332. package/lib/views/compartments.d.ts.map +1 -0
  333. package/lib/{base/actions/edit-mode-action.js → views/compartments.js} +18 -26
  334. package/lib/views/compartments.js.map +1 -0
  335. package/lib/views/glsp-edge-view.d.ts +17 -1
  336. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  337. package/lib/views/glsp-edge-view.js +0 -15
  338. package/lib/views/glsp-edge-view.js.map +1 -1
  339. package/lib/views/index.d.ts +1 -1
  340. package/lib/views/index.d.ts.map +1 -1
  341. package/lib/views/index.js +1 -1
  342. package/lib/views/index.js.map +1 -1
  343. package/lib/views/issue-marker-view.d.ts +1 -0
  344. package/lib/views/issue-marker-view.d.ts.map +1 -1
  345. package/lib/views/issue-marker-view.js +17 -8
  346. package/lib/views/issue-marker-view.js.map +1 -1
  347. package/lib/views/rounded-corner.d.ts +2 -1
  348. package/lib/views/rounded-corner.d.ts.map +1 -1
  349. package/package.json +8 -5
  350. package/src/base/action-dispatcher.ts +11 -10
  351. package/src/base/actions/focus-change-action.ts +1 -1
  352. package/src/base/{args.ts → argumentable.ts} +1 -4
  353. package/src/base/auto-complete/auto-complete-actions.ts +1 -1
  354. package/src/base/auto-complete/auto-complete-widget.ts +3 -4
  355. package/src/base/auto-complete/validation-decorator.ts +7 -6
  356. package/src/base/command-stack.ts +1 -2
  357. package/src/base/container-modules.ts +112 -0
  358. package/src/base/di.config.ts +6 -7
  359. package/src/base/drag-aware-mouse-listener.ts +2 -1
  360. package/src/base/{editor-context.ts → editor-context-service.ts} +2 -27
  361. package/src/base/focus-tracker.ts +2 -2
  362. package/src/base/model/update-model-command.ts +5 -12
  363. package/src/base/model-initialization-constraint.ts +3 -2
  364. package/src/base/tool-manager/glsp-tool-manager.ts +3 -5
  365. package/src/base/types.ts +4 -2
  366. package/src/features/change-bounds/model.ts +9 -1
  367. package/src/features/change-bounds/movement-restrictor.ts +2 -2
  368. package/src/features/change-bounds/snap.ts +3 -2
  369. package/src/features/command-palette/server-command-palette-provider.ts +3 -4
  370. package/src/features/context-menu/delete-element-context-menu.ts +3 -4
  371. package/src/features/context-menu/di.config.ts +0 -1
  372. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +40 -11
  373. package/src/features/context-menu/server-context-menu-provider.ts +3 -4
  374. package/src/features/copy-paste/copy-paste-context-menu.ts +2 -13
  375. package/src/features/copy-paste/copy-paste-handler.ts +3 -4
  376. package/src/features/copy-paste/di.config.ts +2 -3
  377. package/src/features/decoration/decoration-placer.ts +2 -1
  378. package/src/features/edit-label/edit-label-validator.ts +1 -1
  379. package/src/features/hints/di.config.ts +2 -3
  380. package/src/features/hints/model.ts +2 -1
  381. package/src/features/hints/type-hints.ts +1 -64
  382. package/src/features/hover/di.config.ts +4 -3
  383. package/src/features/hover/hover.ts +27 -7
  384. package/src/features/layout/di.config.ts +8 -4
  385. package/src/features/layout/freeform-layout.ts +133 -0
  386. package/src/features/layout/layout-commands.spec.ts +3 -8
  387. package/src/features/layout/layout-commands.ts +1 -3
  388. package/src/features/layout/vbox-layout.ts +256 -0
  389. package/src/features/model-source-watcher/di.config.ts +3 -4
  390. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +8 -4
  391. package/src/features/mouse-tool/mouse-tool.ts +2 -1
  392. package/src/features/navigation/di.config.ts +4 -10
  393. package/src/features/navigation/navigation-action-handler.ts +16 -62
  394. package/src/features/navigation/navigation-target-resolver.spec.ts +2 -4
  395. package/src/features/navigation/navigation-target-resolver.ts +8 -88
  396. package/src/features/save/di.config.ts +1 -1
  397. package/src/features/save/{save.ts → save-keylistener.ts} +2 -10
  398. package/src/features/select/selection-service.spec.ts +2 -2
  399. package/src/features/select/selection-service.ts +1 -5
  400. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +19 -6
  401. package/src/features/tool-feedback/creation-tool-feedback.ts +34 -8
  402. package/src/features/tool-feedback/css-feedback.ts +5 -3
  403. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +1 -3
  404. package/src/features/tool-feedback/feedback-action-dispatcher.ts +2 -1
  405. package/src/features/tool-feedback/marquee-tool-feedback.ts +1 -3
  406. package/src/features/tool-feedback/view.tsx +2 -2
  407. package/src/features/tool-palette/di.config.ts +1 -3
  408. package/src/features/tool-palette/palette-item.ts +1 -3
  409. package/src/features/tool-palette/tool-palette.ts +32 -26
  410. package/src/features/tools/base-glsp-tool.ts +4 -4
  411. package/src/features/tools/change-bounds-tool.ts +36 -18
  412. package/src/features/tools/delete-tool.ts +1 -3
  413. package/src/features/tools/di.config.ts +2 -3
  414. package/src/features/tools/edge-creation-tool.ts +1 -3
  415. package/src/features/tools/edge-edit-tool.ts +3 -4
  416. package/src/features/tools/marquee-behavior.spec.ts +175 -0
  417. package/src/features/tools/marquee-behavior.ts +158 -0
  418. package/src/features/tools/marquee-mouse-tool.ts +35 -146
  419. package/src/features/tools/marquee-tool.ts +2 -2
  420. package/src/features/tools/node-creation-tool.ts +1 -3
  421. package/src/features/validation/issue-marker.ts +2 -3
  422. package/src/features/validation/marker-navigator.spec.ts +3 -5
  423. package/src/features/validation/marker-navigator.ts +1 -4
  424. package/src/features/validation/validate.ts +4 -33
  425. package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -3
  426. package/src/index.ts +6 -12
  427. package/src/model-source/glsp-diagram-server.ts +12 -14
  428. package/src/protocol-reexport.ts +64 -0
  429. package/src/utils/argument-utils.ts +1 -2
  430. package/src/utils/layout-utils.ts +2 -2
  431. package/src/utils/marker.ts +2 -26
  432. package/src/utils/smodel-util.ts +1 -1
  433. package/src/utils/viewpoint-util.ts +1 -2
  434. package/src/views/base-view-module.ts +1 -2
  435. package/src/{base/actions/edit-mode-action.ts → views/compartments.tsx} +18 -13
  436. package/src/views/glsp-edge-view.tsx +2 -2
  437. package/src/views/index.ts +1 -1
  438. package/src/views/issue-marker-view.tsx +18 -8
  439. package/src/views/rounded-corner.ts +2 -2
  440. package/lib/base/actions/context-actions.d.ts +0 -36
  441. package/lib/base/actions/context-actions.d.ts.map +0 -1
  442. package/lib/base/actions/context-actions.js +0 -44
  443. package/lib/base/actions/context-actions.js.map +0 -1
  444. package/lib/base/actions/edit-mode-action.d.ts +0 -13
  445. package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
  446. package/lib/base/actions/edit-mode-action.js.map +0 -1
  447. package/lib/base/actions/edit-validation-actions.d.ts +0 -78
  448. package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
  449. package/lib/base/actions/edit-validation-actions.js +0 -80
  450. package/lib/base/actions/edit-validation-actions.js.map +0 -1
  451. package/lib/base/args.d.ts.map +0 -1
  452. package/lib/base/args.js.map +0 -1
  453. package/lib/base/editor-context.d.ts.map +0 -1
  454. package/lib/base/editor-context.js.map +0 -1
  455. package/lib/base/operations/operation.d.ts +0 -135
  456. package/lib/base/operations/operation.d.ts.map +0 -1
  457. package/lib/base/operations/operation.js +0 -191
  458. package/lib/base/operations/operation.js.map +0 -1
  459. package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
  460. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
  461. package/lib/features/copy-paste/copy-paste-actions.js +0 -58
  462. package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
  463. package/lib/features/hints/request-type-hints-action.d.ts +0 -32
  464. package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
  465. package/lib/features/hints/request-type-hints-action.js +0 -28
  466. package/lib/features/hints/request-type-hints-action.js.map +0 -1
  467. package/lib/features/model-source-watcher/model-source-changed-action.d.ts +0 -24
  468. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
  469. package/lib/features/model-source-watcher/model-source-changed-action.js +0 -16
  470. package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
  471. package/lib/features/save/save.d.ts.map +0 -1
  472. package/lib/features/save/save.js.map +0 -1
  473. package/lib/features/undo-redo/model.d.ts +0 -27
  474. package/lib/features/undo-redo/model.d.ts.map +0 -1
  475. package/lib/features/undo-redo/model.js +0 -18
  476. package/lib/features/undo-redo/model.js.map +0 -1
  477. package/lib/model-source/glsp-server-status.d.ts +0 -30
  478. package/lib/model-source/glsp-server-status.d.ts.map +0 -1
  479. package/lib/model-source/glsp-server-status.js +0 -44
  480. package/lib/model-source/glsp-server-status.js.map +0 -1
  481. package/lib/utils/array-utils.d.ts +0 -28
  482. package/lib/utils/array-utils.d.ts.map +0 -1
  483. package/lib/utils/array-utils.js +0 -56
  484. package/lib/utils/array-utils.js.map +0 -1
  485. package/lib/views/default-types.d.ts +0 -37
  486. package/lib/views/default-types.d.ts.map +0 -1
  487. package/lib/views/default-types.js +0 -47
  488. package/lib/views/default-types.js.map +0 -1
  489. package/src/base/actions/context-actions.ts +0 -43
  490. package/src/base/actions/edit-validation-actions.ts +0 -115
  491. package/src/base/operations/operation.ts +0 -205
  492. package/src/features/copy-paste/copy-paste-actions.ts +0 -63
  493. package/src/features/hints/request-type-hints-action.ts +0 -41
  494. package/src/features/model-source-watcher/model-source-changed-action.ts +0 -26
  495. package/src/model-source/glsp-server-status.ts +0 -38
  496. package/src/utils/array-utils.ts +0 -57
  497. package/src/views/default-types.ts +0 -48
@@ -13,10 +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, Point } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
18
  import { VNode } from 'snabbdom';
18
19
  import {
19
- Action,
20
20
  CommandExecutionContext,
21
21
  CommandReturn,
22
22
  ElementMove,
@@ -26,15 +26,15 @@ import {
26
26
  isViewport,
27
27
  MouseListener,
28
28
  MoveAction,
29
- Point,
29
+ SChildElement,
30
30
  SModelElement,
31
31
  SModelRoot,
32
32
  TYPES
33
33
  } from 'sprotty';
34
-
35
34
  import { isNotUndefined } from '../../utils/smodel-util';
36
35
  import { addResizeHandles, isResizable, removeResizeHandles, SResizeHandle } from '../change-bounds/model';
37
36
  import { createMovementRestrictionFeedback, removeMovementRestrictionFeedback } from '../change-bounds/movement-restrictor';
37
+ import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
38
38
  import { ChangeBoundsTool } from '../tools/change-bounds-tool';
39
39
  import { FeedbackCommand } from './model';
40
40
 
@@ -120,15 +120,17 @@ export class FeedbackMoveMouseListener extends MouseListener {
120
120
  const moveAction = this.getElementMoves(target, event, false);
121
121
  if (moveAction) {
122
122
  result.push(moveAction);
123
+ result.push(cursorFeedbackAction(CursorCSS.MOVE));
123
124
  }
124
125
  }
125
126
  return result;
126
127
  }
127
128
 
128
129
  protected collectStartPositions(root: SModelRoot): void {
129
- root.index
130
- .all()
131
- .filter(element => isSelectable(element) && element.selected)
130
+ const selectedElements = root.index.all().filter(element => isSelectable(element) && element.selected);
131
+ const elementsSet = new Set(selectedElements);
132
+ selectedElements
133
+ .filter(element => !this.isChildOfSelected(elementsSet, element))
132
134
  .forEach(element => {
133
135
  if (isMoveable(element)) {
134
136
  this.elementId2startPos.set(element.id, element.position);
@@ -136,6 +138,16 @@ export class FeedbackMoveMouseListener extends MouseListener {
136
138
  });
137
139
  }
138
140
 
141
+ protected isChildOfSelected(selectedElements: Set<SModelElement>, element: SModelElement): boolean {
142
+ while (element instanceof SChildElement) {
143
+ element = element.parent;
144
+ if (selectedElements.has(element)) {
145
+ return true;
146
+ }
147
+ }
148
+ return false;
149
+ }
150
+
139
151
  protected getElementMoves(target: SModelElement, event: MouseEvent, isFinished: boolean): MoveAction | undefined {
140
152
  if (!this.startDragPosition) {
141
153
  return undefined;
@@ -224,6 +236,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
224
236
  if (this.tool.movementRestrictor) {
225
237
  this.tool.deregisterFeedback([removeMovementRestrictionFeedback(target, this.tool.movementRestrictor)], this);
226
238
  }
239
+ result.push(cursorFeedbackAction(CursorCSS.DEFAULT));
227
240
  }
228
241
  this.hasDragged = false;
229
242
  this.startDragPosition = undefined;
@@ -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, Point } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
18
  import {
18
- Action,
19
19
  add,
20
20
  AnchorComputerRegistry,
21
21
  center,
@@ -28,7 +28,6 @@ import {
28
28
  isConnectable,
29
29
  MouseListener,
30
30
  MoveAction,
31
- Point,
32
31
  PolylineEdgeRouter,
33
32
  SChildElement,
34
33
  SConnectableElement,
@@ -39,8 +38,7 @@ import {
39
38
  SRoutableElement,
40
39
  TYPES
41
40
  } from 'sprotty';
42
-
43
- import { isRoutable } from '../../utils/smodel-util';
41
+ import { isRoutable, BoundsAwareModelElement } from '../../utils/smodel-util';
44
42
  import { getAbsolutePosition, toAbsoluteBounds, toAbsolutePosition } from '../../utils/viewpoint-util';
45
43
  import { FeedbackCommand } from './model';
46
44
 
@@ -108,12 +106,12 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
108
106
 
109
107
  const edge = edgeEnd.feedbackEdge;
110
108
  const position = getAbsolutePosition(edgeEnd, event);
111
- const endAtMousePosition = findChildrenAtPosition(target.root, position).find(
109
+ const endAtMousePosition = findChildrenAtPosition(target.root, position).reverse().find(
112
110
  element => isConnectable(element) && element.canConnect(edge, 'target')
113
111
  );
114
112
 
115
113
  if (endAtMousePosition instanceof SConnectableElement && edge.source && isBoundsAware(edge.source)) {
116
- const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.source.bounds));
114
+ const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(toAbsoluteBounds(edge.source)));
117
115
  if (euclideanDistance(anchor, edgeEnd.position) > 1) {
118
116
  return [new MoveAction([{ elementId: edgeEnd.id, toPosition: anchor }], false)];
119
117
  }
@@ -124,9 +122,10 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
124
122
  return [];
125
123
  }
126
124
 
127
- protected computeAbsoluteAnchor(element: SConnectableElement, referencePoint: Point, offset?: number): Point {
125
+ protected computeAbsoluteAnchor(element: SConnectableElement, absoluteReferencePoint: Point, offset?: number): Point {
126
+ const referencePointInParent = absoluteToParent(element, absoluteReferencePoint);
128
127
  const anchorComputer = this.anchorRegistry.get(PolylineEdgeRouter.KIND, element.anchorKind);
129
- let anchor = anchorComputer.getAnchor(element, referencePoint, offset);
128
+ let anchor = anchorComputer.getAnchor(element, referencePointInParent, offset);
130
129
  // The anchor is computed in the local coordinate system of the element.
131
130
  // If the element is a nested child element we have to add the absolute position of its parent to the anchor.
132
131
  if (element.parent !== element.root) {
@@ -140,6 +139,33 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
140
139
  }
141
140
  }
142
141
 
142
+ /**
143
+ * Convert a point, specified in absolute coordinates, to a point relative
144
+ * to the parent of the specified child element.
145
+ * @param element the child element
146
+ * @param absolutePoint a point in absolute coordinates
147
+ * @returns the equivalent point, relative to the element's parent coordinates
148
+ */
149
+ function absoluteToParent(element: BoundsAwareModelElement & SChildElement, absolutePoint: Point): Point{
150
+ if (isBoundsAware(element.parent)){
151
+ return absoluteToLocal(element.parent, absolutePoint);
152
+ }
153
+ // If the parent is not bounds-aware, assume it's at 0; 0 and proceed
154
+ return absoluteToLocal(element, absolutePoint);
155
+ }
156
+
157
+ /**
158
+ * Convert a point, specified in absolute coordinates, to a point relative
159
+ * to the specified element.
160
+ * @param element the element
161
+ * @param absolutePoint a point in absolute coordinates
162
+ * @returns the equivalent point, relative to the element's coordinates
163
+ */
164
+ function absoluteToLocal(element: BoundsAwareModelElement, absolutePoint: Point): Point {
165
+ const absoluteElementBounds = toAbsoluteBounds(element);
166
+ return {x: absolutePoint.x - absoluteElementBounds.x, y: absolutePoint.y - absoluteElementBounds.y};
167
+ }
168
+
143
169
  export function feedbackEdgeId(root: SModelRoot): string {
144
170
  return root.id + '_feedback_edge';
145
171
  }
@@ -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, isStringArray } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
- import { Action, CommandExecutionContext, SModelElement, SModelRoot, TYPES } from 'sprotty';
18
- import { isStringArray } from '../../utils/array-utils';
18
+ import { CommandExecutionContext, SModelElement, SModelRoot, TYPES } from 'sprotty';
19
19
  import { addCssClasses, removeCssClasses } from '../../utils/smodel-util';
20
20
  import { FeedbackCommand } from './model';
21
21
 
@@ -78,7 +78,9 @@ export enum CursorCSS {
78
78
  EDGE_RECONNECT = 'edge-reconnect-select-target-mode',
79
79
  OPERATION_NOT_ALLOWED = 'edge-modification-not-allowed-mode',
80
80
  ELEMENT_DELETION = 'element-deletion-mode',
81
- RESIZE = 'resize-mode',
81
+ RESIZE_NESW = 'resize-nesw-mode',
82
+ RESIZE_NWSE = 'resize-nwse-mode',
83
+ MOVE = 'move-mode',
82
84
  MARQUEE = 'marquee-mode'
83
85
  }
84
86
 
@@ -13,10 +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, Point } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
18
  import { VNode } from 'snabbdom';
18
19
  import {
19
- Action,
20
20
  add,
21
21
  AnchorComputerRegistry,
22
22
  center,
@@ -33,7 +33,6 @@ import {
33
33
  isViewport,
34
34
  MouseListener,
35
35
  MoveAction,
36
- Point,
37
36
  PolylineEdgeRouter,
38
37
  SConnectableElement,
39
38
  SModelElement,
@@ -43,7 +42,6 @@ import {
43
42
  SwitchEditModeCommand,
44
43
  TYPES
45
44
  } from 'sprotty';
46
-
47
45
  import { isNotUndefined, isRoutable, isRoutingHandle } from '../../utils/smodel-util';
48
46
  import { getAbsolutePosition, toAbsoluteBounds } from '../../utils/viewpoint-util';
49
47
  import { addReconnectHandles, removeReconnectHandles } from '../reconnect/model';
@@ -13,8 +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 } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
- import { Action, IActionDispatcher, ILogger, TYPES } from 'sprotty';
18
+ import { IActionDispatcher, ILogger, TYPES } from 'sprotty';
18
19
 
19
20
  export interface IFeedbackEmitter {}
20
21
 
@@ -13,20 +13,18 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { Action, Point } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
18
  import {
18
- Action,
19
19
  AnchorComputerRegistry,
20
20
  CommandExecutionContext,
21
21
  CommandReturn,
22
22
  MouseListener,
23
- Point,
24
23
  SChildElement,
25
24
  SModelElement,
26
25
  SModelRoot,
27
26
  TYPES
28
27
  } from 'sprotty';
29
-
30
28
  import { FeedbackCommand } from './model';
31
29
 
32
30
  export class DrawMarqueeAction implements Action {
@@ -13,10 +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 { Point } from '@eclipse-glsp/protocol';
16
17
  import { injectable } from 'inversify';
17
18
  import { VNode } from 'snabbdom';
18
- import { IView, ORIGIN_POINT, Point, RenderingContext, setAttr, SModelElement, svg } from 'sprotty';
19
-
19
+ import { IView, ORIGIN_POINT, RenderingContext, setAttr, SModelElement, svg } from 'sprotty';
20
20
  import { isResizable, ResizeHandleLocation, SResizeHandle } from '../change-bounds/model';
21
21
 
22
22
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -13,11 +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 '../../../css/tool-palette.css';
17
-
18
16
  import { ContainerModule } from 'inversify';
19
17
  import { configureActionHandler, EnableDefaultToolsAction, TYPES } from 'sprotty';
20
-
18
+ import '../../../css/tool-palette.css';
21
19
  import { EnableToolPaletteAction, ToolPalette } from './tool-palette';
22
20
 
23
21
  const toolPaletteModule = new ContainerModule((bind, _unbind, isBound, rebind) => {
@@ -13,9 +13,7 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { isLabeledAction, LabeledAction } from 'sprotty';
17
-
18
- import { isTriggerElementTypeCreationAction, TriggerElementCreationAction } from '../../base/operations/operation';
16
+ import { isLabeledAction, isTriggerElementTypeCreationAction, LabeledAction, TriggerElementCreationAction } from '@eclipse-glsp/protocol';
19
17
 
20
18
  export interface PaletteItem extends LabeledAction {
21
19
  readonly id: string;
@@ -13,6 +13,7 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { isSetContextActionsAction, RequestContextActions, RequestMarkersAction, SetContextActions } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable, postConstruct } from 'inversify';
17
18
  import {
18
19
  AbstractUIExtension,
@@ -26,20 +27,18 @@ import {
26
27
  SModelRoot,
27
28
  TYPES
28
29
  } from 'sprotty';
30
+ import { codiconCSSClasses } from 'sprotty/lib/utils/codicon';
29
31
  import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
30
-
31
32
  import { GLSPActionDispatcher } from '../../base/action-dispatcher';
32
- import { isSetContextActionsAction, RequestContextActions, SetContextActions } from '../../base/actions/context-actions';
33
- import { EditModeListener, EditorContextService } from '../../base/editor-context';
33
+ import { EditModeListener, EditorContextService } from '../../base/editor-context-service';
34
34
  import { MouseDeleteTool } from '../tools/delete-tool';
35
35
  import { MarqueeMouseTool } from '../tools/marquee-mouse-tool';
36
- import { RequestMarkersAction } from '../validation/validate';
37
36
  import { PaletteItem } from './palette-item';
38
37
 
39
38
  const CLICKED_CSS_CLASS = 'clicked';
40
- const SEARCH_ICON = 'fa-search';
41
- const PALETTE_ICON = 'fa-palette';
42
- const CHEVRON_DOWN = 'fa-chevron-down';
39
+ const SEARCH_ICON_ID = 'search';
40
+ const PALETTE_ICON_ID = 'symbol-color';
41
+ const CHEVRON_DOWN_ICON_ID = 'chevron-right';
43
42
  const PALETTE_HEIGHT = '500px';
44
43
 
45
44
  @injectable()
@@ -101,7 +100,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
101
100
  this.containerElement.classList.add('collapsible-palette');
102
101
  if (baseDiv) {
103
102
  const insertedDiv = baseDiv.insertBefore(minPaletteDiv, baseDiv.firstChild);
104
- const minimizeIcon = createIcon(['fas', CHEVRON_DOWN]);
103
+ const minimizeIcon = createIcon(CHEVRON_DOWN_ICON_ID);
105
104
  this.updateMinimizePaletteButtonTooltip(minPaletteDiv);
106
105
  minimizeIcon.onclick = _event => {
107
106
  if (this.isPaletteMaximized()) {
@@ -110,10 +109,8 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
110
109
  this.containerElement.style.maxHeight = PALETTE_HEIGHT;
111
110
  }
112
111
  this.updateMinimizePaletteButtonTooltip(minPaletteDiv);
113
- changeCSSClass(minimizeIcon, PALETTE_ICON);
114
- changeCSSClass(minimizeIcon, 'fa');
115
- changeCSSClass(minimizeIcon, 'fas');
116
- changeCSSClass(minimizeIcon, CHEVRON_DOWN);
112
+ changeCodiconClass(minimizeIcon, PALETTE_ICON_ID);
113
+ changeCodiconClass(minimizeIcon, CHEVRON_DOWN_ICON_ID);
117
114
  };
118
115
  insertedDiv.appendChild(minimizeIcon);
119
116
  }
@@ -192,7 +189,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
192
189
  }
193
190
 
194
191
  protected createDefaultToolButton(): HTMLElement {
195
- const button = createIcon(['fas', 'fa-mouse-pointer', 'fa-xs', 'clicked']);
192
+ const button = createIcon('inspect');
196
193
  button.id = 'btn_default_tools';
197
194
  button.title = 'Enable selection tool';
198
195
  button.onclick = this.onClickStaticToolButton(this.defaultToolsButton);
@@ -200,21 +197,21 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
200
197
  }
201
198
 
202
199
  protected createMouseDeleteToolButton(): HTMLElement {
203
- const deleteToolButton = createIcon(['fas', 'fa-eraser', 'fa-xs']);
200
+ const deleteToolButton = createIcon('chrome-close');
204
201
  deleteToolButton.title = 'Enable deletion tool';
205
202
  deleteToolButton.onclick = this.onClickStaticToolButton(deleteToolButton, MouseDeleteTool.ID);
206
203
  return deleteToolButton;
207
204
  }
208
205
 
209
206
  protected createMarqueeToolButton(): HTMLElement {
210
- const marqueeToolButton = createIcon(['far', 'fa-object-group', 'fa-xs']);
207
+ const marqueeToolButton = createIcon('screen-full');
211
208
  marqueeToolButton.title = 'Enable marquee tool';
212
209
  marqueeToolButton.onclick = this.onClickStaticToolButton(marqueeToolButton, MarqueeMouseTool.ID);
213
210
  return marqueeToolButton;
214
211
  }
215
212
 
216
213
  protected createValidateButton(): HTMLElement {
217
- const validateActionButton = createIcon(['fas', 'fa-check-square', 'fa-xs']);
214
+ const validateActionButton = createIcon('pass');
218
215
  validateActionButton.title = 'Validate model';
219
216
  validateActionButton.onclick = _event => {
220
217
  const modelIds: string[] = [this.modelRootId];
@@ -224,15 +221,15 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
224
221
  }
225
222
 
226
223
  protected createSearchButton(): HTMLElement {
227
- const searchIcon = createIcon(['fas', SEARCH_ICON, 'state-icon', 'fa-xs']);
224
+ const searchIcon = createIcon(SEARCH_ICON_ID);
228
225
  searchIcon.onclick = _ev => {
229
226
  const searchField = document.getElementById(this.containerElement.id + '_search_field');
230
227
  if (searchField) {
231
- if (searchField.style.display === 'inline') {
232
- searchField.style.display = 'none';
233
- } else {
234
- searchField.style.display = 'inline';
228
+ if (searchField.style.display === 'none') {
229
+ searchField.style.display = '';
235
230
  searchField.focus();
231
+ } else {
232
+ searchField.style.display = 'none';
236
233
  }
237
234
  }
238
235
  };
@@ -256,7 +253,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
256
253
  protected createHeaderTitle(): HTMLElement {
257
254
  const header = document.createElement('div');
258
255
  header.classList.add('header-icon');
259
- header.appendChild(createIcon(['fa', 'fa-palette']));
256
+ header.appendChild(createIcon(PALETTE_ICON_ID));
260
257
  header.insertAdjacentText('beforeend', 'Palette');
261
258
  return header;
262
259
  }
@@ -265,7 +262,10 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
265
262
  const button = document.createElement('div');
266
263
  button.tabIndex = index;
267
264
  button.classList.add('tool-button');
268
- button.innerHTML = item.label;
265
+ if (item.icon) {
266
+ button.appendChild(createIcon(item.icon));
267
+ }
268
+ button.insertAdjacentText('beforeend', item.label);
269
269
  button.onclick = this.onClickCreateToolButton(button, item);
270
270
  button.onkeydown = ev => this.clearToolOnEscape(ev);
271
271
  return button;
@@ -382,9 +382,9 @@ export function compare(a: PaletteItem, b: PaletteItem): number {
382
382
  return a.label.localeCompare(b.label);
383
383
  }
384
384
 
385
- export function createIcon(cssClasses: string[]): HTMLElement {
385
+ export function createIcon(codiconId: string): HTMLElement {
386
386
  const icon = document.createElement('i');
387
- icon.classList.add(...cssClasses);
387
+ icon.classList.add(...codiconCSSClasses(codiconId));
388
388
  return icon;
389
389
  }
390
390
 
@@ -395,7 +395,7 @@ export function createToolGroup(item: PaletteItem): HTMLElement {
395
395
  const header = document.createElement('div');
396
396
  header.classList.add('group-header');
397
397
  if (item.icon) {
398
- header.appendChild(createIcon(['fas', item.icon]));
398
+ header.appendChild(createIcon(item.icon));
399
399
  }
400
400
  header.insertAdjacentText('beforeend', item.label);
401
401
  header.ondblclick = _ev => {
@@ -412,3 +412,9 @@ export function createToolGroup(item: PaletteItem): HTMLElement {
412
412
  export function changeCSSClass(element: Element, css: string): void {
413
413
  element.classList.contains(css) ? element.classList.remove(css) : element.classList.add(css);
414
414
  }
415
+
416
+ export function changeCodiconClass(element: Element, codiconId: string): void {
417
+ element.classList.contains(codiconCSSClasses(codiconId)[1])
418
+ ? element.classList.remove(codiconCSSClasses(codiconId)[1])
419
+ : element.classList.add(codiconCSSClasses(codiconId)[1]);
420
+ }
@@ -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,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 } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
- import { Action, IActionDispatcher, KeyTool, TYPES } from 'sprotty';
18
-
19
- import { EditorContextService } from '../../base/editor-context';
18
+ import { IActionDispatcher, KeyTool, TYPES } from 'sprotty';
19
+ import { EditorContextService } from '../../base/editor-context-service';
20
20
  import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
21
21
  import { GLSP_TYPES } from '../../base/types';
22
22
  import { IMouseTool } from '../mouse-tool/mouse-tool';
@@ -13,10 +13,18 @@
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, optional } from 'inversify';
17
16
  import {
18
17
  Action,
19
18
  Bounds,
19
+ ChangeBoundsOperation,
20
+ ChangeRoutingPointsOperation,
21
+ CompoundOperation,
22
+ ElementAndRoutingPoints,
23
+ Operation,
24
+ Point
25
+ } from '@eclipse-glsp/protocol';
26
+ import { inject, injectable, optional } from 'inversify';
27
+ import {
20
28
  BoundsAware,
21
29
  Dimension,
22
30
  EdgeRouterRegistry,
@@ -26,7 +34,7 @@ import {
26
34
  isSelected,
27
35
  isViewport,
28
36
  MouseListener,
29
- Point,
37
+ SChildElement,
30
38
  SConnectableElement,
31
39
  SetBoundsAction,
32
40
  SModelElement,
@@ -34,15 +42,7 @@ import {
34
42
  SParentElement,
35
43
  TYPES
36
44
  } from 'sprotty';
37
-
38
45
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
39
- import {
40
- ChangeBoundsOperation,
41
- ChangeRoutingPointsOperation,
42
- CompoundOperation,
43
- ElementAndRoutingPoints,
44
- Operation
45
- } from '../../base/operations/operation';
46
46
  import { GLSP_TYPES } from '../../base/types';
47
47
  import { isValidMove, isValidSize, WriteablePoint } from '../../utils/layout-utils';
48
48
  import {
@@ -76,8 +76,8 @@ import { BaseGLSPTool } from './base-glsp-tool';
76
76
  * | Move | MoveAction | ChangeBoundsOperationAction
77
77
  * | Resize | SetBoundsAction | ChangeBoundsOperationAction
78
78
  *
79
- * To provide a visual client updates during move we install the `FeedbackMoveMouseListener` and to provide visual client updates during resize
80
- * and send the server updates we install the `ChangeBoundsListener`.
79
+ * To provide a visual client updates during move we install the `FeedbackMoveMouseListener` and to provide visual client updates during
80
+ * resize and send the server updates we install the `ChangeBoundsListener`.
81
81
  */
82
82
  @injectable()
83
83
  export class ChangeBoundsTool extends BaseGLSPTool {
@@ -163,7 +163,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
163
163
  // rely on the FeedbackMoveMouseListener to update the element bounds of selected elements
164
164
  // consider resize handles ourselves
165
165
  const actions: Action[] = [
166
- cursorFeedbackAction(CursorCSS.RESIZE),
166
+ cursorFeedbackAction(this.activeResizeHandle.isNwSeResize() ? CursorCSS.RESIZE_NWSE : CursorCSS.RESIZE_NESW),
167
167
  applyCssClasses(this.activeResizeHandle, ChangeBoundsListener.CSS_CLASS_ACTIVE)
168
168
  ];
169
169
  const positionUpdate = this.updatePosition(target, event);
@@ -208,15 +208,33 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
208
208
  protected handleMoveElementsOnServer(target: SModelElement): Action[] {
209
209
  const result: Operation[] = [];
210
210
  const newBounds: ElementAndBounds[] = [];
211
+ const selectedElements: (SModelElement & BoundsAware)[] = [];
211
212
  forEachElement(target, isNonRoutableSelectedMovableBoundsAware, element => {
212
- this.createElementAndBounds(element).forEach(bounds => newBounds.push(bounds));
213
+ selectedElements.push(element);
213
214
  });
215
+
216
+ const selectionSet: Set<SModelElement & BoundsAware> = new Set(selectedElements);
217
+ selectedElements
218
+ .filter(element => !this.isChildOfSelected(selectionSet, element))
219
+ .map(element => this.createElementAndBounds(element))
220
+ .forEach(bounds => newBounds.push(...bounds));
221
+
214
222
  if (newBounds.length > 0) {
215
223
  result.push(new ChangeBoundsOperation(newBounds));
216
224
  }
217
225
  return result;
218
226
  }
219
227
 
228
+ protected isChildOfSelected(selectedElements: Set<SModelElement>, element: SModelElement): boolean {
229
+ while (element instanceof SChildElement) {
230
+ element = element.parent;
231
+ if (selectedElements.has(element)) {
232
+ return true;
233
+ }
234
+ }
235
+ return false;
236
+ }
237
+
220
238
  protected handleMoveRoutingPointsOnServer(target: SModelElement): Action[] {
221
239
  const result: Operation[] = [];
222
240
  const newRoutingPoints: ElementAndRoutingPoints[] = [];
@@ -310,14 +328,14 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
310
328
 
311
329
  // snap our delta and only send update if the position actually changes
312
330
  // otherwise accumulate delta until we do snap to an update
313
- const positionUpdate = this.snap(this.positionDelta, target, !event.shiftKey);
331
+ const positionUpdate = this.snap(this.positionDelta, target, !event.altKey);
314
332
  if (positionUpdate.x === 0 && positionUpdate.y === 0) {
315
333
  return undefined;
316
334
  }
317
335
 
318
- // we update our position so we need to reset our delta
319
- this.positionDelta.x = 0;
320
- this.positionDelta.y = 0;
336
+ // we update our position so we update our delta by the snapped position
337
+ this.positionDelta.x -= positionUpdate.x;
338
+ this.positionDelta.y -= positionUpdate.y;
321
339
  return positionUpdate;
322
340
  }
323
341
  return undefined;
@@ -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, DeleteElementOperation } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
18
  import {
18
- Action,
19
19
  EnableDefaultToolsAction,
20
20
  findParentByFeature,
21
21
  isCtrlOrCmd,
@@ -27,8 +27,6 @@ import {
27
27
  SModelElement
28
28
  } from 'sprotty';
29
29
  import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
30
-
31
- import { DeleteElementOperation } from '../../base/operations/operation';
32
30
  import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
33
31
  import { GLSP_TYPES } from '../../base/types';
34
32
  import { IMouseTool } from '../mouse-tool/mouse-tool';
@@ -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,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 { TriggerEdgeCreationAction, TriggerNodeCreationAction } from '@eclipse-glsp/protocol';
16
17
  import { ContainerModule, interfaces } from 'inversify';
17
18
  import { configureActionHandler, configureModelElement } from 'sprotty';
18
-
19
- import { TriggerEdgeCreationAction, TriggerNodeCreationAction } from '../../base/operations/operation';
20
19
  import { GLSP_TYPES } from '../../base/types';
21
20
  import { MARQUEE } from '../tool-feedback/marquee-tool-feedback';
22
21
  import { ChangeBoundsTool } from './change-bounds-tool';
@@ -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, CreateEdgeOperation, isTriggerElementTypeCreationAction, TriggerEdgeCreationAction } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable } from 'inversify';
17
18
  import {
18
- Action,
19
19
  AnchorComputerRegistry,
20
20
  EnableDefaultToolsAction,
21
21
  EnableToolsAction,
@@ -26,9 +26,7 @@ import {
26
26
  SEdge,
27
27
  SModelElement
28
28
  } from 'sprotty';
29
-
30
29
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
31
- import { CreateEdgeOperation, isTriggerElementTypeCreationAction, TriggerEdgeCreationAction } from '../../base/operations/operation';
32
30
  import {
33
31
  DrawFeedbackEdgeAction,
34
32
  FeedbackEdgeEndMovingMouseListener,