@eclipse-glsp/client 2.2.0-next.328 → 2.2.0-next.330

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 (400) hide show
  1. package/css/change-bounds.css +15 -0
  2. package/css/glsp-sprotty.css +17 -0
  3. package/lib/base/action-dispatcher.js.map +1 -1
  4. package/lib/base/action-handler-registry.js.map +1 -1
  5. package/lib/base/args-feature.js.map +1 -1
  6. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  7. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  8. package/lib/base/command-stack.js.map +1 -1
  9. package/lib/base/drag-aware-mouse-listener.d.ts +5 -2
  10. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  11. package/lib/base/drag-aware-mouse-listener.js +11 -0
  12. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  13. package/lib/base/editor-context-service.js.map +1 -1
  14. package/lib/base/feedback/css-feedback.d.ts +4 -0
  15. package/lib/base/feedback/css-feedback.d.ts.map +1 -1
  16. package/lib/base/feedback/css-feedback.js +4 -0
  17. package/lib/base/feedback/css-feedback.js.map +1 -1
  18. package/lib/base/feedback/feeback-emitter.d.ts +67 -0
  19. package/lib/base/feedback/feeback-emitter.d.ts.map +1 -0
  20. package/lib/base/feedback/feeback-emitter.js +109 -0
  21. package/lib/base/feedback/feeback-emitter.js.map +1 -0
  22. package/lib/base/feedback/feedback-action-dispatcher.d.ts +17 -5
  23. package/lib/base/feedback/feedback-action-dispatcher.d.ts.map +1 -1
  24. package/lib/base/feedback/feedback-action-dispatcher.js +23 -3
  25. package/lib/base/feedback/feedback-action-dispatcher.js.map +1 -1
  26. package/lib/base/feedback/index.d.ts +1 -0
  27. package/lib/base/feedback/index.d.ts.map +1 -1
  28. package/lib/base/feedback/index.js +1 -0
  29. package/lib/base/feedback/index.js.map +1 -1
  30. package/lib/base/focus/focus-tracker.js.map +1 -1
  31. package/lib/base/model/diagram-loader.js.map +1 -1
  32. package/lib/base/model/glsp-model-source.js.map +1 -1
  33. package/lib/base/model/model-initialization-constraint.js.map +1 -1
  34. package/lib/base/model/model-registry.js.map +1 -1
  35. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  36. package/lib/base/selection-service.d.ts +3 -2
  37. package/lib/base/selection-service.d.ts.map +1 -1
  38. package/lib/base/selection-service.js.map +1 -1
  39. package/lib/base/tool-manager/index.d.ts +2 -2
  40. package/lib/base/tool-manager/index.d.ts.map +1 -1
  41. package/lib/base/tool-manager/index.js +2 -2
  42. package/lib/base/tool-manager/index.js.map +1 -1
  43. package/lib/base/tool-manager/tool-manager.js.map +1 -1
  44. package/lib/base/view/mouse-tool.js.map +1 -1
  45. package/lib/base/view/view-registry.js.map +1 -1
  46. package/lib/default-modules.d.ts +1 -1
  47. package/lib/default-modules.js +1 -1
  48. package/lib/default-modules.js.map +1 -1
  49. package/lib/features/accessibility/edge-autocomplete/edge-autocomplete-palette.js.map +1 -1
  50. package/lib/features/accessibility/edge-autocomplete/edge-autocomplete-tool.js.map +1 -1
  51. package/lib/features/accessibility/element-navigation/diagram-navigation-tool.js.map +1 -1
  52. package/lib/features/accessibility/element-navigation/left-right-top-bottom-navigator.js.map +1 -1
  53. package/lib/features/accessibility/element-navigation/local-element-navigator.d.ts +3 -3
  54. package/lib/features/accessibility/element-navigation/local-element-navigator.d.ts.map +1 -1
  55. package/lib/features/accessibility/element-navigation/local-element-navigator.js.map +1 -1
  56. package/lib/features/accessibility/element-navigation/position-navigator.js.map +1 -1
  57. package/lib/features/accessibility/focus-tracker/focus-tracker-tool.js.map +1 -1
  58. package/lib/features/accessibility/global-keylistener-tool.js.map +1 -1
  59. package/lib/features/accessibility/key-shortcut/accessible-key-shortcut-tool.js.map +1 -1
  60. package/lib/features/accessibility/key-shortcut/accessible-key-shortcut.js.map +1 -1
  61. package/lib/features/accessibility/key-shortcut/index.d.ts +2 -2
  62. package/lib/features/accessibility/key-shortcut/index.d.ts.map +1 -1
  63. package/lib/features/accessibility/key-shortcut/index.js +2 -2
  64. package/lib/features/accessibility/key-shortcut/index.js.map +1 -1
  65. package/lib/features/accessibility/keyboard-grid/index.d.ts +2 -2
  66. package/lib/features/accessibility/keyboard-grid/index.d.ts.map +1 -1
  67. package/lib/features/accessibility/keyboard-grid/index.js +2 -2
  68. package/lib/features/accessibility/keyboard-grid/index.js.map +1 -1
  69. package/lib/features/accessibility/keyboard-grid/keyboard-grid.js.map +1 -1
  70. package/lib/features/accessibility/keyboard-grid/keyboard-node-grid.js.map +1 -1
  71. package/lib/features/accessibility/keyboard-pointer/index.d.ts +2 -2
  72. package/lib/features/accessibility/keyboard-pointer/index.d.ts.map +1 -1
  73. package/lib/features/accessibility/keyboard-pointer/index.js +2 -2
  74. package/lib/features/accessibility/keyboard-pointer/index.js.map +1 -1
  75. package/lib/features/accessibility/keyboard-pointer/keyboard-pointer-listener.d.ts +1 -1
  76. package/lib/features/accessibility/keyboard-pointer/keyboard-pointer-listener.d.ts.map +1 -1
  77. package/lib/features/accessibility/keyboard-pointer/keyboard-pointer-listener.js +1 -1
  78. package/lib/features/accessibility/keyboard-pointer/keyboard-pointer-listener.js.map +1 -1
  79. package/lib/features/accessibility/keyboard-pointer/keyboard-pointer.js.map +1 -1
  80. package/lib/features/accessibility/keyboard-tool-palette/index.d.ts +2 -2
  81. package/lib/features/accessibility/keyboard-tool-palette/index.d.ts.map +1 -1
  82. package/lib/features/accessibility/keyboard-tool-palette/index.js +2 -2
  83. package/lib/features/accessibility/keyboard-tool-palette/index.js.map +1 -1
  84. package/lib/features/accessibility/keyboard-tool-palette/keyboard-tool-palette.js.map +1 -1
  85. package/lib/features/accessibility/move-zoom/move-handler.d.ts +4 -2
  86. package/lib/features/accessibility/move-zoom/move-handler.d.ts.map +1 -1
  87. package/lib/features/accessibility/move-zoom/move-handler.js +10 -4
  88. package/lib/features/accessibility/move-zoom/move-handler.js.map +1 -1
  89. package/lib/features/accessibility/move-zoom/zoom-handler.js.map +1 -1
  90. package/lib/features/accessibility/resize-key-tool/resize-key-handler.d.ts +4 -2
  91. package/lib/features/accessibility/resize-key-tool/resize-key-handler.d.ts.map +1 -1
  92. package/lib/features/accessibility/resize-key-tool/resize-key-handler.js +11 -3
  93. package/lib/features/accessibility/resize-key-tool/resize-key-handler.js.map +1 -1
  94. package/lib/features/accessibility/resize-key-tool/resize-key-tool.js.map +1 -1
  95. package/lib/features/accessibility/search/index.d.ts +2 -2
  96. package/lib/features/accessibility/search/index.d.ts.map +1 -1
  97. package/lib/features/accessibility/search/index.js +2 -2
  98. package/lib/features/accessibility/search/index.js.map +1 -1
  99. package/lib/features/accessibility/search/search-palette.js.map +1 -1
  100. package/lib/features/accessibility/search/search-tool.js.map +1 -1
  101. package/lib/features/accessibility/toast/toast-tool.js.map +1 -1
  102. package/lib/features/accessibility/view-key-tools/deselect-key-tool.js.map +1 -1
  103. package/lib/features/accessibility/view-key-tools/movement-key-tool.js.map +1 -1
  104. package/lib/features/accessibility/view-key-tools/zoom-key-tool.js.map +1 -1
  105. package/lib/features/bounds/freeform-layout.js.map +1 -1
  106. package/lib/features/bounds/glsp-hidden-bounds-updater.js.map +1 -1
  107. package/lib/features/bounds/hbox-layout.js.map +1 -1
  108. package/lib/features/bounds/layouter.js.map +1 -1
  109. package/lib/features/bounds/local-bounds.js.map +1 -1
  110. package/lib/features/bounds/set-bounds-feedback-command.js.map +1 -1
  111. package/lib/features/bounds/vbox-layout.js.map +1 -1
  112. package/lib/features/change-bounds/model.d.ts +8 -8
  113. package/lib/features/change-bounds/model.d.ts.map +1 -1
  114. package/lib/features/change-bounds/model.js +17 -5
  115. package/lib/features/change-bounds/model.js.map +1 -1
  116. package/lib/features/change-bounds/movement-restrictor.d.ts +3 -2
  117. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  118. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  119. package/lib/features/change-bounds/point-position-updater.js.map +1 -1
  120. package/lib/features/change-bounds/position-snapper.js.map +1 -1
  121. package/lib/features/command-palette/command-palette-module.d.ts +1 -1
  122. package/lib/features/command-palette/command-palette-module.js +1 -1
  123. package/lib/features/command-palette/command-palette.js.map +1 -1
  124. package/lib/features/command-palette/index.d.ts +1 -1
  125. package/lib/features/command-palette/index.js +1 -1
  126. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  127. package/lib/features/context-menu/context-menu-module.js.map +1 -1
  128. package/lib/features/context-menu/glsp-context-menu-mouse-listener.js.map +1 -1
  129. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  130. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  131. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  132. package/lib/features/copy-paste/copy-paste-standalone.js.map +1 -1
  133. package/lib/features/decoration/decoration-placer.js.map +1 -1
  134. package/lib/features/element-template/add-template-element.js.map +1 -1
  135. package/lib/features/element-template/mouse-tracking-element-position-listener.d.ts +15 -5
  136. package/lib/features/element-template/mouse-tracking-element-position-listener.d.ts.map +1 -1
  137. package/lib/features/element-template/mouse-tracking-element-position-listener.js +27 -38
  138. package/lib/features/element-template/mouse-tracking-element-position-listener.js.map +1 -1
  139. package/lib/features/element-template/remove-template-element.js.map +1 -1
  140. package/lib/features/export/glsp-svg-exporter.js.map +1 -1
  141. package/lib/features/helper-lines/helper-line-feedback.js.map +1 -1
  142. package/lib/features/helper-lines/helper-line-manager-default.d.ts +4 -2
  143. package/lib/features/helper-lines/helper-line-manager-default.d.ts.map +1 -1
  144. package/lib/features/helper-lines/helper-line-manager-default.js +8 -12
  145. package/lib/features/helper-lines/helper-line-manager-default.js.map +1 -1
  146. package/lib/features/helper-lines/index.d.ts +2 -2
  147. package/lib/features/helper-lines/index.d.ts.map +1 -1
  148. package/lib/features/helper-lines/index.js +2 -2
  149. package/lib/features/helper-lines/index.js.map +1 -1
  150. package/lib/features/helper-lines/model.js.map +1 -1
  151. package/lib/features/helper-lines/view.js.map +1 -1
  152. package/lib/features/hints/type-hint-provider.d.ts +3 -0
  153. package/lib/features/hints/type-hint-provider.d.ts.map +1 -1
  154. package/lib/features/hints/type-hint-provider.js +10 -1
  155. package/lib/features/hints/type-hint-provider.js.map +1 -1
  156. package/lib/features/hover/hover.js.map +1 -1
  157. package/lib/features/hover/index.d.ts +2 -2
  158. package/lib/features/hover/index.d.ts.map +1 -1
  159. package/lib/features/hover/index.js +2 -2
  160. package/lib/features/hover/index.js.map +1 -1
  161. package/lib/features/index.d.ts +2 -1
  162. package/lib/features/index.d.ts.map +1 -1
  163. package/lib/features/index.js +2 -1
  164. package/lib/features/index.js.map +1 -1
  165. package/lib/features/label-edit/edit-label-validator.js.map +1 -1
  166. package/lib/features/label-edit-ui/label-edit-ui.js.map +1 -1
  167. package/lib/features/layout/layout-elements-action.js.map +1 -1
  168. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  169. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  170. package/lib/features/reconnect/model.js.map +1 -1
  171. package/lib/features/routing/glsp-manhattan-edge-router.js.map +1 -1
  172. package/lib/features/save/save-keylistener.js.map +1 -1
  173. package/lib/features/select/select-mouse-listener.d.ts +4 -3
  174. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  175. package/lib/features/select/select-mouse-listener.js.map +1 -1
  176. package/lib/features/source-model-watcher/source-model-changed-action-handler.js.map +1 -1
  177. package/lib/features/status/status-overlay.js.map +1 -1
  178. package/lib/features/svg-metadata/metadata-placer.js.map +1 -1
  179. package/lib/features/tool-palette/index.d.ts +2 -2
  180. package/lib/features/tool-palette/index.d.ts.map +1 -1
  181. package/lib/features/tool-palette/index.js +2 -2
  182. package/lib/features/tool-palette/index.js.map +1 -1
  183. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  184. package/lib/features/tools/base-tools.d.ts +23 -4
  185. package/lib/features/tools/base-tools.d.ts.map +1 -1
  186. package/lib/features/tools/base-tools.js +11 -6
  187. package/lib/features/tools/base-tools.js.map +1 -1
  188. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.d.ts +1 -35
  189. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.d.ts.map +1 -1
  190. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.js +5 -206
  191. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.js.map +1 -1
  192. package/lib/features/tools/change-bounds/change-bounds-tool-module.d.ts +1 -0
  193. package/lib/features/tools/change-bounds/change-bounds-tool-module.d.ts.map +1 -1
  194. package/lib/features/tools/change-bounds/change-bounds-tool-module.js +1 -0
  195. package/lib/features/tools/change-bounds/change-bounds-tool-module.js.map +1 -1
  196. package/lib/features/tools/change-bounds/change-bounds-tool-move-feedback.d.ts +67 -0
  197. package/lib/features/tools/change-bounds/change-bounds-tool-move-feedback.d.ts.map +1 -0
  198. package/lib/features/tools/change-bounds/change-bounds-tool-move-feedback.js +227 -0
  199. package/lib/features/tools/change-bounds/change-bounds-tool-move-feedback.js.map +1 -0
  200. package/lib/features/tools/change-bounds/change-bounds-tool.d.ts +34 -24
  201. package/lib/features/tools/change-bounds/change-bounds-tool.d.ts.map +1 -1
  202. package/lib/features/tools/change-bounds/change-bounds-tool.js +172 -180
  203. package/lib/features/tools/change-bounds/change-bounds-tool.js.map +1 -1
  204. package/lib/features/tools/change-bounds/index.d.ts +3 -2
  205. package/lib/features/tools/change-bounds/index.d.ts.map +1 -1
  206. package/lib/features/tools/change-bounds/index.js +3 -2
  207. package/lib/features/tools/change-bounds/index.js.map +1 -1
  208. package/lib/features/tools/change-bounds/view.d.ts +1 -1
  209. package/lib/features/tools/change-bounds/view.d.ts.map +1 -1
  210. package/lib/features/tools/change-bounds/view.js +3 -0
  211. package/lib/features/tools/change-bounds/view.js.map +1 -1
  212. package/lib/features/tools/deletion/delete-tool.d.ts +16 -1
  213. package/lib/features/tools/deletion/delete-tool.d.ts.map +1 -1
  214. package/lib/features/tools/deletion/delete-tool.js +5 -2
  215. package/lib/features/tools/deletion/delete-tool.js.map +1 -1
  216. package/lib/features/tools/edge-creation/dangling-edge-feedback.d.ts +17 -1
  217. package/lib/features/tools/edge-creation/dangling-edge-feedback.d.ts.map +1 -1
  218. package/lib/features/tools/edge-creation/dangling-edge-feedback.js +3 -1
  219. package/lib/features/tools/edge-creation/dangling-edge-feedback.js.map +1 -1
  220. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.d.ts +4 -2
  221. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.d.ts.map +1 -1
  222. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.js +5 -8
  223. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.js.map +1 -1
  224. package/lib/features/tools/edge-creation/edge-creation-tool.d.ts +20 -2
  225. package/lib/features/tools/edge-creation/edge-creation-tool.d.ts.map +1 -1
  226. package/lib/features/tools/edge-creation/edge-creation-tool.js +23 -18
  227. package/lib/features/tools/edge-creation/edge-creation-tool.js.map +1 -1
  228. package/lib/features/tools/edge-creation/index.d.ts +2 -2
  229. package/lib/features/tools/edge-creation/index.d.ts.map +1 -1
  230. package/lib/features/tools/edge-creation/index.js +2 -2
  231. package/lib/features/tools/edge-creation/index.js.map +1 -1
  232. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.d.ts +3 -1
  233. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.d.ts.map +1 -1
  234. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.js +5 -8
  235. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.js.map +1 -1
  236. package/lib/features/tools/edge-edit/edge-edit-tool.d.ts +4 -4
  237. package/lib/features/tools/edge-edit/edge-edit-tool.d.ts.map +1 -1
  238. package/lib/features/tools/edge-edit/edge-edit-tool.js +27 -44
  239. package/lib/features/tools/edge-edit/edge-edit-tool.js.map +1 -1
  240. package/lib/features/tools/edge-edit/index.d.ts +2 -2
  241. package/lib/features/tools/edge-edit/index.d.ts.map +1 -1
  242. package/lib/features/tools/edge-edit/index.js +2 -2
  243. package/lib/features/tools/edge-edit/index.js.map +1 -1
  244. package/lib/features/tools/marquee-selection/index.d.ts +2 -2
  245. package/lib/features/tools/marquee-selection/index.d.ts.map +1 -1
  246. package/lib/features/tools/marquee-selection/index.js +2 -2
  247. package/lib/features/tools/marquee-selection/index.js.map +1 -1
  248. package/lib/features/tools/marquee-selection/marquee-behavior.js.map +1 -1
  249. package/lib/features/tools/marquee-selection/marquee-mouse-tool.d.ts +3 -2
  250. package/lib/features/tools/marquee-selection/marquee-mouse-tool.d.ts.map +1 -1
  251. package/lib/features/tools/marquee-selection/marquee-mouse-tool.js +4 -2
  252. package/lib/features/tools/marquee-selection/marquee-mouse-tool.js.map +1 -1
  253. package/lib/features/tools/marquee-selection/marquee-tool-feedback.js.map +1 -1
  254. package/lib/features/tools/marquee-selection/marquee-tool.js.map +1 -1
  255. package/lib/features/tools/node-creation/node-creation-tool.d.ts +14 -5
  256. package/lib/features/tools/node-creation/node-creation-tool.d.ts.map +1 -1
  257. package/lib/features/tools/node-creation/node-creation-tool.js +58 -24
  258. package/lib/features/tools/node-creation/node-creation-tool.js.map +1 -1
  259. package/lib/features/tools/tool-focus-loss-module.js.map +1 -1
  260. package/lib/features/undo-redo/undo-redo-key-listener.js.map +1 -1
  261. package/lib/features/validation/issue-marker.js.map +1 -1
  262. package/lib/features/validation/marker-navigator.d.ts +7 -6
  263. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  264. package/lib/features/validation/marker-navigator.js.map +1 -1
  265. package/lib/features/validation/validate.d.ts +2 -5
  266. package/lib/features/validation/validate.d.ts.map +1 -1
  267. package/lib/features/validation/validate.js +4 -16
  268. package/lib/features/validation/validate.js.map +1 -1
  269. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  270. package/lib/features/viewport/reposition.js.map +1 -1
  271. package/lib/features/viewport/viewport-handler.js.map +1 -1
  272. package/lib/model.js.map +1 -1
  273. package/lib/standalone-modules.js.map +1 -1
  274. package/lib/utils/argument-utils.js.map +1 -1
  275. package/lib/utils/geometry-util.d.ts +1 -1
  276. package/lib/utils/geometry-util.d.ts.map +1 -1
  277. package/lib/utils/gmodel-util.d.ts +27 -2
  278. package/lib/utils/gmodel-util.d.ts.map +1 -1
  279. package/lib/utils/gmodel-util.js +30 -1
  280. package/lib/utils/gmodel-util.js.map +1 -1
  281. package/lib/utils/html-utils.js.map +1 -1
  282. package/lib/utils/layout-utils.d.ts +8 -7
  283. package/lib/utils/layout-utils.d.ts.map +1 -1
  284. package/lib/utils/layout-utils.js +2 -4
  285. package/lib/utils/layout-utils.js.map +1 -1
  286. package/lib/utils/marker.js.map +1 -1
  287. package/lib/utils/viewpoint-util.d.ts +4 -4
  288. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  289. package/lib/utils/viewpoint-util.js.map +1 -1
  290. package/lib/views/compartments.js.map +1 -1
  291. package/lib/views/gedge-view.js.map +1 -1
  292. package/lib/views/glsp-projection-view.js.map +1 -1
  293. package/lib/views/index.d.ts +2 -2
  294. package/lib/views/index.d.ts.map +1 -1
  295. package/lib/views/index.js +2 -2
  296. package/lib/views/index.js.map +1 -1
  297. package/lib/views/issue-marker-view.js.map +1 -1
  298. package/lib/views/rounded-corner-view.js.map +1 -1
  299. package/lib/views/rounded-corner.d.ts +1 -1
  300. package/lib/views/rounded-corner.d.ts.map +1 -1
  301. package/lib/views/rounded-corner.js.map +1 -1
  302. package/package.json +3 -3
  303. package/src/base/drag-aware-mouse-listener.ts +16 -2
  304. package/src/base/feedback/css-feedback.ts +4 -0
  305. package/src/base/feedback/feeback-emitter.ts +112 -0
  306. package/src/base/feedback/feedback-action-dispatcher.ts +41 -6
  307. package/src/base/feedback/index.ts +1 -0
  308. package/src/base/selection-service.spec.ts +5 -0
  309. package/src/base/selection-service.ts +2 -3
  310. package/src/features/accessibility/element-navigation/local-element-navigator.ts +4 -4
  311. package/src/features/accessibility/move-zoom/move-handler.ts +11 -6
  312. package/src/features/accessibility/resize-key-tool/resize-key-handler.ts +11 -7
  313. package/src/features/change-bounds/model.ts +25 -13
  314. package/src/features/change-bounds/movement-restrictor.ts +6 -22
  315. package/src/features/element-template/mouse-tracking-element-position-listener.ts +55 -45
  316. package/src/features/helper-lines/helper-line-feedback.ts +50 -57
  317. package/src/features/helper-lines/helper-line-manager-default.ts +12 -21
  318. package/src/features/helper-lines/model.ts +6 -25
  319. package/src/features/hints/type-hint-provider.spec.ts +4 -1
  320. package/src/features/hints/type-hint-provider.ts +9 -2
  321. package/src/features/layout/layout-elements-action.ts +10 -7
  322. package/src/features/select/select-mouse-listener.ts +4 -3
  323. package/src/features/tools/base-tools.ts +15 -8
  324. package/src/features/tools/change-bounds/change-bounds-tool-feedback.ts +6 -232
  325. package/src/features/tools/change-bounds/change-bounds-tool-module.ts +1 -0
  326. package/src/features/tools/change-bounds/change-bounds-tool-move-feedback.ts +254 -0
  327. package/src/features/tools/change-bounds/change-bounds-tool.ts +217 -226
  328. package/src/features/tools/change-bounds/index.ts +1 -0
  329. package/src/features/tools/change-bounds/view.tsx +4 -1
  330. package/src/features/tools/deletion/delete-tool.ts +6 -6
  331. package/src/features/tools/edge-creation/dangling-edge-feedback.ts +7 -4
  332. package/src/features/tools/edge-creation/edge-creation-tool-feedback.ts +9 -9
  333. package/src/features/tools/edge-creation/edge-creation-tool.ts +33 -23
  334. package/src/features/tools/edge-edit/edge-edit-tool-feedback.ts +8 -8
  335. package/src/features/tools/edge-edit/edge-edit-tool.ts +42 -49
  336. package/src/features/tools/marquee-selection/marquee-mouse-tool.ts +7 -6
  337. package/src/features/tools/node-creation/node-creation-tool.ts +69 -25
  338. package/src/features/validation/marker-navigator.ts +6 -8
  339. package/src/features/validation/validate.ts +5 -20
  340. package/src/features/viewport/reposition.ts +11 -14
  341. package/src/utils/geometry-util.ts +45 -64
  342. package/src/utils/gmodel-util.ts +45 -2
  343. package/src/utils/layout-utils.ts +9 -20
  344. package/src/utils/viewpoint-util.ts +13 -25
  345. package/lib/base/action-dispatcher.spec.d.ts +0 -2
  346. package/lib/base/action-dispatcher.spec.d.ts.map +0 -1
  347. package/lib/base/action-dispatcher.spec.js +0 -78
  348. package/lib/base/action-dispatcher.spec.js.map +0 -1
  349. package/lib/base/model/model-initialization-constraint.spec.d.ts +0 -2
  350. package/lib/base/model/model-initialization-constraint.spec.d.ts.map +0 -1
  351. package/lib/base/model/model-initialization-constraint.spec.js +0 -97
  352. package/lib/base/model/model-initialization-constraint.spec.js.map +0 -1
  353. package/lib/base/selection-service.spec.d.ts +0 -2
  354. package/lib/base/selection-service.spec.d.ts.map +0 -1
  355. package/lib/base/selection-service.spec.js +0 -287
  356. package/lib/base/selection-service.spec.js.map +0 -1
  357. package/lib/features/bounds/freeform-layout.spec.d.ts +0 -3
  358. package/lib/features/bounds/freeform-layout.spec.d.ts.map +0 -1
  359. package/lib/features/bounds/freeform-layout.spec.js +0 -201
  360. package/lib/features/bounds/freeform-layout.spec.js.map +0 -1
  361. package/lib/features/bounds/hbox-layout.spec.d.ts +0 -3
  362. package/lib/features/bounds/hbox-layout.spec.d.ts.map +0 -1
  363. package/lib/features/bounds/hbox-layout.spec.js +0 -160
  364. package/lib/features/bounds/hbox-layout.spec.js.map +0 -1
  365. package/lib/features/bounds/layouter-test-util.spec.d.ts +0 -32
  366. package/lib/features/bounds/layouter-test-util.spec.d.ts.map +0 -1
  367. package/lib/features/bounds/layouter-test-util.spec.js +0 -96
  368. package/lib/features/bounds/layouter-test-util.spec.js.map +0 -1
  369. package/lib/features/bounds/vbox-layout.spec.d.ts +0 -3
  370. package/lib/features/bounds/vbox-layout.spec.d.ts.map +0 -1
  371. package/lib/features/bounds/vbox-layout.spec.js +0 -160
  372. package/lib/features/bounds/vbox-layout.spec.js.map +0 -1
  373. package/lib/features/change-bounds/snap.spec.d.ts +0 -17
  374. package/lib/features/change-bounds/snap.spec.d.ts.map +0 -1
  375. package/lib/features/change-bounds/snap.spec.js +0 -83
  376. package/lib/features/change-bounds/snap.spec.js.map +0 -1
  377. package/lib/features/hints/type-hint-provider.spec.d.ts +0 -2
  378. package/lib/features/hints/type-hint-provider.spec.d.ts.map +0 -1
  379. package/lib/features/hints/type-hint-provider.spec.js +0 -333
  380. package/lib/features/hints/type-hint-provider.spec.js.map +0 -1
  381. package/lib/features/layout/layout-elements-action.spec.d.ts +0 -3
  382. package/lib/features/layout/layout-elements-action.spec.d.ts.map +0 -1
  383. package/lib/features/layout/layout-elements-action.spec.js +0 -329
  384. package/lib/features/layout/layout-elements-action.spec.js.map +0 -1
  385. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +0 -3
  386. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +0 -1
  387. package/lib/features/navigation/navigation-target-resolver.spec.js +0 -53
  388. package/lib/features/navigation/navigation-target-resolver.spec.js.map +0 -1
  389. package/lib/features/tools/marquee-selection/marquee-behavior.spec.d.ts +0 -17
  390. package/lib/features/tools/marquee-selection/marquee-behavior.spec.d.ts.map +0 -1
  391. package/lib/features/tools/marquee-selection/marquee-behavior.spec.js +0 -165
  392. package/lib/features/tools/marquee-selection/marquee-behavior.spec.js.map +0 -1
  393. package/lib/features/validation/marker-navigator.spec.d.ts +0 -3
  394. package/lib/features/validation/marker-navigator.spec.d.ts.map +0 -1
  395. package/lib/features/validation/marker-navigator.spec.js +0 -166
  396. package/lib/features/validation/marker-navigator.spec.js.map +0 -1
  397. package/lib/utils/gmodel-util.spec.d.ts +0 -2
  398. package/lib/utils/gmodel-util.spec.d.ts.map +0 -1
  399. package/lib/utils/gmodel-util.spec.js +0 -186
  400. package/lib/utils/gmodel-util.spec.js.map +0 -1
@@ -13,24 +13,26 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable } from 'inversify';
17
16
  import {
18
17
  Action,
19
18
  BindingContext,
20
19
  CommandExecutionContext,
21
20
  CommandReturn,
22
21
  GChildElement,
22
+ GDanglingAnchor,
23
+ GEdgeSchema,
23
24
  GModelRoot,
24
25
  GRoutableElement,
25
26
  TYPES,
26
27
  configureCommand,
27
28
  configureView,
29
+ deletableFeature,
28
30
  findParentByFeature,
29
31
  isBoundsAware,
30
- isConnectable,
31
- GDanglingAnchor,
32
- GEdgeSchema
32
+ isConnectable
33
33
  } from '@eclipse-glsp/sprotty';
34
+ import { inject, injectable } from 'inversify';
35
+ import { feedbackFeature } from '../../../base';
34
36
  import { FeedbackCommand } from '../../../base/feedback/feedback-command';
35
37
  import { isRoutable } from '../../../utils/gmodel-util';
36
38
  import { toAbsolutePosition } from '../../../utils/viewpoint-util';
@@ -103,6 +105,7 @@ export class RemoveFeedbackEdgeCommand extends FeedbackCommand {
103
105
  }
104
106
 
105
107
  export class FeedbackEdgeEnd extends GDanglingAnchor {
108
+ static override readonly DEFAULT_FEATURES = [deletableFeature, feedbackFeature];
106
109
  static readonly TYPE = 'feedback-edge-end';
107
110
  constructor(
108
111
  readonly sourceId: string,
@@ -18,27 +18,31 @@ import {
18
18
  AnchorComputerRegistry,
19
19
  Bounds,
20
20
  Disposable,
21
+ GConnectableElement,
22
+ GModelElement,
21
23
  MouseListener,
22
24
  MoveAction,
23
25
  Point,
24
26
  PolylineEdgeRouter,
25
- GConnectableElement,
26
- GModelElement,
27
27
  findChildrenAtPosition,
28
28
  findParentByFeature,
29
29
  isBoundsAware,
30
30
  isConnectable
31
31
  } from '@eclipse-glsp/sprotty';
32
+ import { FeedbackEmitter } from '../../../base';
32
33
  import { IFeedbackActionDispatcher } from '../../../base/feedback/feedback-action-dispatcher';
33
34
  import { absoluteToParent, getAbsolutePosition, toAbsoluteBounds } from '../../../utils/viewpoint-util';
34
35
  import { FeedbackEdgeEnd, feedbackEdgeEndId } from './dangling-edge-feedback';
35
36
 
36
37
  export class FeedbackEdgeEndMovingMouseListener extends MouseListener implements Disposable {
38
+ protected feedback: FeedbackEmitter;
39
+
37
40
  constructor(
38
41
  protected anchorRegistry: AnchorComputerRegistry,
39
42
  protected feedbackDispatcher: IFeedbackActionDispatcher
40
43
  ) {
41
44
  super();
45
+ this.feedback = feedbackDispatcher.createEmitter();
42
46
  }
43
47
 
44
48
  override mouseMove(target: GModelElement, event: MouseEvent): Action[] {
@@ -57,14 +61,10 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener implements
57
61
  if (endAtMousePosition instanceof GConnectableElement && edge.source && isBoundsAware(edge.source)) {
58
62
  const anchor = this.computeAbsoluteAnchor(endAtMousePosition, Bounds.center(toAbsoluteBounds(edge.source)));
59
63
  if (Point.euclideanDistance(anchor, edgeEnd.position) > 1) {
60
- this.feedbackDispatcher.registerFeedback(this, [
61
- MoveAction.create([{ elementId: edgeEnd.id, toPosition: anchor }], { animate: false })
62
- ]);
64
+ this.feedback.add(MoveAction.create([{ elementId: edgeEnd.id, toPosition: anchor }], { animate: false })).submit();
63
65
  }
64
66
  } else {
65
- this.feedbackDispatcher.registerFeedback(this, [
66
- MoveAction.create([{ elementId: edgeEnd.id, toPosition: position }], { animate: false })
67
- ]);
67
+ this.feedback.add(MoveAction.create([{ elementId: edgeEnd.id, toPosition: position }], { animate: false })).submit();
68
68
  }
69
69
 
70
70
  return [];
@@ -87,6 +87,6 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener implements
87
87
  }
88
88
 
89
89
  dispose(): void {
90
- this.feedbackDispatcher.deregisterFeedback(this);
90
+ this.feedback.dispose();
91
91
  }
92
92
  }
@@ -13,28 +13,29 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable } from 'inversify';
17
16
  import {
18
17
  Action,
19
18
  AnchorComputerRegistry,
20
19
  CreateEdgeOperation,
21
- RequestCheckEdgeAction,
22
20
  GModelElement,
21
+ RequestCheckEdgeAction,
23
22
  TYPES,
24
23
  TriggerEdgeCreationAction,
25
24
  findParentByFeature,
26
25
  isConnectable,
27
26
  isCtrlOrCmd
28
27
  } from '@eclipse-glsp/sprotty';
28
+ import { inject, injectable } from 'inversify';
29
+ import { FeedbackEmitter } from '../../../base';
29
30
  import { GLSPActionDispatcher } from '../../../base/action-dispatcher';
30
31
  import { DragAwareMouseListener } from '../../../base/drag-aware-mouse-listener';
31
32
  import { CursorCSS, cursorFeedbackAction } from '../../../base/feedback/css-feedback';
32
33
  import { EnableDefaultToolsAction } from '../../../base/tool-manager/tool';
34
+ import { GEdge } from '../../../model';
33
35
  import { ITypeHintProvider } from '../../hints/type-hint-provider';
34
36
  import { BaseCreationTool } from '../base-tools';
35
37
  import { DrawFeedbackEdgeAction, RemoveFeedbackEdgeAction } from './dangling-edge-feedback';
36
38
  import { FeedbackEdgeEndMovingMouseListener } from './edge-creation-tool-feedback';
37
- import { GEdge } from '../../../model';
38
39
 
39
40
  /**
40
41
  * Tool to create connections in a Diagram, by selecting a source and target node.
@@ -55,16 +56,16 @@ export class EdgeCreationTool extends BaseCreationTool<TriggerEdgeCreationAction
55
56
 
56
57
  doEnable(): void {
57
58
  const mouseMovingFeedback = new FeedbackEdgeEndMovingMouseListener(this.anchorRegistry, this.feedbackDispatcher);
59
+ const toolFeedback = this.createFeedbackEmitter()
60
+ .add(cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED), cursorFeedbackAction())
61
+ .submit();
62
+ const creationListener = new EdgeCreationToolMouseListener(this.triggerAction, this.actionDispatcher, this.typeHintProvider, this);
58
63
  this.toDisposeOnDisable.push(
59
64
  mouseMovingFeedback,
60
- this.mouseTool.registerListener(
61
- new EdgeCreationToolMouseListener(this.triggerAction, this.actionDispatcher, this.typeHintProvider, this)
62
- ),
63
65
  this.mouseTool.registerListener(mouseMovingFeedback),
64
- this.registerFeedback([cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED)], this, [
65
- RemoveFeedbackEdgeAction.create(),
66
- cursorFeedbackAction()
67
- ])
66
+ creationListener,
67
+ this.mouseTool.registerListener(creationListener),
68
+ toolFeedback
68
69
  );
69
70
  }
70
71
  }
@@ -77,6 +78,8 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
77
78
  protected allowedTarget = false;
78
79
  protected proxyEdge: GEdge;
79
80
  protected pendingDynamicCheck = false;
81
+ protected cursorFeedback: FeedbackEmitter;
82
+ protected feedbackEdgeFeedback: FeedbackEmitter;
80
83
 
81
84
  constructor(
82
85
  protected triggerAction: TriggerEdgeCreationAction,
@@ -87,14 +90,8 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
87
90
  super();
88
91
  this.proxyEdge = new GEdge();
89
92
  this.proxyEdge.type = triggerAction.elementTypeId;
90
- }
91
-
92
- protected reinitialize(): void {
93
- this.source = undefined;
94
- this.target = undefined;
95
- this.currentTarget = undefined;
96
- this.allowedTarget = false;
97
- this.tool.registerFeedback([RemoveFeedbackEdgeAction.create()]);
93
+ this.cursorFeedback = tool.createFeedbackEmitter();
94
+ this.feedbackEdgeFeedback = tool.createFeedbackEmitter();
98
95
  }
99
96
 
100
97
  override nonDraggingMouseUp(_element: GModelElement, event: MouseEvent): Action[] {
@@ -103,9 +100,12 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
103
100
  if (!this.isSourceSelected()) {
104
101
  if (this.currentTarget && this.allowedTarget) {
105
102
  this.source = this.currentTarget.id;
106
- this.tool.registerFeedback([
107
- DrawFeedbackEdgeAction.create({ elementTypeId: this.triggerAction.elementTypeId, sourceId: this.source })
108
- ]);
103
+ this.feedbackEdgeFeedback
104
+ .add(
105
+ DrawFeedbackEdgeAction.create({ elementTypeId: this.triggerAction.elementTypeId, sourceId: this.source }),
106
+ RemoveFeedbackEdgeAction.create()
107
+ )
108
+ .submit();
109
109
  }
110
110
  } else if (this.currentTarget && this.allowedTarget) {
111
111
  this.target = this.currentTarget.id;
@@ -122,11 +122,11 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
122
122
  if (!isCtrlOrCmd(event)) {
123
123
  result.push(EnableDefaultToolsAction.create());
124
124
  } else {
125
- this.reinitialize();
125
+ this.dispose();
126
126
  }
127
127
  }
128
128
  } else if (event.button === 2) {
129
- this.reinitialize();
129
+ this.dispose();
130
130
  result.push(EnableDefaultToolsAction.create());
131
131
  }
132
132
  return result;
@@ -203,4 +203,14 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
203
203
  const typeHint = this.typeHintProvider.getEdgeTypeHint(edgeTypeId);
204
204
  return typeHint?.dynamic ?? false;
205
205
  }
206
+
207
+ override dispose(): void {
208
+ this.source = undefined;
209
+ this.target = undefined;
210
+ this.currentTarget = undefined;
211
+ this.allowedTarget = false;
212
+ this.feedbackEdgeFeedback.dispose();
213
+ this.cursorFeedback.dispose();
214
+ super.dispose();
215
+ }
206
216
  }
@@ -40,16 +40,17 @@ import {
40
40
  isSelected
41
41
  } from '@eclipse-glsp/sprotty';
42
42
  import { inject, injectable } from 'inversify';
43
+ import { FeedbackEmitter } from '../../../base';
43
44
  import { IFeedbackActionDispatcher } from '../../../base/feedback/feedback-action-dispatcher';
44
45
  import { FeedbackCommand } from '../../../base/feedback/feedback-command';
45
46
  import { forEachElement, isRoutable, isRoutingHandle } from '../../../utils/gmodel-util';
46
47
  import { getAbsolutePosition, toAbsoluteBounds } from '../../../utils/viewpoint-util';
48
+ import { PointPositionUpdater } from '../../change-bounds/point-position-updater';
47
49
  import { PositionSnapper } from '../../change-bounds/position-snapper';
48
50
  import { useSnap } from '../../change-bounds/snap';
49
51
  import { addReconnectHandles, removeReconnectHandles } from '../../reconnect/model';
50
52
  import { FeedbackEdgeEnd, feedbackEdgeEndId, feedbackEdgeId } from '../edge-creation/dangling-edge-feedback';
51
53
  import { FeedbackEdgeEndMovingMouseListener } from '../edge-creation/edge-creation-tool-feedback';
52
- import { PointPositionUpdater } from '../../change-bounds/point-position-updater';
53
54
 
54
55
  /**
55
56
  * RECONNECT HANDLES FEEDBACK
@@ -198,11 +199,14 @@ export class FeedbackEdgeTargetMovingMouseListener extends FeedbackEdgeEndMoving
198
199
  }
199
200
 
200
201
  export class FeedbackEdgeSourceMovingMouseListener extends MouseListener implements Disposable {
202
+ protected feedback: FeedbackEmitter;
203
+
201
204
  constructor(
202
205
  protected anchorRegistry: AnchorComputerRegistry,
203
206
  protected feedbackDispatcher: IFeedbackActionDispatcher
204
207
  ) {
205
208
  super();
209
+ this.feedback = feedbackDispatcher.createEmitter();
206
210
  }
207
211
 
208
212
  override mouseMove(target: GModelElement, event: MouseEvent): Action[] {
@@ -221,14 +225,10 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener impleme
221
225
  if (endAtMousePosition instanceof GConnectableElement && edge.target && isBoundsAware(edge.target)) {
222
226
  const anchor = this.computeAbsoluteAnchor(endAtMousePosition, Bounds.center(edge.target.bounds));
223
227
  if (Point.euclideanDistance(anchor, edgeEnd.position) > 1) {
224
- this.feedbackDispatcher.registerFeedback(this, [
225
- MoveAction.create([{ elementId: edgeEnd.id, toPosition: anchor }], { animate: false })
226
- ]);
228
+ this.feedback.add(MoveAction.create([{ elementId: edgeEnd.id, toPosition: anchor }], { animate: false })).submit();
227
229
  }
228
230
  } else {
229
- this.feedbackDispatcher.registerFeedback(this, [
230
- MoveAction.create([{ elementId: edgeEnd.id, toPosition: position }], { animate: false })
231
- ]);
231
+ this.feedback.add(MoveAction.create([{ elementId: edgeEnd.id, toPosition: position }], { animate: false })).submit();
232
232
  }
233
233
 
234
234
  return [];
@@ -250,7 +250,7 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener impleme
250
250
  }
251
251
 
252
252
  dispose(): void {
253
- this.feedbackDispatcher.deregisterFeedback(this);
253
+ this.feedback.dispose();
254
254
  }
255
255
  }
256
256
 
@@ -18,7 +18,6 @@ import {
18
18
  AnchorComputerRegistry,
19
19
  ChangeRoutingPointsOperation,
20
20
  Connectable,
21
- Disposable,
22
21
  EdgeRouterRegistry,
23
22
  GModelElement,
24
23
  GModelRoot,
@@ -31,6 +30,7 @@ import {
31
30
  isSelected
32
31
  } from '@eclipse-glsp/sprotty';
33
32
  import { inject, injectable, optional } from 'inversify';
33
+ import { FeedbackEmitter } from '../../../base';
34
34
  import { DragAwareMouseListener } from '../../../base/drag-aware-mouse-listener';
35
35
  import { CursorCSS, cursorFeedbackAction } from '../../../base/feedback/css-feedback';
36
36
  import { ISelectionListener, SelectionService } from '../../../base/selection-service';
@@ -76,7 +76,7 @@ export class EdgeEditTool extends BaseEditTool {
76
76
  this.feedbackMovingListener = new FeedbackEdgeRouteMovingMouseListener(this.positionSnapper, this.edgeRouterRegistry);
77
77
 
78
78
  this.toDisposeOnDisable.push(
79
- Disposable.create(() => this.edgeEditListener.reset()),
79
+ this.edgeEditListener,
80
80
  this.mouseTool.registerListener(this.edgeEditListener),
81
81
  this.feedbackEdgeSourceMovingListener,
82
82
  this.feedbackEdgeTargetMovingListener,
@@ -110,8 +110,11 @@ export class EdgeEditListener extends DragAwareMouseListener implements ISelecti
110
110
  // active reconnect handle data
111
111
  protected reconnectMode?: 'NEW_SOURCE' | 'NEW_TARGET';
112
112
 
113
+ protected editFeedback: FeedbackEmitter;
114
+
113
115
  constructor(protected tool: EdgeEditTool) {
114
116
  super();
117
+ this.editFeedback = this.tool.createFeedbackEmitter();
115
118
  }
116
119
 
117
120
  protected isValidEdge(edge?: GRoutableElement): edge is GRoutableElement {
@@ -119,21 +122,21 @@ export class EdgeEditListener extends DragAwareMouseListener implements ISelecti
119
122
  }
120
123
 
121
124
  protected setEdgeSelected(edge: GRoutableElement): void {
122
- if (this.edge && this.edge.id !== edge.id) {
123
- // reset from a previously selected edge
124
- this.reset();
125
- }
126
-
127
125
  this.edge = edge;
128
126
  // note: order is important here as we want the reconnect handles to cover the routing handles
129
- const feedbackActions = [];
130
127
  if (canEditRouting(edge)) {
131
- feedbackActions.push(SwitchRoutingModeAction.create({ elementsToActivate: [this.edge.id] }));
128
+ this.editFeedback.add(
129
+ SwitchRoutingModeAction.create({ elementsToActivate: [this.edge.id] }),
130
+ SwitchRoutingModeAction.create({ elementsToDeactivate: [this.edge.id] })
131
+ );
132
132
  }
133
133
  if (isReconnectable(edge)) {
134
- feedbackActions.push(ShowEdgeReconnectHandlesFeedbackAction.create(this.edge.id));
134
+ this.editFeedback.add(
135
+ ShowEdgeReconnectHandlesFeedbackAction.create(this.edge.id),
136
+ HideEdgeReconnectHandlesFeedbackAction.create()
137
+ );
135
138
  }
136
- this.tool.registerFeedback(feedbackActions);
139
+ this.editFeedback.submit();
137
140
  }
138
141
 
139
142
  protected isEdgeSelected(): boolean {
@@ -142,19 +145,24 @@ export class EdgeEditListener extends DragAwareMouseListener implements ISelecti
142
145
 
143
146
  protected setReconnectHandleSelected(edge: GRoutableElement, reconnectHandle: GReconnectHandle): void {
144
147
  if (this.edge && this.edge.target && this.edge.source) {
148
+ this.editFeedback.dispose();
145
149
  if (isSourceRoutingHandle(edge, reconnectHandle)) {
146
- this.tool.registerFeedback([
147
- HideEdgeReconnectHandlesFeedbackAction.create(),
148
- cursorFeedbackAction(CursorCSS.EDGE_RECONNECT),
149
- DrawFeedbackEdgeSourceAction.create({ elementTypeId: this.edge.type, targetId: this.edge.targetId })
150
- ]);
150
+ this.editFeedback
151
+ .add(cursorFeedbackAction(CursorCSS.EDGE_RECONNECT), cursorFeedbackAction())
152
+ .add(
153
+ DrawFeedbackEdgeSourceAction.create({ elementTypeId: this.edge.type, targetId: this.edge.targetId }),
154
+ RemoveFeedbackEdgeAction.create()
155
+ )
156
+ .submit();
151
157
  this.reconnectMode = 'NEW_SOURCE';
152
158
  } else if (isTargetRoutingHandle(edge, reconnectHandle)) {
153
- this.tool.registerFeedback([
154
- HideEdgeReconnectHandlesFeedbackAction.create(),
155
- cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET),
156
- DrawFeedbackEdgeAction.create({ elementTypeId: this.edge.type, sourceId: this.edge.sourceId })
157
- ]);
159
+ this.editFeedback
160
+ .add(cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET), cursorFeedbackAction())
161
+ .add(
162
+ DrawFeedbackEdgeAction.create({ elementTypeId: this.edge.type, sourceId: this.edge.sourceId }),
163
+ RemoveFeedbackEdgeAction.create()
164
+ )
165
+ .submit();
158
166
  this.reconnectMode = 'NEW_TARGET';
159
167
  }
160
168
  }
@@ -204,22 +212,20 @@ export class EdgeEditListener extends DragAwareMouseListener implements ISelecti
204
212
  this.setRoutingHandleSelected(edge, routingHandle);
205
213
  } else if (this.isValidEdge(edge)) {
206
214
  // PHASE 1: Select edge
215
+ this.dispose();
207
216
  this.tool.registerFeedbackListeners();
208
217
  this.setEdgeSelected(edge);
209
218
  }
210
219
  } else if (event.button === 2) {
211
- this.reset();
220
+ this.dispose();
212
221
  }
213
222
  return result;
214
223
  }
215
224
 
216
- override mouseMove(target: GModelElement, event: MouseEvent): Action[] {
217
- const result = super.mouseMove(target, event);
218
- if (this.isMouseDrag) {
219
- // reset any selected connectables when we are dragging, maybe the user is just panning
220
- this.setNewConnectable(undefined);
221
- }
222
- return result;
225
+ protected override draggingMouseMove(target: GModelElement, event: MouseEvent): Action[] {
226
+ // reset any selected connectables when we are dragging, maybe the user is just panning
227
+ this.setNewConnectable(undefined);
228
+ return super.draggingMouseMove(target, event);
223
229
  }
224
230
 
225
231
  override mouseUp(target: GModelElement, event: MouseEvent): Action[] {
@@ -234,7 +240,7 @@ export class EdgeEditListener extends DragAwareMouseListener implements ISelecti
234
240
  if (this.requiresReconnect(sourceElementId, targetElementId)) {
235
241
  result.push(ReconnectEdgeOperation.create({ edgeElementId: this.edge.id, sourceElementId, targetElementId }));
236
242
  }
237
- this.reset();
243
+ this.dispose();
238
244
  } else if (this.edge && this.routingHandle) {
239
245
  // 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
240
246
  // reroute actions
@@ -258,11 +264,11 @@ export class EdgeEditListener extends DragAwareMouseListener implements ISelecti
258
264
  (this.reconnectMode === 'NEW_SOURCE' && currentTarget.canConnect(this.edge, 'source')) ||
259
265
  (this.reconnectMode === 'NEW_TARGET' && currentTarget.canConnect(this.edge, 'target'))
260
266
  ) {
261
- this.tool.registerFeedback([cursorFeedbackAction(CursorCSS.EDGE_RECONNECT)]);
267
+ this.editFeedback.add(cursorFeedbackAction(CursorCSS.EDGE_RECONNECT), cursorFeedbackAction()).submit();
262
268
  return [];
263
269
  }
264
270
  }
265
- this.tool.registerFeedback([cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED)]);
271
+ this.editFeedback.add(cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED), cursorFeedbackAction()).submit();
266
272
  }
267
273
  }
268
274
  return [];
@@ -292,30 +298,17 @@ export class EdgeEditListener extends DragAwareMouseListener implements ISelecti
292
298
  }
293
299
  }
294
300
  }
295
-
296
- this.reset();
301
+ this.dispose();
297
302
  }
298
303
  }
299
304
 
300
- public reset(): void {
301
- this.resetFeedback();
302
- this.resetData();
303
- }
304
-
305
- protected resetData(): void {
305
+ override dispose(): void {
306
306
  this.edge = undefined;
307
307
  this.reconnectMode = undefined;
308
308
  this.newConnectable = undefined;
309
309
  this.routingHandle = undefined;
310
- }
311
-
312
- protected resetFeedback(): void {
313
- const result: Action[] = [];
314
- if (this.edge) {
315
- result.push(SwitchRoutingModeAction.create({ elementsToDeactivate: [this.edge.id] }));
316
- }
317
- result.push(...[HideEdgeReconnectHandlesFeedbackAction.create(), cursorFeedbackAction(), RemoveFeedbackEdgeAction.create()]);
318
- this.tool.deregisterFeedback(undefined, result);
310
+ this.editFeedback.dispose();
319
311
  this.tool.deregisterFeedbackListeners();
312
+ super.dispose();
320
313
  }
321
314
  }
@@ -15,7 +15,6 @@
15
15
  ********************************************************************************/
16
16
  import {
17
17
  Action,
18
- BoundsAware,
19
18
  DOMHelper,
20
19
  GModelElement,
21
20
  GModelRoot,
@@ -30,11 +29,12 @@ import { inject, injectable, optional } from 'inversify';
30
29
  import { DragAwareMouseListener } from '../../../base/drag-aware-mouse-listener';
31
30
  import { CursorCSS, cursorFeedbackAction } from '../../../base/feedback/css-feedback';
32
31
  import { EnableDefaultToolsAction } from '../../../base/tool-manager/tool';
32
+ import { GEdge } from '../../../model';
33
+ import { BoundsAwareModelElement, SelectableBoundsAware, isSelectableAndBoundsAware } from '../../../utils';
33
34
  import { getAbsolutePosition, toAbsoluteBounds } from '../../../utils/viewpoint-util';
34
35
  import { BaseEditTool } from '../base-tools';
35
36
  import { IMarqueeBehavior, MarqueeUtil } from './marquee-behavior';
36
37
  import { RemoveMarqueeAction } from './marquee-tool-feedback';
37
- import { GEdge } from '../../../model';
38
38
 
39
39
  @injectable()
40
40
  export class MarqueeMouseTool extends BaseEditTool {
@@ -53,7 +53,7 @@ export class MarqueeMouseTool extends BaseEditTool {
53
53
  this.toDisposeOnDisable.push(
54
54
  this.mouseTool.registerListener(new MarqueeMouseListener(this.domHelper, this.editorContext.modelRoot, this.marqueeBehavior)),
55
55
  this.keyTool.registerListener(this.shiftKeyListener),
56
- this.registerFeedback([cursorFeedbackAction(CursorCSS.MARQUEE)], this, [cursorFeedbackAction()])
56
+ this.createFeedbackEmitter().add(cursorFeedbackAction(CursorCSS.MARQUEE), cursorFeedbackAction()).submit()
57
57
  );
58
58
  }
59
59
  }
@@ -61,7 +61,7 @@ export class MarqueeMouseTool extends BaseEditTool {
61
61
  export class MarqueeMouseListener extends DragAwareMouseListener {
62
62
  protected domHelper: DOMHelper;
63
63
  protected marqueeUtil: MarqueeUtil;
64
- protected nodes: (GModelElement & BoundsAware)[];
64
+ protected nodes: BoundsAwareModelElement[];
65
65
  protected edges: SVGGElement[];
66
66
  protected previouslySelected: string[];
67
67
  protected isActive = false;
@@ -73,7 +73,7 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
73
73
  this.nodes = Array.from(
74
74
  root.index
75
75
  .all()
76
- .map(e => e as GModelElement & BoundsAware)
76
+ .map(e => e as BoundsAwareModelElement)
77
77
  .filter(e => isSelectable(e))
78
78
  .filter(e => e instanceof GNode)
79
79
  );
@@ -94,7 +94,8 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
94
94
  this.previouslySelected = Array.from(
95
95
  target.root.index
96
96
  .all()
97
- .map(e => e as GModelElement & BoundsAware)
97
+ .filter(isSelectableAndBoundsAware)
98
+ .map(e => e as SelectableBoundsAware)
98
99
  .filter(e => isSelected(e))
99
100
  .map(e => e.id)
100
101
  );