@eclipse-glsp/client 0.9.0-next.c5944e10

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 (602) hide show
  1. package/LICENSE +277 -0
  2. package/README.md +12 -0
  3. package/css/command-palette.css +58 -0
  4. package/css/decoration.css +37 -0
  5. package/css/glsp-sprotty.css +106 -0
  6. package/css/tool-palette.css +138 -0
  7. package/lib/base/action-dispatcher.d.ts +25 -0
  8. package/lib/base/action-dispatcher.d.ts.map +1 -0
  9. package/lib/base/action-dispatcher.js +110 -0
  10. package/lib/base/action-dispatcher.js.map +1 -0
  11. package/lib/base/actions/context-actions.d.ts +36 -0
  12. package/lib/base/actions/context-actions.d.ts.map +1 -0
  13. package/lib/base/actions/context-actions.js +45 -0
  14. package/lib/base/actions/context-actions.js.map +1 -0
  15. package/lib/base/actions/edit-mode-action.d.ts +13 -0
  16. package/lib/base/actions/edit-mode-action.d.ts.map +1 -0
  17. package/lib/base/actions/edit-mode-action.js +52 -0
  18. package/lib/base/actions/edit-mode-action.js.map +1 -0
  19. package/lib/base/actions/edit-validation-actions.d.ts +78 -0
  20. package/lib/base/actions/edit-validation-actions.d.ts.map +1 -0
  21. package/lib/base/actions/edit-validation-actions.js +77 -0
  22. package/lib/base/actions/edit-validation-actions.js.map +1 -0
  23. package/lib/base/actions/focus-change-action.d.ts +24 -0
  24. package/lib/base/actions/focus-change-action.d.ts.map +1 -0
  25. package/lib/base/actions/focus-change-action.js +16 -0
  26. package/lib/base/actions/focus-change-action.js.map +1 -0
  27. package/lib/base/args.d.ts +24 -0
  28. package/lib/base/args.d.ts.map +1 -0
  29. package/lib/base/args.js +8 -0
  30. package/lib/base/args.js.map +1 -0
  31. package/lib/base/auto-complete/auto-complete-actions.d.ts +21 -0
  32. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -0
  33. package/lib/base/auto-complete/auto-complete-actions.js +8 -0
  34. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -0
  35. package/lib/base/auto-complete/auto-complete-widget.d.ts +88 -0
  36. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -0
  37. package/lib/base/auto-complete/auto-complete-widget.js +233 -0
  38. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -0
  39. package/lib/base/auto-complete/validation-decorator.d.ts +47 -0
  40. package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -0
  41. package/lib/base/auto-complete/validation-decorator.js +113 -0
  42. package/lib/base/auto-complete/validation-decorator.js.map +1 -0
  43. package/lib/base/command-stack.d.ts +7 -0
  44. package/lib/base/command-stack.d.ts.map +1 -0
  45. package/lib/base/command-stack.js +49 -0
  46. package/lib/base/command-stack.js.map +1 -0
  47. package/lib/base/di.config.d.ts +28 -0
  48. package/lib/base/di.config.d.ts.map +1 -0
  49. package/lib/base/di.config.js +81 -0
  50. package/lib/base/di.config.js.map +1 -0
  51. package/lib/base/drag-aware-mouse-listener.d.ts +36 -0
  52. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -0
  53. package/lib/base/drag-aware-mouse-listener.js +66 -0
  54. package/lib/base/drag-aware-mouse-listener.js.map +1 -0
  55. package/lib/base/editor-context.d.ts +46 -0
  56. package/lib/base/editor-context.d.ts.map +1 -0
  57. package/lib/base/editor-context.js +110 -0
  58. package/lib/base/editor-context.js.map +1 -0
  59. package/lib/base/focus-tracker.d.ts +9 -0
  60. package/lib/base/focus-tracker.d.ts.map +1 -0
  61. package/lib/base/focus-tracker.js +65 -0
  62. package/lib/base/focus-tracker.js.map +1 -0
  63. package/lib/base/model/model-registry.d.ts +5 -0
  64. package/lib/base/model/model-registry.d.ts.map +1 -0
  65. package/lib/base/model/model-registry.js +43 -0
  66. package/lib/base/model/model-registry.js.map +1 -0
  67. package/lib/base/model/update-model-command.d.ts +26 -0
  68. package/lib/base/model/update-model-command.d.ts.map +1 -0
  69. package/lib/base/model/update-model-command.js +132 -0
  70. package/lib/base/model/update-model-command.js.map +1 -0
  71. package/lib/base/model-initialization-constraint.d.ts +39 -0
  72. package/lib/base/model-initialization-constraint.d.ts.map +1 -0
  73. package/lib/base/model-initialization-constraint.js +106 -0
  74. package/lib/base/model-initialization-constraint.js.map +1 -0
  75. package/lib/base/operations/operation.d.ts +135 -0
  76. package/lib/base/operations/operation.d.ts.map +1 -0
  77. package/lib/base/operations/operation.js +182 -0
  78. package/lib/base/operations/operation.js.map +1 -0
  79. package/lib/base/selection-clearing-mouse-listener.d.ts +17 -0
  80. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -0
  81. package/lib/base/selection-clearing-mouse-listener.js +55 -0
  82. package/lib/base/selection-clearing-mouse-listener.js.map +1 -0
  83. package/lib/base/source-uri-aware.d.ts +20 -0
  84. package/lib/base/source-uri-aware.d.ts.map +1 -0
  85. package/lib/base/source-uri-aware.js +26 -0
  86. package/lib/base/source-uri-aware.js.map +1 -0
  87. package/lib/base/tool-manager/glsp-tool-manager.d.ts +22 -0
  88. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -0
  89. package/lib/base/tool-manager/glsp-tool-manager.js +110 -0
  90. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -0
  91. package/lib/base/types.d.ts +38 -0
  92. package/lib/base/types.d.ts.map +1 -0
  93. package/lib/base/types.js +41 -0
  94. package/lib/base/types.js.map +1 -0
  95. package/lib/base/view/view-registry.d.ts +5 -0
  96. package/lib/base/view/view-registry.d.ts.map +1 -0
  97. package/lib/base/view/view-registry.js +43 -0
  98. package/lib/base/view/view-registry.js.map +1 -0
  99. package/lib/features/change-bounds/model.d.ts +38 -0
  100. package/lib/features/change-bounds/model.d.ts.map +1 -0
  101. package/lib/features/change-bounds/model.js +61 -0
  102. package/lib/features/change-bounds/model.js.map +1 -0
  103. package/lib/features/change-bounds/movement-restrictor.d.ts +14 -0
  104. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -0
  105. package/lib/features/change-bounds/movement-restrictor.js +90 -0
  106. package/lib/features/change-bounds/movement-restrictor.js.map +1 -0
  107. package/lib/features/change-bounds/snap.d.ts +7 -0
  108. package/lib/features/change-bounds/snap.d.ts.map +1 -0
  109. package/lib/features/change-bounds/snap.js +44 -0
  110. package/lib/features/change-bounds/snap.js.map +1 -0
  111. package/lib/features/command-palette/command-palette-tool.d.ts +12 -0
  112. package/lib/features/command-palette/command-palette-tool.d.ts.map +1 -0
  113. package/lib/features/command-palette/command-palette-tool.js +63 -0
  114. package/lib/features/command-palette/command-palette-tool.js.map +1 -0
  115. package/lib/features/command-palette/di.config.d.ts +20 -0
  116. package/lib/features/command-palette/di.config.d.ts.map +1 -0
  117. package/lib/features/command-palette/di.config.js +33 -0
  118. package/lib/features/command-palette/di.config.js.map +1 -0
  119. package/lib/features/command-palette/server-command-palette-provider.d.ts +15 -0
  120. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -0
  121. package/lib/features/command-palette/server-command-palette-provider.js +66 -0
  122. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -0
  123. package/lib/features/context-menu/delete-element-context-menu.d.ts +8 -0
  124. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -0
  125. package/lib/features/context-menu/delete-element-context-menu.js +55 -0
  126. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -0
  127. package/lib/features/context-menu/di.config.d.ts +19 -0
  128. package/lib/features/context-menu/di.config.d.ts.map +1 -0
  129. package/lib/features/context-menu/di.config.js +36 -0
  130. package/lib/features/context-menu/di.config.js.map +1 -0
  131. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +9 -0
  132. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -0
  133. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +65 -0
  134. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -0
  135. package/lib/features/context-menu/server-context-menu-provider.d.ts +13 -0
  136. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -0
  137. package/lib/features/context-menu/server-context-menu-provider.js +63 -0
  138. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -0
  139. package/lib/features/copy-paste/copy-paste-actions.d.ts +50 -0
  140. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +1 -0
  141. package/lib/features/copy-paste/copy-paste-actions.js +58 -0
  142. package/lib/features/copy-paste/copy-paste-actions.js.map +1 -0
  143. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +32 -0
  144. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -0
  145. package/lib/features/copy-paste/copy-paste-context-menu.js +151 -0
  146. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -0
  147. package/lib/features/copy-paste/copy-paste-handler.d.ts +50 -0
  148. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -0
  149. package/lib/features/copy-paste/copy-paste-handler.js +149 -0
  150. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -0
  151. package/lib/features/copy-paste/di.config.d.ts +24 -0
  152. package/lib/features/copy-paste/di.config.d.ts.map +1 -0
  153. package/lib/features/copy-paste/di.config.js +40 -0
  154. package/lib/features/copy-paste/di.config.js.map +1 -0
  155. package/lib/features/decoration/decoration-placer.d.ts +6 -0
  156. package/lib/features/decoration/decoration-placer.d.ts.map +1 -0
  157. package/lib/features/decoration/decoration-placer.js +47 -0
  158. package/lib/features/decoration/decoration-placer.js.map +1 -0
  159. package/lib/features/decoration/di.config.d.ts +20 -0
  160. package/lib/features/decoration/di.config.d.ts.map +1 -0
  161. package/lib/features/decoration/di.config.js +27 -0
  162. package/lib/features/decoration/di.config.js.map +1 -0
  163. package/lib/features/edit-label/di.config.d.ts +19 -0
  164. package/lib/features/edit-label/di.config.d.ts.map +1 -0
  165. package/lib/features/edit-label/di.config.js +30 -0
  166. package/lib/features/edit-label/di.config.js.map +1 -0
  167. package/lib/features/edit-label/edit-label-tool.d.ts +13 -0
  168. package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -0
  169. package/lib/features/edit-label/edit-label-tool.js +55 -0
  170. package/lib/features/edit-label/edit-label-tool.js.map +1 -0
  171. package/lib/features/edit-label/edit-label-validator.d.ts +20 -0
  172. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -0
  173. package/lib/features/edit-label/edit-label-validator.js +111 -0
  174. package/lib/features/edit-label/edit-label-validator.js.map +1 -0
  175. package/lib/features/hints/di.config.d.ts +19 -0
  176. package/lib/features/hints/di.config.d.ts.map +1 -0
  177. package/lib/features/hints/di.config.js +30 -0
  178. package/lib/features/hints/di.config.js.map +1 -0
  179. package/lib/features/hints/model.d.ts +26 -0
  180. package/lib/features/hints/model.d.ts.map +1 -0
  181. package/lib/features/hints/model.js +14 -0
  182. package/lib/features/hints/model.js.map +1 -0
  183. package/lib/features/hints/request-type-hints-action.d.ts +32 -0
  184. package/lib/features/hints/request-type-hints-action.d.ts.map +1 -0
  185. package/lib/features/hints/request-type-hints-action.js +26 -0
  186. package/lib/features/hints/request-type-hints-action.js.map +1 -0
  187. package/lib/features/hints/type-hints.d.ts +75 -0
  188. package/lib/features/hints/type-hints.d.ts.map +1 -0
  189. package/lib/features/hints/type-hints.js +199 -0
  190. package/lib/features/hints/type-hints.js.map +1 -0
  191. package/lib/features/hover/di.config.d.ts +19 -0
  192. package/lib/features/hover/di.config.d.ts.map +1 -0
  193. package/lib/features/hover/di.config.js +46 -0
  194. package/lib/features/hover/di.config.js.map +1 -0
  195. package/lib/features/hover/hover.d.ts +11 -0
  196. package/lib/features/hover/hover.d.ts.map +1 -0
  197. package/lib/features/hover/hover.js +88 -0
  198. package/lib/features/hover/hover.js.map +1 -0
  199. package/lib/features/layout/di.config.d.ts +19 -0
  200. package/lib/features/layout/di.config.d.ts.map +1 -0
  201. package/lib/features/layout/di.config.js +26 -0
  202. package/lib/features/layout/di.config.js.map +1 -0
  203. package/lib/features/layout/layout-commands.d.ts +137 -0
  204. package/lib/features/layout/layout-commands.d.ts.map +1 -0
  205. package/lib/features/layout/layout-commands.js +411 -0
  206. package/lib/features/layout/layout-commands.js.map +1 -0
  207. package/lib/features/layout/layout-commands.spec.d.ts +18 -0
  208. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -0
  209. package/lib/features/layout/layout-commands.spec.js +297 -0
  210. package/lib/features/layout/layout-commands.spec.js.map +1 -0
  211. package/lib/features/model-source-watcher/di.config.d.ts +19 -0
  212. package/lib/features/model-source-watcher/di.config.d.ts.map +1 -0
  213. package/lib/features/model-source-watcher/di.config.js +26 -0
  214. package/lib/features/model-source-watcher/di.config.js.map +1 -0
  215. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +23 -0
  216. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -0
  217. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +83 -0
  218. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -0
  219. package/lib/features/model-source-watcher/model-source-changed-action.d.ts +24 -0
  220. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +1 -0
  221. package/lib/features/model-source-watcher/model-source-changed-action.js +16 -0
  222. package/lib/features/model-source-watcher/model-source-changed-action.js.map +1 -0
  223. package/lib/features/mouse-tool/di.config.d.ts +19 -0
  224. package/lib/features/mouse-tool/di.config.d.ts.map +1 -0
  225. package/lib/features/mouse-tool/di.config.js +28 -0
  226. package/lib/features/mouse-tool/di.config.js.map +1 -0
  227. package/lib/features/mouse-tool/mouse-tool.d.ts +19 -0
  228. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -0
  229. package/lib/features/mouse-tool/mouse-tool.js +140 -0
  230. package/lib/features/mouse-tool/mouse-tool.js.map +1 -0
  231. package/lib/features/navigation/di.config.d.ts +18 -0
  232. package/lib/features/navigation/di.config.d.ts.map +1 -0
  233. package/lib/features/navigation/di.config.js +31 -0
  234. package/lib/features/navigation/di.config.js.map +1 -0
  235. package/lib/features/navigation/navigation-action-handler.d.ts +117 -0
  236. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -0
  237. package/lib/features/navigation/navigation-action-handler.js +293 -0
  238. package/lib/features/navigation/navigation-action-handler.js.map +1 -0
  239. package/lib/features/navigation/navigation-target-resolver.d.ts +55 -0
  240. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -0
  241. package/lib/features/navigation/navigation-target-resolver.js +157 -0
  242. package/lib/features/navigation/navigation-target-resolver.js.map +1 -0
  243. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +18 -0
  244. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -0
  245. package/lib/features/navigation/navigation-target-resolver.spec.js +54 -0
  246. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -0
  247. package/lib/features/rank/model.d.ts +22 -0
  248. package/lib/features/rank/model.d.ts.map +1 -0
  249. package/lib/features/rank/model.js +28 -0
  250. package/lib/features/rank/model.js.map +1 -0
  251. package/lib/features/reconnect/model.d.ts +30 -0
  252. package/lib/features/reconnect/model.d.ts.map +1 -0
  253. package/lib/features/reconnect/model.js +66 -0
  254. package/lib/features/reconnect/model.js.map +1 -0
  255. package/lib/features/save/di.config.d.ts +23 -0
  256. package/lib/features/save/di.config.d.ts.map +1 -0
  257. package/lib/features/save/di.config.js +29 -0
  258. package/lib/features/save/di.config.js.map +1 -0
  259. package/lib/features/save/model.d.ts +22 -0
  260. package/lib/features/save/model.d.ts.map +1 -0
  261. package/lib/features/save/model.js +9 -0
  262. package/lib/features/save/model.js.map +1 -0
  263. package/lib/features/save/save.d.ts +27 -0
  264. package/lib/features/save/save.d.ts.map +1 -0
  265. package/lib/features/save/save.js +42 -0
  266. package/lib/features/save/save.js.map +1 -0
  267. package/lib/features/select/di.config.d.ts +19 -0
  268. package/lib/features/select/di.config.d.ts.map +1 -0
  269. package/lib/features/select/di.config.js +35 -0
  270. package/lib/features/select/di.config.js.map +1 -0
  271. package/lib/features/select/select-feedback-action.d.ts +34 -0
  272. package/lib/features/select/select-feedback-action.d.ts.map +1 -0
  273. package/lib/features/select/select-feedback-action.js +97 -0
  274. package/lib/features/select/select-feedback-action.js.map +1 -0
  275. package/lib/features/select/select-mouse-listener.d.ts +25 -0
  276. package/lib/features/select/select-mouse-listener.d.ts.map +1 -0
  277. package/lib/features/select/select-mouse-listener.js +32 -0
  278. package/lib/features/select/select-mouse-listener.js.map +1 -0
  279. package/lib/features/select/selection-service.d.ts +52 -0
  280. package/lib/features/select/selection-service.d.ts.map +1 -0
  281. package/lib/features/select/selection-service.js +226 -0
  282. package/lib/features/select/selection-service.js.map +1 -0
  283. package/lib/features/select/selection-service.spec.d.ts +2 -0
  284. package/lib/features/select/selection-service.spec.d.ts.map +1 -0
  285. package/lib/features/select/selection-service.spec.js +360 -0
  286. package/lib/features/select/selection-service.spec.js.map +1 -0
  287. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +47 -0
  288. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -0
  289. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +236 -0
  290. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -0
  291. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +43 -0
  292. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -0
  293. package/lib/features/tool-feedback/creation-tool-feedback.js +181 -0
  294. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -0
  295. package/lib/features/tool-feedback/css-feedback.d.ts +32 -0
  296. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -0
  297. package/lib/features/tool-feedback/css-feedback.js +111 -0
  298. package/lib/features/tool-feedback/css-feedback.js.map +1 -0
  299. package/lib/features/tool-feedback/di.config.d.ts +19 -0
  300. package/lib/features/tool-feedback/di.config.d.ts.map +1 -0
  301. package/lib/features/tool-feedback/di.config.js +53 -0
  302. package/lib/features/tool-feedback/di.config.js.map +1 -0
  303. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +82 -0
  304. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -0
  305. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +315 -0
  306. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -0
  307. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +50 -0
  308. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -0
  309. package/lib/features/tool-feedback/feedback-action-dispatcher.js +75 -0
  310. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -0
  311. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +32 -0
  312. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -0
  313. package/lib/features/tool-feedback/marquee-tool-feedback.js +111 -0
  314. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -0
  315. package/lib/features/tool-feedback/model.d.ts +23 -0
  316. package/lib/features/tool-feedback/model.d.ts.map +1 -0
  317. package/lib/features/tool-feedback/model.js +34 -0
  318. package/lib/features/tool-feedback/model.js.map +1 -0
  319. package/lib/features/tool-feedback/view.d.ts +16 -0
  320. package/lib/features/tool-feedback/view.d.ts.map +1 -0
  321. package/lib/features/tool-feedback/view.js +81 -0
  322. package/lib/features/tool-feedback/view.js.map +1 -0
  323. package/lib/features/tool-palette/di.config.d.ts +20 -0
  324. package/lib/features/tool-palette/di.config.d.ts.map +1 -0
  325. package/lib/features/tool-palette/di.config.js +29 -0
  326. package/lib/features/tool-palette/di.config.js.map +1 -0
  327. package/lib/features/tool-palette/palette-item.d.ts +27 -0
  328. package/lib/features/tool-palette/palette-item.d.ts.map +1 -0
  329. package/lib/features/tool-palette/palette-item.js +37 -0
  330. package/lib/features/tool-palette/palette-item.js.map +1 -0
  331. package/lib/features/tool-palette/tool-palette.d.ts +56 -0
  332. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -0
  333. package/lib/features/tool-palette/tool-palette.js +401 -0
  334. package/lib/features/tool-palette/tool-palette.js.map +1 -0
  335. package/lib/features/tools/base-glsp-tool.d.ts +20 -0
  336. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -0
  337. package/lib/features/tools/base-glsp-tool.js +70 -0
  338. package/lib/features/tools/base-glsp-tool.js.map +1 -0
  339. package/lib/features/tools/change-bounds-tool.d.ts +71 -0
  340. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -0
  341. package/lib/features/tools/change-bounds-tool.js +371 -0
  342. package/lib/features/tools/change-bounds-tool.js.map +1 -0
  343. package/lib/features/tools/delete-tool.d.ts +36 -0
  344. package/lib/features/tools/delete-tool.d.ts.map +1 -0
  345. package/lib/features/tools/delete-tool.js +129 -0
  346. package/lib/features/tools/delete-tool.js.map +1 -0
  347. package/lib/features/tools/di.config.d.ts +23 -0
  348. package/lib/features/tools/di.config.d.ts.map +1 -0
  349. package/lib/features/tools/di.config.js +55 -0
  350. package/lib/features/tools/di.config.js.map +1 -0
  351. package/lib/features/tools/edge-creation-tool.d.ts +37 -0
  352. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -0
  353. package/lib/features/tools/edge-creation-tool.js +158 -0
  354. package/lib/features/tools/edge-creation-tool.js.map +1 -0
  355. package/lib/features/tools/edge-edit-tool.d.ts +50 -0
  356. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -0
  357. package/lib/features/tools/edge-edit-tool.js +281 -0
  358. package/lib/features/tools/edge-edit-tool.js.map +1 -0
  359. package/lib/features/tools/marquee-mouse-tool.d.ts +37 -0
  360. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -0
  361. package/lib/features/tools/marquee-mouse-tool.js +226 -0
  362. package/lib/features/tools/marquee-mouse-tool.js.map +1 -0
  363. package/lib/features/tools/marquee-tool.d.ts +14 -0
  364. package/lib/features/tools/marquee-tool.d.ts.map +1 -0
  365. package/lib/features/tools/marquee-tool.js +69 -0
  366. package/lib/features/tools/marquee-tool.js.map +1 -0
  367. package/lib/features/tools/model.d.ts +22 -0
  368. package/lib/features/tools/model.d.ts.map +1 -0
  369. package/lib/features/tools/model.js +24 -0
  370. package/lib/features/tools/model.js.map +1 -0
  371. package/lib/features/tools/node-creation-tool.d.ts +26 -0
  372. package/lib/features/tools/node-creation-tool.d.ts.map +1 -0
  373. package/lib/features/tools/node-creation-tool.js +117 -0
  374. package/lib/features/tools/node-creation-tool.js.map +1 -0
  375. package/lib/features/tools/view.d.ts +7 -0
  376. package/lib/features/tools/view.d.ts.map +1 -0
  377. package/lib/features/tools/view.js +40 -0
  378. package/lib/features/tools/view.js.map +1 -0
  379. package/lib/features/undo-redo/model.d.ts +27 -0
  380. package/lib/features/undo-redo/model.d.ts.map +1 -0
  381. package/lib/features/undo-redo/model.js +18 -0
  382. package/lib/features/undo-redo/model.js.map +1 -0
  383. package/lib/features/validation/di.config.d.ts +25 -0
  384. package/lib/features/validation/di.config.d.ts.map +1 -0
  385. package/lib/features/validation/di.config.js +44 -0
  386. package/lib/features/validation/di.config.js.map +1 -0
  387. package/lib/features/validation/issue-marker.d.ts +43 -0
  388. package/lib/features/validation/issue-marker.d.ts.map +1 -0
  389. package/lib/features/validation/issue-marker.js +89 -0
  390. package/lib/features/validation/issue-marker.js.map +1 -0
  391. package/lib/features/validation/marker-navigator.d.ts +55 -0
  392. package/lib/features/validation/marker-navigator.d.ts.map +1 -0
  393. package/lib/features/validation/marker-navigator.js +247 -0
  394. package/lib/features/validation/marker-navigator.js.map +1 -0
  395. package/lib/features/validation/marker-navigator.spec.d.ts +18 -0
  396. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -0
  397. package/lib/features/validation/marker-navigator.spec.js +177 -0
  398. package/lib/features/validation/marker-navigator.spec.js.map +1 -0
  399. package/lib/features/validation/validate.d.ts +111 -0
  400. package/lib/features/validation/validate.d.ts.map +1 -0
  401. package/lib/features/validation/validate.js +290 -0
  402. package/lib/features/validation/validate.js.map +1 -0
  403. package/lib/features/viewport/di.config.d.ts +19 -0
  404. package/lib/features/viewport/di.config.d.ts.map +1 -0
  405. package/lib/features/viewport/di.config.js +34 -0
  406. package/lib/features/viewport/di.config.js.map +1 -0
  407. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +7 -0
  408. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -0
  409. package/lib/features/viewport/glsp-scroll-mouse-listener.js +54 -0
  410. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -0
  411. package/lib/index.d.ts +110 -0
  412. package/lib/index.d.ts.map +1 -0
  413. package/lib/index.js +144 -0
  414. package/lib/index.js.map +1 -0
  415. package/lib/lib/model.d.ts +24 -0
  416. package/lib/lib/model.d.ts.map +1 -0
  417. package/lib/lib/model.js +33 -0
  418. package/lib/lib/model.js.map +1 -0
  419. package/lib/model-source/glsp-diagram-server.d.ts +38 -0
  420. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -0
  421. package/lib/model-source/glsp-diagram-server.js +88 -0
  422. package/lib/model-source/glsp-diagram-server.js.map +1 -0
  423. package/lib/model-source/glsp-server-status.d.ts +30 -0
  424. package/lib/model-source/glsp-server-status.d.ts.map +1 -0
  425. package/lib/model-source/glsp-server-status.js +44 -0
  426. package/lib/model-source/glsp-server-status.js.map +1 -0
  427. package/lib/utils/argument-utils.d.ts +50 -0
  428. package/lib/utils/argument-utils.d.ts.map +1 -0
  429. package/lib/utils/argument-utils.js +112 -0
  430. package/lib/utils/argument-utils.js.map +1 -0
  431. package/lib/utils/array-utils.d.ts +28 -0
  432. package/lib/utils/array-utils.d.ts.map +1 -0
  433. package/lib/utils/array-utils.js +56 -0
  434. package/lib/utils/array-utils.js.map +1 -0
  435. package/lib/utils/html-utils.d.ts +17 -0
  436. package/lib/utils/html-utils.d.ts.map +1 -0
  437. package/lib/utils/html-utils.js +30 -0
  438. package/lib/utils/html-utils.js.map +1 -0
  439. package/lib/utils/layout-utils.d.ts +41 -0
  440. package/lib/utils/layout-utils.d.ts.map +1 -0
  441. package/lib/utils/layout-utils.js +61 -0
  442. package/lib/utils/layout-utils.js.map +1 -0
  443. package/lib/utils/marker.d.ts +48 -0
  444. package/lib/utils/marker.d.ts.map +1 -0
  445. package/lib/utils/marker.js +48 -0
  446. package/lib/utils/marker.js.map +1 -0
  447. package/lib/utils/smodel-util.d.ts +41 -0
  448. package/lib/utils/smodel-util.d.ts.map +1 -0
  449. package/lib/utils/smodel-util.js +134 -0
  450. package/lib/utils/smodel-util.js.map +1 -0
  451. package/lib/utils/viewpoint-util.d.ts +52 -0
  452. package/lib/utils/viewpoint-util.d.ts.map +1 -0
  453. package/lib/utils/viewpoint-util.js +89 -0
  454. package/lib/utils/viewpoint-util.js.map +1 -0
  455. package/lib/views/base-view-module.d.ts +24 -0
  456. package/lib/views/base-view-module.d.ts.map +1 -0
  457. package/lib/views/base-view-module.js +59 -0
  458. package/lib/views/base-view-module.js.map +1 -0
  459. package/lib/views/default-types.d.ts +37 -0
  460. package/lib/views/default-types.d.ts.map +1 -0
  461. package/lib/views/default-types.js +47 -0
  462. package/lib/views/default-types.js.map +1 -0
  463. package/lib/views/glsp-edge-view.d.ts +11 -0
  464. package/lib/views/glsp-edge-view.d.ts.map +1 -0
  465. package/lib/views/glsp-edge-view.js +70 -0
  466. package/lib/views/glsp-edge-view.js.map +1 -0
  467. package/lib/views/index.d.ts +22 -0
  468. package/lib/views/index.d.ts.map +1 -0
  469. package/lib/views/index.js +34 -0
  470. package/lib/views/index.js.map +1 -0
  471. package/lib/views/issue-marker-view.d.ts +8 -0
  472. package/lib/views/issue-marker-view.d.ts.map +1 -0
  473. package/lib/views/issue-marker-view.js +59 -0
  474. package/lib/views/issue-marker-view.js.map +1 -0
  475. package/lib/views/rounded-corner-view.d.ts +13 -0
  476. package/lib/views/rounded-corner-view.d.ts.map +1 -0
  477. package/lib/views/rounded-corner-view.js +82 -0
  478. package/lib/views/rounded-corner-view.js.map +1 -0
  479. package/lib/views/rounded-corner.d.ts +37 -0
  480. package/lib/views/rounded-corner.d.ts.map +1 -0
  481. package/lib/views/rounded-corner.js +62 -0
  482. package/lib/views/rounded-corner.js.map +1 -0
  483. package/package.json +68 -0
  484. package/src/base/action-dispatcher.ts +103 -0
  485. package/src/base/actions/context-actions.ts +43 -0
  486. package/src/base/actions/edit-mode-action.ts +33 -0
  487. package/src/base/actions/edit-validation-actions.ts +103 -0
  488. package/src/base/actions/focus-change-action.ts +26 -0
  489. package/src/base/args.ts +26 -0
  490. package/src/base/auto-complete/auto-complete-actions.ts +24 -0
  491. package/src/base/auto-complete/auto-complete-widget.ts +314 -0
  492. package/src/base/auto-complete/validation-decorator.ts +126 -0
  493. package/src/base/command-stack.ts +36 -0
  494. package/src/base/di.config.ts +96 -0
  495. package/src/base/drag-aware-mouse-listener.ts +69 -0
  496. package/src/base/editor-context.ts +124 -0
  497. package/src/base/focus-tracker.ts +50 -0
  498. package/src/base/model/model-registry.ts +31 -0
  499. package/src/base/model/update-model-command.ts +118 -0
  500. package/src/base/model-initialization-constraint.ts +94 -0
  501. package/src/base/operations/operation.ts +178 -0
  502. package/src/base/selection-clearing-mouse-listener.ts +43 -0
  503. package/src/base/source-uri-aware.ts +22 -0
  504. package/src/base/tool-manager/glsp-tool-manager.ts +97 -0
  505. package/src/base/types.ts +37 -0
  506. package/src/base/view/view-registry.ts +31 -0
  507. package/src/features/change-bounds/model.ts +74 -0
  508. package/src/features/change-bounds/movement-restrictor.ts +89 -0
  509. package/src/features/change-bounds/snap.ts +35 -0
  510. package/src/features/command-palette/command-palette-tool.ts +46 -0
  511. package/src/features/command-palette/di.config.ts +34 -0
  512. package/src/features/command-palette/server-command-palette-provider.ts +48 -0
  513. package/src/features/context-menu/delete-element-context-menu.ts +42 -0
  514. package/src/features/context-menu/di.config.ts +35 -0
  515. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +50 -0
  516. package/src/features/context-menu/server-context-menu-provider.ts +46 -0
  517. package/src/features/copy-paste/copy-paste-actions.ts +60 -0
  518. package/src/features/copy-paste/copy-paste-context-menu.ts +138 -0
  519. package/src/features/copy-paste/copy-paste-handler.ts +152 -0
  520. package/src/features/copy-paste/di.config.ts +45 -0
  521. package/src/features/decoration/decoration-placer.ts +46 -0
  522. package/src/features/decoration/di.config.ts +28 -0
  523. package/src/features/edit-label/di.config.ts +30 -0
  524. package/src/features/edit-label/edit-label-tool.ts +51 -0
  525. package/src/features/edit-label/edit-label-validator.ts +104 -0
  526. package/src/features/hints/di.config.ts +30 -0
  527. package/src/features/hints/model.ts +34 -0
  528. package/src/features/hints/request-type-hints-action.ts +36 -0
  529. package/src/features/hints/type-hints.ts +257 -0
  530. package/src/features/hover/di.config.ts +61 -0
  531. package/src/features/hover/hover.ts +95 -0
  532. package/src/features/layout/di.config.ts +26 -0
  533. package/src/features/layout/layout-commands.spec.ts +366 -0
  534. package/src/features/layout/layout-commands.ts +415 -0
  535. package/src/features/model-source-watcher/di.config.ts +26 -0
  536. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +70 -0
  537. package/src/features/model-source-watcher/model-source-changed-action.ts +26 -0
  538. package/src/features/mouse-tool/di.config.ts +28 -0
  539. package/src/features/mouse-tool/mouse-tool.ts +139 -0
  540. package/src/features/navigation/di.config.ts +35 -0
  541. package/src/features/navigation/navigation-action-handler.ts +272 -0
  542. package/src/features/navigation/navigation-target-resolver.spec.ts +61 -0
  543. package/src/features/navigation/navigation-target-resolver.ts +146 -0
  544. package/src/features/rank/model.ts +29 -0
  545. package/src/features/reconnect/model.ts +76 -0
  546. package/src/features/save/di.config.ts +30 -0
  547. package/src/features/save/model.ts +26 -0
  548. package/src/features/save/save.ts +35 -0
  549. package/src/features/select/di.config.ts +35 -0
  550. package/src/features/select/select-feedback-action.ts +87 -0
  551. package/src/features/select/select-mouse-listener.ts +26 -0
  552. package/src/features/select/selection-service.spec.ts +372 -0
  553. package/src/features/select/selection-service.ts +239 -0
  554. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +244 -0
  555. package/src/features/tool-feedback/creation-tool-feedback.ts +190 -0
  556. package/src/features/tool-feedback/css-feedback.ts +98 -0
  557. package/src/features/tool-feedback/di.config.ts +69 -0
  558. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +327 -0
  559. package/src/features/tool-feedback/feedback-action-dispatcher.ts +101 -0
  560. package/src/features/tool-feedback/marquee-tool-feedback.ts +104 -0
  561. package/src/features/tool-feedback/model.ts +32 -0
  562. package/src/features/tool-feedback/view.tsx +70 -0
  563. package/src/features/tool-palette/di.config.ts +30 -0
  564. package/src/features/tool-palette/palette-item.ts +40 -0
  565. package/src/features/tool-palette/tool-palette.ts +416 -0
  566. package/src/features/tools/base-glsp-tool.ts +53 -0
  567. package/src/features/tools/change-bounds-tool.ts +445 -0
  568. package/src/features/tools/delete-tool.ts +120 -0
  569. package/src/features/tools/di.config.ts +56 -0
  570. package/src/features/tools/edge-creation-tool.ts +171 -0
  571. package/src/features/tools/edge-edit-tool.ts +325 -0
  572. package/src/features/tools/marquee-mouse-tool.ts +244 -0
  573. package/src/features/tools/marquee-tool.ts +52 -0
  574. package/src/features/tools/model.ts +22 -0
  575. package/src/features/tools/node-creation-tool.ts +123 -0
  576. package/src/features/tools/view.tsx +38 -0
  577. package/src/features/undo-redo/model.ts +26 -0
  578. package/src/features/validation/di.config.ts +51 -0
  579. package/src/features/validation/issue-marker.ts +93 -0
  580. package/src/features/validation/marker-navigator.spec.ts +207 -0
  581. package/src/features/validation/marker-navigator.ts +249 -0
  582. package/src/features/validation/validate.ts +274 -0
  583. package/src/features/viewport/di.config.ts +47 -0
  584. package/src/features/viewport/glsp-scroll-mouse-listener.ts +50 -0
  585. package/src/index.ts +115 -0
  586. package/src/lib/model.ts +27 -0
  587. package/src/model-source/glsp-diagram-server.ts +114 -0
  588. package/src/model-source/glsp-server-status.ts +38 -0
  589. package/src/utils/argument-utils.ts +127 -0
  590. package/src/utils/array-utils.ts +55 -0
  591. package/src/utils/html-utils.ts +25 -0
  592. package/src/utils/layout-utils.ts +97 -0
  593. package/src/utils/marker.ts +63 -0
  594. package/src/utils/smodel-util.ts +149 -0
  595. package/src/utils/viewpoint-util.ts +99 -0
  596. package/src/views/base-view-module.ts +98 -0
  597. package/src/views/default-types.ts +48 -0
  598. package/src/views/glsp-edge-view.tsx +70 -0
  599. package/src/views/index.ts +21 -0
  600. package/src/views/issue-marker-view.tsx +55 -0
  601. package/src/views/rounded-corner-view.tsx +88 -0
  602. package/src/views/rounded-corner.ts +88 -0
@@ -0,0 +1,244 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2019 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 { inject, injectable } from 'inversify';
17
+ import { VNode } from 'snabbdom';
18
+ import {
19
+ Action,
20
+ CommandExecutionContext,
21
+ CommandReturn,
22
+ ElementMove,
23
+ findParentByFeature,
24
+ isMoveable,
25
+ isSelectable,
26
+ isViewport,
27
+ MouseListener,
28
+ MoveAction,
29
+ Point,
30
+ SModelElement,
31
+ SModelRoot,
32
+ TYPES
33
+ } from 'sprotty';
34
+
35
+ import { isNotUndefined } from '../../utils/smodel-util';
36
+ import { addResizeHandles, isResizable, removeResizeHandles, SResizeHandle } from '../change-bounds/model';
37
+ import { createMovementRestrictionFeedback, removeMovementRestrictionFeedback } from '../change-bounds/movement-restrictor';
38
+ import { ChangeBoundsTool } from '../tools/change-bounds-tool';
39
+ import { FeedbackCommand } from './model';
40
+
41
+ export class ShowChangeBoundsToolResizeFeedbackAction implements Action {
42
+ constructor(readonly elementId?: string, public readonly kind: string = ShowChangeBoundsToolResizeFeedbackCommand.KIND) { }
43
+ }
44
+
45
+ export class HideChangeBoundsToolResizeFeedbackAction implements Action {
46
+ constructor(public readonly kind: string = HideChangeBoundsToolResizeFeedbackCommand.KIND) { }
47
+ }
48
+
49
+ @injectable()
50
+ export class ShowChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
51
+ static readonly KIND = 'showChangeBoundsToolResizeFeedback';
52
+
53
+ @inject(TYPES.Action) protected action: ShowChangeBoundsToolResizeFeedbackAction;
54
+
55
+ execute(context: CommandExecutionContext): CommandReturn {
56
+ const index = context.root.index;
57
+ index
58
+ .all()
59
+ .filter(isResizable)
60
+ .forEach(removeResizeHandles);
61
+
62
+ if (isNotUndefined(this.action.elementId)) {
63
+ const resizeElement = index.getById(this.action.elementId);
64
+ if (isNotUndefined(resizeElement) && isResizable(resizeElement)) {
65
+ addResizeHandles(resizeElement);
66
+ }
67
+ }
68
+ return context.root;
69
+ }
70
+ }
71
+
72
+ @injectable()
73
+ export class HideChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
74
+ static readonly KIND = 'hideChangeBoundsToolResizeFeedback';
75
+
76
+ @inject(TYPES.Action) protected action: HideChangeBoundsToolResizeFeedbackAction;
77
+
78
+ execute(context: CommandExecutionContext): CommandReturn {
79
+ const index = context.root.index;
80
+ index
81
+ .all()
82
+ .filter(isResizable)
83
+ .forEach(removeResizeHandles);
84
+ return context.root;
85
+ }
86
+ }
87
+
88
+ /**
89
+ * This mouse listener provides visual feedback for moving by sending client-side
90
+ * `MoveAction`s while elements are selected and dragged. This will also update
91
+ * their bounds, which is important, as it is not only required for rendering
92
+ * the visual feedback but also the basis for sending the change to the server
93
+ * (see also `tools/MoveTool`).
94
+ */
95
+ export class FeedbackMoveMouseListener extends MouseListener {
96
+ protected hasDragged = false;
97
+ protected startDragPosition: Point | undefined;
98
+ protected elementId2startPos = new Map<string, Point>();
99
+
100
+ constructor(protected tool: ChangeBoundsTool) {
101
+ super();
102
+ }
103
+
104
+ mouseDown(target: SModelElement, event: MouseEvent): Action[] {
105
+ if (event.button === 0 && !(target instanceof SResizeHandle)) {
106
+ const moveable = findParentByFeature(target, isMoveable);
107
+ if (moveable !== undefined) {
108
+ this.startDragPosition = { x: event.pageX, y: event.pageY };
109
+ } else {
110
+ this.startDragPosition = undefined;
111
+ }
112
+ this.hasDragged = false;
113
+ }
114
+ return [];
115
+ }
116
+
117
+ mouseMove(target: SModelElement, event: MouseEvent): Action[] {
118
+ const result: Action[] = [];
119
+ if (event.buttons === 0) {
120
+ this.mouseUp(target, event);
121
+ } else if (this.startDragPosition) {
122
+ if (this.elementId2startPos.size === 0) {
123
+ this.collectStartPositions(target.root);
124
+ }
125
+ this.hasDragged = true;
126
+ const moveAction = this.getElementMoves(target, event, false);
127
+ if (moveAction) {
128
+ result.push(moveAction);
129
+ }
130
+ }
131
+ return result;
132
+ }
133
+
134
+ protected collectStartPositions(root: SModelRoot): void {
135
+ root.index
136
+ .all()
137
+ .filter(element => isSelectable(element) && element.selected)
138
+ .forEach(element => {
139
+ if (isMoveable(element)) {
140
+ this.elementId2startPos.set(element.id, element.position);
141
+ }
142
+ });
143
+ }
144
+
145
+ protected getElementMoves(target: SModelElement, event: MouseEvent, isFinished: boolean): MoveAction | undefined {
146
+ if (!this.startDragPosition) {
147
+ return undefined;
148
+ }
149
+ const elementMoves: ElementMove[] = [];
150
+ const viewport = findParentByFeature(target, isViewport);
151
+ const zoom = viewport ? viewport.zoom : 1;
152
+ const delta = {
153
+ x: (event.pageX - this.startDragPosition.x) / zoom,
154
+ y: (event.pageY - this.startDragPosition.y) / zoom
155
+ };
156
+ this.elementId2startPos.forEach((startPosition, elementId) => {
157
+ const element = target.root.index.getById(elementId);
158
+ if (element) {
159
+ let toPosition = this.snap(
160
+ {
161
+ x: startPosition.x + delta.x,
162
+ y: startPosition.y + delta.y
163
+ },
164
+ element,
165
+ !event.shiftKey
166
+ );
167
+
168
+ if (isMoveable(element)) {
169
+ toPosition = this.validateMove(startPosition, toPosition, element, isFinished);
170
+ elementMoves.push({
171
+ elementId: element.id,
172
+ fromPosition: {
173
+ x: element.position.x,
174
+ y: element.position.y
175
+ },
176
+ toPosition
177
+ });
178
+ }
179
+ }
180
+ });
181
+ if (elementMoves.length > 0) {
182
+ return new MoveAction(elementMoves, false, isFinished);
183
+ } else {
184
+ return undefined;
185
+ }
186
+ }
187
+
188
+ protected validateMove(startPostion: Point, toPosition: Point, element: SModelElement, isFinished: boolean): Point {
189
+ let newPosition = toPosition;
190
+ if (this.tool.movementRestrictor) {
191
+ const valid = this.tool.movementRestrictor.validate(toPosition, element);
192
+ let action;
193
+ if (!valid) {
194
+ action = createMovementRestrictionFeedback(element, this.tool.movementRestrictor);
195
+
196
+ if (isFinished) {
197
+ newPosition = startPostion;
198
+ }
199
+ } else {
200
+ action = removeMovementRestrictionFeedback(element, this.tool.movementRestrictor);
201
+ }
202
+
203
+ this.tool.dispatchFeedback([action], this);
204
+ }
205
+ return newPosition;
206
+ }
207
+
208
+ protected snap(position: Point, element: SModelElement, isSnap: boolean): Point {
209
+ if (isSnap && this.tool.snapper) {
210
+ return this.tool.snapper.snap(position, element);
211
+ } else {
212
+ return position;
213
+ }
214
+ }
215
+
216
+ mouseEnter(target: SModelElement, event: MouseEvent): Action[] {
217
+ if (target instanceof SModelRoot && event.buttons === 0 && !this.startDragPosition) {
218
+ this.mouseUp(target, event);
219
+ }
220
+ return [];
221
+ }
222
+
223
+ mouseUp(target: SModelElement, event: MouseEvent): Action[] {
224
+ const result: Action[] = [];
225
+ if (this.startDragPosition) {
226
+ const moveAction = this.getElementMoves(target, event, true);
227
+ if (moveAction) {
228
+ result.push(moveAction);
229
+ }
230
+ if (this.tool.movementRestrictor) {
231
+ this.tool.deregisterFeedback([removeMovementRestrictionFeedback(target, this.tool.movementRestrictor)], this);
232
+ }
233
+
234
+ }
235
+ this.hasDragged = false;
236
+ this.startDragPosition = undefined;
237
+ this.elementId2startPos.clear();
238
+ return result;
239
+ }
240
+
241
+ decorate(vnode: VNode, _element: SModelElement): VNode {
242
+ return vnode;
243
+ }
244
+ }
@@ -0,0 +1,190 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2019-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 { inject, injectable } from 'inversify';
17
+ import {
18
+ Action,
19
+ add,
20
+ AnchorComputerRegistry,
21
+ center,
22
+ CommandExecutionContext,
23
+ CommandReturn,
24
+ euclideanDistance,
25
+ findChildrenAtPosition,
26
+ findParentByFeature,
27
+ isBoundsAware,
28
+ isConnectable,
29
+ MouseListener,
30
+ MoveAction,
31
+ Point,
32
+ PolylineEdgeRouter,
33
+ SChildElement,
34
+ SConnectableElement,
35
+ SDanglingAnchor,
36
+ SEdgeSchema,
37
+ SModelElement,
38
+ SModelRoot,
39
+ SRoutableElement,
40
+ TYPES
41
+ } from 'sprotty';
42
+
43
+ import { isRoutable } from '../../utils/smodel-util';
44
+ import { getAbsolutePosition, toAbsoluteBounds, toAbsolutePosition } from '../../utils/viewpoint-util';
45
+ import { FeedbackCommand } from './model';
46
+
47
+ export class DrawFeedbackEdgeAction implements Action {
48
+ constructor(
49
+ public readonly elementTypeId: string,
50
+ public readonly sourceId: string,
51
+ public readonly edgeSchema?: SEdgeSchema,
52
+ public readonly kind: string = DrawFeedbackEdgeCommand.KIND) { }
53
+ }
54
+
55
+ @injectable()
56
+ export class DrawFeedbackEdgeCommand extends FeedbackCommand {
57
+ static readonly KIND = 'drawFeedbackEdge';
58
+
59
+ constructor(@inject(TYPES.Action) protected action: DrawFeedbackEdgeAction) {
60
+ super();
61
+ }
62
+
63
+ execute(context: CommandExecutionContext): CommandReturn {
64
+ const feedbackEdgeSchema = this.action.edgeSchema ? this.action.edgeSchema : defaultFeedbackEdgeSchema;
65
+ drawFeedbackEdge(context, this.action.sourceId, this.action.elementTypeId, feedbackEdgeSchema);
66
+ return context.root;
67
+ }
68
+ }
69
+
70
+ export class RemoveFeedbackEdgeAction implements Action {
71
+ constructor(public readonly kind: string = RemoveFeedbackEdgeCommand.KIND) { }
72
+ }
73
+
74
+ @injectable()
75
+ export class RemoveFeedbackEdgeCommand extends FeedbackCommand {
76
+ static readonly KIND = 'removeFeedbackEdgeCommand';
77
+
78
+ execute(context: CommandExecutionContext): CommandReturn {
79
+ removeFeedbackEdge(context.root);
80
+ return context.root;
81
+ }
82
+ }
83
+
84
+ export class FeedbackEdgeEnd extends SDanglingAnchor {
85
+ static readonly TYPE = 'feedback-edge-end';
86
+ constructor(readonly sourceId: string,
87
+ readonly elementTypeId: string,
88
+ public feedbackEdge: SRoutableElement | undefined = undefined,
89
+ public readonly type: string = FeedbackEdgeEnd.TYPE) {
90
+ super();
91
+ }
92
+ }
93
+
94
+ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
95
+ constructor(protected anchorRegistry: AnchorComputerRegistry) {
96
+ super();
97
+ }
98
+
99
+ mouseMove(target: SModelElement, event: MouseEvent): Action[] {
100
+ const root = target.root;
101
+ const edgeEnd = root.index.getById(feedbackEdgeEndId(root));
102
+ if (!(edgeEnd instanceof FeedbackEdgeEnd) || !edgeEnd.feedbackEdge) {
103
+ return [];
104
+ }
105
+
106
+ const edge = edgeEnd.feedbackEdge;
107
+ const position = getAbsolutePosition(edgeEnd, event);
108
+ const endAtMousePosition = findChildrenAtPosition(target.root, position)
109
+ .find(element => isConnectable(element) && element.canConnect(edge, 'target'));
110
+
111
+ if (endAtMousePosition instanceof SConnectableElement && edge.source && isBoundsAware(edge.source)) {
112
+ const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.source.bounds));
113
+ if (euclideanDistance(anchor, edgeEnd.position) > 1) {
114
+ return [new MoveAction([{ elementId: edgeEnd.id, toPosition: anchor }], false)];
115
+ }
116
+ } else {
117
+ return [new MoveAction([{ elementId: edgeEnd.id, toPosition: position }], false)];
118
+ }
119
+
120
+ return [];
121
+ }
122
+
123
+ protected computeAbsoluteAnchor(element: SConnectableElement, referencePoint: Point, offset?: number): Point {
124
+ const anchorComputer = this.anchorRegistry.get(PolylineEdgeRouter.KIND, element.anchorKind);
125
+ let anchor = anchorComputer.getAnchor(element, referencePoint, offset);
126
+ // The anchor is computed in the local coordinate system of the element.
127
+ // If the element is a nested child element we have to add the absolute position of its parent to the anchor.
128
+ if (element.parent !== element.root) {
129
+ const parent = findParentByFeature(element.parent, isBoundsAware);
130
+ if (parent) {
131
+ const absoluteParentPosition = toAbsoluteBounds(parent);
132
+ anchor = add(absoluteParentPosition, anchor);
133
+ }
134
+ }
135
+ return anchor;
136
+ }
137
+ }
138
+
139
+ export function feedbackEdgeId(root: SModelRoot): string {
140
+ return root.id + '_feedback_edge';
141
+ }
142
+
143
+ export function feedbackEdgeEndId(root: SModelRoot): string {
144
+ return root.id + '_feedback_anchor';
145
+ }
146
+
147
+ export const defaultFeedbackEdgeSchema: SEdgeSchema = {
148
+ cssClasses: ['feedback-edge'],
149
+ opacity: 0.3
150
+ } as SEdgeSchema;
151
+
152
+ export function drawFeedbackEdge(context: CommandExecutionContext, sourceId: string, elementTypeId: string, feedbackEdgeSchema: SEdgeSchema): void {
153
+ const root = context.root;
154
+ const sourceChild = root.index.getById(sourceId);
155
+ if (!sourceChild) {
156
+ return;
157
+ }
158
+
159
+ const source = findParentByFeature(sourceChild, isConnectable);
160
+ if (!source || !isBoundsAware(source)) {
161
+ return;
162
+ }
163
+
164
+ const edgeEnd = new FeedbackEdgeEnd(source.id, elementTypeId);
165
+ edgeEnd.id = feedbackEdgeEndId(root);
166
+ edgeEnd.position = toAbsolutePosition(source);
167
+
168
+ feedbackEdgeSchema.id = feedbackEdgeId(root);
169
+ feedbackEdgeSchema.type = elementTypeId;
170
+ feedbackEdgeSchema.sourceId = source.id;
171
+ feedbackEdgeSchema.targetId = edgeEnd.id;
172
+
173
+ const feedbackEdge = context.modelFactory.createElement(feedbackEdgeSchema);
174
+ if (isRoutable(feedbackEdge)) {
175
+ edgeEnd.feedbackEdge = feedbackEdge;
176
+ root.add(edgeEnd);
177
+ root.add(feedbackEdge);
178
+ }
179
+ }
180
+
181
+ export function removeFeedbackEdge(root: SModelRoot): void {
182
+ const feedbackEdge = root.index.getById(feedbackEdgeId(root));
183
+ const feedbackEdgeEnd = root.index.getById(feedbackEdgeEndId(root));
184
+ if (feedbackEdge instanceof SChildElement) {
185
+ root.remove(feedbackEdge);
186
+ }
187
+ if (feedbackEdgeEnd instanceof SChildElement) {
188
+ root.remove(feedbackEdgeEnd);
189
+ }
190
+ }
@@ -0,0 +1,98 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2019 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 { inject, injectable } from 'inversify';
17
+ import { Action, CommandExecutionContext, SModelElement, SModelRoot, TYPES } from 'sprotty';
18
+
19
+ import { isStringArray } from '../../utils/array-utils';
20
+ import { addCssClasses, removeCssClasses } from '../../utils/smodel-util';
21
+ import { FeedbackCommand } from './model';
22
+
23
+ export class ModifyCSSFeedbackAction implements Action {
24
+ readonly elementIds?: string[];
25
+
26
+ constructor(
27
+ public readonly input?: string[] | SModelElement[],
28
+ public readonly addClasses?: string[],
29
+ public readonly removeClasses?: string[],
30
+ public kind = ModifyCssFeedbackCommand.KIND) {
31
+ if (input) {
32
+ this.elementIds = isStringArray(input) ? input : input.map(element => element.id);
33
+ }
34
+ }
35
+ }
36
+
37
+ @injectable()
38
+ export class ModifyCssFeedbackCommand extends FeedbackCommand {
39
+ static readonly KIND = 'modifyCSSFeedback';
40
+
41
+ constructor(@inject(TYPES.Action) readonly action: ModifyCSSFeedbackAction) {
42
+ super();
43
+ }
44
+
45
+ execute(context: CommandExecutionContext): SModelRoot {
46
+ const elements: SModelElement[] = [];
47
+ if (this.action.elementIds) {
48
+ elements.push(...this.action.elementIds.map(elementId => context.root.index.getById(elementId)).filter(exists));
49
+ } else {
50
+ elements.push(context.root);
51
+ }
52
+
53
+ elements.forEach(e => {
54
+ if (this.action.removeClasses) {
55
+ removeCssClasses(e, this.action.removeClasses);
56
+ }
57
+
58
+ if (this.action.addClasses) {
59
+ addCssClasses(e, this.action.addClasses);
60
+ }
61
+ });
62
+
63
+ return context.root;
64
+ }
65
+ }
66
+
67
+ function exists(elt?: SModelElement): elt is SModelElement {
68
+ return elt !== undefined;
69
+ }
70
+
71
+ export enum CursorCSS {
72
+ DEFAULT = 'default-mode',
73
+ OVERLAP_FORBIDDEN = 'overlap-forbidden-mode',
74
+ NODE_CREATION = 'node-creation-mode',
75
+ EDGE_CREATION_SOURCE = 'edge-creation-select-source-mode',
76
+ EDGE_CREATION_TARGET = 'edge-creation-select-target-mode',
77
+ EDGE_RECONNECT = 'edge-reconnect-select-target-mode',
78
+ OPERATION_NOT_ALLOWED = 'edge-modification-not-allowed-mode',
79
+ ELEMENT_DELETION = 'element-deletion-mode',
80
+ RESIZE = 'resize-mode',
81
+ MARQUEE = 'marquee-mode'
82
+ }
83
+
84
+ export function cursorFeedbackAction(cursorCss?: CursorCSS): ModifyCSSFeedbackAction {
85
+ const addCss = [];
86
+ if (cursorCss) {
87
+ addCss.push(cursorCss);
88
+ }
89
+ return new ModifyCSSFeedbackAction(undefined, addCss, Object.values(CursorCSS));
90
+ }
91
+
92
+ export function applyCssClasses(element: SModelElement, ...classes: string[]): ModifyCSSFeedbackAction {
93
+ return new ModifyCSSFeedbackAction([element], classes, []);
94
+ }
95
+
96
+ export function deleteCssClasses(element: SModelElement, ...classes: string[]): ModifyCSSFeedbackAction {
97
+ return new ModifyCSSFeedbackAction([element], [], classes);
98
+ }
@@ -0,0 +1,69 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2019 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 { ContainerModule } from 'inversify';
17
+ import { configureCommand, configureView, LocationPostprocessor, MoveCommand, TYPES } from 'sprotty';
18
+
19
+ import { GLSP_TYPES } from '../../base/types';
20
+ import { SResizeHandle } from '../change-bounds/model';
21
+ import {
22
+ HideChangeBoundsToolResizeFeedbackCommand,
23
+ ShowChangeBoundsToolResizeFeedbackCommand
24
+ } from './change-bounds-tool-feedback';
25
+ import { DrawFeedbackEdgeCommand, FeedbackEdgeEnd, RemoveFeedbackEdgeCommand } from './creation-tool-feedback';
26
+ import { ModifyCssFeedbackCommand } from './css-feedback';
27
+ import {
28
+ DrawFeedbackEdgeSourceCommand,
29
+ HideEdgeReconnectHandlesFeedbackCommand,
30
+ ShowEdgeReconnectHandlesFeedbackCommand,
31
+ SwitchRoutingModeCommand
32
+ } from './edge-edit-tool-feedback';
33
+ import { FeedbackActionDispatcher } from './feedback-action-dispatcher';
34
+ import { DrawMarqueeCommand, RemoveMarqueeCommand } from './marquee-tool-feedback';
35
+ import { FeedbackEdgeEndView, SResizeHandleView } from './view';
36
+
37
+ const toolFeedbackModule = new ContainerModule((bind, _unbind, isBound) => {
38
+ bind(GLSP_TYPES.IFeedbackActionDispatcher).to(FeedbackActionDispatcher).inSingletonScope();
39
+
40
+ configureCommand({ bind, isBound }, ModifyCssFeedbackCommand);
41
+
42
+ // create node and edge tool feedback
43
+ configureCommand({ bind, isBound }, DrawFeedbackEdgeCommand);
44
+ configureCommand({ bind, isBound }, RemoveFeedbackEdgeCommand);
45
+
46
+ configureCommand({ bind, isBound }, DrawMarqueeCommand);
47
+ configureCommand({ bind, isBound }, RemoveMarqueeCommand);
48
+
49
+ configureView({ bind, isBound }, FeedbackEdgeEnd.TYPE, FeedbackEdgeEndView);
50
+ // move tool feedback: we use sprotties MoveCommand as client-side visual feedback
51
+ configureCommand({ bind, isBound }, MoveCommand);
52
+
53
+ // resize tool feedback
54
+ configureCommand({ bind, isBound }, ShowChangeBoundsToolResizeFeedbackCommand);
55
+ configureCommand({ bind, isBound }, HideChangeBoundsToolResizeFeedbackCommand);
56
+ configureView({ bind, isBound }, SResizeHandle.TYPE, SResizeHandleView);
57
+
58
+ // reconnect edge tool feedback
59
+ configureCommand({ bind, isBound }, ShowEdgeReconnectHandlesFeedbackCommand);
60
+ configureCommand({ bind, isBound }, HideEdgeReconnectHandlesFeedbackCommand);
61
+ configureCommand({ bind, isBound }, DrawFeedbackEdgeSourceCommand);
62
+
63
+ configureCommand({ bind, isBound }, SwitchRoutingModeCommand);
64
+
65
+ bind(TYPES.IVNodePostprocessor).to(LocationPostprocessor);
66
+ bind(TYPES.HiddenVNodePostprocessor).to(LocationPostprocessor);
67
+ });
68
+
69
+ export default toolFeedbackModule;