@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,34 @@
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 '../../../css/command-palette.css';
17
+
18
+ import { ContainerModule } from 'inversify';
19
+ import { CommandPalette, CommandPaletteActionProviderRegistry, TYPES } from 'sprotty';
20
+
21
+ import { GLSP_TYPES } from '../../base/types';
22
+ import { CommandPaletteTool } from './command-palette-tool';
23
+ import { ServerCommandPaletteActionProvider } from './server-command-palette-provider';
24
+
25
+ const glspCommandPaletteModule = new ContainerModule(bind => {
26
+ bind(CommandPalette).toSelf().inSingletonScope();
27
+ bind(TYPES.IUIExtension).toService(CommandPalette);
28
+ bind(CommandPaletteActionProviderRegistry).toSelf().inSingletonScope();
29
+ bind(TYPES.ICommandPaletteActionProviderRegistry).toService(CommandPaletteActionProviderRegistry);
30
+ bind(TYPES.ICommandPaletteActionProvider).to(ServerCommandPaletteActionProvider);
31
+ bind(GLSP_TYPES.IDefaultTool).to(CommandPaletteTool);
32
+ });
33
+
34
+ export default glspCommandPaletteModule;
@@ -0,0 +1,48 @@
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, ICommandPaletteActionProvider, LabeledAction, Point, SModelElement, TYPES } from 'sprotty';
18
+
19
+ import { GLSPActionDispatcher } from '../../base/action-dispatcher';
20
+ import { isSetContextActionsAction, RequestContextActions } from '../../base/actions/context-actions';
21
+ import { EditorContextService } from '../../base/editor-context';
22
+
23
+ export namespace ServerCommandPalette {
24
+ export const CONTEXT_ID = 'command-palette';
25
+ export const TEXT = 'text';
26
+ export const INDEX = 'index';
27
+ }
28
+
29
+ @injectable()
30
+ export class ServerCommandPaletteActionProvider implements ICommandPaletteActionProvider {
31
+ @inject(TYPES.IActionDispatcher) protected actionDispatcher: GLSPActionDispatcher;
32
+ @inject(EditorContextService) protected editorContext: EditorContextService;
33
+
34
+ getActions(_root: Readonly<SModelElement>, text: string, _lastMousePosition?: Point, index?: number): Promise<LabeledAction[]> {
35
+ const requestAction = new RequestContextActions(ServerCommandPalette.CONTEXT_ID, this.editorContext.get({
36
+ [ServerCommandPalette.TEXT]: text,
37
+ [ServerCommandPalette.INDEX]: index ? index : 0
38
+ }));
39
+ return this.actionDispatcher.requestUntil(requestAction).then(response => this.getPaletteActionsFromResponse(response));
40
+ }
41
+
42
+ getPaletteActionsFromResponse(action: Action): LabeledAction[] {
43
+ if (isSetContextActionsAction(action)) {
44
+ return action.actions;
45
+ }
46
+ return [];
47
+ }
48
+ }
@@ -0,0 +1,42 @@
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 } from 'inversify';
17
+ import { IContextMenuItemProvider, MenuItem, Point, SModelRoot } from 'sprotty';
18
+
19
+ import { EditorContextService, EditorContextServiceProvider } from '../../base/editor-context';
20
+ import { DeleteElementOperation } from '../../base/operations/operation';
21
+ import { GLSP_TYPES } from '../../base/types';
22
+
23
+ @injectable()
24
+ export class DeleteElementContextMenuItemProvider implements IContextMenuItemProvider {
25
+ @inject(GLSP_TYPES.IEditorContextServiceProvider) editorContextServiceProvider: EditorContextServiceProvider;
26
+
27
+ async getItems(_root: Readonly<SModelRoot>, _lastMousePosition?: Point): Promise<MenuItem[]> {
28
+ const editorContextService = await this.editorContextServiceProvider();
29
+ return [this.createDeleteMenuItem(editorContextService)];
30
+ }
31
+
32
+ protected createDeleteMenuItem(editorContextService: EditorContextService): MenuItem {
33
+ return {
34
+ id: 'delete',
35
+ label: 'Delete',
36
+ sortString: 'd',
37
+ group: 'edit',
38
+ actions: [new DeleteElementOperation(editorContextService.selectedElements.map(e => e.id))],
39
+ isEnabled: () => !editorContextService.isReadonly && editorContextService.selectedElements.length > 0
40
+ };
41
+ }
42
+ }
@@ -0,0 +1,35 @@
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 { ContextMenuProviderRegistry, IContextMenuService, TYPES } from 'sprotty';
18
+
19
+ import { SelectionServiceAwareContextMenuMouseListener } from './selection-service-aware-context-menu-mouse-listener';
20
+ import { ServerContextMenuItemProvider } from './server-context-menu-provider';
21
+
22
+ const glspContextMenuModule = new ContainerModule(bind => {
23
+ bind(TYPES.IContextMenuServiceProvider).toProvider<IContextMenuService>(ctx => () => new Promise<IContextMenuService>((resolve, reject) => {
24
+ if (ctx.container.isBound(TYPES.IContextMenuService)) {
25
+ resolve(ctx.container.get<IContextMenuService>(TYPES.IContextMenuService));
26
+ } else {
27
+ reject();
28
+ }
29
+ }));
30
+ bind(TYPES.MouseListener).to(SelectionServiceAwareContextMenuMouseListener);
31
+ bind(TYPES.IContextMenuProviderRegistry).to(ContextMenuProviderRegistry);
32
+ bind(TYPES.IContextMenuItemProvider).to(ServerContextMenuItemProvider);
33
+ });
34
+
35
+ export default glspContextMenuModule;
@@ -0,0 +1,50 @@
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, optional } from 'inversify';
17
+ import {
18
+ Action,
19
+ ContextMenuProviderRegistry,
20
+ findParentByFeature,
21
+ IContextMenuServiceProvider,
22
+ isSelectable,
23
+ MouseListener,
24
+ SModelElement,
25
+ TYPES
26
+ } from 'sprotty';
27
+
28
+ import { GLSP_TYPES } from '../../base/types';
29
+ import { SelectionService } from '../select/selection-service';
30
+
31
+ @injectable()
32
+ export class SelectionServiceAwareContextMenuMouseListener extends MouseListener {
33
+ @inject(TYPES.IContextMenuServiceProvider) @optional() protected readonly contextMenuService: IContextMenuServiceProvider;
34
+ @inject(TYPES.IContextMenuProviderRegistry) @optional() protected readonly menuProvider: ContextMenuProviderRegistry;
35
+ @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService;
36
+
37
+ mouseDown(target: SModelElement, event: MouseEvent): (Action | Promise<Action>)[] {
38
+ if (event.button === 2 && this.contextMenuService && this.menuProvider) {
39
+ const mousePosition = { x: event.x, y: event.y };
40
+ const selectableTarget = findParentByFeature(target, isSelectable);
41
+ if (selectableTarget) {
42
+ selectableTarget.selected = true;
43
+ this.selectionService.updateSelection(target.root, [selectableTarget.id], []);
44
+ }
45
+ Promise.all([this.contextMenuService(), this.menuProvider.getItems(target.root, mousePosition)])
46
+ .then(([menuService, menuItems]) => menuService.show(menuItems, mousePosition));
47
+ }
48
+ return [];
49
+ }
50
+ }
@@ -0,0 +1,46 @@
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, IContextMenuItemProvider, isSelected, LabeledAction, Point, SModelElement, TYPES } from 'sprotty';
18
+
19
+ import { GLSPActionDispatcher } from '../../base/action-dispatcher';
20
+ import { isSetContextActionsAction, RequestContextActions } from '../../base/actions/context-actions';
21
+ import { EditorContextService } from '../../base/editor-context';
22
+
23
+ export namespace ServerContextMenu {
24
+ export const CONTEXT_ID = 'context-menu';
25
+ }
26
+
27
+ @injectable()
28
+ export class ServerContextMenuItemProvider implements IContextMenuItemProvider {
29
+
30
+ @inject(TYPES.IActionDispatcher) protected actionDispatcher: GLSPActionDispatcher;
31
+ @inject(EditorContextService) protected editorContext: EditorContextService;
32
+
33
+ getItems(root: Readonly<SModelElement>, lastMousePosition?: Point): Promise<LabeledAction[]> {
34
+ const selectedElementIds = Array.from(root.index.all().filter(isSelected).map(e => e.id));
35
+ const context = this.editorContext.getWithSelection(selectedElementIds);
36
+ const requestAction = new RequestContextActions(ServerContextMenu.CONTEXT_ID, context);
37
+ return this.actionDispatcher.requestUntil(requestAction).then(response => this.getContextActionsFromResponse(response));
38
+ }
39
+
40
+ getContextActionsFromResponse(action: Action): LabeledAction[] {
41
+ if (isSetContextActionsAction(action)) {
42
+ return action.actions;
43
+ }
44
+ return [];
45
+ }
46
+ }
@@ -0,0 +1,60 @@
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 { generateRequestId, RequestAction, ResponseAction } from 'sprotty';
17
+
18
+ import { EditorContext } from '../../base/editor-context';
19
+ import { Operation } from '../../base/operations/operation';
20
+
21
+ export class CutOperation implements Operation {
22
+ static readonly KIND = 'cut';
23
+
24
+ constructor(
25
+ public readonly editorContext: EditorContext,
26
+ public readonly kind: string = CutOperation.KIND) { }
27
+ }
28
+
29
+ export class PasteOperation implements Operation {
30
+ static readonly KIND = 'paste';
31
+
32
+ constructor(
33
+ public readonly clipboardData: ClipboardData,
34
+ public readonly editorContext: EditorContext,
35
+ public readonly kind: string = PasteOperation.KIND) { }
36
+ }
37
+
38
+ export class RequestClipboardDataAction implements RequestAction<SetClipboardDataAction> {
39
+ static readonly KIND = 'requestClipboardData';
40
+
41
+ constructor(
42
+ public readonly editorContext: EditorContext,
43
+ public readonly requestId: string = generateRequestId(),
44
+ public readonly kind: string = RequestClipboardDataAction.KIND) { }
45
+
46
+ static create(editorContext: EditorContext): RequestAction<SetClipboardDataAction> {
47
+ return new RequestClipboardDataAction(editorContext);
48
+ }
49
+ }
50
+
51
+ export interface ClipboardData { [format: string]: string }
52
+
53
+ export class SetClipboardDataAction implements ResponseAction {
54
+ static readonly KIND = 'setClipboardData';
55
+
56
+ constructor(
57
+ public readonly clipboardData: ClipboardData,
58
+ public readonly responseId: string = '',
59
+ public readonly kind: string = SetClipboardDataAction.KIND) { }
60
+ }
@@ -0,0 +1,138 @@
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 } from 'inversify';
17
+ import {
18
+ Action,
19
+ IActionDispatcher,
20
+ IActionHandler,
21
+ IContextMenuItemProvider,
22
+ isSelected,
23
+ MenuItem,
24
+ Point,
25
+ SModelRoot,
26
+ TYPES
27
+ } from 'sprotty/lib';
28
+
29
+ import { GLSPServerStatusAction, ServerMessageAction } from '../../model-source/glsp-server-status';
30
+
31
+ export class InvokeCopyAction implements Action {
32
+ static readonly KIND = 'invoke-copy';
33
+ constructor(public readonly kind = InvokeCopyAction.KIND) { }
34
+ }
35
+
36
+ export class InvokePasteAction implements Action {
37
+ static readonly KIND = 'invoke-paste';
38
+ constructor(public readonly kind = InvokePasteAction.KIND) { }
39
+ }
40
+
41
+ export class InvokeCutAction implements Action {
42
+ static readonly KIND = 'invoke-cut';
43
+ constructor(public readonly kind = InvokeCutAction.KIND) { }
44
+ }
45
+
46
+ @injectable()
47
+ export class InvokeCopyPasteActionHandler implements IActionHandler {
48
+ @inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
49
+ handle(action: Action): void {
50
+ switch (action.kind) {
51
+ case InvokeCopyAction.KIND:
52
+ if (supportsCopy()) {
53
+ document.execCommand('copy');
54
+ } else {
55
+ this.notifyUserToUseShortcut('copy');
56
+ }
57
+ break;
58
+ case InvokePasteAction.KIND:
59
+ if (supportsPaste()) {
60
+ document.execCommand('paste');
61
+ } else {
62
+ this.notifyUserToUseShortcut('paste');
63
+ }
64
+ break;
65
+ case InvokeCutAction.KIND:
66
+ if (supportsCut()) {
67
+ document.execCommand('cut');
68
+ } else {
69
+ this.notifyUserToUseShortcut('cut');
70
+ }
71
+ break;
72
+ }
73
+ }
74
+
75
+ protected notifyUserToUseShortcut(operation: string): void {
76
+ const message = `Please use the browser's ${operation} command or shortcut.`;
77
+ const timeout = 10000;
78
+ const severity = 'WARNING';
79
+ this.dispatcher.dispatchAll([
80
+ { kind: GLSPServerStatusAction.KIND, severity, timeout, message } as GLSPServerStatusAction,
81
+ { kind: ServerMessageAction.KIND, severity, timeout, message } as ServerMessageAction
82
+ ]);
83
+ }
84
+ }
85
+
86
+ @injectable()
87
+ export class CopyPasteContextMenuItemProvider implements IContextMenuItemProvider {
88
+ getItems(root: Readonly<SModelRoot>, _lastMousePosition?: Point): Promise<MenuItem[]> {
89
+ const hasSelectedElements = Array.from(root.index.all().filter(isSelected)).length > 0;
90
+ return Promise.resolve([
91
+ this.createCopyMenuItem(hasSelectedElements),
92
+ this.createCutMenuItem(hasSelectedElements),
93
+ this.createPasteMenuItem()
94
+ ]);
95
+ }
96
+
97
+ protected createPasteMenuItem(): MenuItem {
98
+ return {
99
+ id: 'paste', label: 'Paste', group: 'copy-paste',
100
+ actions: [new InvokePasteAction()], isEnabled: () => true
101
+ };
102
+ }
103
+
104
+ protected createCutMenuItem(hasSelectedElements: boolean): MenuItem {
105
+ return {
106
+ id: 'cut', label: 'Cut', group: 'copy-paste',
107
+ actions: [new InvokeCutAction()], isEnabled: () => hasSelectedElements
108
+ };
109
+ }
110
+
111
+ protected createCopyMenuItem(hasSelectedElements: boolean): MenuItem {
112
+ return {
113
+ id: 'copy', label: 'Copy', group: 'copy-paste',
114
+ actions: [new InvokeCopyAction()], isEnabled: () => hasSelectedElements
115
+ };
116
+ }
117
+ }
118
+
119
+ export function supportsCopy(): boolean {
120
+ return isNative() || document.queryCommandSupported('copy');
121
+ }
122
+
123
+ export function supportsCut(): boolean {
124
+ return isNative() || document.queryCommandSupported('cut');
125
+ }
126
+
127
+ export function supportsPaste(): boolean {
128
+ const isChrome = (userAgent().indexOf('Chrome') >= 0);
129
+ return isNative() || (!isChrome && document.queryCommandSupported('paste'));
130
+ }
131
+
132
+ export function isNative(): boolean {
133
+ return typeof (window as any).process !== 'undefined';
134
+ }
135
+
136
+ function userAgent(): string {
137
+ return typeof navigator !== 'undefined' ? navigator.userAgent : '';
138
+ }
@@ -0,0 +1,152 @@
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 { TYPES, ViewerOptions } from 'sprotty';
18
+ import { v4 as uuid } from 'uuid';
19
+
20
+ import { GLSPActionDispatcher } from '../../base/action-dispatcher';
21
+ import { EditorContextService } from '../../base/editor-context';
22
+ import { GLSP_TYPES } from '../../base/types';
23
+ import { ClipboardData, CutOperation, PasteOperation, RequestClipboardDataAction } from './copy-paste-actions';
24
+
25
+ export interface ICopyPasteHandler {
26
+ handleCopy(event: ClipboardEvent): void;
27
+ handleCut(event: ClipboardEvent): void;
28
+ handlePaste(event: ClipboardEvent): void;
29
+ }
30
+
31
+ export interface IAsyncClipboardService {
32
+ clear(): void;
33
+ put(data: ClipboardData, id?: string): void;
34
+ get(id?: string): ClipboardData | undefined;
35
+ }
36
+
37
+ /**
38
+ * A local implementation of the async clipboard interface.
39
+ *
40
+ * This implementation just stores the clipboard data in memory, but not in the clipboard.
41
+ * This implementation can be used if you don't need to support cross-widget/browser/application
42
+ * data transfer and you would like to avoid to require the permission of the user for accessing the
43
+ * system clipboard asynchronously.
44
+ *
45
+ * In order to detect whether the user copied something else since we recorded the clipboard data
46
+ * we put a uuid into the system clipboard synchronously. If on paste this ID has changed or is not
47
+ * available anymore, we know that the user copied in another application or context, so we shouldn't
48
+ * paste what we have stored locally and just return undefined.
49
+ *
50
+ * Real async clipboard service implementations can just ignore the ID that is passed and rely on the
51
+ * system clipboard's content instead.
52
+ */
53
+ @injectable()
54
+ export class LocalClipboardService implements IAsyncClipboardService {
55
+ protected currentId?: string;
56
+ protected data?: ClipboardData;
57
+
58
+ clear(): void {
59
+ this.currentId = undefined;
60
+ this.data = undefined;
61
+ }
62
+
63
+ put(data: ClipboardData, id: string): void {
64
+ this.currentId = id;
65
+ this.data = data;
66
+ }
67
+
68
+ get(id?: string): ClipboardData | undefined {
69
+ if (id !== this.currentId) {
70
+ return undefined;
71
+ }
72
+ return this.data;
73
+ }
74
+ }
75
+
76
+ interface ClipboardId {
77
+ readonly clipboardId: string;
78
+ }
79
+
80
+ function toClipboardId(clipboardId: string): string {
81
+ return JSON.stringify({ clipboardId });
82
+ }
83
+
84
+ function isClipboardId(jsonData: any): jsonData is ClipboardId {
85
+ return jsonData !== undefined && 'clipboardId' in jsonData;
86
+ }
87
+
88
+ function getClipboardIdFromDataTransfer(dataTransfer: DataTransfer): string | undefined {
89
+ const jsonString = dataTransfer.getData(CLIPBOARD_DATA_FORMAT);
90
+ const jsonObject = jsonString ? JSON.parse(jsonString) : undefined;
91
+ return isClipboardId(jsonObject) ? jsonObject.clipboardId : undefined;
92
+ }
93
+
94
+ const CLIPBOARD_DATA_FORMAT = 'text/plain';
95
+
96
+ @injectable()
97
+ export class ServerCopyPasteHandler implements ICopyPasteHandler {
98
+
99
+ @inject(TYPES.IActionDispatcher) protected actionDispatcher: GLSPActionDispatcher;
100
+ @inject(TYPES.ViewerOptions) protected viewerOptions: ViewerOptions;
101
+ @inject(GLSP_TYPES.IAsyncClipboardService) protected clipboadService: IAsyncClipboardService;
102
+ @inject(EditorContextService) protected editorContext: EditorContextService;
103
+
104
+ handleCopy(event: ClipboardEvent): void {
105
+ if (event.clipboardData && this.shouldCopy(event)) {
106
+ const clipboardId = uuid();
107
+ event.clipboardData.setData(CLIPBOARD_DATA_FORMAT, toClipboardId(clipboardId));
108
+ this.actionDispatcher
109
+ .request(RequestClipboardDataAction.create(this.editorContext.get()))
110
+ .then(action => this.clipboadService.put(action.clipboardData, clipboardId));
111
+ event.preventDefault();
112
+ } else {
113
+ if (event.clipboardData) {
114
+ event.clipboardData.clearData();
115
+ }
116
+ this.clipboadService.clear();
117
+ }
118
+ }
119
+
120
+ handleCut(event: ClipboardEvent): void {
121
+ if (event.clipboardData && this.shouldCopy(event)) {
122
+ this.handleCopy(event);
123
+ this.actionDispatcher.dispatch(new CutOperation(this.editorContext.get()));
124
+ event.preventDefault();
125
+ }
126
+ }
127
+
128
+ handlePaste(event: ClipboardEvent): void {
129
+ if (event.clipboardData && this.shouldPaste(event)) {
130
+ const clipboardId = getClipboardIdFromDataTransfer(event.clipboardData);
131
+ const clipboardData = this.clipboadService.get(clipboardId);
132
+ if (clipboardData) {
133
+ this.actionDispatcher.dispatch(new PasteOperation(clipboardData, this.editorContext.get()));
134
+ }
135
+ event.preventDefault();
136
+ }
137
+ }
138
+
139
+ protected shouldCopy(_event: ClipboardEvent): boolean | null {
140
+ return this.editorContext.get().selectedElementIds.length > 0 && this.isDiagramActive();
141
+ }
142
+
143
+ protected shouldPaste(_event: ClipboardEvent): boolean | null {
144
+ return this.isDiagramActive();
145
+ }
146
+
147
+ private isDiagramActive(): boolean | null {
148
+ return document.activeElement instanceof SVGElement
149
+ && document.activeElement.parentElement
150
+ && document.activeElement.parentElement.id === this.viewerOptions.baseDiv;
151
+ }
152
+ }
@@ -0,0 +1,45 @@
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 { configureActionHandler } from 'sprotty/lib';
18
+
19
+ import { GLSP_TYPES } from '../../base/types';
20
+ import {
21
+ CopyPasteContextMenuItemProvider,
22
+ InvokeCopyAction,
23
+ InvokeCopyPasteActionHandler,
24
+ InvokeCutAction,
25
+ InvokePasteAction
26
+ } from './copy-paste-context-menu';
27
+ import { LocalClipboardService, ServerCopyPasteHandler } from './copy-paste-handler';
28
+
29
+ export const glspServerCopyPasteModule = new ContainerModule((bind, _unbind, isBound) => {
30
+ bind(GLSP_TYPES.ICopyPasteHandler).to(ServerCopyPasteHandler);
31
+ bind(GLSP_TYPES.IAsyncClipboardService).to(LocalClipboardService).inSingletonScope();
32
+ });
33
+
34
+ /**
35
+ * This module is not required if the diagram is deployed in Theia but only intended to be used
36
+ * in a standalone deployment of GLSP. If the GLSP diagram in Theia use the Theia-native
37
+ * `CopyPasteMenuContribution` in `glsp-theia-integration` instead.
38
+ */
39
+ export const copyPasteContextMenuModule = new ContainerModule((bind, _unbind, isBound) => {
40
+ bind(GLSP_TYPES.IContextMenuProvider).to(CopyPasteContextMenuItemProvider).inSingletonScope();
41
+ bind(InvokeCopyPasteActionHandler).toSelf().inSingletonScope();
42
+ configureActionHandler({ bind, isBound }, InvokeCopyAction.KIND, InvokeCopyPasteActionHandler);
43
+ configureActionHandler({ bind, isBound }, InvokeCutAction.KIND, InvokeCopyPasteActionHandler);
44
+ configureActionHandler({ bind, isBound }, InvokePasteAction.KIND, InvokeCopyPasteActionHandler);
45
+ });