@eclipse-glsp/client 0.9.0-next.4fc0d719 → 0.9.0-next.75608185

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 (619) hide show
  1. package/README.md +2 -1
  2. package/css/command-palette.css +9 -5
  3. package/css/decoration.css +3 -2
  4. package/css/glsp-sprotty.css +20 -7
  5. package/css/tool-palette.css +44 -27
  6. package/lib/base/action-dispatcher.d.ts +18 -2
  7. package/lib/base/action-dispatcher.d.ts.map +1 -1
  8. package/lib/base/action-dispatcher.js +41 -61
  9. package/lib/base/action-dispatcher.js.map +1 -1
  10. package/lib/base/actions/focus-change-action.d.ts +1 -1
  11. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  12. package/lib/base/actions/focus-change-action.js +4 -5
  13. package/lib/base/actions/focus-change-action.js.map +1 -1
  14. package/lib/base/argumentable.d.ts +22 -0
  15. package/lib/base/argumentable.d.ts.map +1 -0
  16. package/lib/base/argumentable.js +8 -0
  17. package/lib/base/argumentable.js.map +1 -0
  18. package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
  19. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  20. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  21. package/lib/base/auto-complete/auto-complete-widget.d.ts +12 -12
  22. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  23. package/lib/base/auto-complete/auto-complete-widget.js +121 -152
  24. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  25. package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
  26. package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
  27. package/lib/base/auto-complete/validation-decorator.js +49 -65
  28. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  29. package/lib/base/command-stack.d.ts +1 -1
  30. package/lib/base/command-stack.d.ts.map +1 -1
  31. package/lib/base/command-stack.js +19 -37
  32. package/lib/base/command-stack.js.map +1 -1
  33. package/lib/base/container-modules.d.ts +40 -0
  34. package/lib/base/container-modules.d.ts.map +1 -0
  35. package/lib/base/container-modules.js +84 -0
  36. package/lib/base/container-modules.js.map +1 -0
  37. package/lib/base/di.config.d.ts +13 -3
  38. package/lib/base/di.config.d.ts.map +1 -1
  39. package/lib/base/di.config.js +50 -33
  40. package/lib/base/di.config.js.map +1 -1
  41. package/lib/base/drag-aware-mouse-listener.d.ts +3 -2
  42. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  43. package/lib/base/drag-aware-mouse-listener.js +23 -62
  44. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  45. package/lib/base/editor-context-service.d.ts +42 -0
  46. package/lib/base/editor-context-service.d.ts.map +1 -0
  47. package/lib/base/editor-context-service.js +109 -0
  48. package/lib/base/editor-context-service.js.map +1 -0
  49. package/lib/base/focus-tracker.d.ts +17 -1
  50. package/lib/base/focus-tracker.d.ts.map +1 -1
  51. package/lib/base/focus-tracker.js +19 -39
  52. package/lib/base/focus-tracker.js.map +1 -1
  53. package/lib/base/model/model-registry.d.ts +5 -0
  54. package/lib/base/model/model-registry.d.ts.map +1 -0
  55. package/lib/base/model/model-registry.js +43 -0
  56. package/lib/base/model/model-registry.js.map +1 -0
  57. package/lib/base/model/update-model-command.d.ts +20 -6
  58. package/lib/base/model/update-model-command.d.ts.map +1 -1
  59. package/lib/base/model/update-model-command.js +69 -94
  60. package/lib/base/model/update-model-command.js.map +1 -1
  61. package/lib/base/model-initialization-constraint.d.ts +17 -2
  62. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  63. package/lib/base/model-initialization-constraint.js +34 -54
  64. package/lib/base/model-initialization-constraint.js.map +1 -1
  65. package/lib/base/selection-clearing-mouse-listener.d.ts +1 -1
  66. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  67. package/lib/base/selection-clearing-mouse-listener.js +11 -28
  68. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  69. package/lib/base/source-uri-aware.js +2 -5
  70. package/lib/base/source-uri-aware.js.map +1 -1
  71. package/lib/base/tool-manager/glsp-tool-manager.d.ts +2 -2
  72. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  73. package/lib/base/tool-manager/glsp-tool-manager.js +59 -141
  74. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  75. package/lib/base/types.d.ts +2 -1
  76. package/lib/base/types.d.ts.map +1 -1
  77. package/lib/base/types.js +22 -21
  78. package/lib/base/types.js.map +1 -1
  79. package/lib/base/view/view-registry.d.ts +5 -0
  80. package/lib/base/view/view-registry.d.ts.map +1 -0
  81. package/lib/base/view/view-registry.js +43 -0
  82. package/lib/base/view/view-registry.js.map +1 -0
  83. package/lib/features/change-bounds/model.d.ts +4 -2
  84. package/lib/features/change-bounds/model.d.ts.map +1 -1
  85. package/lib/features/change-bounds/model.js +21 -32
  86. package/lib/features/change-bounds/model.js.map +1 -1
  87. package/lib/features/change-bounds/movement-restrictor.d.ts +18 -2
  88. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  89. package/lib/features/change-bounds/movement-restrictor.js +34 -46
  90. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  91. package/lib/features/change-bounds/snap.d.ts +17 -1
  92. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  93. package/lib/features/change-bounds/snap.js +13 -39
  94. package/lib/features/change-bounds/snap.js.map +1 -1
  95. package/lib/features/command-palette/command-palette-tool.d.ts +1 -1
  96. package/lib/features/command-palette/command-palette-tool.d.ts.map +1 -1
  97. package/lib/features/command-palette/command-palette-tool.js +30 -38
  98. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  99. package/lib/features/command-palette/di.config.d.ts +2 -2
  100. package/lib/features/command-palette/di.config.js +6 -6
  101. package/lib/features/command-palette/di.config.js.map +1 -1
  102. package/lib/features/command-palette/server-command-palette-provider.d.ts +19 -3
  103. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  104. package/lib/features/command-palette/server-command-palette-provider.js +31 -36
  105. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  106. package/lib/features/context-menu/delete-element-context-menu.d.ts +2 -2
  107. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  108. package/lib/features/context-menu/delete-element-context-menu.js +24 -72
  109. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  110. package/lib/features/context-menu/di.config.d.ts +2 -2
  111. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  112. package/lib/features/context-menu/di.config.js +14 -18
  113. package/lib/features/context-menu/di.config.js.map +1 -1
  114. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +2 -2
  115. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  116. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
  117. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  118. package/lib/features/context-menu/server-context-menu-provider.d.ts +19 -3
  119. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  120. package/lib/features/context-menu/server-context-menu-provider.js +31 -32
  121. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  122. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
  123. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  124. package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
  125. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  126. package/lib/features/copy-paste/copy-paste-handler.d.ts +21 -4
  127. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  128. package/lib/features/copy-paste/copy-paste-handler.js +70 -70
  129. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  130. package/lib/features/copy-paste/di.config.d.ts +2 -2
  131. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  132. package/lib/features/copy-paste/di.config.js +11 -11
  133. package/lib/features/copy-paste/di.config.js.map +1 -1
  134. package/lib/features/decoration/decoration-placer.d.ts +17 -1
  135. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  136. package/lib/features/decoration/decoration-placer.js +14 -47
  137. package/lib/features/decoration/decoration-placer.js.map +1 -1
  138. package/lib/features/decoration/di.config.d.ts +2 -2
  139. package/lib/features/decoration/di.config.d.ts.map +1 -1
  140. package/lib/features/decoration/di.config.js +4 -6
  141. package/lib/features/decoration/di.config.js.map +1 -1
  142. package/lib/features/edit-label/di.config.d.ts +1 -1
  143. package/lib/features/edit-label/di.config.js +7 -7
  144. package/lib/features/edit-label/di.config.js.map +1 -1
  145. package/lib/features/edit-label/edit-label-tool.d.ts +2 -2
  146. package/lib/features/edit-label/edit-label-tool.js +20 -43
  147. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  148. package/lib/features/edit-label/edit-label-validator.d.ts +18 -3
  149. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  150. package/lib/features/edit-label/edit-label-validator.js +40 -62
  151. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  152. package/lib/features/hints/di.config.d.ts +1 -16
  153. package/lib/features/hints/di.config.d.ts.map +1 -1
  154. package/lib/features/hints/di.config.js +9 -9
  155. package/lib/features/hints/di.config.js.map +1 -1
  156. package/lib/features/hints/model.d.ts +3 -2
  157. package/lib/features/hints/model.d.ts.map +1 -1
  158. package/lib/features/hints/model.js +2 -2
  159. package/lib/features/hints/model.js.map +1 -1
  160. package/lib/features/hints/type-hints.d.ts +21 -49
  161. package/lib/features/hints/type-hints.d.ts.map +1 -1
  162. package/lib/features/hints/type-hints.js +83 -142
  163. package/lib/features/hints/type-hints.js.map +1 -1
  164. package/lib/features/hover/di.config.d.ts +2 -2
  165. package/lib/features/hover/di.config.d.ts.map +1 -1
  166. package/lib/features/hover/di.config.js +8 -8
  167. package/lib/features/hover/di.config.js.map +1 -1
  168. package/lib/features/hover/hover.d.ts +18 -2
  169. package/lib/features/hover/hover.d.ts.map +1 -1
  170. package/lib/features/hover/hover.js +37 -75
  171. package/lib/features/hover/hover.js.map +1 -1
  172. package/lib/features/layout/di.config.d.ts +6 -2
  173. package/lib/features/layout/di.config.d.ts.map +1 -1
  174. package/lib/features/layout/di.config.js +47 -7
  175. package/lib/features/layout/di.config.js.map +1 -1
  176. package/lib/features/layout/freeform-layout.d.ts +16 -0
  177. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  178. package/lib/features/layout/freeform-layout.js +107 -0
  179. package/lib/features/layout/freeform-layout.js.map +1 -0
  180. package/lib/features/layout/layout-commands.d.ts +26 -10
  181. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  182. package/lib/features/layout/layout-commands.js +189 -264
  183. package/lib/features/layout/layout-commands.js.map +1 -1
  184. package/lib/features/layout/layout-commands.spec.d.ts +2 -17
  185. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
  186. package/lib/features/layout/layout-commands.spec.js +124 -117
  187. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  188. package/lib/features/layout/vbox-layout.d.ts +25 -0
  189. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  190. package/lib/features/layout/vbox-layout.js +188 -0
  191. package/lib/features/layout/vbox-layout.js.map +1 -0
  192. package/lib/features/model-source-watcher/di.config.d.ts +1 -16
  193. package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
  194. package/lib/features/model-source-watcher/di.config.js +7 -7
  195. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  196. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
  197. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  198. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -46
  199. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  200. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  201. package/lib/features/mouse-tool/di.config.js +5 -5
  202. package/lib/features/mouse-tool/di.config.js.map +1 -1
  203. package/lib/features/mouse-tool/mouse-tool.d.ts +3 -2
  204. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  205. package/lib/features/mouse-tool/mouse-tool.js +74 -217
  206. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  207. package/lib/features/navigation/di.config.d.ts +1 -16
  208. package/lib/features/navigation/di.config.d.ts.map +1 -1
  209. package/lib/features/navigation/di.config.js +11 -10
  210. package/lib/features/navigation/di.config.js.map +1 -1
  211. package/lib/features/navigation/navigation-action-handler.d.ts +19 -39
  212. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  213. package/lib/features/navigation/navigation-action-handler.js +118 -255
  214. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  215. package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
  216. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  217. package/lib/features/navigation/navigation-target-resolver.js +46 -188
  218. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  219. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +2 -17
  220. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  221. package/lib/features/navigation/navigation-target-resolver.spec.js +27 -26
  222. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  223. package/lib/features/rank/model.d.ts +2 -2
  224. package/lib/features/rank/model.d.ts.map +1 -1
  225. package/lib/features/rank/model.js +2 -2
  226. package/lib/features/rank/model.js.map +1 -1
  227. package/lib/features/reconnect/model.d.ts +2 -2
  228. package/lib/features/reconnect/model.d.ts.map +1 -1
  229. package/lib/features/reconnect/model.js +10 -28
  230. package/lib/features/reconnect/model.js.map +1 -1
  231. package/lib/features/save/di.config.d.ts +2 -2
  232. package/lib/features/save/di.config.d.ts.map +1 -1
  233. package/lib/features/save/di.config.js +6 -6
  234. package/lib/features/save/di.config.js.map +1 -1
  235. package/lib/features/save/model.d.ts +1 -1
  236. package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -8
  237. package/lib/features/save/save-keylistener.d.ts.map +1 -0
  238. package/lib/{utils/array-utils.js → features/save/save-keylistener.js} +14 -19
  239. package/lib/features/save/save-keylistener.js.map +1 -0
  240. package/lib/features/select/di.config.d.ts +1 -1
  241. package/lib/features/select/di.config.js +11 -11
  242. package/lib/features/select/di.config.js.map +1 -1
  243. package/lib/features/select/select-feedback-action.d.ts +1 -1
  244. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  245. package/lib/features/select/select-feedback-action.js +45 -71
  246. package/lib/features/select/select-feedback-action.js.map +1 -1
  247. package/lib/features/select/select-mouse-listener.d.ts +2 -2
  248. package/lib/features/select/select-mouse-listener.js +7 -23
  249. package/lib/features/select/select-mouse-listener.js.map +1 -1
  250. package/lib/features/select/selection-service.d.ts +19 -3
  251. package/lib/features/select/selection-service.d.ts.map +1 -1
  252. package/lib/features/select/selection-service.js +134 -236
  253. package/lib/features/select/selection-service.js.map +1 -1
  254. package/lib/features/select/selection-service.spec.js +96 -138
  255. package/lib/features/select/selection-service.spec.js.map +1 -1
  256. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +21 -4
  257. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  258. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +117 -149
  259. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  260. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +19 -2
  261. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  262. package/lib/features/tool-feedback/creation-tool-feedback.js +81 -115
  263. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  264. package/lib/features/tool-feedback/css-feedback.d.ts +24 -5
  265. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  266. package/lib/features/tool-feedback/css-feedback.js +40 -82
  267. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  268. package/lib/features/tool-feedback/di.config.d.ts +2 -2
  269. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  270. package/lib/features/tool-feedback/di.config.js +27 -24
  271. package/lib/features/tool-feedback/di.config.js.map +1 -1
  272. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +21 -4
  273. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  274. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +160 -204
  275. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  276. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +19 -3
  277. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  278. package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
  279. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  280. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +48 -0
  281. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -0
  282. package/lib/features/tool-feedback/marquee-tool-feedback.js +96 -0
  283. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -0
  284. package/lib/features/tool-feedback/model.d.ts +2 -2
  285. package/lib/features/tool-feedback/model.js +11 -27
  286. package/lib/features/tool-feedback/model.js.map +1 -1
  287. package/lib/features/tool-feedback/view.d.ts +22 -6
  288. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  289. package/lib/features/tool-feedback/view.js +30 -51
  290. package/lib/features/tool-feedback/view.js.map +1 -1
  291. package/lib/features/tool-palette/di.config.d.ts +2 -2
  292. package/lib/features/tool-palette/di.config.js +6 -6
  293. package/lib/features/tool-palette/di.config.js.map +1 -1
  294. package/lib/features/tool-palette/palette-item.d.ts +2 -3
  295. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  296. package/lib/features/tool-palette/palette-item.js +6 -6
  297. package/lib/features/tool-palette/palette-item.js.map +1 -1
  298. package/lib/features/tool-palette/tool-palette.d.ts +23 -6
  299. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  300. package/lib/features/tool-palette/tool-palette.js +229 -286
  301. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  302. package/lib/features/tools/base-glsp-tool.d.ts +21 -5
  303. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  304. package/lib/features/tools/base-glsp-tool.js +37 -59
  305. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  306. package/lib/features/tools/change-bounds-tool.d.ts +26 -9
  307. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  308. package/lib/features/tools/change-bounds-tool.js +192 -241
  309. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  310. package/lib/features/tools/delete-tool.d.ts +20 -4
  311. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  312. package/lib/features/tools/delete-tool.js +71 -104
  313. package/lib/features/tools/delete-tool.js.map +1 -1
  314. package/lib/features/tools/di.config.d.ts +5 -16
  315. package/lib/features/tools/di.config.d.ts.map +1 -1
  316. package/lib/features/tools/di.config.js +26 -13
  317. package/lib/features/tools/di.config.js.map +1 -1
  318. package/lib/features/tools/edge-creation-tool.d.ts +20 -5
  319. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  320. package/lib/features/tools/edge-creation-tool.js +64 -89
  321. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  322. package/lib/features/tools/edge-edit-tool.d.ts +22 -6
  323. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  324. package/lib/features/tools/edge-edit-tool.js +125 -189
  325. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  326. package/lib/features/tools/marquee-mouse-tool.d.ts +53 -0
  327. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -0
  328. package/lib/features/tools/marquee-mouse-tool.js +237 -0
  329. package/lib/features/tools/marquee-mouse-tool.js.map +1 -0
  330. package/{src/features/model-source-watcher/model-source-changed-action.ts → lib/features/tools/marquee-tool.d.ts} +14 -10
  331. package/lib/features/tools/marquee-tool.d.ts.map +1 -0
  332. package/lib/features/tools/marquee-tool.js +54 -0
  333. package/lib/features/tools/marquee-tool.js.map +1 -0
  334. package/lib/{utils/array-utils.d.ts → features/tools/model.d.ts} +8 -4
  335. package/lib/features/tools/model.d.ts.map +1 -0
  336. package/lib/features/tools/model.js +24 -0
  337. package/lib/features/tools/model.js.map +1 -0
  338. package/lib/features/tools/node-creation-tool.d.ts +20 -5
  339. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  340. package/lib/features/tools/node-creation-tool.js +60 -90
  341. package/lib/features/tools/node-creation-tool.js.map +1 -1
  342. package/lib/features/tools/view.d.ts +7 -0
  343. package/lib/features/tools/view.d.ts.map +1 -0
  344. package/lib/features/tools/view.js +40 -0
  345. package/lib/features/tools/view.js.map +1 -0
  346. package/lib/features/validation/di.config.d.ts +1 -1
  347. package/lib/features/validation/di.config.js +12 -12
  348. package/lib/features/validation/di.config.js.map +1 -1
  349. package/lib/features/validation/issue-marker.d.ts +3 -3
  350. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  351. package/lib/features/validation/issue-marker.js +18 -56
  352. package/lib/features/validation/issue-marker.js.map +1 -1
  353. package/lib/features/validation/marker-navigator.d.ts +19 -3
  354. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  355. package/lib/features/validation/marker-navigator.js +131 -164
  356. package/lib/features/validation/marker-navigator.js.map +1 -1
  357. package/lib/features/validation/marker-navigator.spec.d.ts +2 -17
  358. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  359. package/lib/features/validation/marker-navigator.spec.js +84 -77
  360. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  361. package/lib/features/validation/validate.d.ts +20 -31
  362. package/lib/features/validation/validate.d.ts.map +1 -1
  363. package/lib/features/validation/validate.js +148 -299
  364. package/lib/features/validation/validate.js.map +1 -1
  365. package/lib/{base/args.d.ts → features/viewport/di.config.d.ts} +5 -5
  366. package/lib/features/viewport/di.config.d.ts.map +1 -0
  367. package/lib/features/viewport/di.config.js +34 -0
  368. package/lib/features/viewport/di.config.js.map +1 -0
  369. package/lib/features/{model-source-watcher/model-source-changed-action.d.ts → viewport/glsp-scroll-mouse-listener.d.ts} +8 -9
  370. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -0
  371. package/lib/features/viewport/glsp-scroll-mouse-listener.js +39 -0
  372. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -0
  373. package/lib/index.d.ts +34 -35
  374. package/lib/index.d.ts.map +1 -1
  375. package/lib/index.js +36 -35
  376. package/lib/index.js.map +1 -1
  377. package/lib/lib/model.d.ts +3 -3
  378. package/lib/lib/model.d.ts.map +1 -1
  379. package/lib/lib/model.js +11 -27
  380. package/lib/lib/model.js.map +1 -1
  381. package/lib/model-source/glsp-diagram-server.d.ts +4 -6
  382. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  383. package/lib/model-source/glsp-diagram-server.js +63 -122
  384. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  385. package/lib/protocol-reexport.d.ts +45 -0
  386. package/lib/protocol-reexport.d.ts.map +1 -0
  387. package/lib/protocol-reexport.js +75 -0
  388. package/lib/protocol-reexport.js.map +1 -0
  389. package/lib/utils/argument-utils.d.ts +50 -0
  390. package/lib/utils/argument-utils.d.ts.map +1 -0
  391. package/lib/utils/argument-utils.js +110 -0
  392. package/lib/utils/argument-utils.js.map +1 -0
  393. package/lib/utils/html-utils.js +2 -2
  394. package/lib/utils/html-utils.js.map +1 -1
  395. package/lib/utils/layout-utils.d.ts +4 -3
  396. package/lib/utils/layout-utils.d.ts.map +1 -1
  397. package/lib/utils/layout-utils.js +5 -5
  398. package/lib/utils/layout-utils.js.map +1 -1
  399. package/lib/utils/marker.d.ts +1 -39
  400. package/lib/utils/marker.d.ts.map +1 -1
  401. package/lib/utils/marker.js +14 -61
  402. package/lib/utils/marker.js.map +1 -1
  403. package/lib/utils/smodel-util.d.ts +7 -17
  404. package/lib/utils/smodel-util.d.ts.map +1 -1
  405. package/lib/utils/smodel-util.js +18 -67
  406. package/lib/utils/smodel-util.js.map +1 -1
  407. package/lib/utils/viewpoint-util.d.ts +3 -2
  408. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  409. package/lib/utils/viewpoint-util.js +15 -30
  410. package/lib/utils/viewpoint-util.js.map +1 -1
  411. package/lib/views/base-view-module.d.ts +24 -0
  412. package/lib/views/base-view-module.d.ts.map +1 -0
  413. package/lib/views/base-view-module.js +59 -0
  414. package/lib/views/base-view-module.js.map +1 -0
  415. package/lib/views/compartments.d.ts +6 -0
  416. package/lib/views/compartments.d.ts.map +1 -0
  417. package/lib/views/compartments.js +43 -0
  418. package/lib/views/compartments.js.map +1 -0
  419. package/lib/views/default-types.d.ts +37 -0
  420. package/lib/views/default-types.d.ts.map +1 -0
  421. package/lib/views/default-types.js +47 -0
  422. package/lib/views/default-types.js.map +1 -0
  423. package/lib/views/glsp-edge-view.d.ts +27 -0
  424. package/lib/views/glsp-edge-view.d.ts.map +1 -0
  425. package/lib/views/glsp-edge-view.js +55 -0
  426. package/lib/views/glsp-edge-view.js.map +1 -0
  427. package/lib/views/index.d.ts +23 -0
  428. package/lib/views/index.d.ts.map +1 -0
  429. package/lib/views/index.js +35 -0
  430. package/lib/views/index.js.map +1 -0
  431. package/lib/views/issue-marker-view.d.ts +9 -0
  432. package/lib/views/issue-marker-view.d.ts.map +1 -0
  433. package/lib/views/issue-marker-view.js +68 -0
  434. package/lib/views/issue-marker-view.js.map +1 -0
  435. package/lib/views/rounded-corner-view.d.ts +13 -0
  436. package/lib/views/rounded-corner-view.d.ts.map +1 -0
  437. package/lib/views/rounded-corner-view.js +82 -0
  438. package/lib/views/rounded-corner-view.js.map +1 -0
  439. package/lib/views/rounded-corner.d.ts +38 -0
  440. package/lib/views/rounded-corner.d.ts.map +1 -0
  441. package/lib/views/rounded-corner.js +62 -0
  442. package/lib/views/rounded-corner.js.map +1 -0
  443. package/package.json +24 -32
  444. package/src/base/action-dispatcher.ts +7 -8
  445. package/src/base/actions/focus-change-action.ts +2 -2
  446. package/src/{features/undo-redo/model.ts → base/argumentable.ts} +7 -8
  447. package/src/base/auto-complete/auto-complete-actions.ts +2 -2
  448. package/src/base/auto-complete/auto-complete-widget.ts +73 -57
  449. package/src/base/auto-complete/validation-decorator.ts +21 -15
  450. package/src/base/command-stack.ts +4 -7
  451. package/src/base/container-modules.ts +113 -0
  452. package/src/base/di.config.ts +44 -27
  453. package/src/base/drag-aware-mouse-listener.ts +7 -8
  454. package/src/base/{editor-context.ts → editor-context-service.ts} +13 -40
  455. package/src/base/focus-tracker.ts +4 -6
  456. package/src/base/model/model-registry.ts +31 -0
  457. package/src/base/model/update-model-command.ts +14 -22
  458. package/src/base/model-initialization-constraint.ts +16 -11
  459. package/src/base/selection-clearing-mouse-listener.ts +4 -3
  460. package/src/base/tool-manager/glsp-tool-manager.ts +12 -14
  461. package/src/base/types.ts +22 -21
  462. package/src/{utils/array-utils.ts → base/view/view-registry.ts} +14 -17
  463. package/src/features/change-bounds/model.ts +23 -13
  464. package/src/features/change-bounds/movement-restrictor.ts +28 -18
  465. package/src/features/change-bounds/snap.ts +6 -5
  466. package/src/features/command-palette/command-palette-tool.ts +4 -4
  467. package/src/features/command-palette/di.config.ts +7 -7
  468. package/src/features/command-palette/server-command-palette-provider.ts +16 -14
  469. package/src/features/context-menu/delete-element-context-menu.ts +10 -11
  470. package/src/features/context-menu/di.config.ts +10 -12
  471. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +8 -7
  472. package/src/features/context-menu/server-context-menu-provider.ts +13 -10
  473. package/src/features/copy-paste/copy-paste-context-menu.ts +66 -37
  474. package/src/features/copy-paste/copy-paste-handler.ts +30 -20
  475. package/src/features/copy-paste/di.config.ts +6 -7
  476. package/src/features/decoration/decoration-placer.ts +6 -15
  477. package/src/features/decoration/di.config.ts +4 -6
  478. package/src/features/edit-label/di.config.ts +5 -5
  479. package/src/features/edit-label/edit-label-tool.ts +4 -4
  480. package/src/features/edit-label/edit-label-validator.ts +18 -19
  481. package/src/features/hints/di.config.ts +6 -7
  482. package/src/features/hints/model.ts +7 -6
  483. package/src/features/hints/type-hints.ts +46 -113
  484. package/src/features/hover/di.config.ts +6 -7
  485. package/src/features/hover/hover.ts +11 -14
  486. package/src/features/layout/di.config.ts +32 -6
  487. package/src/features/layout/freeform-layout.ts +133 -0
  488. package/src/features/layout/layout-commands.spec.ts +104 -85
  489. package/src/features/layout/layout-commands.ts +65 -54
  490. package/src/features/layout/vbox-layout.ts +256 -0
  491. package/src/features/model-source-watcher/di.config.ts +5 -6
  492. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +16 -12
  493. package/src/features/mouse-tool/di.config.ts +4 -4
  494. package/src/features/mouse-tool/mouse-tool.ts +44 -32
  495. package/src/features/navigation/di.config.ts +6 -12
  496. package/src/features/navigation/navigation-action-handler.ts +46 -78
  497. package/src/features/navigation/navigation-target-resolver.spec.ts +6 -9
  498. package/src/features/navigation/navigation-target-resolver.ts +16 -94
  499. package/src/features/rank/model.ts +3 -3
  500. package/src/features/reconnect/model.ts +9 -11
  501. package/src/features/save/di.config.ts +4 -5
  502. package/src/features/save/model.ts +1 -1
  503. package/src/features/save/{save.ts → save-keylistener.ts} +4 -8
  504. package/src/features/select/di.config.ts +6 -6
  505. package/src/features/select/select-feedback-action.ts +6 -8
  506. package/src/features/select/select-mouse-listener.ts +2 -2
  507. package/src/features/select/selection-service.spec.ts +25 -19
  508. package/src/features/select/selection-service.ts +25 -22
  509. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +56 -39
  510. package/src/features/tool-feedback/creation-tool-feedback.ts +49 -24
  511. package/src/features/tool-feedback/css-feedback.ts +19 -14
  512. package/src/features/tool-feedback/di.config.ts +15 -14
  513. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +56 -35
  514. package/src/features/tool-feedback/feedback-action-dispatcher.ts +13 -14
  515. package/src/features/tool-feedback/marquee-tool-feedback.ts +103 -0
  516. package/src/features/tool-feedback/model.ts +2 -3
  517. package/src/features/tool-feedback/view.tsx +20 -13
  518. package/src/features/tool-palette/di.config.ts +5 -5
  519. package/src/features/tool-palette/palette-item.ts +5 -7
  520. package/src/features/tool-palette/tool-palette.ts +126 -107
  521. package/src/features/tools/base-glsp-tool.ts +12 -12
  522. package/src/features/tools/change-bounds-tool.ts +83 -53
  523. package/src/features/tools/delete-tool.ts +23 -20
  524. package/src/features/tools/di.config.ts +22 -11
  525. package/src/features/tools/edge-creation-tool.ts +20 -25
  526. package/src/features/tools/edge-edit-tool.ts +43 -46
  527. package/src/features/tools/marquee-mouse-tool.ts +251 -0
  528. package/src/features/tools/marquee-tool.ts +51 -0
  529. package/src/{base/args.ts → features/tools/model.ts} +8 -2
  530. package/src/features/tools/node-creation-tool.ts +18 -22
  531. package/src/features/tools/view.tsx +44 -0
  532. package/src/features/validation/di.config.ts +5 -5
  533. package/src/features/validation/issue-marker.ts +4 -5
  534. package/src/features/validation/marker-navigator.spec.ts +38 -33
  535. package/src/features/validation/marker-navigator.ts +39 -26
  536. package/src/features/validation/validate.ts +25 -59
  537. package/src/features/viewport/di.config.ts +47 -0
  538. package/src/features/viewport/glsp-scroll-mouse-listener.ts +41 -0
  539. package/src/index.ts +54 -37
  540. package/src/lib/model.ts +4 -4
  541. package/src/model-source/glsp-diagram-server.ts +19 -33
  542. package/src/protocol-reexport.ts +64 -0
  543. package/src/utils/argument-utils.ts +130 -0
  544. package/src/utils/layout-utils.ts +19 -11
  545. package/src/utils/marker.ts +8 -32
  546. package/src/utils/smodel-util.ts +28 -22
  547. package/src/utils/viewpoint-util.ts +5 -6
  548. package/src/views/base-view-module.ts +98 -0
  549. package/src/views/compartments.tsx +37 -0
  550. package/src/views/default-types.ts +48 -0
  551. package/src/views/glsp-edge-view.tsx +79 -0
  552. package/src/views/index.ts +22 -0
  553. package/src/views/issue-marker-view.tsx +65 -0
  554. package/src/views/rounded-corner-view.tsx +103 -0
  555. package/src/views/rounded-corner.ts +87 -0
  556. package/lib/base/actions/context-actions.d.ts +0 -36
  557. package/lib/base/actions/context-actions.d.ts.map +0 -1
  558. package/lib/base/actions/context-actions.js +0 -51
  559. package/lib/base/actions/context-actions.js.map +0 -1
  560. package/lib/base/actions/edit-mode-action.d.ts +0 -13
  561. package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
  562. package/lib/base/actions/edit-mode-action.js +0 -56
  563. package/lib/base/actions/edit-mode-action.js.map +0 -1
  564. package/lib/base/actions/edit-validation-actions.d.ts +0 -78
  565. package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
  566. package/lib/base/actions/edit-validation-actions.js +0 -82
  567. package/lib/base/actions/edit-validation-actions.js.map +0 -1
  568. package/lib/base/actions/protocol-actions.d.ts +0 -41
  569. package/lib/base/actions/protocol-actions.d.ts.map +0 -1
  570. package/lib/base/actions/protocol-actions.js +0 -151
  571. package/lib/base/actions/protocol-actions.js.map +0 -1
  572. package/lib/base/args.d.ts.map +0 -1
  573. package/lib/base/args.js +0 -3
  574. package/lib/base/args.js.map +0 -1
  575. package/lib/base/editor-context.d.ts +0 -46
  576. package/lib/base/editor-context.d.ts.map +0 -1
  577. package/lib/base/editor-context.js +0 -174
  578. package/lib/base/editor-context.js.map +0 -1
  579. package/lib/base/operations/operation.d.ts +0 -129
  580. package/lib/base/operations/operation.d.ts.map +0 -1
  581. package/lib/base/operations/operation.js +0 -201
  582. package/lib/base/operations/operation.js.map +0 -1
  583. package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
  584. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
  585. package/lib/features/copy-paste/copy-paste-actions.js +0 -68
  586. package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
  587. package/lib/features/decoration/view.d.ts +0 -8
  588. package/lib/features/decoration/view.d.ts.map +0 -1
  589. package/lib/features/decoration/view.js +0 -80
  590. package/lib/features/decoration/view.js.map +0 -1
  591. package/lib/features/hints/request-type-hints-action.d.ts +0 -32
  592. package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
  593. package/lib/features/hints/request-type-hints-action.js +0 -30
  594. package/lib/features/hints/request-type-hints-action.js.map +0 -1
  595. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
  596. package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
  597. package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
  598. package/lib/features/save/save.d.ts.map +0 -1
  599. package/lib/features/save/save.js +0 -57
  600. package/lib/features/save/save.js.map +0 -1
  601. package/lib/features/undo-redo/model.d.ts +0 -27
  602. package/lib/features/undo-redo/model.d.ts.map +0 -1
  603. package/lib/features/undo-redo/model.js +0 -22
  604. package/lib/features/undo-redo/model.js.map +0 -1
  605. package/lib/model-source/glsp-server-status.d.ts +0 -30
  606. package/lib/model-source/glsp-server-status.d.ts.map +0 -1
  607. package/lib/model-source/glsp-server-status.js +0 -61
  608. package/lib/model-source/glsp-server-status.js.map +0 -1
  609. package/lib/utils/array-utils.d.ts.map +0 -1
  610. package/lib/utils/array-utils.js.map +0 -1
  611. package/src/base/actions/context-actions.ts +0 -43
  612. package/src/base/actions/edit-mode-action.ts +0 -33
  613. package/src/base/actions/edit-validation-actions.ts +0 -102
  614. package/src/base/actions/protocol-actions.ts +0 -82
  615. package/src/base/operations/operation.ts +0 -148
  616. package/src/features/copy-paste/copy-paste-actions.ts +0 -60
  617. package/src/features/decoration/view.tsx +0 -54
  618. package/src/features/hints/request-type-hints-action.ts +0 -36
  619. package/src/model-source/glsp-server-status.ts +0 -38
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,9 +13,9 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable, optional } from "inversify";
16
+ import { Action, ChangeRoutingPointsOperation, ReconnectEdgeOperation } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable, optional } from 'inversify';
17
18
  import {
18
- Action,
19
19
  AnchorComputerRegistry,
20
20
  canEditRouting,
21
21
  Connectable,
@@ -27,22 +27,14 @@ import {
27
27
  SModelRoot,
28
28
  SRoutableElement,
29
29
  SRoutingHandle
30
- } from "sprotty";
31
-
32
- import { DragAwareMouseListener } from "../../base/drag-aware-mouse-listener";
33
- import { ChangeRoutingPointsOperation, ReconnectEdgeOperation } from "../../base/operations/operation";
34
- import { GLSP_TYPES } from "../../base/types";
35
- import { isRoutable, isRoutingHandle } from "../../utils/smodel-util";
36
- import {
37
- isReconnectable,
38
- isReconnectHandle,
39
- isSourceRoutingHandle,
40
- isTargetRoutingHandle,
41
- SReconnectHandle
42
- } from "../reconnect/model";
43
- import { SelectionListener, SelectionService } from "../select/selection-service";
44
- import { DrawFeedbackEdgeAction, feedbackEdgeId, RemoveFeedbackEdgeAction } from "../tool-feedback/creation-tool-feedback";
45
- import { CursorCSS, cursorFeedbackAction } from "../tool-feedback/css-feedback";
30
+ } from 'sprotty';
31
+ import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
32
+ import { GLSP_TYPES } from '../../base/types';
33
+ import { isRoutable, isRoutingHandle } from '../../utils/smodel-util';
34
+ import { isReconnectable, isReconnectHandle, isSourceRoutingHandle, isTargetRoutingHandle, SReconnectHandle } from '../reconnect/model';
35
+ import { SelectionListener, SelectionService } from '../select/selection-service';
36
+ import { DrawFeedbackEdgeAction, feedbackEdgeId, RemoveFeedbackEdgeAction } from '../tool-feedback/creation-tool-feedback';
37
+ import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
46
38
  import {
47
39
  DrawFeedbackEdgeSourceAction,
48
40
  FeedbackEdgeRouteMovingMouseListener,
@@ -51,12 +43,12 @@ import {
51
43
  HideEdgeReconnectHandlesFeedbackAction,
52
44
  ShowEdgeReconnectHandlesFeedbackAction,
53
45
  SwitchRoutingModeAction
54
- } from "../tool-feedback/edge-edit-tool-feedback";
55
- import { BaseGLSPTool } from "./base-glsp-tool";
46
+ } from '../tool-feedback/edge-edit-tool-feedback';
47
+ import { BaseGLSPTool } from './base-glsp-tool';
56
48
 
57
49
  @injectable()
58
50
  export class EdgeEditTool extends BaseGLSPTool {
59
- static ID = "glsp.edge-edit-tool";
51
+ static ID = 'glsp.edge-edit-tool';
60
52
 
61
53
  @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService;
62
54
  @inject(AnchorComputerRegistry) protected anchorRegistry: AnchorComputerRegistry;
@@ -121,7 +113,7 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
121
113
  return edge !== undefined && edge.id !== feedbackEdgeId(edge.root) && isSelected(edge);
122
114
  }
123
115
 
124
- protected setEdgeSelected(edge: SRoutableElement) {
116
+ protected setEdgeSelected(edge: SRoutableElement): void {
125
117
  if (this.edge && this.edge.id !== edge.id) {
126
118
  // reset from a previously selected edge
127
119
  this.reset();
@@ -143,18 +135,22 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
143
135
  return this.edge !== undefined && isSelected(this.edge);
144
136
  }
145
137
 
146
- protected setReconnectHandleSelected(edge: SRoutableElement, reconnectHandle: SReconnectHandle) {
138
+ protected setReconnectHandleSelected(edge: SRoutableElement, reconnectHandle: SReconnectHandle): void {
147
139
  if (this.edge && this.edge.target && this.edge.source) {
148
140
  if (isSourceRoutingHandle(edge, reconnectHandle)) {
149
- this.tool.dispatchFeedback([new HideEdgeReconnectHandlesFeedbackAction(),
150
- cursorFeedbackAction(CursorCSS.EDGE_RECONNECT),
151
- new DrawFeedbackEdgeSourceAction(this.edge.type, this.edge.targetId)]);
152
- this.reconnectMode = "NEW_SOURCE";
141
+ this.tool.dispatchFeedback([
142
+ new HideEdgeReconnectHandlesFeedbackAction(),
143
+ cursorFeedbackAction(CursorCSS.EDGE_RECONNECT),
144
+ new DrawFeedbackEdgeSourceAction(this.edge.type, this.edge.targetId)
145
+ ]);
146
+ this.reconnectMode = 'NEW_SOURCE';
153
147
  } else if (isTargetRoutingHandle(edge, reconnectHandle)) {
154
- this.tool.dispatchFeedback([new HideEdgeReconnectHandlesFeedbackAction(),
155
- cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET),
156
- new DrawFeedbackEdgeAction(this.edge.type, this.edge.sourceId)]);
157
- this.reconnectMode = "NEW_TARGET";
148
+ this.tool.dispatchFeedback([
149
+ new HideEdgeReconnectHandlesFeedbackAction(),
150
+ cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET),
151
+ new DrawFeedbackEdgeAction(this.edge.type, this.edge.sourceId)
152
+ ]);
153
+ this.reconnectMode = 'NEW_TARGET';
158
154
  }
159
155
  }
160
156
  }
@@ -164,10 +160,10 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
164
160
  }
165
161
 
166
162
  protected isReconnectingNewSource(): boolean {
167
- return this.reconnectMode === "NEW_SOURCE";
163
+ return this.reconnectMode === 'NEW_SOURCE';
168
164
  }
169
165
 
170
- protected setRoutingHandleSelected(edge: SRoutableElement, routingHandle: SRoutingHandle) {
166
+ protected setRoutingHandleSelected(edge: SRoutableElement, routingHandle: SRoutingHandle): void {
171
167
  if (this.edge && this.edge.target && this.edge.source) {
172
168
  this.routingHandle = routingHandle;
173
169
  }
@@ -177,15 +173,15 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
177
173
  return this.edge !== undefined && (this.edge.sourceId !== sourceId || this.edge.targetId !== targetId);
178
174
  }
179
175
 
180
- protected setNewConnectable(connectable?: SModelElement & Connectable) {
176
+ protected setNewConnectable(connectable?: SModelElement & Connectable): void {
181
177
  this.newConnectable = connectable;
182
178
  }
183
179
 
184
- protected isReadyToReconnect() {
180
+ protected isReadyToReconnect(): boolean | undefined {
185
181
  return this.edge && this.isReconnecting() && this.newConnectable !== undefined;
186
182
  }
187
183
 
188
- protected isReadyToReroute() {
184
+ protected isReadyToReroute(): boolean {
189
185
  return this.routingHandle !== undefined;
190
186
  }
191
187
 
@@ -235,7 +231,8 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
235
231
  }
236
232
  this.reset();
237
233
  } else if (this.edge && this.routingHandle) {
238
- // 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
234
+ // 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
235
+ // reroute actions
239
236
  const latestEdge = target.index.getById(this.edge.id);
240
237
  if (latestEdge && isRoutable(latestEdge)) {
241
238
  result.push(new ChangeRoutingPointsOperation([{ elementId: latestEdge.id, newRoutingPoints: latestEdge.routingPoints }]));
@@ -251,9 +248,10 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
251
248
  if (!this.newConnectable || currentTarget !== this.newConnectable) {
252
249
  this.setNewConnectable(currentTarget);
253
250
  if (currentTarget) {
254
- if ((this.reconnectMode === 'NEW_SOURCE' && currentTarget.canConnect(this.edge, "source")) ||
255
- (this.reconnectMode === 'NEW_TARGET' && currentTarget.canConnect(this.edge, "target"))) {
256
-
251
+ if (
252
+ (this.reconnectMode === 'NEW_SOURCE' && currentTarget.canConnect(this.edge, 'source')) ||
253
+ (this.reconnectMode === 'NEW_TARGET' && currentTarget.canConnect(this.edge, 'target'))
254
+ ) {
257
255
  this.tool.dispatchFeedback([cursorFeedbackAction(CursorCSS.EDGE_RECONNECT)]);
258
256
  return [];
259
257
  }
@@ -293,25 +291,24 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
293
291
  }
294
292
  }
295
293
 
296
- public reset() {
294
+ public reset(): void {
297
295
  this.resetFeedback();
298
296
  this.resetData();
299
297
  }
300
298
 
301
- protected resetData() {
299
+ protected resetData(): void {
302
300
  this.edge = undefined;
303
301
  this.reconnectMode = undefined;
304
302
  this.newConnectable = undefined;
305
303
  this.routingHandle = undefined;
306
304
  }
307
305
 
308
- protected resetFeedback() {
306
+ protected resetFeedback(): void {
309
307
  const result: Action[] = [];
310
308
  if (this.edge) {
311
309
  result.push(new SwitchRoutingModeAction([], [this.edge.id]));
312
310
  }
313
- result.push(...[new HideEdgeReconnectHandlesFeedbackAction(),
314
- cursorFeedbackAction(), new RemoveFeedbackEdgeAction()]);
311
+ result.push(...[new HideEdgeReconnectHandlesFeedbackAction(), cursorFeedbackAction(), new RemoveFeedbackEdgeAction()]);
315
312
  this.tool.deregisterFeedback(result);
316
313
  this.tool.deregisterFeedbackListeners();
317
314
  }
@@ -0,0 +1,251 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2021 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { Action, Point, SelectAction } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable } from 'inversify';
18
+ import { BoundsAware, EnableDefaultToolsAction, isSelectable, isSelected, KeyListener, SEdge, SModelElement, SNode, TYPES } from 'sprotty';
19
+ import { DOMHelper } from 'sprotty/lib/base/views/dom-helper';
20
+ import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
21
+ import { getAbsolutePosition, toAbsoluteBounds } from '../../utils/viewpoint-util';
22
+ import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
23
+ import { DrawMarqueeAction, RemoveMarqueeAction } from '../tool-feedback/marquee-tool-feedback';
24
+ import { BaseGLSPTool } from '../tools/base-glsp-tool';
25
+
26
+ @injectable()
27
+ export class MarqueeMouseTool extends BaseGLSPTool {
28
+ static ID = 'glsp.marquee-mouse-tool';
29
+
30
+ @inject(TYPES.DOMHelper) protected domHelper: DOMHelper;
31
+
32
+ protected marqueeMouseListener: MarqueeMouseListener;
33
+ protected shiftKeyListener: ShiftKeyListener = new ShiftKeyListener();
34
+
35
+ get id(): string {
36
+ return MarqueeMouseTool.ID;
37
+ }
38
+
39
+ enable(): void {
40
+ this.marqueeMouseListener = new MarqueeMouseListener(this.domHelper);
41
+ this.mouseTool.register(this.marqueeMouseListener);
42
+ this.keyTool.register(this.shiftKeyListener);
43
+ this.dispatchFeedback([cursorFeedbackAction(CursorCSS.MARQUEE)]);
44
+ }
45
+
46
+ disable(): void {
47
+ this.mouseTool.deregister(this.marqueeMouseListener);
48
+ this.keyTool.deregister(this.shiftKeyListener);
49
+ this.deregisterFeedback([cursorFeedbackAction()]);
50
+ }
51
+ }
52
+
53
+ @injectable()
54
+ export class MarqueeMouseListener extends DragAwareMouseListener {
55
+ protected startPoint: Point;
56
+
57
+ protected currentPoint: Point;
58
+
59
+ protected domHelper: DOMHelper;
60
+
61
+ protected previouslySelected: string[];
62
+
63
+ protected isActive = false;
64
+
65
+ constructor(domHelper: DOMHelper) {
66
+ super();
67
+ this.domHelper = domHelper;
68
+ }
69
+
70
+ mouseDown(target: SModelElement, event: MouseEvent): Action[] {
71
+ this.isActive = true;
72
+ this.startPoint = { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y };
73
+ if (event.ctrlKey) {
74
+ this.previouslySelected = Array.from(
75
+ target.root.index
76
+ .all()
77
+ .map(e => e as SModelElement & BoundsAware)
78
+ .filter(e => isSelected(e))
79
+ .map(e => e.id)
80
+ );
81
+ }
82
+ return [];
83
+ }
84
+
85
+ mouseMove(target: SModelElement, event: MouseEvent): Action[] {
86
+ this.currentPoint = { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y };
87
+ if (this.isActive) {
88
+ const nodeIdsSelected = Array.from(
89
+ target.root.index
90
+ .all()
91
+ .map(e => e as SModelElement & BoundsAware)
92
+ .filter(e => isSelectable(e))
93
+ .filter(e => e instanceof SNode)
94
+ .filter(e => this.isNodeMarked(e))
95
+ .map(e => e.id)
96
+ );
97
+ const edgeIdsSelected = this.getMarkedEdges(target.root);
98
+ const selected = nodeIdsSelected.concat(edgeIdsSelected);
99
+ return [
100
+ new SelectAction([], Array.from(target.root.index.all().map(e => e.id))),
101
+ new SelectAction(selected.concat(this.previouslySelected), []),
102
+ new DrawMarqueeAction(this.startPoint, { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y })
103
+ ];
104
+ }
105
+ return [];
106
+ }
107
+
108
+ mouseUp(target: SModelElement, event: MouseEvent): Action[] {
109
+ this.isActive = false;
110
+ if (event.shiftKey) {
111
+ return [new RemoveMarqueeAction()];
112
+ }
113
+ return [new RemoveMarqueeAction(), new EnableDefaultToolsAction()];
114
+ }
115
+
116
+ getMarkedEdges(root: SModelElement): string[] {
117
+ const elements = Array.from(document.querySelectorAll('g'));
118
+ const edges = Array.from(
119
+ root.index
120
+ .all()
121
+ .filter(e => e instanceof SEdge)
122
+ .filter(e => isSelectable(e))
123
+ .map(e => e.id)
124
+ );
125
+ return elements
126
+ .filter(e => edges.includes(this.domHelper.findSModelIdByDOMElement(e)))
127
+ .filter(e => this.isEdgeMarked(e))
128
+ .map(e => this.domHelper.findSModelIdByDOMElement(e));
129
+ }
130
+
131
+ isEdgeMarked(element: SVGElement): boolean {
132
+ if (!element.getAttribute('transform')) {
133
+ if (element.children[0]) {
134
+ const path = element.children[0].getAttribute('d');
135
+ if (path) {
136
+ const points = path.split(/M|L/);
137
+ for (let i = 0; i < points.length - 1; i++) {
138
+ const coord1 = points[i].split(',');
139
+ const coord2 = points[i + 1].split(',');
140
+ const point1 = { x: parseInt(coord1[0], 10), y: parseInt(coord1[1], 10) };
141
+ const point2 = { x: parseInt(coord2[0], 10), y: parseInt(coord2[1], 10) };
142
+ if (this.isLineMarked(point1, point2)) {
143
+ return true;
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ return false;
150
+ }
151
+
152
+ isLineMarked(point1: Point, point2: Point): boolean {
153
+ if (this.pointInRect(point1) || this.pointInRect(point2)) {
154
+ return true;
155
+ }
156
+ if (this.linesIntersect(point1, point2, this.startPoint, { x: this.startPoint.x, y: this.currentPoint.y })) {
157
+ return true;
158
+ }
159
+ if (this.linesIntersect(point1, point2, this.startPoint, { x: this.currentPoint.x, y: this.startPoint.y })) {
160
+ return true;
161
+ }
162
+ if (this.linesIntersect(point1, point2, { x: this.currentPoint.x, y: this.startPoint.y }, this.currentPoint)) {
163
+ return true;
164
+ }
165
+ if (this.linesIntersect(point1, point2, { x: this.startPoint.x, y: this.currentPoint.y }, this.currentPoint)) {
166
+ return true;
167
+ }
168
+ return false;
169
+ }
170
+
171
+ linesIntersect(p1: Point, p2: Point, p3: Point, p4: Point): boolean {
172
+ const tCount = (p1.x - p3.x) * (p3.y - p4.y) - (p1.y - p3.y) * (p3.x - p4.x);
173
+ const tDenom = (p1.x - p2.x) * (p3.y - p4.y) - (p1.y - p2.y) * (p3.x - p4.x);
174
+ const t = tCount / tDenom;
175
+ const uCount = (p2.x - p1.x) * (p1.y - p3.y) - (p2.y - p1.y) * (p1.x - p3.x);
176
+ const uDenom = (p1.x - p2.x) * (p3.y - p4.y) - (p1.y - p2.y) * (p3.x - p4.x);
177
+ const u = uCount / uDenom;
178
+ if (t >= 0.0 && t <= 1.0 && u >= 0.0 && u <= 1.0) {
179
+ return true;
180
+ }
181
+ return false;
182
+ }
183
+
184
+ pointInRect(point: Point): boolean {
185
+ const boolX =
186
+ this.startPoint.x <= this.currentPoint.x
187
+ ? this.isBetween(point.x, this.startPoint.x, this.currentPoint.x)
188
+ : this.isBetween(point.x, this.currentPoint.x, this.startPoint.x);
189
+ const boolY =
190
+ this.startPoint.y <= this.currentPoint.y
191
+ ? this.isBetween(point.y, this.startPoint.y, this.currentPoint.y)
192
+ : this.isBetween(point.y, this.currentPoint.y, this.startPoint.y);
193
+ return boolX && boolY;
194
+ }
195
+
196
+ isNodeMarked(element: SModelElement & BoundsAware): boolean {
197
+ const horizontallyIn =
198
+ this.startPoint.x < this.currentPoint.x
199
+ ? this.isElementBetweenXAxis(element, this.startPoint.x, this.currentPoint.x)
200
+ : this.isElementBetweenXAxis(element, this.currentPoint.x, this.startPoint.x);
201
+ const verticallyIn =
202
+ this.startPoint.y < this.currentPoint.y
203
+ ? this.isElementBetweenYAxis(element, this.startPoint.y, this.currentPoint.y)
204
+ : this.isElementBetweenYAxis(element, this.currentPoint.y, this.startPoint.y);
205
+ if (horizontallyIn && verticallyIn) {
206
+ return true;
207
+ }
208
+ return false;
209
+ }
210
+
211
+ isElementBetweenXAxis(element: SModelElement & BoundsAware, marqueeLeft: number, marqueeRight: number): boolean {
212
+ if (
213
+ this.isBetween(marqueeLeft, toAbsoluteBounds(element).x, toAbsoluteBounds(element).x + toAbsoluteBounds(element).width) ||
214
+ this.isBetween(marqueeRight, toAbsoluteBounds(element).x, toAbsoluteBounds(element).x + toAbsoluteBounds(element).width)
215
+ ) {
216
+ return true;
217
+ }
218
+ const leftEdge = this.isBetween(toAbsoluteBounds(element).x, marqueeLeft, marqueeRight);
219
+ const rightEdge = this.isBetween(toAbsoluteBounds(element).x + toAbsoluteBounds(element).width, marqueeLeft, marqueeRight);
220
+ return leftEdge || rightEdge;
221
+ }
222
+
223
+ isElementBetweenYAxis(element: SModelElement & BoundsAware, marqueeTop: number, marqueeBottom: number): boolean {
224
+ if (
225
+ this.isBetween(marqueeTop, toAbsoluteBounds(element).y, toAbsoluteBounds(element).y + toAbsoluteBounds(element).height) ||
226
+ this.isBetween(marqueeBottom, toAbsoluteBounds(element).y, toAbsoluteBounds(element).y + toAbsoluteBounds(element).height)
227
+ ) {
228
+ return true;
229
+ }
230
+ const topEdge = this.isBetween(toAbsoluteBounds(element).y, marqueeTop, marqueeBottom);
231
+ const bottomEdge = this.isBetween(toAbsoluteBounds(element).y + toAbsoluteBounds(element).height, marqueeTop, marqueeBottom);
232
+ return topEdge || bottomEdge;
233
+ }
234
+
235
+ isBetween(x: number, lower: number, upper: number): boolean {
236
+ if (lower <= x && x <= upper) {
237
+ return true;
238
+ }
239
+ return false;
240
+ }
241
+ }
242
+
243
+ @injectable()
244
+ export class ShiftKeyListener extends KeyListener {
245
+ keyUp(element: SModelElement, event: KeyboardEvent): Action[] {
246
+ if (event.shiftKey) {
247
+ return [];
248
+ }
249
+ return [new RemoveMarqueeAction(), new EnableDefaultToolsAction()];
250
+ }
251
+ }
@@ -0,0 +1,51 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2021 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { Action } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable } from 'inversify';
18
+ import { EnableToolsAction, KeyListener, KeyTool, SModelElement } from 'sprotty';
19
+ import { BaseGLSPTool } from '../tools/base-glsp-tool';
20
+ import { MarqueeMouseTool } from './marquee-mouse-tool';
21
+
22
+ @injectable()
23
+ export class MarqueeTool extends BaseGLSPTool {
24
+ static ID = 'glsp.marquee-tool';
25
+
26
+ protected marqueeKeyListener: MarqueeKeyListener = new MarqueeKeyListener();
27
+
28
+ @inject(KeyTool) protected readonly keytool: KeyTool;
29
+
30
+ get id(): string {
31
+ return MarqueeTool.ID;
32
+ }
33
+
34
+ enable(): void {
35
+ this.keyTool.register(this.marqueeKeyListener);
36
+ }
37
+
38
+ disable(): void {
39
+ this.keyTool.deregister(this.marqueeKeyListener);
40
+ }
41
+ }
42
+
43
+ @injectable()
44
+ export class MarqueeKeyListener extends KeyListener {
45
+ keyDown(element: SModelElement, event: KeyboardEvent): Action[] {
46
+ if (event.shiftKey) {
47
+ return [new EnableToolsAction([MarqueeMouseTool.ID])];
48
+ }
49
+ return [];
50
+ }
51
+ }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020 EclipseSource and others.
2
+ * Copyright (c) 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,4 +13,10 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- export type Args = { [key: string]: string | number | boolean };
16
+ import { boundsFeature, Point, RectangularNode } from 'sprotty';
17
+
18
+ export class MarqueeNode extends RectangularNode {
19
+ static readonly DEFAULT_FEATURES = [boundsFeature];
20
+ startPoint: Point;
21
+ endPoint: Point;
22
+ }
@@ -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,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 { inject, injectable, optional } from "inversify";
16
+ import { Action, CreateNodeOperation, isTriggerNodeCreationAction, TriggerNodeCreationAction } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable, optional } from 'inversify';
17
18
  import {
18
- Action,
19
19
  EnableDefaultToolsAction,
20
20
  EnableToolsAction,
21
21
  findParentByFeature,
@@ -25,22 +25,16 @@ import {
25
25
  SModelElement,
26
26
  SNode,
27
27
  TYPES
28
- } from "sprotty";
29
-
30
- import { DragAwareMouseListener } from "../../base/drag-aware-mouse-listener";
31
- import {
32
- CreateNodeOperation,
33
- isTriggerNodeCreationAction,
34
- TriggerNodeCreationAction
35
- } from "../../base/operations/operation";
36
- import { getAbsolutePosition } from "../../utils/viewpoint-util";
37
- import { Containable, isContainable } from "../hints/model";
38
- import { CursorCSS, cursorFeedbackAction } from "../tool-feedback/css-feedback";
39
- import { BaseGLSPTool } from "./base-glsp-tool";
28
+ } from 'sprotty';
29
+ import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
30
+ import { getAbsolutePosition } from '../../utils/viewpoint-util';
31
+ import { Containable, isContainable } from '../hints/model';
32
+ import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
33
+ import { BaseGLSPTool } from './base-glsp-tool';
40
34
 
41
35
  @injectable()
42
36
  export class NodeCreationTool extends BaseGLSPTool implements IActionHandler {
43
- static ID = "tool_create_node";
37
+ static ID = 'tool_create_node';
44
38
 
45
39
  @inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
46
40
 
@@ -51,7 +45,7 @@ export class NodeCreationTool extends BaseGLSPTool implements IActionHandler {
51
45
  return NodeCreationTool.ID;
52
46
  }
53
47
 
54
- enable() {
48
+ enable(): void {
55
49
  if (this.triggerAction === undefined) {
56
50
  throw new TypeError(`Could not enable tool ${this.id}.The triggerAction cannot be undefined.`);
57
51
  }
@@ -60,7 +54,7 @@ export class NodeCreationTool extends BaseGLSPTool implements IActionHandler {
60
54
  this.dispatchFeedback([cursorFeedbackAction(CursorCSS.NODE_CREATION)]);
61
55
  }
62
56
 
63
- disable() {
57
+ disable(): void {
64
58
  this.mouseTool.deregister(this.creationToolMouseListener);
65
59
  this.deregisterFeedback([cursorFeedbackAction()]);
66
60
  }
@@ -76,17 +70,19 @@ export class NodeCreationTool extends BaseGLSPTool implements IActionHandler {
76
70
  @injectable()
77
71
  export class NodeCreationToolMouseListener extends DragAwareMouseListener {
78
72
  protected container?: SModelElement & Containable;
73
+
79
74
  constructor(protected triggerAction: TriggerNodeCreationAction, protected tool: NodeCreationTool) {
80
75
  super();
81
76
  }
82
77
 
83
- protected creationAllowed(elementTypeId: string) {
78
+ protected creationAllowed(elementTypeId: string): boolean | undefined {
84
79
  return this.container && this.container.isContainableElement(elementTypeId);
85
80
  }
86
81
 
87
- get elementTypeId() {
82
+ get elementTypeId(): string {
88
83
  return this.triggerAction.elementTypeId;
89
84
  }
85
+
90
86
  nonDraggingMouseUp(target: SModelElement, event: MouseEvent): Action[] {
91
87
  const result: Action[] = [];
92
88
  if (this.creationAllowed(this.elementTypeId)) {
@@ -111,8 +107,8 @@ export class NodeCreationToolMouseListener extends DragAwareMouseListener {
111
107
  if (!this.container || currentContainer !== this.container) {
112
108
  this.container = currentContainer;
113
109
  const feedback = this.creationAllowed(this.elementTypeId)
114
- ? cursorFeedbackAction(CursorCSS.NODE_CREATION) :
115
- cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED);
110
+ ? cursorFeedbackAction(CursorCSS.NODE_CREATION)
111
+ : cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED);
116
112
  this.tool.dispatchFeedback([feedback]);
117
113
  }
118
114
  return [];
@@ -0,0 +1,44 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2021 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { injectable } from 'inversify';
17
+ import { VNode } from 'snabbdom';
18
+ import { RectangularNodeView, RenderingContext, svg } from 'sprotty';
19
+
20
+ import { MarqueeNode } from './model';
21
+
22
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
+ const JSX = { createElement: svg };
24
+
25
+ @injectable()
26
+ export class MarqueeView extends RectangularNodeView {
27
+ render(node: MarqueeNode, context: RenderingContext): VNode {
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
+ );
42
+ return graph;
43
+ }
44
+ }