@eclipse-glsp/client 0.9.0-next.d9bed812 → 0.9.0-next.eb280175

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 (627) hide show
  1. package/LICENSE +642 -277
  2. package/README.md +2 -1
  3. package/css/command-palette.css +9 -5
  4. package/css/decoration.css +3 -2
  5. package/css/glsp-sprotty.css +16 -7
  6. package/css/tool-palette.css +44 -27
  7. package/lib/base/action-dispatcher.d.ts +18 -2
  8. package/lib/base/action-dispatcher.d.ts.map +1 -1
  9. package/lib/base/action-dispatcher.js +41 -61
  10. package/lib/base/action-dispatcher.js.map +1 -1
  11. package/lib/base/actions/focus-change-action.d.ts +1 -1
  12. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  13. package/lib/base/actions/focus-change-action.js +4 -5
  14. package/lib/base/actions/focus-change-action.js.map +1 -1
  15. package/lib/base/{args.d.ts → argumentable.d.ts} +4 -6
  16. package/lib/base/argumentable.d.ts.map +1 -0
  17. package/lib/base/{args.js → argumentable.js} +1 -1
  18. package/lib/base/argumentable.js.map +1 -0
  19. package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
  20. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  21. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  22. package/lib/base/auto-complete/auto-complete-widget.d.ts +5 -5
  23. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  24. package/lib/base/auto-complete/auto-complete-widget.js +121 -152
  25. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  26. package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
  27. package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
  28. package/lib/base/auto-complete/validation-decorator.js +49 -65
  29. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  30. package/lib/base/command-stack.d.ts +1 -1
  31. package/lib/base/command-stack.d.ts.map +1 -1
  32. package/lib/base/command-stack.js +19 -37
  33. package/lib/base/command-stack.js.map +1 -1
  34. package/lib/base/container-modules.d.ts +40 -0
  35. package/lib/base/container-modules.d.ts.map +1 -0
  36. package/lib/base/container-modules.js +100 -0
  37. package/lib/base/container-modules.js.map +1 -0
  38. package/lib/base/di.config.d.ts +13 -3
  39. package/lib/base/di.config.d.ts.map +1 -1
  40. package/lib/base/di.config.js +50 -33
  41. package/lib/base/di.config.js.map +1 -1
  42. package/lib/base/drag-aware-mouse-listener.d.ts +3 -2
  43. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  44. package/lib/base/drag-aware-mouse-listener.js +23 -62
  45. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  46. package/lib/base/editor-context-service.d.ts +42 -0
  47. package/lib/base/editor-context-service.d.ts.map +1 -0
  48. package/lib/base/editor-context-service.js +109 -0
  49. package/lib/base/editor-context-service.js.map +1 -0
  50. package/lib/base/focus-tracker.d.ts +17 -1
  51. package/lib/base/focus-tracker.d.ts.map +1 -1
  52. package/lib/base/focus-tracker.js +19 -39
  53. package/lib/base/focus-tracker.js.map +1 -1
  54. package/lib/base/model/model-registry.d.ts +5 -0
  55. package/lib/base/model/model-registry.d.ts.map +1 -0
  56. package/lib/base/model/model-registry.js +43 -0
  57. package/lib/base/model/model-registry.js.map +1 -0
  58. package/lib/base/model/update-model-command.d.ts +20 -6
  59. package/lib/base/model/update-model-command.d.ts.map +1 -1
  60. package/lib/base/model/update-model-command.js +69 -94
  61. package/lib/base/model/update-model-command.js.map +1 -1
  62. package/lib/base/model-initialization-constraint.d.ts +17 -2
  63. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  64. package/lib/base/model-initialization-constraint.js +34 -54
  65. package/lib/base/model-initialization-constraint.js.map +1 -1
  66. package/lib/base/selection-clearing-mouse-listener.d.ts +1 -1
  67. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  68. package/lib/base/selection-clearing-mouse-listener.js +11 -28
  69. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  70. package/lib/base/source-uri-aware.js +2 -5
  71. package/lib/base/source-uri-aware.js.map +1 -1
  72. package/lib/base/tool-manager/glsp-tool-manager.d.ts +2 -2
  73. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  74. package/lib/base/tool-manager/glsp-tool-manager.js +59 -141
  75. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  76. package/lib/base/types.d.ts +3 -1
  77. package/lib/base/types.d.ts.map +1 -1
  78. package/lib/base/types.js +23 -21
  79. package/lib/base/types.js.map +1 -1
  80. package/lib/base/view/view-registry.d.ts +5 -0
  81. package/lib/base/view/view-registry.d.ts.map +1 -0
  82. package/lib/base/view/view-registry.js +43 -0
  83. package/lib/base/view/view-registry.js.map +1 -0
  84. package/lib/features/change-bounds/model.d.ts +4 -2
  85. package/lib/features/change-bounds/model.d.ts.map +1 -1
  86. package/lib/features/change-bounds/model.js +21 -32
  87. package/lib/features/change-bounds/model.js.map +1 -1
  88. package/lib/features/change-bounds/movement-restrictor.d.ts +18 -2
  89. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  90. package/lib/features/change-bounds/movement-restrictor.js +34 -46
  91. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  92. package/lib/features/change-bounds/snap.d.ts +17 -1
  93. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  94. package/lib/features/change-bounds/snap.js +13 -39
  95. package/lib/features/change-bounds/snap.js.map +1 -1
  96. package/lib/features/command-palette/command-palette-tool.d.ts +1 -1
  97. package/lib/features/command-palette/command-palette-tool.d.ts.map +1 -1
  98. package/lib/features/command-palette/command-palette-tool.js +30 -38
  99. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  100. package/lib/features/command-palette/di.config.d.ts +2 -2
  101. package/lib/features/command-palette/di.config.js +6 -6
  102. package/lib/features/command-palette/di.config.js.map +1 -1
  103. package/lib/features/command-palette/server-command-palette-provider.d.ts +19 -3
  104. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  105. package/lib/features/command-palette/server-command-palette-provider.js +31 -36
  106. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  107. package/lib/features/context-menu/delete-element-context-menu.d.ts +2 -2
  108. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  109. package/lib/features/context-menu/delete-element-context-menu.js +24 -72
  110. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  111. package/lib/features/context-menu/di.config.d.ts +2 -2
  112. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  113. package/lib/features/context-menu/di.config.js +14 -18
  114. package/lib/features/context-menu/di.config.js.map +1 -1
  115. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +2 -2
  116. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  117. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
  118. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  119. package/lib/features/context-menu/server-context-menu-provider.d.ts +19 -3
  120. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  121. package/lib/features/context-menu/server-context-menu-provider.js +31 -32
  122. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  123. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
  124. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  125. package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
  126. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  127. package/lib/features/copy-paste/copy-paste-handler.d.ts +21 -4
  128. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  129. package/lib/features/copy-paste/copy-paste-handler.js +70 -70
  130. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  131. package/lib/features/copy-paste/di.config.d.ts +2 -2
  132. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  133. package/lib/features/copy-paste/di.config.js +11 -11
  134. package/lib/features/copy-paste/di.config.js.map +1 -1
  135. package/lib/features/decoration/decoration-placer.d.ts +17 -1
  136. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  137. package/lib/features/decoration/decoration-placer.js +14 -47
  138. package/lib/features/decoration/decoration-placer.js.map +1 -1
  139. package/lib/features/decoration/di.config.d.ts +2 -2
  140. package/lib/features/decoration/di.config.d.ts.map +1 -1
  141. package/lib/features/decoration/di.config.js +4 -6
  142. package/lib/features/decoration/di.config.js.map +1 -1
  143. package/lib/features/edit-label/di.config.d.ts +1 -1
  144. package/lib/features/edit-label/di.config.js +7 -7
  145. package/lib/features/edit-label/di.config.js.map +1 -1
  146. package/lib/features/edit-label/edit-label-tool.d.ts +2 -2
  147. package/lib/features/edit-label/edit-label-tool.js +20 -43
  148. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  149. package/lib/features/edit-label/edit-label-validator.d.ts +18 -3
  150. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  151. package/lib/features/edit-label/edit-label-validator.js +40 -62
  152. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  153. package/lib/features/hints/di.config.d.ts +1 -16
  154. package/lib/features/hints/di.config.d.ts.map +1 -1
  155. package/lib/features/hints/di.config.js +9 -9
  156. package/lib/features/hints/di.config.js.map +1 -1
  157. package/lib/features/hints/model.d.ts +3 -2
  158. package/lib/features/hints/model.d.ts.map +1 -1
  159. package/lib/features/hints/model.js +2 -2
  160. package/lib/features/hints/model.js.map +1 -1
  161. package/lib/features/hints/type-hints.d.ts +21 -49
  162. package/lib/features/hints/type-hints.d.ts.map +1 -1
  163. package/lib/features/hints/type-hints.js +83 -142
  164. package/lib/features/hints/type-hints.js.map +1 -1
  165. package/lib/features/hover/di.config.d.ts +2 -2
  166. package/lib/features/hover/di.config.d.ts.map +1 -1
  167. package/lib/features/hover/di.config.js +8 -8
  168. package/lib/features/hover/di.config.js.map +1 -1
  169. package/lib/features/hover/hover.d.ts +18 -2
  170. package/lib/features/hover/hover.d.ts.map +1 -1
  171. package/lib/features/hover/hover.js +37 -75
  172. package/lib/features/hover/hover.js.map +1 -1
  173. package/lib/features/layout/di.config.d.ts +6 -2
  174. package/lib/features/layout/di.config.d.ts.map +1 -1
  175. package/lib/features/layout/di.config.js +47 -7
  176. package/lib/features/layout/di.config.js.map +1 -1
  177. package/lib/features/layout/freeform-layout.d.ts +16 -0
  178. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  179. package/lib/features/layout/freeform-layout.js +107 -0
  180. package/lib/features/layout/freeform-layout.js.map +1 -0
  181. package/lib/features/layout/layout-commands.d.ts +26 -10
  182. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  183. package/lib/features/layout/layout-commands.js +189 -264
  184. package/lib/features/layout/layout-commands.js.map +1 -1
  185. package/lib/features/layout/layout-commands.spec.d.ts +2 -17
  186. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
  187. package/lib/features/layout/layout-commands.spec.js +124 -117
  188. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  189. package/lib/features/layout/vbox-layout.d.ts +25 -0
  190. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  191. package/lib/features/layout/vbox-layout.js +188 -0
  192. package/lib/features/layout/vbox-layout.js.map +1 -0
  193. package/lib/features/model-source-watcher/di.config.d.ts +1 -16
  194. package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
  195. package/lib/features/model-source-watcher/di.config.js +7 -7
  196. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  197. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
  198. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  199. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -46
  200. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  201. package/lib/features/mouse-tool/di.config.d.ts +1 -1
  202. package/lib/features/mouse-tool/di.config.js +5 -5
  203. package/lib/features/mouse-tool/di.config.js.map +1 -1
  204. package/lib/features/mouse-tool/mouse-tool.d.ts +3 -2
  205. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  206. package/lib/features/mouse-tool/mouse-tool.js +74 -217
  207. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  208. package/lib/features/navigation/di.config.d.ts +1 -16
  209. package/lib/features/navigation/di.config.d.ts.map +1 -1
  210. package/lib/features/navigation/di.config.js +11 -10
  211. package/lib/features/navigation/di.config.js.map +1 -1
  212. package/lib/features/navigation/navigation-action-handler.d.ts +19 -39
  213. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  214. package/lib/features/navigation/navigation-action-handler.js +118 -255
  215. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  216. package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
  217. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  218. package/lib/features/navigation/navigation-target-resolver.js +46 -188
  219. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  220. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +2 -17
  221. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  222. package/lib/features/navigation/navigation-target-resolver.spec.js +27 -26
  223. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  224. package/lib/features/rank/model.d.ts +2 -2
  225. package/lib/features/rank/model.d.ts.map +1 -1
  226. package/lib/features/rank/model.js +2 -2
  227. package/lib/features/rank/model.js.map +1 -1
  228. package/lib/features/reconnect/model.d.ts +2 -2
  229. package/lib/features/reconnect/model.d.ts.map +1 -1
  230. package/lib/features/reconnect/model.js +10 -28
  231. package/lib/features/reconnect/model.js.map +1 -1
  232. package/lib/features/save/di.config.d.ts +2 -2
  233. package/lib/features/save/di.config.d.ts.map +1 -1
  234. package/lib/features/save/di.config.js +6 -6
  235. package/lib/features/save/di.config.js.map +1 -1
  236. package/lib/features/save/model.d.ts +1 -1
  237. package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -10
  238. package/lib/features/save/save-keylistener.d.ts.map +1 -0
  239. package/lib/features/{undo-redo/model.d.ts → save/save-keylistener.js} +16 -12
  240. package/lib/features/save/save-keylistener.js.map +1 -0
  241. package/lib/features/select/di.config.d.ts +1 -1
  242. package/lib/features/select/di.config.js +11 -11
  243. package/lib/features/select/di.config.js.map +1 -1
  244. package/lib/features/select/select-feedback-action.d.ts +1 -1
  245. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  246. package/lib/features/select/select-feedback-action.js +45 -71
  247. package/lib/features/select/select-feedback-action.js.map +1 -1
  248. package/lib/features/select/select-mouse-listener.d.ts +2 -2
  249. package/lib/features/select/select-mouse-listener.js +7 -23
  250. package/lib/features/select/select-mouse-listener.js.map +1 -1
  251. package/lib/features/select/selection-service.d.ts +19 -3
  252. package/lib/features/select/selection-service.d.ts.map +1 -1
  253. package/lib/features/select/selection-service.js +134 -236
  254. package/lib/features/select/selection-service.js.map +1 -1
  255. package/lib/features/select/selection-service.spec.js +96 -138
  256. package/lib/features/select/selection-service.spec.js.map +1 -1
  257. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +21 -4
  258. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  259. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +117 -149
  260. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  261. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +19 -2
  262. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  263. package/lib/features/tool-feedback/creation-tool-feedback.js +81 -115
  264. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  265. package/lib/features/tool-feedback/css-feedback.d.ts +21 -3
  266. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  267. package/lib/features/tool-feedback/css-feedback.js +37 -81
  268. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  269. package/lib/features/tool-feedback/di.config.d.ts +2 -2
  270. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  271. package/lib/features/tool-feedback/di.config.js +27 -27
  272. package/lib/features/tool-feedback/di.config.js.map +1 -1
  273. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +21 -4
  274. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  275. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +160 -204
  276. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  277. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +19 -3
  278. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  279. package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
  280. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  281. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +18 -2
  282. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  283. package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -86
  284. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  285. package/lib/features/tool-feedback/model.d.ts +2 -2
  286. package/lib/features/tool-feedback/model.js +11 -27
  287. package/lib/features/tool-feedback/model.js.map +1 -1
  288. package/lib/features/tool-feedback/view.d.ts +22 -6
  289. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  290. package/lib/features/tool-feedback/view.js +30 -51
  291. package/lib/features/tool-feedback/view.js.map +1 -1
  292. package/lib/features/tool-palette/di.config.d.ts +2 -2
  293. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  294. package/lib/features/tool-palette/di.config.js +6 -6
  295. package/lib/features/tool-palette/di.config.js.map +1 -1
  296. package/lib/features/tool-palette/palette-item.d.ts +2 -3
  297. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  298. package/lib/features/tool-palette/palette-item.js +6 -6
  299. package/lib/features/tool-palette/palette-item.js.map +1 -1
  300. package/lib/features/tool-palette/tool-palette.d.ts +22 -6
  301. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  302. package/lib/features/tool-palette/tool-palette.js +225 -291
  303. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  304. package/lib/features/tools/base-glsp-tool.d.ts +21 -5
  305. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  306. package/lib/features/tools/base-glsp-tool.js +37 -59
  307. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  308. package/lib/features/tools/change-bounds-tool.d.ts +26 -9
  309. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  310. package/lib/features/tools/change-bounds-tool.js +192 -241
  311. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  312. package/lib/features/tools/delete-tool.d.ts +20 -4
  313. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  314. package/lib/features/tools/delete-tool.js +71 -104
  315. package/lib/features/tools/delete-tool.js.map +1 -1
  316. package/lib/features/tools/di.config.d.ts +1 -16
  317. package/lib/features/tools/di.config.d.ts.map +1 -1
  318. package/lib/features/tools/di.config.js +19 -19
  319. package/lib/features/tools/di.config.js.map +1 -1
  320. package/lib/features/tools/edge-creation-tool.d.ts +20 -5
  321. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  322. package/lib/features/tools/edge-creation-tool.js +64 -89
  323. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  324. package/lib/features/tools/edge-edit-tool.d.ts +22 -6
  325. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  326. package/lib/features/tools/edge-edit-tool.js +125 -189
  327. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  328. package/lib/features/tools/marquee-behavior.d.ts +42 -0
  329. package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
  330. package/lib/features/tools/marquee-behavior.js +128 -0
  331. package/lib/features/tools/marquee-behavior.js.map +1 -0
  332. package/{src/features/undo-redo/model.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -12
  333. package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
  334. package/lib/features/tools/marquee-behavior.spec.js +165 -0
  335. package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
  336. package/lib/features/tools/marquee-mouse-tool.d.ts +27 -15
  337. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  338. package/lib/features/tools/marquee-mouse-tool.js +90 -184
  339. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  340. package/lib/features/tools/marquee-tool.d.ts +18 -2
  341. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  342. package/lib/features/tools/marquee-tool.js +32 -73
  343. package/lib/features/tools/marquee-tool.js.map +1 -1
  344. package/lib/features/tools/model.d.ts +1 -1
  345. package/lib/features/tools/model.d.ts.map +1 -1
  346. package/lib/features/tools/model.js +6 -24
  347. package/lib/features/tools/model.js.map +1 -1
  348. package/lib/features/tools/node-creation-tool.d.ts +20 -5
  349. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  350. package/lib/features/tools/node-creation-tool.js +60 -90
  351. package/lib/features/tools/node-creation-tool.js.map +1 -1
  352. package/lib/features/tools/view.d.ts +3 -18
  353. package/lib/features/tools/view.d.ts.map +1 -1
  354. package/lib/features/tools/view.js +21 -39
  355. package/lib/features/tools/view.js.map +1 -1
  356. package/lib/features/validation/di.config.d.ts +1 -1
  357. package/lib/features/validation/di.config.js +12 -12
  358. package/lib/features/validation/di.config.js.map +1 -1
  359. package/lib/features/validation/issue-marker.d.ts +3 -3
  360. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  361. package/lib/features/validation/issue-marker.js +18 -56
  362. package/lib/features/validation/issue-marker.js.map +1 -1
  363. package/lib/features/validation/marker-navigator.d.ts +19 -3
  364. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  365. package/lib/features/validation/marker-navigator.js +131 -164
  366. package/lib/features/validation/marker-navigator.js.map +1 -1
  367. package/lib/features/validation/marker-navigator.spec.d.ts +2 -17
  368. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  369. package/lib/features/validation/marker-navigator.spec.js +84 -77
  370. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  371. package/lib/features/validation/validate.d.ts +20 -31
  372. package/lib/features/validation/validate.d.ts.map +1 -1
  373. package/lib/features/validation/validate.js +148 -299
  374. package/lib/features/validation/validate.js.map +1 -1
  375. package/lib/features/viewport/di.config.d.ts +16 -1
  376. package/lib/features/viewport/di.config.d.ts.map +1 -1
  377. package/lib/features/viewport/di.config.js +10 -10
  378. package/lib/features/viewport/di.config.js.map +1 -1
  379. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +3 -2
  380. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  381. package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -47
  382. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  383. package/lib/index.d.ts +32 -35
  384. package/lib/index.d.ts.map +1 -1
  385. package/lib/index.js +33 -35
  386. package/lib/index.js.map +1 -1
  387. package/lib/lib/model.d.ts +3 -3
  388. package/lib/lib/model.d.ts.map +1 -1
  389. package/lib/lib/model.js +11 -27
  390. package/lib/lib/model.js.map +1 -1
  391. package/lib/model-source/glsp-diagram-server.d.ts +4 -6
  392. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  393. package/lib/model-source/glsp-diagram-server.js +63 -122
  394. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  395. package/lib/protocol-reexport.d.ts +45 -0
  396. package/lib/protocol-reexport.d.ts.map +1 -0
  397. package/lib/protocol-reexport.js +75 -0
  398. package/lib/protocol-reexport.js.map +1 -0
  399. package/lib/utils/argument-utils.d.ts +50 -0
  400. package/lib/utils/argument-utils.d.ts.map +1 -0
  401. package/lib/utils/argument-utils.js +110 -0
  402. package/lib/utils/argument-utils.js.map +1 -0
  403. package/lib/utils/html-utils.js +2 -2
  404. package/lib/utils/html-utils.js.map +1 -1
  405. package/lib/utils/layout-utils.d.ts +4 -3
  406. package/lib/utils/layout-utils.d.ts.map +1 -1
  407. package/lib/utils/layout-utils.js +5 -5
  408. package/lib/utils/layout-utils.js.map +1 -1
  409. package/lib/utils/marker.d.ts +1 -39
  410. package/lib/utils/marker.d.ts.map +1 -1
  411. package/lib/utils/marker.js +14 -61
  412. package/lib/utils/marker.js.map +1 -1
  413. package/lib/utils/smodel-util.d.ts +7 -17
  414. package/lib/utils/smodel-util.d.ts.map +1 -1
  415. package/lib/utils/smodel-util.js +18 -67
  416. package/lib/utils/smodel-util.js.map +1 -1
  417. package/lib/utils/viewpoint-util.d.ts +3 -2
  418. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  419. package/lib/utils/viewpoint-util.js +15 -30
  420. package/lib/utils/viewpoint-util.js.map +1 -1
  421. package/lib/views/base-view-module.d.ts +9 -0
  422. package/lib/views/base-view-module.d.ts.map +1 -0
  423. package/lib/views/base-view-module.js +59 -0
  424. package/lib/views/base-view-module.js.map +1 -0
  425. package/lib/views/compartments.d.ts +6 -0
  426. package/lib/views/compartments.d.ts.map +1 -0
  427. package/lib/views/compartments.js +43 -0
  428. package/lib/views/compartments.js.map +1 -0
  429. package/lib/views/glsp-edge-view.d.ts +27 -0
  430. package/lib/views/glsp-edge-view.d.ts.map +1 -0
  431. package/lib/views/glsp-edge-view.js +55 -0
  432. package/lib/views/glsp-edge-view.js.map +1 -0
  433. package/lib/{features/model-source-watcher/model-source-changed-action.d.ts → views/index.d.ts} +8 -10
  434. package/lib/views/index.d.ts.map +1 -0
  435. package/lib/views/index.js +34 -0
  436. package/lib/views/index.js.map +1 -0
  437. package/lib/views/issue-marker-view.d.ts +9 -0
  438. package/lib/views/issue-marker-view.d.ts.map +1 -0
  439. package/lib/views/issue-marker-view.js +68 -0
  440. package/lib/views/issue-marker-view.js.map +1 -0
  441. package/lib/views/rounded-corner-view.d.ts +13 -0
  442. package/lib/views/rounded-corner-view.d.ts.map +1 -0
  443. package/lib/views/rounded-corner-view.js +82 -0
  444. package/lib/views/rounded-corner-view.js.map +1 -0
  445. package/lib/views/rounded-corner.d.ts +38 -0
  446. package/lib/views/rounded-corner.d.ts.map +1 -0
  447. package/lib/views/rounded-corner.js +62 -0
  448. package/lib/views/rounded-corner.js.map +1 -0
  449. package/package.json +24 -32
  450. package/src/base/action-dispatcher.ts +7 -8
  451. package/src/base/actions/focus-change-action.ts +2 -2
  452. package/src/base/{args.ts → argumentable.ts} +3 -4
  453. package/src/base/auto-complete/auto-complete-actions.ts +2 -2
  454. package/src/base/auto-complete/auto-complete-widget.ts +66 -48
  455. package/src/base/auto-complete/validation-decorator.ts +21 -15
  456. package/src/base/command-stack.ts +4 -7
  457. package/src/base/container-modules.ts +112 -0
  458. package/src/base/di.config.ts +44 -27
  459. package/src/base/drag-aware-mouse-listener.ts +7 -8
  460. package/src/base/{editor-context.ts → editor-context-service.ts} +13 -40
  461. package/src/base/focus-tracker.ts +4 -6
  462. package/src/base/model/model-registry.ts +31 -0
  463. package/src/base/model/update-model-command.ts +14 -22
  464. package/src/base/model-initialization-constraint.ts +16 -11
  465. package/src/base/selection-clearing-mouse-listener.ts +4 -3
  466. package/src/base/tool-manager/glsp-tool-manager.ts +12 -14
  467. package/src/base/types.ts +23 -21
  468. package/src/{features/model-source-watcher/model-source-changed-action.ts → base/view/view-registry.ts} +15 -10
  469. package/src/features/change-bounds/model.ts +23 -13
  470. package/src/features/change-bounds/movement-restrictor.ts +28 -18
  471. package/src/features/change-bounds/snap.ts +6 -5
  472. package/src/features/command-palette/command-palette-tool.ts +4 -4
  473. package/src/features/command-palette/di.config.ts +7 -7
  474. package/src/features/command-palette/server-command-palette-provider.ts +16 -14
  475. package/src/features/context-menu/delete-element-context-menu.ts +10 -11
  476. package/src/features/context-menu/di.config.ts +10 -12
  477. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +8 -7
  478. package/src/features/context-menu/server-context-menu-provider.ts +13 -10
  479. package/src/features/copy-paste/copy-paste-context-menu.ts +66 -37
  480. package/src/features/copy-paste/copy-paste-handler.ts +30 -20
  481. package/src/features/copy-paste/di.config.ts +6 -7
  482. package/src/features/decoration/decoration-placer.ts +6 -15
  483. package/src/features/decoration/di.config.ts +4 -6
  484. package/src/features/edit-label/di.config.ts +5 -5
  485. package/src/features/edit-label/edit-label-tool.ts +4 -4
  486. package/src/features/edit-label/edit-label-validator.ts +18 -19
  487. package/src/features/hints/di.config.ts +6 -7
  488. package/src/features/hints/model.ts +7 -6
  489. package/src/features/hints/type-hints.ts +46 -113
  490. package/src/features/hover/di.config.ts +6 -7
  491. package/src/features/hover/hover.ts +11 -14
  492. package/src/features/layout/di.config.ts +32 -6
  493. package/src/features/layout/freeform-layout.ts +133 -0
  494. package/src/features/layout/layout-commands.spec.ts +104 -85
  495. package/src/features/layout/layout-commands.ts +65 -54
  496. package/src/features/layout/vbox-layout.ts +256 -0
  497. package/src/features/model-source-watcher/di.config.ts +5 -6
  498. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +16 -12
  499. package/src/features/mouse-tool/di.config.ts +4 -4
  500. package/src/features/mouse-tool/mouse-tool.ts +44 -32
  501. package/src/features/navigation/di.config.ts +6 -12
  502. package/src/features/navigation/navigation-action-handler.ts +46 -78
  503. package/src/features/navigation/navigation-target-resolver.spec.ts +6 -9
  504. package/src/features/navigation/navigation-target-resolver.ts +16 -94
  505. package/src/features/rank/model.ts +3 -3
  506. package/src/features/reconnect/model.ts +9 -11
  507. package/src/features/save/di.config.ts +4 -5
  508. package/src/features/save/model.ts +1 -1
  509. package/src/features/save/{save.ts → save-keylistener.ts} +4 -12
  510. package/src/features/select/di.config.ts +6 -6
  511. package/src/features/select/select-feedback-action.ts +6 -8
  512. package/src/features/select/select-mouse-listener.ts +2 -2
  513. package/src/features/select/selection-service.spec.ts +25 -19
  514. package/src/features/select/selection-service.ts +25 -22
  515. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +56 -39
  516. package/src/features/tool-feedback/creation-tool-feedback.ts +49 -24
  517. package/src/features/tool-feedback/css-feedback.ts +16 -13
  518. package/src/features/tool-feedback/di.config.ts +12 -15
  519. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +56 -35
  520. package/src/features/tool-feedback/feedback-action-dispatcher.ts +13 -14
  521. package/src/features/tool-feedback/marquee-tool-feedback.ts +12 -12
  522. package/src/features/tool-feedback/model.ts +2 -3
  523. package/src/features/tool-feedback/view.tsx +20 -13
  524. package/src/features/tool-palette/di.config.ts +5 -7
  525. package/src/features/tool-palette/palette-item.ts +5 -7
  526. package/src/features/tool-palette/tool-palette.ts +118 -110
  527. package/src/features/tools/base-glsp-tool.ts +12 -12
  528. package/src/features/tools/change-bounds-tool.ts +83 -53
  529. package/src/features/tools/delete-tool.ts +23 -20
  530. package/src/features/tools/di.config.ts +16 -17
  531. package/src/features/tools/edge-creation-tool.ts +20 -25
  532. package/src/features/tools/edge-edit-tool.ts +43 -46
  533. package/src/features/tools/marquee-behavior.spec.ts +175 -0
  534. package/src/features/tools/marquee-behavior.ts +158 -0
  535. package/src/features/tools/marquee-mouse-tool.ts +67 -118
  536. package/src/features/tools/marquee-tool.ts +6 -6
  537. package/src/features/tools/model.ts +1 -2
  538. package/src/features/tools/node-creation-tool.ts +16 -23
  539. package/src/features/tools/view.tsx +21 -15
  540. package/src/features/validation/di.config.ts +5 -5
  541. package/src/features/validation/issue-marker.ts +4 -5
  542. package/src/features/validation/marker-navigator.spec.ts +38 -33
  543. package/src/features/validation/marker-navigator.ts +39 -26
  544. package/src/features/validation/validate.ts +25 -59
  545. package/src/features/viewport/di.config.ts +4 -4
  546. package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
  547. package/src/index.ts +53 -38
  548. package/src/lib/model.ts +4 -4
  549. package/src/model-source/glsp-diagram-server.ts +19 -33
  550. package/src/protocol-reexport.ts +64 -0
  551. package/src/utils/argument-utils.ts +130 -0
  552. package/src/utils/layout-utils.ts +19 -11
  553. package/src/utils/marker.ts +8 -32
  554. package/src/utils/smodel-util.ts +28 -22
  555. package/src/utils/viewpoint-util.ts +5 -6
  556. package/src/views/base-view-module.ts +97 -0
  557. package/src/views/compartments.tsx +37 -0
  558. package/src/views/glsp-edge-view.tsx +79 -0
  559. package/src/views/index.ts +21 -0
  560. package/src/views/issue-marker-view.tsx +65 -0
  561. package/src/views/rounded-corner-view.tsx +103 -0
  562. package/src/views/rounded-corner.ts +87 -0
  563. package/lib/base/actions/context-actions.d.ts +0 -36
  564. package/lib/base/actions/context-actions.d.ts.map +0 -1
  565. package/lib/base/actions/context-actions.js +0 -51
  566. package/lib/base/actions/context-actions.js.map +0 -1
  567. package/lib/base/actions/edit-mode-action.d.ts +0 -13
  568. package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
  569. package/lib/base/actions/edit-mode-action.js +0 -56
  570. package/lib/base/actions/edit-mode-action.js.map +0 -1
  571. package/lib/base/actions/edit-validation-actions.d.ts +0 -78
  572. package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
  573. package/lib/base/actions/edit-validation-actions.js +0 -82
  574. package/lib/base/actions/edit-validation-actions.js.map +0 -1
  575. package/lib/base/actions/protocol-actions.d.ts +0 -41
  576. package/lib/base/actions/protocol-actions.d.ts.map +0 -1
  577. package/lib/base/actions/protocol-actions.js +0 -151
  578. package/lib/base/actions/protocol-actions.js.map +0 -1
  579. package/lib/base/args.d.ts.map +0 -1
  580. package/lib/base/args.js.map +0 -1
  581. package/lib/base/editor-context.d.ts +0 -46
  582. package/lib/base/editor-context.d.ts.map +0 -1
  583. package/lib/base/editor-context.js +0 -174
  584. package/lib/base/editor-context.js.map +0 -1
  585. package/lib/base/operations/operation.d.ts +0 -135
  586. package/lib/base/operations/operation.d.ts.map +0 -1
  587. package/lib/base/operations/operation.js +0 -231
  588. package/lib/base/operations/operation.js.map +0 -1
  589. package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
  590. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
  591. package/lib/features/copy-paste/copy-paste-actions.js +0 -68
  592. package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
  593. package/lib/features/decoration/view.d.ts +0 -8
  594. package/lib/features/decoration/view.d.ts.map +0 -1
  595. package/lib/features/decoration/view.js +0 -80
  596. package/lib/features/decoration/view.js.map +0 -1
  597. package/lib/features/hints/request-type-hints-action.d.ts +0 -32
  598. package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
  599. package/lib/features/hints/request-type-hints-action.js +0 -30
  600. package/lib/features/hints/request-type-hints-action.js.map +0 -1
  601. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
  602. package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
  603. package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
  604. package/lib/features/save/save.d.ts.map +0 -1
  605. package/lib/features/save/save.js +0 -62
  606. package/lib/features/save/save.js.map +0 -1
  607. package/lib/features/undo-redo/model.d.ts.map +0 -1
  608. package/lib/features/undo-redo/model.js +0 -22
  609. package/lib/features/undo-redo/model.js.map +0 -1
  610. package/lib/model-source/glsp-server-status.d.ts +0 -30
  611. package/lib/model-source/glsp-server-status.d.ts.map +0 -1
  612. package/lib/model-source/glsp-server-status.js +0 -61
  613. package/lib/model-source/glsp-server-status.js.map +0 -1
  614. package/lib/utils/array-utils.d.ts +0 -28
  615. package/lib/utils/array-utils.d.ts.map +0 -1
  616. package/lib/utils/array-utils.js +0 -61
  617. package/lib/utils/array-utils.js.map +0 -1
  618. package/src/base/actions/context-actions.ts +0 -43
  619. package/src/base/actions/edit-mode-action.ts +0 -33
  620. package/src/base/actions/edit-validation-actions.ts +0 -102
  621. package/src/base/actions/protocol-actions.ts +0 -82
  622. package/src/base/operations/operation.ts +0 -178
  623. package/src/features/copy-paste/copy-paste-actions.ts +0 -60
  624. package/src/features/decoration/view.tsx +0 -54
  625. package/src/features/hints/request-type-hints-action.ts +0 -36
  626. package/src/model-source/glsp-server-status.ts +0 -38
  627. package/src/utils/array-utils.ts +0 -55
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -25,22 +25,22 @@ import {
25
25
  Selectable,
26
26
  SModelElement,
27
27
  SParentElement
28
- } from "sprotty";
28
+ } from 'sprotty';
29
29
 
30
- export const resizeFeature = Symbol("resizeFeature");
30
+ export const resizeFeature = Symbol('resizeFeature');
31
31
 
32
- export interface Resizable extends BoundsAware, Selectable {
33
- }
32
+ export interface Resizable extends BoundsAware, Selectable {}
34
33
 
35
34
  export function isResizable(element: SModelElement): element is SParentElement & Resizable {
36
35
  return isBoundsAware(element) && isSelectable(element) && element instanceof SParentElement && element.hasFeature(resizeFeature);
37
36
  }
38
37
 
38
+ // eslint-disable-next-line no-shadow
39
39
  export enum ResizeHandleLocation {
40
- TopLeft = "top-left",
41
- TopRight = "top-right",
42
- BottomLeft = "bottom-left",
43
- BottomRight = "bottom-right"
40
+ TopLeft = 'top-left',
41
+ TopRight = 'top-right',
42
+ BottomLeft = 'bottom-left',
43
+ BottomRight = 'bottom-right'
44
44
  }
45
45
 
46
46
  export function isBoundsAwareMoveable(element: SModelElement): element is SModelElement & Locateable & BoundsAware {
@@ -50,18 +50,28 @@ export function isBoundsAwareMoveable(element: SModelElement): element is SModel
50
50
  export class SResizeHandle extends SChildElement implements Hoverable {
51
51
  static readonly TYPE = 'resize-handle';
52
52
 
53
- constructor(public readonly location?: ResizeHandleLocation,
53
+ constructor(
54
+ public readonly location?: ResizeHandleLocation,
54
55
  public readonly type: string = SResizeHandle.TYPE,
55
- public readonly hoverFeedback: boolean = false) {
56
+ public readonly hoverFeedback: boolean = false
57
+ ) {
56
58
  super();
57
59
  }
58
60
 
59
61
  hasFeature(feature: symbol): boolean {
60
62
  return feature === hoverFeedbackFeature;
61
63
  }
64
+
65
+ isNwSeResize(): boolean {
66
+ return this.location === ResizeHandleLocation.TopLeft || this.location === ResizeHandleLocation.BottomRight;
67
+ }
68
+
69
+ isNeSwResize(): boolean {
70
+ return this.location === ResizeHandleLocation.TopRight || this.location === ResizeHandleLocation.BottomLeft;
71
+ }
62
72
  }
63
73
 
64
- export function addResizeHandles(element: SParentElement) {
74
+ export function addResizeHandles(element: SParentElement): void {
65
75
  removeResizeHandles(element);
66
76
  element.add(new SResizeHandle(ResizeHandleLocation.TopLeft));
67
77
  element.add(new SResizeHandle(ResizeHandleLocation.TopRight));
@@ -69,6 +79,6 @@ export function addResizeHandles(element: SParentElement) {
69
79
  element.add(new SResizeHandle(ResizeHandleLocation.BottomRight));
70
80
  }
71
81
 
72
- export function removeResizeHandles(element: SParentElement) {
82
+ export function removeResizeHandles(element: SParentElement): void {
73
83
  element.removeAll(child => child instanceof SResizeHandle);
74
84
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,28 +13,33 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { injectable } from "inversify";
17
- import { BoundsAware, Point, SModelElement, SNode, SParentElement } from "sprotty";
18
-
19
- import { toAbsoluteBounds } from "../../utils/viewpoint-util";
20
- import { ModifyCSSFeedbackAction } from "../tool-feedback/css-feedback";
21
- import { isBoundsAwareMoveable, SResizeHandle } from "./model";
16
+ import { Point } from '@eclipse-glsp/protocol';
17
+ import { injectable } from 'inversify';
18
+ import { BoundsAware, SModelElement, SNode, SParentElement } from 'sprotty';
19
+ import { toAbsoluteBounds } from '../../utils/viewpoint-util';
20
+ import { ModifyCSSFeedbackAction } from '../tool-feedback/css-feedback';
21
+ import { isBoundsAwareMoveable, SResizeHandle } from './model';
22
22
 
23
23
  export interface IMovementRestrictor {
24
24
  validate(newLocation: Point, element: SModelElement): boolean;
25
25
  cssClasses?: string[];
26
26
  }
27
27
 
28
- export function createMovementRestrictionFeedback(element: SModelElement, movementRestrictor: IMovementRestrictor): ModifyCSSFeedbackAction {
28
+ export function createMovementRestrictionFeedback(
29
+ element: SModelElement,
30
+ movementRestrictor: IMovementRestrictor
31
+ ): ModifyCSSFeedbackAction {
29
32
  const elements: SModelElement[] = [element];
30
33
  if (element instanceof SParentElement) {
31
34
  element.children.filter(child => child instanceof SResizeHandle).forEach(e => elements.push(e));
32
35
  }
33
36
  return new ModifyCSSFeedbackAction(elements, movementRestrictor.cssClasses);
34
-
35
37
  }
36
38
 
37
- export function removeMovementRestrictionFeedback(element: SModelElement, movementRestrictor: IMovementRestrictor): ModifyCSSFeedbackAction {
39
+ export function removeMovementRestrictionFeedback(
40
+ element: SModelElement,
41
+ movementRestrictor: IMovementRestrictor
42
+ ): ModifyCSSFeedbackAction {
38
43
  const elements: SModelElement[] = [element];
39
44
  if (element instanceof SParentElement) {
40
45
  element.children.filter(child => child instanceof SResizeHandle).forEach(e => elements.push(e));
@@ -45,7 +50,7 @@ export function removeMovementRestrictionFeedback(element: SModelElement, moveme
45
50
 
46
51
  @injectable()
47
52
  export class NoOverlapMovmentRestrictor implements IMovementRestrictor {
48
- cssClasses = ["movement-not-allowed"];
53
+ cssClasses = ['movement-not-allowed'];
49
54
 
50
55
  validate(newLocation: Point, element: SModelElement): boolean {
51
56
  if (!isBoundsAwareMoveable(element)) {
@@ -59,14 +64,18 @@ export class NoOverlapMovmentRestrictor implements IMovementRestrictor {
59
64
  width: element.bounds.width,
60
65
  height: element.bounds.height
61
66
  };
62
- ghostElement.type = "Ghost";
67
+ ghostElement.type = 'Ghost';
63
68
  ghostElement.id = element.id;
64
- return !Array.from(element.root.index.all().filter(e => e.id !== ghostElement.id && e !== ghostElement.root && (e instanceof SNode))
65
- .map(e => e as SModelElement & BoundsAware)).some(e => areOverlapping(e, ghostElement));
69
+ return !Array.from(
70
+ element.root.index
71
+ .all()
72
+ .filter(e => e.id !== ghostElement.id && e !== ghostElement.root && e instanceof SNode)
73
+ .map(e => e as SModelElement & BoundsAware)
74
+ ).some(e => areOverlapping(e, ghostElement));
66
75
  }
67
76
  }
68
77
 
69
- export function areOverlapping(element1: SModelElement & BoundsAware, element2: SModelElement & BoundsAware) {
78
+ export function areOverlapping(element1: SModelElement & BoundsAware, element2: SModelElement & BoundsAware): boolean {
70
79
  const b1 = toAbsoluteBounds(element1);
71
80
  const b2 = toAbsoluteBounds(element2);
72
81
  const r1TopLeft: Point = b1;
@@ -75,13 +84,14 @@ export function areOverlapping(element1: SModelElement & BoundsAware, element2:
75
84
  const r2BottomRight = { x: b2.x + b2.width, y: b2.y + b2.height };
76
85
 
77
86
  // If one rectangle is on left side of other
78
- if (r1TopLeft.x > r2BottomRight.x || r2TopLeft.x > r1BottomRight.x)
87
+ if (r1TopLeft.x > r2BottomRight.x || r2TopLeft.x > r1BottomRight.x) {
79
88
  return false;
89
+ }
80
90
 
81
91
  // If one rectangle is above other
82
- if (r1BottomRight.y < r2TopLeft.y || r2BottomRight.y < r1TopLeft.y)
92
+ if (r1BottomRight.y < r2TopLeft.y || r2BottomRight.y < r1TopLeft.y) {
83
93
  return false;
94
+ }
84
95
 
85
96
  return true;
86
-
87
97
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020 EclipseSource and others.
2
+ * Copyright (c) 2020-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,16 +13,17 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { injectable } from "inversify";
17
- import { ISnapper, Point, SModelElement } from "sprotty";
16
+ import { Point } from '@eclipse-glsp/protocol';
17
+ import { injectable } from 'inversify';
18
+ import { ISnapper, SModelElement } from 'sprotty';
18
19
 
19
20
  @injectable()
20
21
  export class GridSnapper implements ISnapper {
21
- get gridX() {
22
+ get gridX(): number {
22
23
  return 10;
23
24
  }
24
25
 
25
- get gridY() {
26
+ get gridY(): number {
26
27
  return 10;
27
28
  }
28
29
 
@@ -13,18 +13,18 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable, postConstruct } from "inversify";
17
- import { CommandPaletteKeyListener, KeyListener, KeyTool, Tool } from "sprotty";
16
+ import { inject, injectable, postConstruct } from 'inversify';
17
+ import { CommandPaletteKeyListener, KeyListener, KeyTool, Tool } from 'sprotty';
18
18
 
19
19
  @injectable()
20
20
  export class CommandPaletteTool implements Tool {
21
- static ID = "glsp.command-palette-tool";
21
+ static ID = 'glsp.command-palette-tool';
22
22
 
23
23
  protected commandPaletteKeyListener: KeyListener;
24
24
  @inject(KeyTool) protected keyTool: KeyTool;
25
25
 
26
26
  @postConstruct()
27
- protected postConstruct() {
27
+ protected postConstruct(): void {
28
28
  this.commandPaletteKeyListener = this.createCommandPaleteKeyListener();
29
29
  }
30
30
 
@@ -13,16 +13,16 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import "../../../css/command-palette.css";
16
+ import '../../../css/command-palette.css';
17
17
 
18
- import { ContainerModule } from "inversify";
19
- import { CommandPalette, CommandPaletteActionProviderRegistry, TYPES } from "sprotty";
18
+ import { ContainerModule } from 'inversify';
19
+ import { CommandPalette, CommandPaletteActionProviderRegistry, TYPES } from 'sprotty';
20
20
 
21
- import { GLSP_TYPES } from "../../base/types";
22
- import { CommandPaletteTool } from "./command-palette-tool";
23
- import { ServerCommandPaletteActionProvider } from "./server-command-palette-provider";
21
+ import { GLSP_TYPES } from '../../base/types';
22
+ import { CommandPaletteTool } from './command-palette-tool';
23
+ import { ServerCommandPaletteActionProvider } from './server-command-palette-provider';
24
24
 
25
- const glspCommandPaletteModule = new ContainerModule((bind) => {
25
+ const glspCommandPaletteModule = new ContainerModule(bind => {
26
26
  bind(CommandPalette).toSelf().inSingletonScope();
27
27
  bind(TYPES.IUIExtension).toService(CommandPalette);
28
28
  bind(CommandPaletteActionProviderRegistry).toSelf().inSingletonScope();
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,17 +13,16 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable } from "inversify";
17
- 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";
16
+ import { Action, isSetContextActionsAction, LabeledAction, Point, RequestContextActions } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable } from 'inversify';
18
+ import { ICommandPaletteActionProvider, SModelElement, TYPES } from 'sprotty';
19
+ import { GLSPActionDispatcher } from '../../base/action-dispatcher';
20
+ import { EditorContextService } from '../../base/editor-context-service';
22
21
 
23
22
  export namespace ServerCommandPalette {
24
- export const CONTEXT_ID = "command-palette";
25
- export const TEXT = "text";
26
- export const INDEX = "index";
23
+ export const CONTEXT_ID = 'command-palette';
24
+ export const TEXT = 'text';
25
+ export const INDEX = 'index';
27
26
  }
28
27
 
29
28
  @injectable()
@@ -32,10 +31,13 @@ export class ServerCommandPaletteActionProvider implements ICommandPaletteAction
32
31
  @inject(EditorContextService) protected editorContext: EditorContextService;
33
32
 
34
33
  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
- }));
34
+ const requestAction = new RequestContextActions(
35
+ ServerCommandPalette.CONTEXT_ID,
36
+ this.editorContext.get({
37
+ [ServerCommandPalette.TEXT]: text,
38
+ [ServerCommandPalette.INDEX]: index ? index : 0
39
+ })
40
+ );
39
41
  return this.actionDispatcher.requestUntil(requestAction).then(response => this.getPaletteActionsFromResponse(response));
40
42
  }
41
43
 
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020 EclipseSource and others.
2
+ * Copyright (c) 2020-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,12 +13,11 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable } from "inversify";
17
- 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";
16
+ import { DeleteElementOperation } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable } from 'inversify';
18
+ import { IContextMenuItemProvider, MenuItem, Point, SModelRoot } from 'sprotty';
19
+ import { EditorContextService, EditorContextServiceProvider } from '../../base/editor-context-service';
20
+ import { GLSP_TYPES } from '../../base/types';
22
21
 
23
22
  @injectable()
24
23
  export class DeleteElementContextMenuItemProvider implements IContextMenuItemProvider {
@@ -31,10 +30,10 @@ export class DeleteElementContextMenuItemProvider implements IContextMenuItemPro
31
30
 
32
31
  protected createDeleteMenuItem(editorContextService: EditorContextService): MenuItem {
33
32
  return {
34
- id: "delete",
35
- label: "Delete",
36
- sortString: "d",
37
- group: "edit",
33
+ id: 'delete',
34
+ label: 'Delete',
35
+ sortString: 'd',
36
+ group: 'edit',
38
37
  actions: [new DeleteElementOperation(editorContextService.selectedElements.map(e => e.id))],
39
38
  isEnabled: () => !editorContextService.isReadonly && editorContextService.selectedElements.length > 0
40
39
  };
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,24 +13,22 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
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";
16
+ import { ContainerModule } from 'inversify';
17
+ import { ContextMenuProviderRegistry, IContextMenuService, TYPES } from 'sprotty';
18
+ import { SelectionServiceAwareContextMenuMouseListener } from './selection-service-aware-context-menu-mouse-listener';
19
+ import { ServerContextMenuItemProvider } from './server-context-menu-provider';
21
20
 
22
21
  const glspContextMenuModule = new ContainerModule(bind => {
23
- bind(TYPES.IContextMenuServiceProvider).toProvider<IContextMenuService>(ctx => {
24
- return () => {
25
- return new Promise<IContextMenuService>((resolve, reject) => {
22
+ bind(TYPES.IContextMenuServiceProvider).toProvider<IContextMenuService>(
23
+ ctx => () =>
24
+ new Promise<IContextMenuService>((resolve, reject) => {
26
25
  if (ctx.container.isBound(TYPES.IContextMenuService)) {
27
26
  resolve(ctx.container.get<IContextMenuService>(TYPES.IContextMenuService));
28
27
  } else {
29
28
  reject();
30
29
  }
31
- });
32
- };
33
- });
30
+ })
31
+ );
34
32
  bind(TYPES.MouseListener).to(SelectionServiceAwareContextMenuMouseListener);
35
33
  bind(TYPES.IContextMenuProviderRegistry).to(ContextMenuProviderRegistry);
36
34
  bind(TYPES.IContextMenuItemProvider).to(ServerContextMenuItemProvider);
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,7 +13,7 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable, optional } from "inversify";
16
+ import { inject, injectable, optional } from 'inversify';
17
17
  import {
18
18
  Action,
19
19
  ContextMenuProviderRegistry,
@@ -23,10 +23,10 @@ import {
23
23
  MouseListener,
24
24
  SModelElement,
25
25
  TYPES
26
- } from "sprotty";
26
+ } from 'sprotty';
27
27
 
28
- import { GLSP_TYPES } from "../../base/types";
29
- import { SelectionService } from "../select/selection-service";
28
+ import { GLSP_TYPES } from '../../base/types';
29
+ import { SelectionService } from '../select/selection-service';
30
30
 
31
31
  @injectable()
32
32
  export class SelectionServiceAwareContextMenuMouseListener extends MouseListener {
@@ -42,8 +42,9 @@ export class SelectionServiceAwareContextMenuMouseListener extends MouseListener
42
42
  selectableTarget.selected = true;
43
43
  this.selectionService.updateSelection(target.root, [selectableTarget.id], []);
44
44
  }
45
- Promise.all([this.contextMenuService(), this.menuProvider.getItems(target.root, mousePosition)])
46
- .then(([menuService, menuItems]) => menuService.show(menuItems, mousePosition));
45
+ Promise.all([this.contextMenuService(), this.menuProvider.getItems(target.root, mousePosition)]).then(
46
+ ([menuService, menuItems]) => menuService.show(menuItems, mousePosition)
47
+ );
47
48
  }
48
49
  return [];
49
50
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,25 +13,28 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable } from "inversify";
17
- 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";
16
+ import { Action, isSetContextActionsAction, LabeledAction, Point, RequestContextActions } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable } from 'inversify';
18
+ import { IContextMenuItemProvider, isSelected, SModelElement, TYPES } from 'sprotty';
19
+ import { GLSPActionDispatcher } from '../../base/action-dispatcher';
20
+ import { EditorContextService } from '../../base/editor-context-service';
22
21
 
23
22
  export namespace ServerContextMenu {
24
- export const CONTEXT_ID = "context-menu";
23
+ export const CONTEXT_ID = 'context-menu';
25
24
  }
26
25
 
27
26
  @injectable()
28
27
  export class ServerContextMenuItemProvider implements IContextMenuItemProvider {
29
-
30
28
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: GLSPActionDispatcher;
31
29
  @inject(EditorContextService) protected editorContext: EditorContextService;
32
30
 
33
31
  getItems(root: Readonly<SModelElement>, lastMousePosition?: Point): Promise<LabeledAction[]> {
34
- const selectedElementIds = Array.from(root.index.all().filter(isSelected).map(e => e.id));
32
+ const selectedElementIds = Array.from(
33
+ root.index
34
+ .all()
35
+ .filter(isSelected)
36
+ .map(e => e.id)
37
+ );
35
38
  const context = this.editorContext.getWithSelection(selectedElementIds);
36
39
  const requestAction = new RequestContextActions(ServerContextMenu.CONTEXT_ID, context);
37
40
  return this.actionDispatcher.requestUntil(requestAction).then(response => this.getContextActionsFromResponse(response));
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2020 EclipseSource and others.
2
+ * Copyright (c) 2020-2021 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,62 +13,61 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { inject, injectable } from "inversify";
17
- 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";
16
+ import { Action, GLSPServerStatusAction, Point, ServerMessageAction } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable } from 'inversify';
18
+ import { IActionDispatcher, IActionHandler, IContextMenuItemProvider, isSelected, MenuItem, SModelRoot, TYPES } from 'sprotty';
30
19
 
31
20
  export class InvokeCopyAction implements Action {
32
- static readonly KIND = "invoke-copy";
33
- constructor(public readonly kind = InvokeCopyAction.KIND) { }
21
+ static readonly KIND = 'invoke-copy';
22
+ constructor(public readonly kind = InvokeCopyAction.KIND) {}
34
23
  }
35
24
 
36
25
  export class InvokePasteAction implements Action {
37
- static readonly KIND = "invoke-paste";
38
- constructor(public readonly kind = InvokePasteAction.KIND) { }
26
+ static readonly KIND = 'invoke-paste';
27
+ constructor(public readonly kind = InvokePasteAction.KIND) {}
39
28
  }
40
29
 
41
30
  export class InvokeCutAction implements Action {
42
- static readonly KIND = "invoke-cut";
43
- constructor(public readonly kind = InvokeCutAction.KIND) { }
31
+ static readonly KIND = 'invoke-cut';
32
+ constructor(public readonly kind = InvokeCutAction.KIND) {}
44
33
  }
45
34
 
46
35
  @injectable()
47
36
  export class InvokeCopyPasteActionHandler implements IActionHandler {
48
37
  @inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
49
- handle(action: Action) {
38
+ handle(action: Action): void {
50
39
  switch (action.kind) {
51
40
  case InvokeCopyAction.KIND:
52
- document.execCommand('copy');
41
+ if (supportsCopy()) {
42
+ document.execCommand('copy');
43
+ } else {
44
+ this.notifyUserToUseShortcut('copy');
45
+ }
53
46
  break;
54
47
  case InvokePasteAction.KIND:
55
- // in a browser without additional permission we can't invoke the paste command
56
- // the user needs to invoke it from the browser, so notify the user about it
57
- this.notifyUserToUseShortcut();
48
+ if (supportsPaste()) {
49
+ document.execCommand('paste');
50
+ } else {
51
+ this.notifyUserToUseShortcut('paste');
52
+ }
58
53
  break;
59
54
  case InvokeCutAction.KIND:
60
- document.execCommand('cut');
55
+ if (supportsCut()) {
56
+ document.execCommand('cut');
57
+ } else {
58
+ this.notifyUserToUseShortcut('cut');
59
+ }
61
60
  break;
62
61
  }
63
62
  }
64
63
 
65
- protected notifyUserToUseShortcut() {
66
- const message = 'Please use the browser\'s paste command or shortcut.';
64
+ protected notifyUserToUseShortcut(operation: string): void {
65
+ const message = `Please use the browser's ${operation} command or shortcut.`;
67
66
  const timeout = 10000;
68
67
  const severity = 'WARNING';
69
68
  this.dispatcher.dispatchAll([
70
- <GLSPServerStatusAction>{ kind: GLSPServerStatusAction.KIND, severity, timeout, message },
71
- <ServerMessageAction>{ kind: ServerMessageAction.KIND, severity, timeout, message }
69
+ { kind: GLSPServerStatusAction.KIND, severity, timeout, message } as GLSPServerStatusAction,
70
+ { kind: ServerMessageAction.KIND, severity, timeout, message } as ServerMessageAction
72
71
  ]);
73
72
  }
74
73
  }
@@ -86,22 +85,52 @@ export class CopyPasteContextMenuItemProvider implements IContextMenuItemProvide
86
85
 
87
86
  protected createPasteMenuItem(): MenuItem {
88
87
  return {
89
- id: "paste", label: "Paste", group: "copy-paste",
90
- actions: [new InvokePasteAction()], isEnabled: () => true
88
+ id: 'paste',
89
+ label: 'Paste',
90
+ group: 'copy-paste',
91
+ actions: [new InvokePasteAction()],
92
+ isEnabled: () => true
91
93
  };
92
94
  }
93
95
 
94
96
  protected createCutMenuItem(hasSelectedElements: boolean): MenuItem {
95
97
  return {
96
- id: "cut", label: "Cut", group: "copy-paste",
97
- actions: [new InvokeCutAction()], isEnabled: () => hasSelectedElements
98
+ id: 'cut',
99
+ label: 'Cut',
100
+ group: 'copy-paste',
101
+ actions: [new InvokeCutAction()],
102
+ isEnabled: () => hasSelectedElements
98
103
  };
99
104
  }
100
105
 
101
106
  protected createCopyMenuItem(hasSelectedElements: boolean): MenuItem {
102
107
  return {
103
- id: "copy", label: "Copy", group: "copy-paste",
104
- actions: [new InvokeCopyAction()], isEnabled: () => hasSelectedElements
108
+ id: 'copy',
109
+ label: 'Copy',
110
+ group: 'copy-paste',
111
+ actions: [new InvokeCopyAction()],
112
+ isEnabled: () => hasSelectedElements
105
113
  };
106
114
  }
107
115
  }
116
+
117
+ export function supportsCopy(): boolean {
118
+ return isNative() || document.queryCommandSupported('copy');
119
+ }
120
+
121
+ export function supportsCut(): boolean {
122
+ return isNative() || document.queryCommandSupported('cut');
123
+ }
124
+
125
+ export function supportsPaste(): boolean {
126
+ const isChrome = userAgent().indexOf('Chrome') >= 0;
127
+ return isNative() || (!isChrome && document.queryCommandSupported('paste'));
128
+ }
129
+
130
+ export function isNative(): boolean {
131
+ return typeof (window as any).process !== 'undefined';
132
+ }
133
+
134
+ function userAgent(): string {
135
+ return typeof navigator !== 'undefined' ? navigator.userAgent : '';
136
+ }