@eclipse-glsp/client 0.9.0-next.d0112315 → 0.9.0-next.f12e3d87

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 (469) hide show
  1. package/README.md +2 -1
  2. package/css/command-palette.css +6 -5
  3. package/css/glsp-sprotty.css +17 -8
  4. package/css/tool-palette.css +14 -14
  5. package/lib/base/action-dispatcher.d.ts.map +1 -1
  6. package/lib/base/action-dispatcher.js +39 -60
  7. package/lib/base/action-dispatcher.js.map +1 -1
  8. package/lib/base/actions/context-actions.d.ts +1 -1
  9. package/lib/base/actions/context-actions.d.ts.map +1 -1
  10. package/lib/base/actions/context-actions.js +11 -18
  11. package/lib/base/actions/context-actions.js.map +1 -1
  12. package/lib/base/actions/edit-mode-action.d.ts.map +1 -1
  13. package/lib/base/actions/edit-mode-action.js +12 -17
  14. package/lib/base/actions/edit-mode-action.js.map +1 -1
  15. package/lib/base/actions/edit-validation-actions.d.ts +1 -1
  16. package/lib/base/actions/edit-validation-actions.d.ts.map +1 -1
  17. package/lib/base/actions/edit-validation-actions.js +23 -26
  18. package/lib/base/actions/edit-validation-actions.js.map +1 -1
  19. package/lib/base/actions/focus-change-action.js +4 -5
  20. package/lib/base/actions/focus-change-action.js.map +1 -1
  21. package/lib/base/args.d.ts +1 -1
  22. package/lib/base/args.d.ts.map +1 -1
  23. package/lib/base/args.js.map +1 -1
  24. package/lib/base/auto-complete/auto-complete-widget.d.ts +1 -1
  25. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  26. package/lib/base/auto-complete/auto-complete-widget.js +100 -150
  27. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  28. package/lib/base/auto-complete/validation-decorator.d.ts +1 -1
  29. package/lib/base/auto-complete/validation-decorator.js +38 -60
  30. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  31. package/lib/base/command-stack.d.ts.map +1 -1
  32. package/lib/base/command-stack.js +19 -37
  33. package/lib/base/command-stack.js.map +1 -1
  34. package/lib/base/container-modules.d.ts +40 -0
  35. package/lib/base/container-modules.d.ts.map +1 -0
  36. package/lib/base/container-modules.js +84 -0
  37. package/lib/base/container-modules.js.map +1 -0
  38. package/lib/base/di.config.d.ts +11 -2
  39. package/lib/base/di.config.d.ts.map +1 -1
  40. package/lib/base/di.config.js +37 -37
  41. package/lib/base/di.config.js.map +1 -1
  42. package/lib/base/drag-aware-mouse-listener.d.ts +1 -1
  43. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  44. package/lib/base/drag-aware-mouse-listener.js +24 -48
  45. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  46. package/lib/base/editor-context.d.ts.map +1 -1
  47. package/lib/base/editor-context.js +64 -128
  48. package/lib/base/editor-context.js.map +1 -1
  49. package/lib/base/focus-tracker.d.ts.map +1 -1
  50. package/lib/base/focus-tracker.js +19 -24
  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 +2 -2
  55. package/lib/base/model/update-model-command.d.ts.map +1 -1
  56. package/lib/base/model/update-model-command.js +67 -88
  57. package/lib/base/model/update-model-command.js.map +1 -1
  58. package/lib/base/model-initialization-constraint.js +31 -52
  59. package/lib/base/model-initialization-constraint.js.map +1 -1
  60. package/lib/base/operations/operation.d.ts +5 -5
  61. package/lib/base/operations/operation.d.ts.map +1 -1
  62. package/lib/base/operations/operation.js +75 -115
  63. package/lib/base/operations/operation.js.map +1 -1
  64. package/lib/base/selection-clearing-mouse-listener.js +10 -28
  65. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  66. package/lib/base/source-uri-aware.js +2 -5
  67. package/lib/base/source-uri-aware.js.map +1 -1
  68. package/lib/base/tool-manager/glsp-tool-manager.js +56 -137
  69. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  70. package/lib/base/types.d.ts +2 -1
  71. package/lib/base/types.d.ts.map +1 -1
  72. package/lib/base/types.js +3 -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.map +1 -1
  81. package/lib/features/change-bounds/movement-restrictor.js +29 -28
  82. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  83. package/lib/features/change-bounds/snap.js +13 -24
  84. package/lib/features/change-bounds/snap.js.map +1 -1
  85. package/lib/features/command-palette/command-palette-tool.js +30 -38
  86. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  87. package/lib/features/command-palette/di.config.js +6 -6
  88. package/lib/features/command-palette/di.config.js.map +1 -1
  89. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  90. package/lib/features/command-palette/server-command-palette-provider.js +27 -32
  91. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  92. package/lib/features/context-menu/delete-element-context-menu.js +19 -67
  93. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  94. package/lib/features/context-menu/di.config.d.ts +1 -1
  95. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  96. package/lib/features/context-menu/di.config.js +8 -8
  97. package/lib/features/context-menu/di.config.js.map +1 -1
  98. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  99. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
  100. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  101. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  102. package/lib/features/context-menu/server-context-menu-provider.js +29 -30
  103. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  104. package/lib/features/copy-paste/copy-paste-actions.d.ts +1 -1
  105. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +1 -1
  106. package/lib/features/copy-paste/copy-paste-actions.js +20 -30
  107. package/lib/features/copy-paste/copy-paste-actions.js.map +1 -1
  108. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +5 -1
  109. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  110. package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
  111. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  112. package/lib/features/copy-paste/copy-paste-handler.d.ts +2 -0
  113. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  114. package/lib/features/copy-paste/copy-paste-handler.js +67 -67
  115. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  116. package/lib/features/copy-paste/di.config.js +10 -10
  117. package/lib/features/copy-paste/di.config.js.map +1 -1
  118. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  119. package/lib/features/decoration/decoration-placer.js +13 -32
  120. package/lib/features/decoration/decoration-placer.js.map +1 -1
  121. package/lib/features/decoration/di.config.js +4 -4
  122. package/lib/features/decoration/di.config.js.map +1 -1
  123. package/lib/features/edit-label/di.config.js +7 -7
  124. package/lib/features/edit-label/di.config.js.map +1 -1
  125. package/lib/features/edit-label/edit-label-tool.js +20 -43
  126. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  127. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  128. package/lib/features/edit-label/edit-label-validator.js +37 -59
  129. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  130. package/lib/features/hints/di.config.js +8 -8
  131. package/lib/features/hints/di.config.js.map +1 -1
  132. package/lib/features/hints/model.d.ts +1 -1
  133. package/lib/features/hints/model.d.ts.map +1 -1
  134. package/lib/features/hints/request-type-hints-action.d.ts +1 -1
  135. package/lib/features/hints/request-type-hints-action.d.ts.map +1 -1
  136. package/lib/features/hints/request-type-hints-action.js +12 -14
  137. package/lib/features/hints/request-type-hints-action.js.map +1 -1
  138. package/lib/features/hints/type-hints.d.ts +4 -4
  139. package/lib/features/hints/type-hints.d.ts.map +1 -1
  140. package/lib/features/hints/type-hints.js +91 -133
  141. package/lib/features/hints/type-hints.js.map +1 -1
  142. package/lib/features/hover/di.config.js +7 -7
  143. package/lib/features/hover/di.config.js.map +1 -1
  144. package/lib/features/hover/hover.d.ts.map +1 -1
  145. package/lib/features/hover/hover.js +35 -76
  146. package/lib/features/hover/hover.js.map +1 -1
  147. package/lib/features/layout/di.config.d.ts +5 -1
  148. package/lib/features/layout/di.config.d.ts.map +1 -1
  149. package/lib/features/layout/di.config.js +47 -7
  150. package/lib/features/layout/di.config.js.map +1 -1
  151. package/lib/features/layout/freeform-layout.d.ts +16 -0
  152. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  153. package/lib/features/layout/freeform-layout.js +107 -0
  154. package/lib/features/layout/freeform-layout.js.map +1 -0
  155. package/lib/features/layout/layout-commands.d.ts +2 -2
  156. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  157. package/lib/features/layout/layout-commands.js +187 -263
  158. package/lib/features/layout/layout-commands.js.map +1 -1
  159. package/lib/features/layout/layout-commands.spec.d.ts +1 -1
  160. package/lib/features/layout/layout-commands.spec.js +94 -88
  161. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  162. package/lib/features/layout/vbox-layout.d.ts +25 -0
  163. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  164. package/lib/features/layout/vbox-layout.js +187 -0
  165. package/lib/features/layout/vbox-layout.js.map +1 -0
  166. package/lib/features/model-source-watcher/di.config.js +6 -6
  167. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  168. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  169. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -45
  170. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  171. package/lib/features/model-source-watcher/model-source-changed-action.d.ts +1 -1
  172. package/lib/features/model-source-watcher/model-source-changed-action.js +4 -5
  173. package/lib/features/model-source-watcher/model-source-changed-action.js.map +1 -1
  174. package/lib/features/mouse-tool/di.config.js +5 -5
  175. package/lib/features/mouse-tool/di.config.js.map +1 -1
  176. package/lib/features/mouse-tool/mouse-tool.d.ts +2 -1
  177. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  178. package/lib/features/mouse-tool/mouse-tool.js +69 -215
  179. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  180. package/lib/features/navigation/di.config.js +9 -9
  181. package/lib/features/navigation/di.config.js.map +1 -1
  182. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  183. package/lib/features/navigation/navigation-action-handler.js +136 -217
  184. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  185. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  186. package/lib/features/navigation/navigation-target-resolver.js +57 -122
  187. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  188. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +1 -1
  189. package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
  190. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  191. package/lib/features/rank/model.d.ts +1 -1
  192. package/lib/features/rank/model.js +2 -2
  193. package/lib/features/rank/model.js.map +1 -1
  194. package/lib/features/reconnect/model.d.ts +1 -1
  195. package/lib/features/reconnect/model.d.ts.map +1 -1
  196. package/lib/features/reconnect/model.js +9 -27
  197. package/lib/features/reconnect/model.js.map +1 -1
  198. package/lib/features/save/di.config.d.ts +1 -1
  199. package/lib/features/save/di.config.d.ts.map +1 -1
  200. package/lib/features/save/di.config.js +5 -5
  201. package/lib/features/save/di.config.js.map +1 -1
  202. package/lib/features/save/save.d.ts +1 -1
  203. package/lib/features/save/save.js +11 -31
  204. package/lib/features/save/save.js.map +1 -1
  205. package/lib/features/select/di.config.js +11 -11
  206. package/lib/features/select/di.config.js.map +1 -1
  207. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  208. package/lib/features/select/select-feedback-action.js +45 -71
  209. package/lib/features/select/select-feedback-action.js.map +1 -1
  210. package/lib/features/select/select-mouse-listener.js +7 -23
  211. package/lib/features/select/select-mouse-listener.js.map +1 -1
  212. package/lib/features/select/selection-service.d.ts.map +1 -1
  213. package/lib/features/select/selection-service.js +132 -234
  214. package/lib/features/select/selection-service.js.map +1 -1
  215. package/lib/features/select/selection-service.spec.js +97 -124
  216. package/lib/features/select/selection-service.spec.js.map +1 -1
  217. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +2 -1
  218. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  219. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +104 -127
  220. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  221. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  222. package/lib/features/tool-feedback/creation-tool-feedback.js +69 -103
  223. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  224. package/lib/features/tool-feedback/css-feedback.d.ts +3 -1
  225. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  226. package/lib/features/tool-feedback/css-feedback.js +37 -81
  227. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  228. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  229. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  230. package/lib/features/tool-feedback/di.config.js +27 -27
  231. package/lib/features/tool-feedback/di.config.js.map +1 -1
  232. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +1 -1
  233. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  234. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -193
  235. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  236. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
  237. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  238. package/lib/features/tool-feedback/feedback-action-dispatcher.js +36 -58
  239. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  240. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  241. package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -69
  242. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  243. package/lib/features/tool-feedback/model.d.ts +1 -1
  244. package/lib/features/tool-feedback/model.js +11 -27
  245. package/lib/features/tool-feedback/model.js.map +1 -1
  246. package/lib/features/tool-feedback/view.d.ts +4 -4
  247. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  248. package/lib/features/tool-feedback/view.js +30 -37
  249. package/lib/features/tool-feedback/view.js.map +1 -1
  250. package/lib/features/tool-palette/di.config.js +6 -6
  251. package/lib/features/tool-palette/di.config.js.map +1 -1
  252. package/lib/features/tool-palette/palette-item.d.ts +1 -1
  253. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  254. package/lib/features/tool-palette/palette-item.js +6 -5
  255. package/lib/features/tool-palette/palette-item.js.map +1 -1
  256. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  257. package/lib/features/tool-palette/tool-palette.js +182 -259
  258. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  259. package/lib/features/tools/base-glsp-tool.js +37 -44
  260. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  261. package/lib/features/tools/change-bounds-tool.d.ts +3 -2
  262. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  263. package/lib/features/tools/change-bounds-tool.js +187 -237
  264. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  265. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  266. package/lib/features/tools/delete-tool.js +69 -102
  267. package/lib/features/tools/delete-tool.js.map +1 -1
  268. package/lib/features/tools/di.config.js +18 -18
  269. package/lib/features/tools/di.config.js.map +1 -1
  270. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  271. package/lib/features/tools/edge-creation-tool.js +60 -85
  272. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  273. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  274. package/lib/features/tools/edge-edit-tool.js +110 -181
  275. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  276. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  277. package/lib/features/tools/marquee-mouse-tool.js +128 -149
  278. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  279. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  280. package/lib/features/tools/marquee-tool.js +32 -58
  281. package/lib/features/tools/marquee-tool.js.map +1 -1
  282. package/lib/features/tools/model.js +4 -22
  283. package/lib/features/tools/model.js.map +1 -1
  284. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  285. package/lib/features/tools/node-creation-tool.js +59 -89
  286. package/lib/features/tools/node-creation-tool.js.map +1 -1
  287. package/lib/features/tools/view.d.ts +1 -1
  288. package/lib/features/tools/view.d.ts.map +1 -1
  289. package/lib/features/tools/view.js +12 -31
  290. package/lib/features/tools/view.js.map +1 -1
  291. package/lib/features/undo-redo/model.d.ts +1 -1
  292. package/lib/features/undo-redo/model.js +8 -12
  293. package/lib/features/undo-redo/model.js.map +1 -1
  294. package/lib/features/validation/di.config.js +12 -12
  295. package/lib/features/validation/di.config.js.map +1 -1
  296. package/lib/features/validation/issue-marker.js +13 -51
  297. package/lib/features/validation/issue-marker.js.map +1 -1
  298. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  299. package/lib/features/validation/marker-navigator.js +129 -163
  300. package/lib/features/validation/marker-navigator.js.map +1 -1
  301. package/lib/features/validation/marker-navigator.spec.d.ts +1 -1
  302. package/lib/features/validation/marker-navigator.spec.js +79 -73
  303. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  304. package/lib/features/validation/validate.d.ts +2 -2
  305. package/lib/features/validation/validate.d.ts.map +1 -1
  306. package/lib/features/validation/validate.js +161 -276
  307. package/lib/features/validation/validate.js.map +1 -1
  308. package/lib/features/viewport/di.config.js +10 -10
  309. package/lib/features/viewport/di.config.js.map +1 -1
  310. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  311. package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -32
  312. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  313. package/lib/index.d.ts +5 -4
  314. package/lib/index.d.ts.map +1 -1
  315. package/lib/index.js +25 -23
  316. package/lib/index.js.map +1 -1
  317. package/lib/lib/model.js +11 -27
  318. package/lib/lib/model.js.map +1 -1
  319. package/lib/model-source/glsp-diagram-server.d.ts +1 -1
  320. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  321. package/lib/model-source/glsp-diagram-server.js +43 -118
  322. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  323. package/lib/model-source/glsp-server-status.js +10 -27
  324. package/lib/model-source/glsp-server-status.js.map +1 -1
  325. package/lib/utils/argument-utils.d.ts +3 -3
  326. package/lib/utils/argument-utils.d.ts.map +1 -1
  327. package/lib/utils/argument-utils.js +27 -92
  328. package/lib/utils/argument-utils.js.map +1 -1
  329. package/lib/utils/array-utils.d.ts +1 -1
  330. package/lib/utils/array-utils.d.ts.map +1 -1
  331. package/lib/utils/array-utils.js +10 -15
  332. package/lib/utils/array-utils.js.map +1 -1
  333. package/lib/utils/html-utils.js +2 -2
  334. package/lib/utils/html-utils.js.map +1 -1
  335. package/lib/utils/layout-utils.d.ts +1 -1
  336. package/lib/utils/layout-utils.d.ts.map +1 -1
  337. package/lib/utils/layout-utils.js +5 -5
  338. package/lib/utils/layout-utils.js.map +1 -1
  339. package/lib/utils/marker.js +11 -53
  340. package/lib/utils/marker.js.map +1 -1
  341. package/lib/utils/smodel-util.d.ts +3 -3
  342. package/lib/utils/smodel-util.d.ts.map +1 -1
  343. package/lib/utils/smodel-util.js +17 -51
  344. package/lib/utils/smodel-util.js.map +1 -1
  345. package/lib/utils/viewpoint-util.d.ts +1 -1
  346. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  347. package/lib/utils/viewpoint-util.js +16 -16
  348. package/lib/utils/viewpoint-util.js.map +1 -1
  349. package/lib/views/base-view-module.js +9 -9
  350. package/lib/views/base-view-module.js.map +1 -1
  351. package/lib/views/compartments.d.ts +6 -0
  352. package/lib/views/compartments.d.ts.map +1 -0
  353. package/lib/views/compartments.js +43 -0
  354. package/lib/views/compartments.js.map +1 -0
  355. package/lib/views/default-types.js +1 -1
  356. package/lib/views/default-types.js.map +1 -1
  357. package/lib/views/glsp-edge-view.d.ts +1 -2
  358. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  359. package/lib/views/glsp-edge-view.js +32 -62
  360. package/lib/views/glsp-edge-view.js.map +1 -1
  361. package/lib/views/index.d.ts +1 -0
  362. package/lib/views/index.d.ts.map +1 -1
  363. package/lib/views/index.js +1 -0
  364. package/lib/views/index.js.map +1 -1
  365. package/lib/views/issue-marker-view.d.ts +1 -1
  366. package/lib/views/issue-marker-view.d.ts.map +1 -1
  367. package/lib/views/issue-marker-view.js +19 -42
  368. package/lib/views/issue-marker-view.js.map +1 -1
  369. package/lib/views/rounded-corner-view.d.ts +2 -3
  370. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  371. package/lib/views/rounded-corner-view.js +40 -70
  372. package/lib/views/rounded-corner-view.js.map +1 -1
  373. package/lib/views/rounded-corner.d.ts.map +1 -1
  374. package/lib/views/rounded-corner.js +44 -65
  375. package/lib/views/rounded-corner.js.map +1 -1
  376. package/package.json +6 -16
  377. package/src/base/action-dispatcher.ts +1 -2
  378. package/src/base/actions/context-actions.ts +6 -6
  379. package/src/base/actions/edit-mode-action.ts +3 -4
  380. package/src/base/actions/edit-validation-actions.ts +26 -14
  381. package/src/base/actions/focus-change-action.ts +1 -1
  382. package/src/base/args.ts +4 -2
  383. package/src/base/auto-complete/auto-complete-widget.ts +34 -21
  384. package/src/base/auto-complete/validation-decorator.ts +5 -5
  385. package/src/base/command-stack.ts +1 -3
  386. package/src/base/container-modules.ts +113 -0
  387. package/src/base/di.config.ts +31 -16
  388. package/src/base/drag-aware-mouse-listener.ts +1 -3
  389. package/src/base/editor-context.ts +2 -4
  390. package/src/base/focus-tracker.ts +0 -2
  391. package/src/base/model/update-model-command.ts +6 -8
  392. package/src/base/operations/operation.ts +57 -31
  393. package/src/base/types.ts +3 -2
  394. package/src/features/change-bounds/model.ts +16 -5
  395. package/src/features/change-bounds/movement-restrictor.ts +15 -7
  396. package/src/features/command-palette/server-command-palette-provider.ts +8 -5
  397. package/src/features/context-menu/di.config.ts +11 -9
  398. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +4 -3
  399. package/src/features/context-menu/server-context-menu-provider.ts +7 -3
  400. package/src/features/copy-paste/copy-paste-actions.ts +11 -8
  401. package/src/features/copy-paste/copy-paste-context-menu.ts +57 -17
  402. package/src/features/copy-paste/copy-paste-handler.ts +15 -6
  403. package/src/features/decoration/decoration-placer.ts +2 -13
  404. package/src/features/edit-label/edit-label-validator.ts +11 -12
  405. package/src/features/hints/model.ts +2 -2
  406. package/src/features/hints/request-type-hints-action.ts +10 -5
  407. package/src/features/hints/type-hints.ts +26 -30
  408. package/src/features/hover/hover.ts +1 -2
  409. package/src/features/layout/di.config.ts +30 -5
  410. package/src/features/layout/freeform-layout.ts +132 -0
  411. package/src/features/layout/layout-commands.spec.ts +79 -56
  412. package/src/features/layout/layout-commands.ts +42 -31
  413. package/src/features/layout/vbox-layout.ts +241 -0
  414. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +3 -3
  415. package/src/features/model-source-watcher/model-source-changed-action.ts +2 -2
  416. package/src/features/mouse-tool/mouse-tool.ts +31 -22
  417. package/src/features/navigation/navigation-action-handler.ts +32 -22
  418. package/src/features/navigation/navigation-target-resolver.spec.ts +1 -3
  419. package/src/features/navigation/navigation-target-resolver.ts +14 -12
  420. package/src/features/rank/model.ts +2 -2
  421. package/src/features/reconnect/model.ts +2 -3
  422. package/src/features/save/di.config.ts +1 -2
  423. package/src/features/save/save.ts +2 -2
  424. package/src/features/select/select-feedback-action.ts +4 -6
  425. package/src/features/select/selection-service.spec.ts +9 -4
  426. package/src/features/select/selection-service.ts +13 -5
  427. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +26 -17
  428. package/src/features/tool-feedback/creation-tool-feedback.ts +16 -7
  429. package/src/features/tool-feedback/css-feedback.ts +7 -4
  430. package/src/features/tool-feedback/di.config.ts +2 -5
  431. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +18 -15
  432. package/src/features/tool-feedback/feedback-action-dispatcher.ts +6 -8
  433. package/src/features/tool-feedback/marquee-tool-feedback.ts +3 -2
  434. package/src/features/tool-feedback/model.ts +1 -2
  435. package/src/features/tool-feedback/view.tsx +16 -10
  436. package/src/features/tool-palette/di.config.ts +1 -1
  437. package/src/features/tool-palette/palette-item.ts +3 -3
  438. package/src/features/tool-palette/tool-palette.ts +12 -14
  439. package/src/features/tools/change-bounds-tool.ts +54 -25
  440. package/src/features/tools/delete-tool.ts +8 -3
  441. package/src/features/tools/edge-creation-tool.ts +5 -8
  442. package/src/features/tools/edge-edit-tool.ts +9 -18
  443. package/src/features/tools/marquee-mouse-tool.ts +57 -37
  444. package/src/features/tools/marquee-tool.ts +0 -1
  445. package/src/features/tools/node-creation-tool.ts +4 -9
  446. package/src/features/tools/view.tsx +17 -12
  447. package/src/features/undo-redo/model.ts +3 -3
  448. package/src/features/validation/marker-navigator.spec.ts +15 -9
  449. package/src/features/validation/marker-navigator.ts +23 -8
  450. package/src/features/validation/validate.ts +9 -13
  451. package/src/features/viewport/glsp-scroll-mouse-listener.ts +1 -10
  452. package/src/index.ts +26 -8
  453. package/src/model-source/glsp-diagram-server.ts +2 -14
  454. package/src/utils/argument-utils.ts +13 -9
  455. package/src/utils/array-utils.ts +4 -2
  456. package/src/utils/layout-utils.ts +11 -5
  457. package/src/utils/smodel-util.ts +14 -10
  458. package/src/utils/viewpoint-util.ts +3 -2
  459. package/src/views/compartments.tsx +37 -0
  460. package/src/views/glsp-edge-view.tsx +20 -13
  461. package/src/views/index.ts +1 -0
  462. package/src/views/issue-marker-view.tsx +11 -12
  463. package/src/views/rounded-corner-view.tsx +38 -25
  464. package/src/views/rounded-corner.ts +3 -4
  465. package/lib/base/actions/protocol-actions.d.ts +0 -41
  466. package/lib/base/actions/protocol-actions.d.ts.map +0 -1
  467. package/lib/base/actions/protocol-actions.js +0 -151
  468. package/lib/base/actions/protocol-actions.js.map +0 -1
  469. package/src/base/actions/protocol-actions.ts +0 -82
@@ -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
@@ -27,6 +27,7 @@ import {
27
27
  isViewport,
28
28
  MouseListener,
29
29
  Point,
30
+ SChildElement,
30
31
  SConnectableElement,
31
32
  SetBoundsAction,
32
33
  SModelElement,
@@ -34,7 +35,6 @@ import {
34
35
  SParentElement,
35
36
  TYPES
36
37
  } from 'sprotty';
37
-
38
38
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
39
39
  import {
40
40
  ChangeBoundsOperation,
@@ -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 {
@@ -118,7 +118,7 @@ export class ChangeBoundsTool extends BaseGLSPTool {
118
118
  this.selectionService.deregister(this.changeBoundsListener);
119
119
  this.mouseTool.deregister(this.feedbackMoveMouseListener);
120
120
  this.deregisterFeedback([], this.feedbackMoveMouseListener);
121
- this.deregisterFeedback([new HideChangeBoundsToolResizeFeedbackAction], this.changeBoundsListener);
121
+ this.deregisterFeedback([new HideChangeBoundsToolResizeFeedbackAction()], this.changeBoundsListener);
122
122
  }
123
123
  }
124
124
 
@@ -162,7 +162,10 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
162
162
  if (this.isMouseDrag && this.activeResizeHandle) {
163
163
  // rely on the FeedbackMoveMouseListener to update the element bounds of selected elements
164
164
  // consider resize handles ourselves
165
- const actions: Action[] = [cursorFeedbackAction(CursorCSS.RESIZE), applyCssClasses(this.activeResizeHandle, ChangeBoundsListener.CSS_CLASS_ACTIVE)];
165
+ const actions: Action[] = [
166
+ cursorFeedbackAction(this.activeResizeHandle.isNwSeResize() ? CursorCSS.RESIZE_NWSE : CursorCSS.RESIZE_NESW),
167
+ applyCssClasses(this.activeResizeHandle, ChangeBoundsListener.CSS_CLASS_ACTIVE)
168
+ ];
166
169
  const positionUpdate = this.updatePosition(target, event);
167
170
  if (positionUpdate) {
168
171
  const resizeActions = this.handleResizeOnClient(positionUpdate);
@@ -205,15 +208,32 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
205
208
  protected handleMoveElementsOnServer(target: SModelElement): Action[] {
206
209
  const result: Operation[] = [];
207
210
  const newBounds: ElementAndBounds[] = [];
211
+ const selectedElements: (SModelElement & BoundsAware)[] = [];
208
212
  forEachElement(target, isNonRoutableSelectedMovableBoundsAware, element => {
209
- this.createElementAndBounds(element).forEach(bounds => newBounds.push(bounds));
213
+ selectedElements.push(element);
210
214
  });
215
+
216
+ const selectionSet: Set<SModelElement & BoundsAware> = new Set(selectedElements);
217
+ selectedElements.filter(element => !this.isChildOfSelected(selectionSet, element))
218
+ .map(element => this.createElementAndBounds(element))
219
+ .forEach(bounds => newBounds.push(...bounds));
220
+
211
221
  if (newBounds.length > 0) {
212
222
  result.push(new ChangeBoundsOperation(newBounds));
213
223
  }
214
224
  return result;
215
225
  }
216
226
 
227
+ protected isChildOfSelected(selectedElements: Set<SModelElement>, element: SModelElement): boolean {
228
+ while (element instanceof SChildElement) {
229
+ element = element.parent;
230
+ if (selectedElements.has(element)) {
231
+ return true;
232
+ }
233
+ }
234
+ return false;
235
+ }
236
+
217
237
  protected handleMoveRoutingPointsOnServer(target: SModelElement): Action[] {
218
238
  const result: Operation[] = [];
219
239
  const newRoutingPoints: ElementAndRoutingPoints[] = [];
@@ -281,7 +301,12 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
281
301
  this.lastDragPosition = { x: event.pageX, y: event.pageY };
282
302
  if (this.activeResizeHandle) {
283
303
  const resizeElement = findParentByFeature(this.activeResizeHandle, isResizable);
284
- this.initialBounds = { x: resizeElement!.bounds.x, y: resizeElement!.bounds.y, width: resizeElement!.bounds.width, height: resizeElement!.bounds.height };
304
+ this.initialBounds = {
305
+ x: resizeElement!.bounds.x,
306
+ y: resizeElement!.bounds.y,
307
+ width: resizeElement!.bounds.width,
308
+ height: resizeElement!.bounds.height
309
+ };
285
310
  }
286
311
  }
287
312
 
@@ -302,14 +327,14 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
302
327
 
303
328
  // snap our delta and only send update if the position actually changes
304
329
  // otherwise accumulate delta until we do snap to an update
305
- const positionUpdate = this.snap(this.positionDelta, target, !event.shiftKey);
330
+ const positionUpdate = this.snap(this.positionDelta, target, !event.altKey);
306
331
  if (positionUpdate.x === 0 && positionUpdate.y === 0) {
307
332
  return undefined;
308
333
  }
309
334
 
310
- // we update our position so we need to reset our delta
311
- this.positionDelta.x = 0;
312
- this.positionDelta.y = 0;
335
+ // we update our position so we update our delta by the snapped position
336
+ this.positionDelta.x -= positionUpdate.x;
337
+ this.positionDelta.y -= positionUpdate.y;
313
338
  return positionUpdate;
314
339
  }
315
340
  return undefined;
@@ -318,7 +343,6 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
318
343
  protected reset(): void {
319
344
  if (this.activeResizeElement && isResizable(this.activeResizeElement)) {
320
345
  this.tool.dispatchFeedback([new HideChangeBoundsToolResizeFeedbackAction()], this);
321
-
322
346
  }
323
347
  this.tool.dispatchActions([cursorFeedbackAction(CursorCSS.DEFAULT)]);
324
348
  this.resetPosition();
@@ -352,35 +376,43 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
352
376
  }
353
377
 
354
378
  protected handleTopLeftResize(resizeElement: SParentElement & Resizable, positionUpdate: Point): Action[] {
355
- return this.createSetBoundsAction(resizeElement,
379
+ return this.createSetBoundsAction(
380
+ resizeElement,
356
381
  resizeElement.bounds.x + positionUpdate.x,
357
382
  resizeElement.bounds.y + positionUpdate.y,
358
383
  resizeElement.bounds.width - positionUpdate.x,
359
- resizeElement.bounds.height - positionUpdate.y);
384
+ resizeElement.bounds.height - positionUpdate.y
385
+ );
360
386
  }
361
387
 
362
388
  protected handleTopRightResize(resizeElement: SParentElement & Resizable, positionUpdate: Point): Action[] {
363
- return this.createSetBoundsAction(resizeElement,
389
+ return this.createSetBoundsAction(
390
+ resizeElement,
364
391
  resizeElement.bounds.x,
365
392
  resizeElement.bounds.y + positionUpdate.y,
366
393
  resizeElement.bounds.width + positionUpdate.x,
367
- resizeElement.bounds.height - positionUpdate.y);
394
+ resizeElement.bounds.height - positionUpdate.y
395
+ );
368
396
  }
369
397
 
370
398
  protected handleBottomLeftResize(resizeElement: SParentElement & Resizable, positionUpdate: Point): Action[] {
371
- return this.createSetBoundsAction(resizeElement,
399
+ return this.createSetBoundsAction(
400
+ resizeElement,
372
401
  resizeElement.bounds.x + positionUpdate.x,
373
402
  resizeElement.bounds.y,
374
403
  resizeElement.bounds.width - positionUpdate.x,
375
- resizeElement.bounds.height + positionUpdate.y);
404
+ resizeElement.bounds.height + positionUpdate.y
405
+ );
376
406
  }
377
407
 
378
408
  protected handleBottomRightResize(resizeElement: SParentElement & Resizable, positionUpdate: Point): Action[] {
379
- return this.createSetBoundsAction(resizeElement,
409
+ return this.createSetBoundsAction(
410
+ resizeElement,
380
411
  resizeElement.bounds.x,
381
412
  resizeElement.bounds.y,
382
413
  resizeElement.bounds.width + positionUpdate.x,
383
- resizeElement.bounds.height + positionUpdate.y);
414
+ resizeElement.bounds.height + positionUpdate.y
415
+ );
384
416
  }
385
417
 
386
418
  protected createChangeBoundsAction(element: SModelElement & BoundsAware): Action[] {
@@ -414,7 +446,6 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
414
446
  result.push(removeMovementRestrictionFeedback(element, this.tool.movementRestrictor));
415
447
  }
416
448
  result.push(new SetBoundsAction([{ elementId: element.id, newPosition, newSize }]));
417
-
418
449
  } else if (this.isValidSize(element, newSize)) {
419
450
  if (this.tool.movementRestrictor) {
420
451
  result.push(createMovementRestrictionFeedback(element, this.tool.movementRestrictor));
@@ -426,9 +457,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
426
457
  }
427
458
 
428
459
  protected snap(position: Point, element: SModelElement, isSnap: boolean): Point {
429
- return isSnap && this.tool.snapper
430
- ? this.tool.snapper.snap(position, element)
431
- : { x: position.x, y: position.y };
460
+ return isSnap && this.tool.snapper ? this.tool.snapper.snap(position, element) : { x: position.x, y: position.y };
432
461
  }
433
462
 
434
463
  protected isValidBoundChange(element: SModelElement & BoundsAware, newPosition: Point, newSize: Dimension): boolean {
@@ -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
@@ -64,8 +64,13 @@ export class DelKeyDeleteTool implements GLSPTool {
64
64
  export class DeleteKeyListener extends KeyListener {
65
65
  keyDown(element: SModelElement, event: KeyboardEvent): Action[] {
66
66
  if (matchesKeystroke(event, 'Delete')) {
67
- const deleteElementIds = Array.from(element.root.index.all().filter(e => isDeletable(e) && isSelectable(e) && e.selected)
68
- .filter(e => e.id !== e.root.id).map(e => e.id));
67
+ const deleteElementIds = Array.from(
68
+ element.root.index
69
+ .all()
70
+ .filter(e => isDeletable(e) && isSelectable(e) && e.selected)
71
+ .filter(e => e.id !== e.root.id)
72
+ .map(e => e.id)
73
+ );
69
74
  if (deleteElementIds.length > 0) {
70
75
  return [new DeleteElementOperation(deleteElementIds)];
71
76
  }
@@ -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
@@ -28,11 +28,7 @@ import {
28
28
  } from 'sprotty';
29
29
 
30
30
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
31
- import {
32
- CreateEdgeOperation,
33
- isTriggerElementTypeCreationAction,
34
- TriggerEdgeCreationAction
35
- } from '../../base/operations/operation';
31
+ import { CreateEdgeOperation, isTriggerElementTypeCreationAction, TriggerEdgeCreationAction } from '../../base/operations/operation';
36
32
  import {
37
33
  DrawFeedbackEdgeAction,
38
34
  FeedbackEdgeEndMovingMouseListener,
@@ -151,8 +147,9 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
151
147
  this.allowedTarget = this.isAllowedTarget(newCurrentTarget);
152
148
  }
153
149
  if (this.allowedTarget) {
154
- const action = !this.isSourceSelected() ? cursorFeedbackAction(CursorCSS.EDGE_CREATION_SOURCE) :
155
- cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET);
150
+ const action = !this.isSourceSelected()
151
+ ? cursorFeedbackAction(CursorCSS.EDGE_CREATION_SOURCE)
152
+ : cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET);
156
153
  return [action];
157
154
  }
158
155
  }
@@ -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
@@ -28,18 +28,11 @@ import {
28
28
  SRoutableElement,
29
29
  SRoutingHandle
30
30
  } from 'sprotty';
31
-
32
31
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
33
32
  import { ChangeRoutingPointsOperation, ReconnectEdgeOperation } from '../../base/operations/operation';
34
33
  import { GLSP_TYPES } from '../../base/types';
35
34
  import { isRoutable, isRoutingHandle } from '../../utils/smodel-util';
36
- import {
37
- isReconnectable,
38
- isReconnectHandle,
39
- isSourceRoutingHandle,
40
- isTargetRoutingHandle,
41
- SReconnectHandle
42
- } from '../reconnect/model';
35
+ import { isReconnectable, isReconnectHandle, isSourceRoutingHandle, isTargetRoutingHandle, SReconnectHandle } from '../reconnect/model';
43
36
  import { SelectionListener, SelectionService } from '../select/selection-service';
44
37
  import { DrawFeedbackEdgeAction, feedbackEdgeId, RemoveFeedbackEdgeAction } from '../tool-feedback/creation-tool-feedback';
45
38
  import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
@@ -239,7 +232,8 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
239
232
  }
240
233
  this.reset();
241
234
  } else if (this.edge && this.routingHandle) {
242
- // we need to re-retrieve the edge as it might have changed due to a server udpate since we do not reset the state between reroute actions
235
+ // we need to re-retrieve the edge as it might have changed due to a server update since we do not reset the state between
236
+ // reroute actions
243
237
  const latestEdge = target.index.getById(this.edge.id);
244
238
  if (latestEdge && isRoutable(latestEdge)) {
245
239
  result.push(new ChangeRoutingPointsOperation([{ elementId: latestEdge.id, newRoutingPoints: latestEdge.routingPoints }]));
@@ -255,9 +249,10 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
255
249
  if (!this.newConnectable || currentTarget !== this.newConnectable) {
256
250
  this.setNewConnectable(currentTarget);
257
251
  if (currentTarget) {
258
- if ((this.reconnectMode === 'NEW_SOURCE' && currentTarget.canConnect(this.edge, 'source')) ||
259
- (this.reconnectMode === 'NEW_TARGET' && currentTarget.canConnect(this.edge, 'target'))) {
260
-
252
+ if (
253
+ (this.reconnectMode === 'NEW_SOURCE' && currentTarget.canConnect(this.edge, 'source')) ||
254
+ (this.reconnectMode === 'NEW_TARGET' && currentTarget.canConnect(this.edge, 'target'))
255
+ ) {
261
256
  this.tool.dispatchFeedback([cursorFeedbackAction(CursorCSS.EDGE_RECONNECT)]);
262
257
  return [];
263
258
  }
@@ -314,11 +309,7 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
314
309
  if (this.edge) {
315
310
  result.push(new SwitchRoutingModeAction([], [this.edge.id]));
316
311
  }
317
- result.push(...[
318
- new HideEdgeReconnectHandlesFeedbackAction(),
319
- cursorFeedbackAction(),
320
- new RemoveFeedbackEdgeAction()
321
- ]);
312
+ result.push(...[new HideEdgeReconnectHandlesFeedbackAction(), cursorFeedbackAction(), new RemoveFeedbackEdgeAction()]);
322
313
  this.tool.deregisterFeedback(result);
323
314
  this.tool.deregisterFeedbackListeners();
324
315
  }
@@ -65,7 +65,6 @@ export class MarqueeMouseTool extends BaseGLSPTool {
65
65
 
66
66
  @injectable()
67
67
  export class MarqueeMouseListener extends DragAwareMouseListener {
68
-
69
68
  protected startPoint: Point;
70
69
 
71
70
  protected currentPoint: Point;
@@ -84,11 +83,14 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
84
83
  mouseDown(target: SModelElement, event: MouseEvent): Action[] {
85
84
  this.isActive = true;
86
85
  this.startPoint = { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y };
87
- if(event.ctrlKey){
88
- this.previouslySelected = Array.from(target.root.index.all()
89
- .map(e => e as SModelElement & BoundsAware)
90
- .filter(e => isSelected(e))
91
- .map(e => e.id));
86
+ if (event.ctrlKey) {
87
+ this.previouslySelected = Array.from(
88
+ target.root.index
89
+ .all()
90
+ .map(e => e as SModelElement & BoundsAware)
91
+ .filter(e => isSelected(e))
92
+ .map(e => e.id)
93
+ );
92
94
  }
93
95
  return [];
94
96
  }
@@ -96,18 +98,21 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
96
98
  mouseMove(target: SModelElement, event: MouseEvent): Action[] {
97
99
  this.currentPoint = { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y };
98
100
  if (this.isActive) {
99
- const nodeIdsSelected = Array.from(target.root.index.all()
100
- .map(e => e as SModelElement & BoundsAware)
101
- .filter(e => isSelectable(e))
102
- .filter(e => e instanceof SNode)
103
- .filter(e => this.isNodeMarked(e)).map(e => e.id));
101
+ const nodeIdsSelected = Array.from(
102
+ target.root.index
103
+ .all()
104
+ .map(e => e as SModelElement & BoundsAware)
105
+ .filter(e => isSelectable(e))
106
+ .filter(e => e instanceof SNode)
107
+ .filter(e => this.isNodeMarked(e))
108
+ .map(e => e.id)
109
+ );
104
110
  const edgeIdsSelected = this.getMarkedEdges(target.root);
105
111
  const selected = nodeIdsSelected.concat(edgeIdsSelected);
106
112
  return [
107
113
  new SelectAction([], Array.from(target.root.index.all().map(e => e.id))),
108
114
  new SelectAction(selected.concat(this.previouslySelected), []),
109
- new DrawMarqueeAction(this.startPoint,
110
- { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y })
115
+ new DrawMarqueeAction(this.startPoint, { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y })
111
116
  ];
112
117
  }
113
118
  return [];
@@ -123,10 +128,17 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
123
128
 
124
129
  getMarkedEdges(root: SModelElement): string[] {
125
130
  const elements = Array.from(document.querySelectorAll('g'));
126
- const edges = Array.from(root.index.all().filter(e => e instanceof SEdge).
127
- filter(e => isSelectable(e)).map(e => e.id));
128
- return elements.filter(e => edges.includes(this.domHelper.findSModelIdByDOMElement(e)))
129
- .filter(e => this.isEdgeMarked(e)).map(e => this.domHelper.findSModelIdByDOMElement(e));
131
+ const edges = Array.from(
132
+ root.index
133
+ .all()
134
+ .filter(e => e instanceof SEdge)
135
+ .filter(e => isSelectable(e))
136
+ .map(e => e.id)
137
+ );
138
+ return elements
139
+ .filter(e => edges.includes(this.domHelper.findSModelIdByDOMElement(e)))
140
+ .filter(e => this.isEdgeMarked(e))
141
+ .map(e => this.domHelper.findSModelIdByDOMElement(e));
130
142
  }
131
143
 
132
144
  isEdgeMarked(element: SVGElement): boolean {
@@ -170,11 +182,11 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
170
182
  }
171
183
 
172
184
  linesIntersect(p1: Point, p2: Point, p3: Point, p4: Point): boolean {
173
- const tCount = ((p1.x - p3.x) * (p3.y - p4.y)) - ((p1.y - p3.y) * (p3.x - p4.x));
174
- const tDenom = ((p1.x - p2.x) * (p3.y - p4.y)) - ((p1.y - p2.y) * (p3.x - p4.x));
185
+ const tCount = (p1.x - p3.x) * (p3.y - p4.y) - (p1.y - p3.y) * (p3.x - p4.x);
186
+ const tDenom = (p1.x - p2.x) * (p3.y - p4.y) - (p1.y - p2.y) * (p3.x - p4.x);
175
187
  const t = tCount / tDenom;
176
- const uCount = ((p2.x - p1.x) * (p1.y - p3.y)) - ((p2.y - p1.y) * (p1.x - p3.x));
177
- const uDenom = ((p1.x - p2.x) * (p3.y - p4.y)) - ((p1.y - p2.y) * (p3.x - p4.x));
188
+ const uCount = (p2.x - p1.x) * (p1.y - p3.y) - (p2.y - p1.y) * (p1.x - p3.x);
189
+ const uDenom = (p1.x - p2.x) * (p3.y - p4.y) - (p1.y - p2.y) * (p3.x - p4.x);
178
190
  const u = uCount / uDenom;
179
191
  if (t >= 0.0 && t <= 1.0 && u >= 0.0 && u <= 1.0) {
180
192
  return true;
@@ -183,20 +195,26 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
183
195
  }
184
196
 
185
197
  pointInRect(point: Point): boolean {
186
- const boolX = this.startPoint.x <= this.currentPoint.x ?
187
- this.isBetween(point.x, this.startPoint.x, this.currentPoint.x) : this.isBetween(point.x, this.currentPoint.x, this.startPoint.x);
188
- const boolY = this.startPoint.y <= this.currentPoint.y ?
189
- this.isBetween(point.y, this.startPoint.y, this.currentPoint.y) : this.isBetween(point.y, this.currentPoint.y, this.startPoint.y);
198
+ const boolX =
199
+ this.startPoint.x <= this.currentPoint.x
200
+ ? this.isBetween(point.x, this.startPoint.x, this.currentPoint.x)
201
+ : this.isBetween(point.x, this.currentPoint.x, this.startPoint.x);
202
+ const boolY =
203
+ this.startPoint.y <= this.currentPoint.y
204
+ ? this.isBetween(point.y, this.startPoint.y, this.currentPoint.y)
205
+ : this.isBetween(point.y, this.currentPoint.y, this.startPoint.y);
190
206
  return boolX && boolY;
191
207
  }
192
208
 
193
209
  isNodeMarked(element: SModelElement & BoundsAware): boolean {
194
- const horizontallyIn = this.startPoint.x < this.currentPoint.x ?
195
- this.isElementBetweenXAxis(element, this.startPoint.x, this.currentPoint.x) :
196
- this.isElementBetweenXAxis(element, this.currentPoint.x, this.startPoint.x);
197
- const verticallyIn = this.startPoint.y < this.currentPoint.y ?
198
- this.isElementBetweenYAxis(element, this.startPoint.y, this.currentPoint.y) :
199
- this.isElementBetweenYAxis(element, this.currentPoint.y, this.startPoint.y);
210
+ const horizontallyIn =
211
+ this.startPoint.x < this.currentPoint.x
212
+ ? this.isElementBetweenXAxis(element, this.startPoint.x, this.currentPoint.x)
213
+ : this.isElementBetweenXAxis(element, this.currentPoint.x, this.startPoint.x);
214
+ const verticallyIn =
215
+ this.startPoint.y < this.currentPoint.y
216
+ ? this.isElementBetweenYAxis(element, this.startPoint.y, this.currentPoint.y)
217
+ : this.isElementBetweenYAxis(element, this.currentPoint.y, this.startPoint.y);
200
218
  if (horizontallyIn && verticallyIn) {
201
219
  return true;
202
220
  }
@@ -204,8 +222,10 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
204
222
  }
205
223
 
206
224
  isElementBetweenXAxis(element: SModelElement & BoundsAware, marqueeLeft: number, marqueeRight: number): boolean {
207
- if (this.isBetween(marqueeLeft, toAbsoluteBounds(element).x, toAbsoluteBounds(element).x + toAbsoluteBounds(element).width)
208
- || this.isBetween(marqueeRight, toAbsoluteBounds(element).x, toAbsoluteBounds(element).x + toAbsoluteBounds(element).width)) {
225
+ if (
226
+ this.isBetween(marqueeLeft, toAbsoluteBounds(element).x, toAbsoluteBounds(element).x + toAbsoluteBounds(element).width) ||
227
+ this.isBetween(marqueeRight, toAbsoluteBounds(element).x, toAbsoluteBounds(element).x + toAbsoluteBounds(element).width)
228
+ ) {
209
229
  return true;
210
230
  }
211
231
  const leftEdge = this.isBetween(toAbsoluteBounds(element).x, marqueeLeft, marqueeRight);
@@ -214,8 +234,10 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
214
234
  }
215
235
 
216
236
  isElementBetweenYAxis(element: SModelElement & BoundsAware, marqueeTop: number, marqueeBottom: number): boolean {
217
- if (this.isBetween(marqueeTop, toAbsoluteBounds(element).y, toAbsoluteBounds(element).y + toAbsoluteBounds(element).height)
218
- || this.isBetween(marqueeBottom, toAbsoluteBounds(element).y, toAbsoluteBounds(element).y + toAbsoluteBounds(element).height)) {
237
+ if (
238
+ this.isBetween(marqueeTop, toAbsoluteBounds(element).y, toAbsoluteBounds(element).y + toAbsoluteBounds(element).height) ||
239
+ this.isBetween(marqueeBottom, toAbsoluteBounds(element).y, toAbsoluteBounds(element).y + toAbsoluteBounds(element).height)
240
+ ) {
219
241
  return true;
220
242
  }
221
243
  const topEdge = this.isBetween(toAbsoluteBounds(element).y, marqueeTop, marqueeBottom);
@@ -229,12 +251,10 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
229
251
  }
230
252
  return false;
231
253
  }
232
-
233
254
  }
234
255
 
235
256
  @injectable()
236
257
  export class ShiftKeyListener extends KeyListener {
237
-
238
258
  keyUp(element: SModelElement, event: KeyboardEvent): Action[] {
239
259
  if (event.shiftKey) {
240
260
  return [];
@@ -42,7 +42,6 @@ export class MarqueeTool extends BaseGLSPTool {
42
42
 
43
43
  @injectable()
44
44
  export class MarqueeKeyListener extends KeyListener {
45
-
46
45
  keyDown(element: SModelElement, event: KeyboardEvent): Action[] {
47
46
  if (event.shiftKey) {
48
47
  return [new EnableToolsAction([MarqueeMouseTool.ID])];
@@ -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
@@ -28,11 +28,7 @@ import {
28
28
  } from 'sprotty';
29
29
 
30
30
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
31
- import {
32
- CreateNodeOperation,
33
- isTriggerNodeCreationAction,
34
- TriggerNodeCreationAction
35
- } from '../../base/operations/operation';
31
+ import { CreateNodeOperation, isTriggerNodeCreationAction, TriggerNodeCreationAction } from '../../base/operations/operation';
36
32
  import { getAbsolutePosition } from '../../utils/viewpoint-util';
37
33
  import { Containable, isContainable } from '../hints/model';
38
34
  import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
@@ -75,7 +71,6 @@ export class NodeCreationTool extends BaseGLSPTool implements IActionHandler {
75
71
 
76
72
  @injectable()
77
73
  export class NodeCreationToolMouseListener extends DragAwareMouseListener {
78
-
79
74
  protected container?: SModelElement & Containable;
80
75
 
81
76
  constructor(protected triggerAction: TriggerNodeCreationAction, protected tool: NodeCreationTool) {
@@ -114,8 +109,8 @@ export class NodeCreationToolMouseListener extends DragAwareMouseListener {
114
109
  if (!this.container || currentContainer !== this.container) {
115
110
  this.container = currentContainer;
116
111
  const feedback = this.creationAllowed(this.elementTypeId)
117
- ? cursorFeedbackAction(CursorCSS.NODE_CREATION) :
118
- cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED);
112
+ ? cursorFeedbackAction(CursorCSS.NODE_CREATION)
113
+ : cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED);
119
114
  this.tool.dispatchFeedback([feedback]);
120
115
  }
121
116
  return [];
@@ -14,26 +14,31 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { injectable } from 'inversify';
17
- import * as snabbdom from 'snabbdom-jsx';
18
- import { VNode } from 'snabbdom/vnode';
19
- import { RectangularNodeView, RenderingContext } from 'sprotty';
17
+ import { VNode } from 'snabbdom';
18
+ import { RectangularNodeView, RenderingContext, svg } from 'sprotty';
20
19
 
21
20
  import { MarqueeNode } from './model';
22
21
 
23
22
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
- const JSX = { createElement: snabbdom.svg };
23
+ const JSX = { createElement: svg };
25
24
 
26
25
  @injectable()
27
26
  export class MarqueeView extends RectangularNodeView {
28
27
  render(node: MarqueeNode, context: RenderingContext): VNode {
29
- const graph = <g>
30
- <rect class-sprotty-node={true} class-marquee={true}
31
- x={((node.startPoint.x - node.endPoint.x) <= 0) ? node.startPoint.x : node.endPoint.x}
32
- y={((node.startPoint.y - node.endPoint.y) <= 0) ? node.startPoint.y : node.endPoint.y}
33
- rx={0} ry={0}
34
- width={Math.abs(node.startPoint.x - node.endPoint.x)}
35
- height={Math.abs(node.startPoint.y - node.endPoint.y)}></rect>
36
- </g>;
28
+ const graph = (
29
+ <g>
30
+ <rect
31
+ class-sprotty-node={true}
32
+ class-marquee={true}
33
+ x={node.startPoint.x - node.endPoint.x <= 0 ? node.startPoint.x : node.endPoint.x}
34
+ y={node.startPoint.y - node.endPoint.y <= 0 ? node.startPoint.y : node.endPoint.y}
35
+ rx={0}
36
+ ry={0}
37
+ width={Math.abs(node.startPoint.x - node.endPoint.x)}
38
+ height={Math.abs(node.startPoint.y - node.endPoint.y)}
39
+ ></rect>
40
+ </g>
41
+ );
37
42
  return graph;
38
43
  }
39
44
  }
@@ -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
@@ -17,10 +17,10 @@ import { Operation } from '../../base/operations/operation';
17
17
 
18
18
  export class UndoOperation implements Operation {
19
19
  static readonly KIND = 'glspUndo';
20
- constructor(public readonly kind = UndoOperation.KIND) { }
20
+ constructor(public readonly kind = UndoOperation.KIND) {}
21
21
  }
22
22
 
23
23
  export class RedoOperation implements Operation {
24
24
  static readonly KIND = 'glspRedo';
25
- constructor(public readonly kind = RedoOperation.KIND) { }
25
+ constructor(public readonly kind = RedoOperation.KIND) {}
26
26
  }