@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) 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
+ BoundsAware,
20
+ EnableDefaultToolsAction,
21
+ isSelectable,
22
+ isSelected,
23
+ KeyListener,
24
+ Point,
25
+ SEdge,
26
+ SelectAction,
27
+ SModelElement,
28
+ SNode,
29
+ TYPES
30
+ } from 'sprotty';
31
+ import { DOMHelper } from 'sprotty/lib/base/views/dom-helper';
32
+
33
+ import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
34
+ import { getAbsolutePosition, toAbsoluteBounds } from '../../utils/viewpoint-util';
35
+ import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
36
+ import { DrawMarqueeAction, RemoveMarqueeAction } from '../tool-feedback/marquee-tool-feedback';
37
+ import { BaseGLSPTool } from '../tools/base-glsp-tool';
38
+
39
+ @injectable()
40
+ export class MarqueeMouseTool extends BaseGLSPTool {
41
+ static ID = 'glsp.marquee-mouse-tool';
42
+
43
+ @inject(TYPES.DOMHelper) protected domHelper: DOMHelper;
44
+
45
+ protected marqueeMouseListener: MarqueeMouseListener;
46
+ protected shiftKeyListener: ShiftKeyListener = new ShiftKeyListener();
47
+
48
+ get id(): string {
49
+ return MarqueeMouseTool.ID;
50
+ }
51
+
52
+ enable(): void {
53
+ this.marqueeMouseListener = new MarqueeMouseListener(this.domHelper);
54
+ this.mouseTool.register(this.marqueeMouseListener);
55
+ this.keyTool.register(this.shiftKeyListener);
56
+ this.dispatchFeedback([cursorFeedbackAction(CursorCSS.MARQUEE)]);
57
+ }
58
+
59
+ disable(): void {
60
+ this.mouseTool.deregister(this.marqueeMouseListener);
61
+ this.keyTool.deregister(this.shiftKeyListener);
62
+ this.deregisterFeedback([cursorFeedbackAction()]);
63
+ }
64
+ }
65
+
66
+ @injectable()
67
+ export class MarqueeMouseListener extends DragAwareMouseListener {
68
+
69
+ protected startPoint: Point;
70
+
71
+ protected currentPoint: Point;
72
+
73
+ protected domHelper: DOMHelper;
74
+
75
+ protected previouslySelected: string[];
76
+
77
+ protected isActive = false;
78
+
79
+ constructor(domHelper: DOMHelper) {
80
+ super();
81
+ this.domHelper = domHelper;
82
+ }
83
+
84
+ mouseDown(target: SModelElement, event: MouseEvent): Action[] {
85
+ this.isActive = true;
86
+ this.startPoint = { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y };
87
+ if(event.ctrlKey){
88
+ this.previouslySelected = Array.from(target.root.index.all()
89
+ .map(e => e as SModelElement & BoundsAware)
90
+ .filter(e => isSelected(e))
91
+ .map(e => e.id));
92
+ }
93
+ return [];
94
+ }
95
+
96
+ mouseMove(target: SModelElement, event: MouseEvent): Action[] {
97
+ this.currentPoint = { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y };
98
+ if (this.isActive) {
99
+ const nodeIdsSelected = Array.from(target.root.index.all()
100
+ .map(e => e as SModelElement & BoundsAware)
101
+ .filter(e => isSelectable(e))
102
+ .filter(e => e instanceof SNode)
103
+ .filter(e => this.isNodeMarked(e)).map(e => e.id));
104
+ const edgeIdsSelected = this.getMarkedEdges(target.root);
105
+ const selected = nodeIdsSelected.concat(edgeIdsSelected);
106
+ return [
107
+ new SelectAction([], Array.from(target.root.index.all().map(e => e.id))),
108
+ new SelectAction(selected.concat(this.previouslySelected), []),
109
+ new DrawMarqueeAction(this.startPoint,
110
+ { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y })
111
+ ];
112
+ }
113
+ return [];
114
+ }
115
+
116
+ mouseUp(target: SModelElement, event: MouseEvent): Action[] {
117
+ this.isActive = false;
118
+ if (event.shiftKey) {
119
+ return [new RemoveMarqueeAction()];
120
+ }
121
+ return [new RemoveMarqueeAction(), new EnableDefaultToolsAction()];
122
+ }
123
+
124
+ getMarkedEdges(root: SModelElement): string[] {
125
+ const elements = Array.from(document.querySelectorAll('g'));
126
+ const edges = Array.from(root.index.all().filter(e => e instanceof SEdge).
127
+ filter(e => isSelectable(e)).map(e => e.id));
128
+ return elements.filter(e => edges.includes(this.domHelper.findSModelIdByDOMElement(e)))
129
+ .filter(e => this.isEdgeMarked(e)).map(e => this.domHelper.findSModelIdByDOMElement(e));
130
+ }
131
+
132
+ isEdgeMarked(element: SVGElement): boolean {
133
+ if (!element.getAttribute('transform')) {
134
+ if (element.children[0]) {
135
+ const path = element.children[0].getAttribute('d');
136
+ if (path) {
137
+ const points = path.split(/M|L/);
138
+ for (let i = 0; i < points.length - 1; i++) {
139
+ const coord1 = points[i].split(',');
140
+ const coord2 = points[i + 1].split(',');
141
+ const point1 = { x: parseInt(coord1[0], 10), y: parseInt(coord1[1], 10) };
142
+ const point2 = { x: parseInt(coord2[0], 10), y: parseInt(coord2[1], 10) };
143
+ if (this.isLineMarked(point1, point2)) {
144
+ return true;
145
+ }
146
+ }
147
+ }
148
+ }
149
+ }
150
+ return false;
151
+ }
152
+
153
+ isLineMarked(point1: Point, point2: Point): boolean {
154
+ if (this.pointInRect(point1) || this.pointInRect(point2)) {
155
+ return true;
156
+ }
157
+ if (this.linesIntersect(point1, point2, this.startPoint, { x: this.startPoint.x, y: this.currentPoint.y })) {
158
+ return true;
159
+ }
160
+ if (this.linesIntersect(point1, point2, this.startPoint, { x: this.currentPoint.x, y: this.startPoint.y })) {
161
+ return true;
162
+ }
163
+ if (this.linesIntersect(point1, point2, { x: this.currentPoint.x, y: this.startPoint.y }, this.currentPoint)) {
164
+ return true;
165
+ }
166
+ if (this.linesIntersect(point1, point2, { x: this.startPoint.x, y: this.currentPoint.y }, this.currentPoint)) {
167
+ return true;
168
+ }
169
+ return false;
170
+ }
171
+
172
+ linesIntersect(p1: Point, p2: Point, p3: Point, p4: Point): boolean {
173
+ const tCount = ((p1.x - p3.x) * (p3.y - p4.y)) - ((p1.y - p3.y) * (p3.x - p4.x));
174
+ const tDenom = ((p1.x - p2.x) * (p3.y - p4.y)) - ((p1.y - p2.y) * (p3.x - p4.x));
175
+ const t = tCount / tDenom;
176
+ const uCount = ((p2.x - p1.x) * (p1.y - p3.y)) - ((p2.y - p1.y) * (p1.x - p3.x));
177
+ const uDenom = ((p1.x - p2.x) * (p3.y - p4.y)) - ((p1.y - p2.y) * (p3.x - p4.x));
178
+ const u = uCount / uDenom;
179
+ if (t >= 0.0 && t <= 1.0 && u >= 0.0 && u <= 1.0) {
180
+ return true;
181
+ }
182
+ return false;
183
+ }
184
+
185
+ pointInRect(point: Point): boolean {
186
+ const boolX = this.startPoint.x <= this.currentPoint.x ?
187
+ this.isBetween(point.x, this.startPoint.x, this.currentPoint.x) : this.isBetween(point.x, this.currentPoint.x, this.startPoint.x);
188
+ const boolY = this.startPoint.y <= this.currentPoint.y ?
189
+ this.isBetween(point.y, this.startPoint.y, this.currentPoint.y) : this.isBetween(point.y, this.currentPoint.y, this.startPoint.y);
190
+ return boolX && boolY;
191
+ }
192
+
193
+ isNodeMarked(element: SModelElement & BoundsAware): boolean {
194
+ const horizontallyIn = this.startPoint.x < this.currentPoint.x ?
195
+ this.isElementBetweenXAxis(element, this.startPoint.x, this.currentPoint.x) :
196
+ this.isElementBetweenXAxis(element, this.currentPoint.x, this.startPoint.x);
197
+ const verticallyIn = this.startPoint.y < this.currentPoint.y ?
198
+ this.isElementBetweenYAxis(element, this.startPoint.y, this.currentPoint.y) :
199
+ this.isElementBetweenYAxis(element, this.currentPoint.y, this.startPoint.y);
200
+ if (horizontallyIn && verticallyIn) {
201
+ return true;
202
+ }
203
+ return false;
204
+ }
205
+
206
+ isElementBetweenXAxis(element: SModelElement & BoundsAware, marqueeLeft: number, marqueeRight: number): boolean {
207
+ if (this.isBetween(marqueeLeft, toAbsoluteBounds(element).x, toAbsoluteBounds(element).x + toAbsoluteBounds(element).width)
208
+ || this.isBetween(marqueeRight, toAbsoluteBounds(element).x, toAbsoluteBounds(element).x + toAbsoluteBounds(element).width)) {
209
+ return true;
210
+ }
211
+ const leftEdge = this.isBetween(toAbsoluteBounds(element).x, marqueeLeft, marqueeRight);
212
+ const rightEdge = this.isBetween(toAbsoluteBounds(element).x + toAbsoluteBounds(element).width, marqueeLeft, marqueeRight);
213
+ return leftEdge || rightEdge;
214
+ }
215
+
216
+ isElementBetweenYAxis(element: SModelElement & BoundsAware, marqueeTop: number, marqueeBottom: number): boolean {
217
+ if (this.isBetween(marqueeTop, toAbsoluteBounds(element).y, toAbsoluteBounds(element).y + toAbsoluteBounds(element).height)
218
+ || this.isBetween(marqueeBottom, toAbsoluteBounds(element).y, toAbsoluteBounds(element).y + toAbsoluteBounds(element).height)) {
219
+ return true;
220
+ }
221
+ const topEdge = this.isBetween(toAbsoluteBounds(element).y, marqueeTop, marqueeBottom);
222
+ const bottomEdge = this.isBetween(toAbsoluteBounds(element).y + toAbsoluteBounds(element).height, marqueeTop, marqueeBottom);
223
+ return topEdge || bottomEdge;
224
+ }
225
+
226
+ isBetween(x: number, lower: number, upper: number): boolean {
227
+ if (lower <= x && x <= upper) {
228
+ return true;
229
+ }
230
+ return false;
231
+ }
232
+
233
+ }
234
+
235
+ @injectable()
236
+ export class ShiftKeyListener extends KeyListener {
237
+
238
+ keyUp(element: SModelElement, event: KeyboardEvent): Action[] {
239
+ if (event.shiftKey) {
240
+ return [];
241
+ }
242
+ return [new RemoveMarqueeAction(), new EnableDefaultToolsAction()];
243
+ }
244
+ }
@@ -0,0 +1,52 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2021 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { inject, injectable } from 'inversify';
17
+ import { Action, EnableToolsAction, KeyListener, KeyTool, SModelElement } from 'sprotty';
18
+
19
+ import { BaseGLSPTool } from '../tools/base-glsp-tool';
20
+ import { MarqueeMouseTool } from './marquee-mouse-tool';
21
+
22
+ @injectable()
23
+ export class MarqueeTool extends BaseGLSPTool {
24
+ static ID = 'glsp.marquee-tool';
25
+
26
+ protected marqueeKeyListener: MarqueeKeyListener = new MarqueeKeyListener();
27
+
28
+ @inject(KeyTool) protected readonly keytool: KeyTool;
29
+
30
+ get id(): string {
31
+ return MarqueeTool.ID;
32
+ }
33
+
34
+ enable(): void {
35
+ this.keyTool.register(this.marqueeKeyListener);
36
+ }
37
+
38
+ disable(): void {
39
+ this.keyTool.deregister(this.marqueeKeyListener);
40
+ }
41
+ }
42
+
43
+ @injectable()
44
+ export class MarqueeKeyListener extends KeyListener {
45
+
46
+ keyDown(element: SModelElement, event: KeyboardEvent): Action[] {
47
+ if (event.shiftKey) {
48
+ return [new EnableToolsAction([MarqueeMouseTool.ID])];
49
+ }
50
+ return [];
51
+ }
52
+ }
@@ -0,0 +1,22 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2021 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { boundsFeature, Point, RectangularNode } from 'sprotty';
17
+
18
+ export class MarqueeNode extends RectangularNode {
19
+ static readonly DEFAULT_FEATURES = [boundsFeature];
20
+ startPoint: Point;
21
+ endPoint: Point;
22
+ }
@@ -0,0 +1,123 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2020 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, optional } from 'inversify';
17
+ import {
18
+ Action,
19
+ EnableDefaultToolsAction,
20
+ EnableToolsAction,
21
+ findParentByFeature,
22
+ IActionHandler,
23
+ isCtrlOrCmd,
24
+ ISnapper,
25
+ SModelElement,
26
+ SNode,
27
+ TYPES
28
+ } from 'sprotty';
29
+
30
+ import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
31
+ import {
32
+ CreateNodeOperation,
33
+ isTriggerNodeCreationAction,
34
+ TriggerNodeCreationAction
35
+ } from '../../base/operations/operation';
36
+ import { getAbsolutePosition } from '../../utils/viewpoint-util';
37
+ import { Containable, isContainable } from '../hints/model';
38
+ import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
39
+ import { BaseGLSPTool } from './base-glsp-tool';
40
+
41
+ @injectable()
42
+ export class NodeCreationTool extends BaseGLSPTool implements IActionHandler {
43
+ static ID = 'tool_create_node';
44
+
45
+ @inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
46
+
47
+ protected creationToolMouseListener: NodeCreationToolMouseListener;
48
+ protected triggerAction: TriggerNodeCreationAction;
49
+
50
+ get id(): string {
51
+ return NodeCreationTool.ID;
52
+ }
53
+
54
+ enable(): void {
55
+ if (this.triggerAction === undefined) {
56
+ throw new TypeError(`Could not enable tool ${this.id}.The triggerAction cannot be undefined.`);
57
+ }
58
+ this.creationToolMouseListener = new NodeCreationToolMouseListener(this.triggerAction, this);
59
+ this.mouseTool.register(this.creationToolMouseListener);
60
+ this.dispatchFeedback([cursorFeedbackAction(CursorCSS.NODE_CREATION)]);
61
+ }
62
+
63
+ disable(): void {
64
+ this.mouseTool.deregister(this.creationToolMouseListener);
65
+ this.deregisterFeedback([cursorFeedbackAction()]);
66
+ }
67
+
68
+ handle(action: Action): Action | void {
69
+ if (isTriggerNodeCreationAction(action)) {
70
+ this.triggerAction = action;
71
+ return new EnableToolsAction([this.id]);
72
+ }
73
+ }
74
+ }
75
+
76
+ @injectable()
77
+ export class NodeCreationToolMouseListener extends DragAwareMouseListener {
78
+
79
+ protected container?: SModelElement & Containable;
80
+
81
+ constructor(protected triggerAction: TriggerNodeCreationAction, protected tool: NodeCreationTool) {
82
+ super();
83
+ }
84
+
85
+ protected creationAllowed(elementTypeId: string): boolean | undefined {
86
+ return this.container && this.container.isContainableElement(elementTypeId);
87
+ }
88
+
89
+ get elementTypeId(): string {
90
+ return this.triggerAction.elementTypeId;
91
+ }
92
+
93
+ nonDraggingMouseUp(target: SModelElement, event: MouseEvent): Action[] {
94
+ const result: Action[] = [];
95
+ if (this.creationAllowed(this.elementTypeId)) {
96
+ const containerId = this.container ? this.container.id : undefined;
97
+ let location = getAbsolutePosition(target, event);
98
+ if (this.tool.snapper) {
99
+ // Create a 0-bounds proxy element for snapping
100
+ const elementProxy = new SNode();
101
+ elementProxy.size = { width: 0, height: 0 };
102
+ location = this.tool.snapper.snap(location, elementProxy);
103
+ }
104
+ result.push(new CreateNodeOperation(this.elementTypeId, location, containerId, this.triggerAction.args));
105
+ if (!isCtrlOrCmd(event)) {
106
+ result.push(new EnableDefaultToolsAction());
107
+ }
108
+ }
109
+ return result;
110
+ }
111
+
112
+ mouseOver(target: SModelElement, event: MouseEvent): Action[] {
113
+ const currentContainer = findParentByFeature(target, isContainable);
114
+ if (!this.container || currentContainer !== this.container) {
115
+ this.container = currentContainer;
116
+ const feedback = this.creationAllowed(this.elementTypeId)
117
+ ? cursorFeedbackAction(CursorCSS.NODE_CREATION) :
118
+ cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED);
119
+ this.tool.dispatchFeedback([feedback]);
120
+ }
121
+ return [];
122
+ }
123
+ }
@@ -0,0 +1,38 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2021 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { injectable } from 'inversify';
17
+ import { VNode } from 'snabbdom';
18
+ import { RectangularNodeView, RenderingContext, svg } from 'sprotty';
19
+
20
+ import { MarqueeNode } from './model';
21
+
22
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
+ const JSX = { createElement: svg };
24
+
25
+ @injectable()
26
+ export class MarqueeView extends RectangularNodeView {
27
+ render(node: MarqueeNode, context: RenderingContext): VNode {
28
+ const graph = <g>
29
+ <rect class-sprotty-node={true} class-marquee={true}
30
+ x={((node.startPoint.x - node.endPoint.x) <= 0) ? node.startPoint.x : node.endPoint.x}
31
+ y={((node.startPoint.y - node.endPoint.y) <= 0) ? node.startPoint.y : node.endPoint.y}
32
+ rx={0} ry={0}
33
+ width={Math.abs(node.startPoint.x - node.endPoint.x)}
34
+ height={Math.abs(node.startPoint.y - node.endPoint.y)}></rect>
35
+ </g>;
36
+ return graph;
37
+ }
38
+ }
@@ -0,0 +1,26 @@
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 { Operation } from '../../base/operations/operation';
17
+
18
+ export class UndoOperation implements Operation {
19
+ static readonly KIND = 'glspUndo';
20
+ constructor(public readonly kind = UndoOperation.KIND) { }
21
+ }
22
+
23
+ export class RedoOperation implements Operation {
24
+ static readonly KIND = 'glspRedo';
25
+ constructor(public readonly kind = RedoOperation.KIND) { }
26
+ }
@@ -0,0 +1,51 @@
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, TYPES } from 'sprotty';
18
+
19
+ import { GLSP_TYPES } from '../../base/types';
20
+ import {
21
+ LeftToRightTopToBottomComparator,
22
+ MarkerNavigator,
23
+ MarkerNavigatorContextMenuItemProvider,
24
+ MarkerNavigatorKeyListener,
25
+ NavigateToMarkerCommand,
26
+ SModelElementComparator
27
+ } from './marker-navigator';
28
+ import { ApplyMarkersCommand, DeleteMarkersCommand, SetMarkersCommand, ValidationFeedbackEmitter } from './validate';
29
+
30
+ export const validationModule = new ContainerModule((bind, _unbind, isBound) => {
31
+ configureCommand({ bind, isBound }, SetMarkersCommand);
32
+ configureCommand({ bind, isBound }, ApplyMarkersCommand);
33
+ configureCommand({ bind, isBound }, DeleteMarkersCommand);
34
+ bind(ValidationFeedbackEmitter).toSelf().inSingletonScope();
35
+ });
36
+
37
+ export const markerNavigatorModule = new ContainerModule((bind, _unbind, isBound) => {
38
+ bind(SModelElementComparator).to(LeftToRightTopToBottomComparator).inSingletonScope();
39
+ bind(MarkerNavigator).toSelf().inSingletonScope();
40
+ configureCommand({ bind, isBound }, NavigateToMarkerCommand);
41
+ });
42
+
43
+ /**
44
+ * This module is not required if the diagram is deployed in Theia but only intended to be used
45
+ * in a standalone deployment of GLSP. If the GLSP diagram is in Theia use the Theia-native
46
+ * `registerMarkerNavigationCommands()` in `glsp-theia-integration` instead.
47
+ */
48
+ export const markerNavigatorContextMenuModule = new ContainerModule((bind, _unbind, isBound) => {
49
+ bind(GLSP_TYPES.IContextMenuProvider).to(MarkerNavigatorContextMenuItemProvider).inSingletonScope();
50
+ bind(TYPES.KeyListener).to(MarkerNavigatorKeyListener).inSingletonScope();
51
+ });
@@ -0,0 +1,93 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2019-2020 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 { SDecoration, SIssue, SIssueMarker, SParentElement } from 'sprotty';
17
+
18
+ import { Marker, MarkerKind } from '../../utils/marker';
19
+
20
+ export class GIssueMarker extends SIssueMarker {
21
+ constructor() {
22
+ super();
23
+ this.features = new Set<symbol>(SDecoration.DEFAULT_FEATURES);
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Retrieves the `SIssueMarker` contained by the provided model element as
29
+ * direct child or a newly instantiated `SIssueMarker` if no child
30
+ * `SIssueMarker` exists.
31
+ * @param modelElement for which the `SIssueMarker` should be retrieved or created.
32
+ * @returns the child `SIssueMarker` or a new `SIssueMarker` if no such child exists.
33
+ */
34
+ export function getOrCreateSIssueMarker(modelElement: SParentElement): SIssueMarker {
35
+ let issueMarker: SIssueMarker | undefined;
36
+
37
+ issueMarker = getSIssueMarker(modelElement);
38
+
39
+ if (issueMarker === undefined) {
40
+ issueMarker = new GIssueMarker();
41
+ issueMarker.type = 'marker';
42
+ issueMarker.issues = new Array<SIssue>();
43
+ modelElement.add(issueMarker);
44
+ }
45
+
46
+ return issueMarker;
47
+ }
48
+
49
+ /**
50
+ * Retrieves the `SIssueMarker` contained by the provided model element as
51
+ * direct child or `undefined` if such an `SIssueMarker` does not exist.
52
+ * @param modelElement for which the `SIssueMarker` should be retrieved.
53
+ * @returns the child `SIssueMarker` or `undefined` if no such child exists.
54
+ */
55
+ export function getSIssueMarker(modelElement: SParentElement): SIssueMarker | undefined {
56
+ let issueMarker: SIssueMarker | undefined;
57
+
58
+ for (const child of modelElement.children) {
59
+ if (child instanceof SIssueMarker) {
60
+ issueMarker = child;
61
+ }
62
+ }
63
+
64
+ return issueMarker;
65
+ }
66
+
67
+ /**
68
+ * Creates an `SIssue` with `severity` and `message` set according to
69
+ * the `kind` and `description` of the provided `Marker`.
70
+ * @param marker `Marker` for that an `SIssue` should be created.
71
+ * @returns the created `SIssue`.
72
+ */
73
+ export function createSIssue(marker: Marker): SIssue {
74
+ const issue: SIssue = new SIssue();
75
+ issue.message = marker.description;
76
+
77
+ switch (marker.kind) {
78
+ case MarkerKind.ERROR: {
79
+ issue.severity = 'error';
80
+ break;
81
+ }
82
+ case MarkerKind.INFO: {
83
+ issue.severity = 'info';
84
+ break;
85
+ }
86
+ case MarkerKind.WARNING: {
87
+ issue.severity = 'warning';
88
+ break;
89
+ }
90
+ }
91
+
92
+ return issue;
93
+ }