@eclipse-glsp/client 0.9.0-next.d0112315 → 0.9.0-next.f12e3d87

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 (469) hide show
  1. package/README.md +2 -1
  2. package/css/command-palette.css +6 -5
  3. package/css/glsp-sprotty.css +17 -8
  4. package/css/tool-palette.css +14 -14
  5. package/lib/base/action-dispatcher.d.ts.map +1 -1
  6. package/lib/base/action-dispatcher.js +39 -60
  7. package/lib/base/action-dispatcher.js.map +1 -1
  8. package/lib/base/actions/context-actions.d.ts +1 -1
  9. package/lib/base/actions/context-actions.d.ts.map +1 -1
  10. package/lib/base/actions/context-actions.js +11 -18
  11. package/lib/base/actions/context-actions.js.map +1 -1
  12. package/lib/base/actions/edit-mode-action.d.ts.map +1 -1
  13. package/lib/base/actions/edit-mode-action.js +12 -17
  14. package/lib/base/actions/edit-mode-action.js.map +1 -1
  15. package/lib/base/actions/edit-validation-actions.d.ts +1 -1
  16. package/lib/base/actions/edit-validation-actions.d.ts.map +1 -1
  17. package/lib/base/actions/edit-validation-actions.js +23 -26
  18. package/lib/base/actions/edit-validation-actions.js.map +1 -1
  19. package/lib/base/actions/focus-change-action.js +4 -5
  20. package/lib/base/actions/focus-change-action.js.map +1 -1
  21. package/lib/base/args.d.ts +1 -1
  22. package/lib/base/args.d.ts.map +1 -1
  23. package/lib/base/args.js.map +1 -1
  24. package/lib/base/auto-complete/auto-complete-widget.d.ts +1 -1
  25. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  26. package/lib/base/auto-complete/auto-complete-widget.js +100 -150
  27. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  28. package/lib/base/auto-complete/validation-decorator.d.ts +1 -1
  29. package/lib/base/auto-complete/validation-decorator.js +38 -60
  30. package/lib/base/auto-complete/validation-decorator.js.map +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 +84 -0
  37. package/lib/base/container-modules.js.map +1 -0
  38. package/lib/base/di.config.d.ts +11 -2
  39. package/lib/base/di.config.d.ts.map +1 -1
  40. package/lib/base/di.config.js +37 -37
  41. package/lib/base/di.config.js.map +1 -1
  42. package/lib/base/drag-aware-mouse-listener.d.ts +1 -1
  43. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  44. package/lib/base/drag-aware-mouse-listener.js +24 -48
  45. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  46. package/lib/base/editor-context.d.ts.map +1 -1
  47. package/lib/base/editor-context.js +64 -128
  48. package/lib/base/editor-context.js.map +1 -1
  49. package/lib/base/focus-tracker.d.ts.map +1 -1
  50. package/lib/base/focus-tracker.js +19 -24
  51. package/lib/base/focus-tracker.js.map +1 -1
  52. package/lib/base/model/model-registry.js +10 -28
  53. package/lib/base/model/model-registry.js.map +1 -1
  54. package/lib/base/model/update-model-command.d.ts +2 -2
  55. package/lib/base/model/update-model-command.d.ts.map +1 -1
  56. package/lib/base/model/update-model-command.js +67 -88
  57. package/lib/base/model/update-model-command.js.map +1 -1
  58. package/lib/base/model-initialization-constraint.js +31 -52
  59. package/lib/base/model-initialization-constraint.js.map +1 -1
  60. package/lib/base/operations/operation.d.ts +5 -5
  61. package/lib/base/operations/operation.d.ts.map +1 -1
  62. package/lib/base/operations/operation.js +75 -115
  63. package/lib/base/operations/operation.js.map +1 -1
  64. package/lib/base/selection-clearing-mouse-listener.js +10 -28
  65. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  66. package/lib/base/source-uri-aware.js +2 -5
  67. package/lib/base/source-uri-aware.js.map +1 -1
  68. package/lib/base/tool-manager/glsp-tool-manager.js +56 -137
  69. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  70. package/lib/base/types.d.ts +2 -1
  71. package/lib/base/types.d.ts.map +1 -1
  72. package/lib/base/types.js +3 -2
  73. package/lib/base/types.js.map +1 -1
  74. package/lib/base/view/view-registry.js +10 -28
  75. package/lib/base/view/view-registry.js.map +1 -1
  76. package/lib/features/change-bounds/model.d.ts +3 -1
  77. package/lib/features/change-bounds/model.d.ts.map +1 -1
  78. package/lib/features/change-bounds/model.js +20 -31
  79. package/lib/features/change-bounds/model.js.map +1 -1
  80. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  81. package/lib/features/change-bounds/movement-restrictor.js +29 -28
  82. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  83. package/lib/features/change-bounds/snap.js +13 -24
  84. package/lib/features/change-bounds/snap.js.map +1 -1
  85. package/lib/features/command-palette/command-palette-tool.js +30 -38
  86. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  87. package/lib/features/command-palette/di.config.js +6 -6
  88. package/lib/features/command-palette/di.config.js.map +1 -1
  89. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  90. package/lib/features/command-palette/server-command-palette-provider.js +27 -32
  91. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  92. package/lib/features/context-menu/delete-element-context-menu.js +19 -67
  93. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  94. package/lib/features/context-menu/di.config.d.ts +1 -1
  95. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  96. package/lib/features/context-menu/di.config.js +8 -8
  97. package/lib/features/context-menu/di.config.js.map +1 -1
  98. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  99. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
  100. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  101. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  102. package/lib/features/context-menu/server-context-menu-provider.js +29 -30
  103. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  104. package/lib/features/copy-paste/copy-paste-actions.d.ts +1 -1
  105. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +1 -1
  106. package/lib/features/copy-paste/copy-paste-actions.js +20 -30
  107. package/lib/features/copy-paste/copy-paste-actions.js.map +1 -1
  108. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +5 -1
  109. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  110. package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
  111. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  112. package/lib/features/copy-paste/copy-paste-handler.d.ts +2 -0
  113. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  114. package/lib/features/copy-paste/copy-paste-handler.js +67 -67
  115. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  116. package/lib/features/copy-paste/di.config.js +10 -10
  117. package/lib/features/copy-paste/di.config.js.map +1 -1
  118. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  119. package/lib/features/decoration/decoration-placer.js +13 -32
  120. package/lib/features/decoration/decoration-placer.js.map +1 -1
  121. package/lib/features/decoration/di.config.js +4 -4
  122. package/lib/features/decoration/di.config.js.map +1 -1
  123. package/lib/features/edit-label/di.config.js +7 -7
  124. package/lib/features/edit-label/di.config.js.map +1 -1
  125. package/lib/features/edit-label/edit-label-tool.js +20 -43
  126. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  127. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  128. package/lib/features/edit-label/edit-label-validator.js +37 -59
  129. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  130. package/lib/features/hints/di.config.js +8 -8
  131. package/lib/features/hints/di.config.js.map +1 -1
  132. package/lib/features/hints/model.d.ts +1 -1
  133. package/lib/features/hints/model.d.ts.map +1 -1
  134. package/lib/features/hints/request-type-hints-action.d.ts +1 -1
  135. package/lib/features/hints/request-type-hints-action.d.ts.map +1 -1
  136. package/lib/features/hints/request-type-hints-action.js +12 -14
  137. package/lib/features/hints/request-type-hints-action.js.map +1 -1
  138. package/lib/features/hints/type-hints.d.ts +4 -4
  139. package/lib/features/hints/type-hints.d.ts.map +1 -1
  140. package/lib/features/hints/type-hints.js +91 -133
  141. package/lib/features/hints/type-hints.js.map +1 -1
  142. package/lib/features/hover/di.config.js +7 -7
  143. package/lib/features/hover/di.config.js.map +1 -1
  144. package/lib/features/hover/hover.d.ts.map +1 -1
  145. package/lib/features/hover/hover.js +35 -76
  146. package/lib/features/hover/hover.js.map +1 -1
  147. package/lib/features/layout/di.config.d.ts +5 -1
  148. package/lib/features/layout/di.config.d.ts.map +1 -1
  149. package/lib/features/layout/di.config.js +47 -7
  150. package/lib/features/layout/di.config.js.map +1 -1
  151. package/lib/features/layout/freeform-layout.d.ts +16 -0
  152. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  153. package/lib/features/layout/freeform-layout.js +107 -0
  154. package/lib/features/layout/freeform-layout.js.map +1 -0
  155. package/lib/features/layout/layout-commands.d.ts +2 -2
  156. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  157. package/lib/features/layout/layout-commands.js +187 -263
  158. package/lib/features/layout/layout-commands.js.map +1 -1
  159. package/lib/features/layout/layout-commands.spec.d.ts +1 -1
  160. package/lib/features/layout/layout-commands.spec.js +94 -88
  161. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  162. package/lib/features/layout/vbox-layout.d.ts +25 -0
  163. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  164. package/lib/features/layout/vbox-layout.js +187 -0
  165. package/lib/features/layout/vbox-layout.js.map +1 -0
  166. package/lib/features/model-source-watcher/di.config.js +6 -6
  167. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  168. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  169. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -45
  170. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  171. package/lib/features/model-source-watcher/model-source-changed-action.d.ts +1 -1
  172. package/lib/features/model-source-watcher/model-source-changed-action.js +4 -5
  173. package/lib/features/model-source-watcher/model-source-changed-action.js.map +1 -1
  174. package/lib/features/mouse-tool/di.config.js +5 -5
  175. package/lib/features/mouse-tool/di.config.js.map +1 -1
  176. package/lib/features/mouse-tool/mouse-tool.d.ts +2 -1
  177. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  178. package/lib/features/mouse-tool/mouse-tool.js +69 -215
  179. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  180. package/lib/features/navigation/di.config.js +9 -9
  181. package/lib/features/navigation/di.config.js.map +1 -1
  182. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  183. package/lib/features/navigation/navigation-action-handler.js +136 -217
  184. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  185. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  186. package/lib/features/navigation/navigation-target-resolver.js +57 -122
  187. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  188. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +1 -1
  189. package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
  190. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  191. package/lib/features/rank/model.d.ts +1 -1
  192. package/lib/features/rank/model.js +2 -2
  193. package/lib/features/rank/model.js.map +1 -1
  194. package/lib/features/reconnect/model.d.ts +1 -1
  195. package/lib/features/reconnect/model.d.ts.map +1 -1
  196. package/lib/features/reconnect/model.js +9 -27
  197. package/lib/features/reconnect/model.js.map +1 -1
  198. package/lib/features/save/di.config.d.ts +1 -1
  199. package/lib/features/save/di.config.d.ts.map +1 -1
  200. package/lib/features/save/di.config.js +5 -5
  201. package/lib/features/save/di.config.js.map +1 -1
  202. package/lib/features/save/save.d.ts +1 -1
  203. package/lib/features/save/save.js +11 -31
  204. package/lib/features/save/save.js.map +1 -1
  205. package/lib/features/select/di.config.js +11 -11
  206. package/lib/features/select/di.config.js.map +1 -1
  207. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  208. package/lib/features/select/select-feedback-action.js +45 -71
  209. package/lib/features/select/select-feedback-action.js.map +1 -1
  210. package/lib/features/select/select-mouse-listener.js +7 -23
  211. package/lib/features/select/select-mouse-listener.js.map +1 -1
  212. package/lib/features/select/selection-service.d.ts.map +1 -1
  213. package/lib/features/select/selection-service.js +132 -234
  214. package/lib/features/select/selection-service.js.map +1 -1
  215. package/lib/features/select/selection-service.spec.js +97 -124
  216. package/lib/features/select/selection-service.spec.js.map +1 -1
  217. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +2 -1
  218. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  219. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +104 -127
  220. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  221. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  222. package/lib/features/tool-feedback/creation-tool-feedback.js +69 -103
  223. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  224. package/lib/features/tool-feedback/css-feedback.d.ts +3 -1
  225. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  226. package/lib/features/tool-feedback/css-feedback.js +37 -81
  227. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  228. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  229. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  230. package/lib/features/tool-feedback/di.config.js +27 -27
  231. package/lib/features/tool-feedback/di.config.js.map +1 -1
  232. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +1 -1
  233. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  234. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -193
  235. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  236. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
  237. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  238. package/lib/features/tool-feedback/feedback-action-dispatcher.js +36 -58
  239. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  240. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  241. package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -69
  242. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  243. package/lib/features/tool-feedback/model.d.ts +1 -1
  244. package/lib/features/tool-feedback/model.js +11 -27
  245. package/lib/features/tool-feedback/model.js.map +1 -1
  246. package/lib/features/tool-feedback/view.d.ts +4 -4
  247. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  248. package/lib/features/tool-feedback/view.js +30 -37
  249. package/lib/features/tool-feedback/view.js.map +1 -1
  250. package/lib/features/tool-palette/di.config.js +6 -6
  251. package/lib/features/tool-palette/di.config.js.map +1 -1
  252. package/lib/features/tool-palette/palette-item.d.ts +1 -1
  253. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  254. package/lib/features/tool-palette/palette-item.js +6 -5
  255. package/lib/features/tool-palette/palette-item.js.map +1 -1
  256. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  257. package/lib/features/tool-palette/tool-palette.js +182 -259
  258. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  259. package/lib/features/tools/base-glsp-tool.js +37 -44
  260. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  261. package/lib/features/tools/change-bounds-tool.d.ts +3 -2
  262. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  263. package/lib/features/tools/change-bounds-tool.js +187 -237
  264. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  265. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  266. package/lib/features/tools/delete-tool.js +69 -102
  267. package/lib/features/tools/delete-tool.js.map +1 -1
  268. package/lib/features/tools/di.config.js +18 -18
  269. package/lib/features/tools/di.config.js.map +1 -1
  270. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  271. package/lib/features/tools/edge-creation-tool.js +60 -85
  272. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  273. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  274. package/lib/features/tools/edge-edit-tool.js +110 -181
  275. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  276. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  277. package/lib/features/tools/marquee-mouse-tool.js +128 -149
  278. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  279. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  280. package/lib/features/tools/marquee-tool.js +32 -58
  281. package/lib/features/tools/marquee-tool.js.map +1 -1
  282. package/lib/features/tools/model.js +4 -22
  283. package/lib/features/tools/model.js.map +1 -1
  284. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  285. package/lib/features/tools/node-creation-tool.js +59 -89
  286. package/lib/features/tools/node-creation-tool.js.map +1 -1
  287. package/lib/features/tools/view.d.ts +1 -1
  288. package/lib/features/tools/view.d.ts.map +1 -1
  289. package/lib/features/tools/view.js +12 -31
  290. package/lib/features/tools/view.js.map +1 -1
  291. package/lib/features/undo-redo/model.d.ts +1 -1
  292. package/lib/features/undo-redo/model.js +8 -12
  293. package/lib/features/undo-redo/model.js.map +1 -1
  294. package/lib/features/validation/di.config.js +12 -12
  295. package/lib/features/validation/di.config.js.map +1 -1
  296. package/lib/features/validation/issue-marker.js +13 -51
  297. package/lib/features/validation/issue-marker.js.map +1 -1
  298. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  299. package/lib/features/validation/marker-navigator.js +129 -163
  300. package/lib/features/validation/marker-navigator.js.map +1 -1
  301. package/lib/features/validation/marker-navigator.spec.d.ts +1 -1
  302. package/lib/features/validation/marker-navigator.spec.js +79 -73
  303. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  304. package/lib/features/validation/validate.d.ts +2 -2
  305. package/lib/features/validation/validate.d.ts.map +1 -1
  306. package/lib/features/validation/validate.js +161 -276
  307. package/lib/features/validation/validate.js.map +1 -1
  308. package/lib/features/viewport/di.config.js +10 -10
  309. package/lib/features/viewport/di.config.js.map +1 -1
  310. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  311. package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -32
  312. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  313. package/lib/index.d.ts +5 -4
  314. package/lib/index.d.ts.map +1 -1
  315. package/lib/index.js +25 -23
  316. package/lib/index.js.map +1 -1
  317. package/lib/lib/model.js +11 -27
  318. package/lib/lib/model.js.map +1 -1
  319. package/lib/model-source/glsp-diagram-server.d.ts +1 -1
  320. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  321. package/lib/model-source/glsp-diagram-server.js +43 -118
  322. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  323. package/lib/model-source/glsp-server-status.js +10 -27
  324. package/lib/model-source/glsp-server-status.js.map +1 -1
  325. package/lib/utils/argument-utils.d.ts +3 -3
  326. package/lib/utils/argument-utils.d.ts.map +1 -1
  327. package/lib/utils/argument-utils.js +27 -92
  328. package/lib/utils/argument-utils.js.map +1 -1
  329. package/lib/utils/array-utils.d.ts +1 -1
  330. package/lib/utils/array-utils.d.ts.map +1 -1
  331. package/lib/utils/array-utils.js +10 -15
  332. package/lib/utils/array-utils.js.map +1 -1
  333. package/lib/utils/html-utils.js +2 -2
  334. package/lib/utils/html-utils.js.map +1 -1
  335. package/lib/utils/layout-utils.d.ts +1 -1
  336. package/lib/utils/layout-utils.d.ts.map +1 -1
  337. package/lib/utils/layout-utils.js +5 -5
  338. package/lib/utils/layout-utils.js.map +1 -1
  339. package/lib/utils/marker.js +11 -53
  340. package/lib/utils/marker.js.map +1 -1
  341. package/lib/utils/smodel-util.d.ts +3 -3
  342. package/lib/utils/smodel-util.d.ts.map +1 -1
  343. package/lib/utils/smodel-util.js +17 -51
  344. package/lib/utils/smodel-util.js.map +1 -1
  345. package/lib/utils/viewpoint-util.d.ts +1 -1
  346. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  347. package/lib/utils/viewpoint-util.js +16 -16
  348. package/lib/utils/viewpoint-util.js.map +1 -1
  349. package/lib/views/base-view-module.js +9 -9
  350. package/lib/views/base-view-module.js.map +1 -1
  351. package/lib/views/compartments.d.ts +6 -0
  352. package/lib/views/compartments.d.ts.map +1 -0
  353. package/lib/views/compartments.js +43 -0
  354. package/lib/views/compartments.js.map +1 -0
  355. package/lib/views/default-types.js +1 -1
  356. package/lib/views/default-types.js.map +1 -1
  357. package/lib/views/glsp-edge-view.d.ts +1 -2
  358. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  359. package/lib/views/glsp-edge-view.js +32 -62
  360. package/lib/views/glsp-edge-view.js.map +1 -1
  361. package/lib/views/index.d.ts +1 -0
  362. package/lib/views/index.d.ts.map +1 -1
  363. package/lib/views/index.js +1 -0
  364. package/lib/views/index.js.map +1 -1
  365. package/lib/views/issue-marker-view.d.ts +1 -1
  366. package/lib/views/issue-marker-view.d.ts.map +1 -1
  367. package/lib/views/issue-marker-view.js +19 -42
  368. package/lib/views/issue-marker-view.js.map +1 -1
  369. package/lib/views/rounded-corner-view.d.ts +2 -3
  370. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  371. package/lib/views/rounded-corner-view.js +40 -70
  372. package/lib/views/rounded-corner-view.js.map +1 -1
  373. package/lib/views/rounded-corner.d.ts.map +1 -1
  374. package/lib/views/rounded-corner.js +44 -65
  375. package/lib/views/rounded-corner.js.map +1 -1
  376. package/package.json +6 -16
  377. package/src/base/action-dispatcher.ts +1 -2
  378. package/src/base/actions/context-actions.ts +6 -6
  379. package/src/base/actions/edit-mode-action.ts +3 -4
  380. package/src/base/actions/edit-validation-actions.ts +26 -14
  381. package/src/base/actions/focus-change-action.ts +1 -1
  382. package/src/base/args.ts +4 -2
  383. package/src/base/auto-complete/auto-complete-widget.ts +34 -21
  384. package/src/base/auto-complete/validation-decorator.ts +5 -5
  385. package/src/base/command-stack.ts +1 -3
  386. package/src/base/container-modules.ts +113 -0
  387. package/src/base/di.config.ts +31 -16
  388. package/src/base/drag-aware-mouse-listener.ts +1 -3
  389. package/src/base/editor-context.ts +2 -4
  390. package/src/base/focus-tracker.ts +0 -2
  391. package/src/base/model/update-model-command.ts +6 -8
  392. package/src/base/operations/operation.ts +57 -31
  393. package/src/base/types.ts +3 -2
  394. package/src/features/change-bounds/model.ts +16 -5
  395. package/src/features/change-bounds/movement-restrictor.ts +15 -7
  396. package/src/features/command-palette/server-command-palette-provider.ts +8 -5
  397. package/src/features/context-menu/di.config.ts +11 -9
  398. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +4 -3
  399. package/src/features/context-menu/server-context-menu-provider.ts +7 -3
  400. package/src/features/copy-paste/copy-paste-actions.ts +11 -8
  401. package/src/features/copy-paste/copy-paste-context-menu.ts +57 -17
  402. package/src/features/copy-paste/copy-paste-handler.ts +15 -6
  403. package/src/features/decoration/decoration-placer.ts +2 -13
  404. package/src/features/edit-label/edit-label-validator.ts +11 -12
  405. package/src/features/hints/model.ts +2 -2
  406. package/src/features/hints/request-type-hints-action.ts +10 -5
  407. package/src/features/hints/type-hints.ts +26 -30
  408. package/src/features/hover/hover.ts +1 -2
  409. package/src/features/layout/di.config.ts +30 -5
  410. package/src/features/layout/freeform-layout.ts +132 -0
  411. package/src/features/layout/layout-commands.spec.ts +79 -56
  412. package/src/features/layout/layout-commands.ts +42 -31
  413. package/src/features/layout/vbox-layout.ts +241 -0
  414. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +3 -3
  415. package/src/features/model-source-watcher/model-source-changed-action.ts +2 -2
  416. package/src/features/mouse-tool/mouse-tool.ts +31 -22
  417. package/src/features/navigation/navigation-action-handler.ts +32 -22
  418. package/src/features/navigation/navigation-target-resolver.spec.ts +1 -3
  419. package/src/features/navigation/navigation-target-resolver.ts +14 -12
  420. package/src/features/rank/model.ts +2 -2
  421. package/src/features/reconnect/model.ts +2 -3
  422. package/src/features/save/di.config.ts +1 -2
  423. package/src/features/save/save.ts +2 -2
  424. package/src/features/select/select-feedback-action.ts +4 -6
  425. package/src/features/select/selection-service.spec.ts +9 -4
  426. package/src/features/select/selection-service.ts +13 -5
  427. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +26 -17
  428. package/src/features/tool-feedback/creation-tool-feedback.ts +16 -7
  429. package/src/features/tool-feedback/css-feedback.ts +7 -4
  430. package/src/features/tool-feedback/di.config.ts +2 -5
  431. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +18 -15
  432. package/src/features/tool-feedback/feedback-action-dispatcher.ts +6 -8
  433. package/src/features/tool-feedback/marquee-tool-feedback.ts +3 -2
  434. package/src/features/tool-feedback/model.ts +1 -2
  435. package/src/features/tool-feedback/view.tsx +16 -10
  436. package/src/features/tool-palette/di.config.ts +1 -1
  437. package/src/features/tool-palette/palette-item.ts +3 -3
  438. package/src/features/tool-palette/tool-palette.ts +12 -14
  439. package/src/features/tools/change-bounds-tool.ts +54 -25
  440. package/src/features/tools/delete-tool.ts +8 -3
  441. package/src/features/tools/edge-creation-tool.ts +5 -8
  442. package/src/features/tools/edge-edit-tool.ts +9 -18
  443. package/src/features/tools/marquee-mouse-tool.ts +57 -37
  444. package/src/features/tools/marquee-tool.ts +0 -1
  445. package/src/features/tools/node-creation-tool.ts +4 -9
  446. package/src/features/tools/view.tsx +17 -12
  447. package/src/features/undo-redo/model.ts +3 -3
  448. package/src/features/validation/marker-navigator.spec.ts +15 -9
  449. package/src/features/validation/marker-navigator.ts +23 -8
  450. package/src/features/validation/validate.ts +9 -13
  451. package/src/features/viewport/glsp-scroll-mouse-listener.ts +1 -10
  452. package/src/index.ts +26 -8
  453. package/src/model-source/glsp-diagram-server.ts +2 -14
  454. package/src/utils/argument-utils.ts +13 -9
  455. package/src/utils/array-utils.ts +4 -2
  456. package/src/utils/layout-utils.ts +11 -5
  457. package/src/utils/smodel-util.ts +14 -10
  458. package/src/utils/viewpoint-util.ts +3 -2
  459. package/src/views/compartments.tsx +37 -0
  460. package/src/views/glsp-edge-view.tsx +20 -13
  461. package/src/views/index.ts +1 -0
  462. package/src/views/issue-marker-view.tsx +11 -12
  463. package/src/views/rounded-corner-view.tsx +38 -25
  464. package/src/views/rounded-corner.ts +3 -4
  465. package/lib/base/actions/protocol-actions.d.ts +0 -41
  466. package/lib/base/actions/protocol-actions.d.ts.map +0 -1
  467. package/lib/base/actions/protocol-actions.js +0 -151
  468. package/lib/base/actions/protocol-actions.js.map +0 -1
  469. package/src/base/actions/protocol-actions.ts +0 -82
@@ -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
@@ -14,14 +14,13 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
  import { Action, ApplyLabelEditAction, ElementAndBounds, isAction, LayoutAction, Point } from 'sprotty';
17
-
18
17
  import { Args } from '../args';
19
18
 
20
19
  /**
21
- * Operations are actions that denote requests from the client to _modify_ the model. Model modifications are always performed by the server.
22
- * After a successful modification, the server sends the updated model back to the client using the `UpdateModelAction`.
20
+ * Operations are actions that denote requests from the client to _modify_ the model. Model modifications are always performed by the
21
+ * server. After a successful modification, the server sends the updated model back to the client using the `UpdateModelAction`.
23
22
  */
24
- export interface Operation extends Action { }
23
+ export interface Operation extends Action {}
25
24
 
26
25
  export interface CreateOperation extends Operation {
27
26
  elementTypeId: string;
@@ -35,11 +34,13 @@ export function isCreateOperation(object?: any): object is CreateOperation {
35
34
  export class CreateNodeOperation implements CreateOperation {
36
35
  static readonly KIND = 'createNode';
37
36
 
38
- constructor(public readonly elementTypeId: string,
37
+ constructor(
38
+ public readonly elementTypeId: string,
39
39
  public location?: Point,
40
40
  public containerId?: string,
41
41
  public args?: Args,
42
- public readonly kind: string = CreateNodeOperation.KIND) { }
42
+ public readonly kind: string = CreateNodeOperation.KIND
43
+ ) {}
43
44
  }
44
45
 
45
46
  export function isCreateNodeOperation(object?: any): object is CreateNodeOperation {
@@ -49,11 +50,13 @@ export function isCreateNodeOperation(object?: any): object is CreateNodeOperati
49
50
  export class CreateEdgeOperation implements CreateOperation {
50
51
  static readonly KIND = 'createEdge';
51
52
 
52
- constructor(public readonly elementTypeId: string,
53
+ constructor(
54
+ public readonly elementTypeId: string,
53
55
  public sourceElementId: string,
54
56
  public targetElementId: string,
55
57
  public args?: Args,
56
- public readonly kind: string = CreateEdgeOperation.KIND) { }
58
+ public readonly kind: string = CreateEdgeOperation.KIND
59
+ ) {}
57
60
  }
58
61
 
59
62
  export function isCreateConnectionOperation(object?: any): object is CreateEdgeOperation {
@@ -62,7 +65,7 @@ export function isCreateConnectionOperation(object?: any): object is CreateEdgeO
62
65
 
63
66
  export class DeleteElementOperation implements Operation {
64
67
  static readonly KIND = 'deleteElement';
65
- constructor(readonly elementIds: string[], public readonly kind: string = DeleteElementOperation.KIND) { }
68
+ constructor(readonly elementIds: string[], public readonly kind: string = DeleteElementOperation.KIND) {}
66
69
  }
67
70
 
68
71
  export function isDeleteElementOperation(object?: any): object is DeleteElementOperation {
@@ -71,7 +74,7 @@ export function isDeleteElementOperation(object?: any): object is DeleteElementO
71
74
 
72
75
  export class ChangeBoundsOperation implements Operation {
73
76
  static readonly KIND = 'changeBounds';
74
- constructor(public newBounds: ElementAndBounds[], public readonly kind: string = ChangeBoundsOperation.KIND) { }
77
+ constructor(public newBounds: ElementAndBounds[], public readonly kind: string = ChangeBoundsOperation.KIND) {}
75
78
  }
76
79
 
77
80
  export function isChangeBoundsOperation(object?: any): object is ChangeBoundsOperation {
@@ -80,46 +83,65 @@ export function isChangeBoundsOperation(object?: any): object is ChangeBoundsOpe
80
83
 
81
84
  export class ChangeContainerOperation implements Operation {
82
85
  static readonly KIND = 'changeContainer';
83
- constructor(public readonly elementId: string,
86
+ constructor(
87
+ public readonly elementId: string,
84
88
  public readonly targetContainerId: string,
85
- public readonly location?: string,
86
- public readonly kind: string = ChangeContainerOperation.KIND) { }
89
+ public readonly location?: Point,
90
+ public readonly kind: string = ChangeContainerOperation.KIND
91
+ ) {}
87
92
  }
88
93
 
89
94
  export function isChangeContainerOperation(object?: any): object is ChangeContainerOperation {
90
- return isAction(object) && object.kind === ChangeContainerOperation.KIND
91
- && 'elementId' in object && typeof object['elementId'] === 'string'
92
- && 'targetContainerId' in object && typeof object['targetContainerId'] === 'string';
95
+ return (
96
+ isAction(object) &&
97
+ object.kind === ChangeContainerOperation.KIND &&
98
+ 'elementId' in object &&
99
+ typeof object['elementId'] === 'string' &&
100
+ 'targetContainerId' in object &&
101
+ typeof object['targetContainerId'] === 'string'
102
+ );
93
103
  }
94
104
 
95
105
  export class ReconnectEdgeOperation implements Operation {
96
106
  static readonly KIND = 'reconnectEdge';
97
- constructor(public readonly edgeElementId: string,
107
+ constructor(
108
+ public readonly edgeElementId: string,
98
109
  public readonly sourceElementId: string,
99
110
  public readonly targetElementId: string,
100
- public readonly kind: string = ReconnectEdgeOperation.KIND) { }
111
+ public readonly kind: string = ReconnectEdgeOperation.KIND
112
+ ) {}
101
113
  }
102
114
 
103
115
  export function isReconnectEdgeOperation(object?: any): object is ReconnectEdgeOperation {
104
- return isAction(object) && object.kind === ReconnectEdgeOperation.KIND
105
- && 'edgeElementId' in object && typeof object['edgeElementId'] === 'string'
106
- && 'sourceElementId' in object && typeof object['sourceElementId'] === 'string'
107
- && 'targetElementId' in object && typeof object['targetElementId'] === 'string';
116
+ return (
117
+ isAction(object) &&
118
+ object.kind === ReconnectEdgeOperation.KIND &&
119
+ 'edgeElementId' in object &&
120
+ typeof object['edgeElementId'] === 'string' &&
121
+ 'sourceElementId' in object &&
122
+ typeof object['sourceElementId'] === 'string' &&
123
+ 'targetElementId' in object &&
124
+ typeof object['targetElementId'] === 'string'
125
+ );
108
126
  }
109
127
 
110
128
  export class ChangeRoutingPointsOperation implements Operation {
111
129
  static readonly KIND = 'changeRoutingPoints';
112
- constructor(public newRoutingPoints: ElementAndRoutingPoints[], public readonly kind: string = ChangeRoutingPointsOperation.KIND) { }
130
+ constructor(public newRoutingPoints: ElementAndRoutingPoints[], public readonly kind: string = ChangeRoutingPointsOperation.KIND) {}
113
131
  }
114
132
 
115
133
  export function isChangeRoutingsPointsOperation(object?: any): object is ChangeRoutingPointsOperation {
116
- return isAction(object) && object.kind === ChangeRoutingPointsOperation.KIND
117
- && 'newRoutingPoints' in object && typeof object['newRoutingPoints'] === 'string';
134
+ return (
135
+ isAction(object) &&
136
+ object.kind === ChangeRoutingPointsOperation.KIND &&
137
+ 'newRoutingPoints' in object &&
138
+ typeof object['newRoutingPoints'] === 'string'
139
+ );
118
140
  }
119
141
 
120
142
  export class CompoundOperation implements Operation {
121
143
  static readonly KIND = 'compound';
122
- constructor(public operationList: Operation[], public readonly kind: string = CompoundOperation.KIND) { }
144
+ constructor(public operationList: Operation[], public readonly kind: string = CompoundOperation.KIND) {}
123
145
  }
124
146
 
125
147
  export function isCompoundOperation(object?: any): object is CompoundOperation {
@@ -142,7 +164,7 @@ export interface ElementAndRoutingPoints {
142
164
  }
143
165
 
144
166
  export abstract class TriggerElementCreationAction implements Action {
145
- constructor(public readonly elementTypeId: string, readonly args?: Args, public readonly kind: string = 'unknown') { }
167
+ constructor(public readonly elementTypeId: string, readonly args?: Args, public readonly kind: string = 'unknown') {}
146
168
  }
147
169
 
148
170
  export class TriggerNodeCreationAction extends TriggerElementCreationAction {
@@ -156,7 +178,11 @@ export class TriggerNodeCreationAction extends TriggerElementCreationAction {
156
178
  export class TriggerEdgeCreationAction extends TriggerElementCreationAction {
157
179
  static readonly KIND = 'triggerEdgeCreation';
158
180
 
159
- constructor(public readonly elementTypeId: string, readonly args?: Args, public readonly kind: string = TriggerEdgeCreationAction.KIND) {
181
+ constructor(
182
+ public readonly elementTypeId: string,
183
+ readonly args?: Args,
184
+ public readonly kind: string = TriggerEdgeCreationAction.KIND
185
+ ) {
160
186
  super(elementTypeId, args, kind);
161
187
  }
162
188
  }
@@ -173,6 +199,6 @@ export function isTriggerEdgeCreationAction(object?: any): object is TriggerEdge
173
199
  return isTriggerElementTypeCreationAction(object) && object.kind === TriggerEdgeCreationAction.KIND;
174
200
  }
175
201
 
176
- export class LayoutOperation extends LayoutAction implements Operation { }
202
+ export class LayoutOperation extends LayoutAction implements Operation {}
177
203
 
178
- export class ApplyLabelEditOperation extends ApplyLabelEditAction implements Operation { }
204
+ export class ApplyLabelEditOperation extends ApplyLabelEditAction implements Operation {}
package/src/base/types.ts CHANGED
@@ -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
@@ -33,5 +33,6 @@ export const GLSP_TYPES = {
33
33
  IGLSPToolManager: Symbol.for('IGLSPToolManager'),
34
34
  ITool: Symbol.for('ITool'),
35
35
  IDefaultTool: Symbol.for('IDefaultTool'),
36
- IEditModeListener: Symbol.for('IEditModeListener')
36
+ IEditModeListener: Symbol.for('IEditModeListener'),
37
+ LayoutRegistration: Symbol.for('LayoutRegistration')
37
38
  };
@@ -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
@@ -29,13 +29,13 @@ import {
29
29
 
30
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
40
  TopLeft = 'top-left',
41
41
  TopRight = 'top-right',
@@ -50,15 +50,26 @@ 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
+ }
72
+
62
73
  }
63
74
 
64
75
  export function addResizeHandles(element: SParentElement): void {
@@ -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,16 +25,21 @@ export interface IMovementRestrictor {
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));
@@ -61,8 +66,12 @@ export class NoOverlapMovmentRestrictor implements IMovementRestrictor {
61
66
  };
62
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
 
@@ -85,5 +94,4 @@ export function areOverlapping(element1: SModelElement & BoundsAware, element2:
85
94
  }
86
95
 
87
96
  return true;
88
-
89
97
  }
@@ -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
@@ -32,10 +32,13 @@ export class ServerCommandPaletteActionProvider implements ICommandPaletteAction
32
32
  @inject(EditorContextService) protected editorContext: EditorContextService;
33
33
 
34
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
- }));
35
+ const requestAction = new RequestContextActions(
36
+ ServerCommandPalette.CONTEXT_ID,
37
+ this.editorContext.get({
38
+ [ServerCommandPalette.TEXT]: text,
39
+ [ServerCommandPalette.INDEX]: index ? index : 0
40
+ })
41
+ );
39
42
  return this.actionDispatcher.requestUntil(requestAction).then(response => this.getPaletteActionsFromResponse(response));
40
43
  }
41
44
 
@@ -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
@@ -15,18 +15,20 @@
15
15
  ********************************************************************************/
16
16
  import { ContainerModule } from 'inversify';
17
17
  import { ContextMenuProviderRegistry, IContextMenuService, TYPES } from 'sprotty';
18
-
19
18
  import { SelectionServiceAwareContextMenuMouseListener } from './selection-service-aware-context-menu-mouse-listener';
20
19
  import { ServerContextMenuItemProvider } from './server-context-menu-provider';
21
20
 
22
21
  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
- }));
22
+ bind(TYPES.IContextMenuServiceProvider).toProvider<IContextMenuService>(
23
+ ctx => () =>
24
+ new Promise<IContextMenuService>((resolve, reject) => {
25
+ if (ctx.container.isBound(TYPES.IContextMenuService)) {
26
+ resolve(ctx.container.get<IContextMenuService>(TYPES.IContextMenuService));
27
+ } else {
28
+ reject();
29
+ }
30
+ })
31
+ );
30
32
  bind(TYPES.MouseListener).to(SelectionServiceAwareContextMenuMouseListener);
31
33
  bind(TYPES.IContextMenuProviderRegistry).to(ContextMenuProviderRegistry);
32
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
@@ -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
@@ -26,12 +26,16 @@ export namespace ServerContextMenu {
26
26
 
27
27
  @injectable()
28
28
  export class ServerContextMenuItemProvider implements IContextMenuItemProvider {
29
-
30
29
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: GLSPActionDispatcher;
31
30
  @inject(EditorContextService) protected editorContext: EditorContextService;
32
31
 
33
32
  getItems(root: Readonly<SModelElement>, lastMousePosition?: Point): Promise<LabeledAction[]> {
34
- const selectedElementIds = Array.from(root.index.all().filter(isSelected).map(e => e.id));
33
+ const selectedElementIds = Array.from(
34
+ root.index
35
+ .all()
36
+ .filter(isSelected)
37
+ .map(e => e.id)
38
+ );
35
39
  const context = this.editorContext.getWithSelection(selectedElementIds);
36
40
  const requestAction = new RequestContextActions(ServerContextMenu.CONTEXT_ID, context);
37
41
  return this.actionDispatcher.requestUntil(requestAction).then(response => this.getContextActionsFromResponse(response));
@@ -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
@@ -21,9 +21,7 @@ import { Operation } from '../../base/operations/operation';
21
21
  export class CutOperation implements Operation {
22
22
  static readonly KIND = 'cut';
23
23
 
24
- constructor(
25
- public readonly editorContext: EditorContext,
26
- public readonly kind: string = CutOperation.KIND) { }
24
+ constructor(public readonly editorContext: EditorContext, public readonly kind: string = CutOperation.KIND) {}
27
25
  }
28
26
 
29
27
  export class PasteOperation implements Operation {
@@ -32,7 +30,8 @@ export class PasteOperation implements Operation {
32
30
  constructor(
33
31
  public readonly clipboardData: ClipboardData,
34
32
  public readonly editorContext: EditorContext,
35
- public readonly kind: string = PasteOperation.KIND) { }
33
+ public readonly kind: string = PasteOperation.KIND
34
+ ) {}
36
35
  }
37
36
 
38
37
  export class RequestClipboardDataAction implements RequestAction<SetClipboardDataAction> {
@@ -41,14 +40,17 @@ export class RequestClipboardDataAction implements RequestAction<SetClipboardDat
41
40
  constructor(
42
41
  public readonly editorContext: EditorContext,
43
42
  public readonly requestId: string = generateRequestId(),
44
- public readonly kind: string = RequestClipboardDataAction.KIND) { }
43
+ public readonly kind: string = RequestClipboardDataAction.KIND
44
+ ) {}
45
45
 
46
46
  static create(editorContext: EditorContext): RequestAction<SetClipboardDataAction> {
47
47
  return new RequestClipboardDataAction(editorContext);
48
48
  }
49
49
  }
50
50
 
51
- export interface ClipboardData { [format: string]: string }
51
+ export interface ClipboardData {
52
+ [format: string]: string;
53
+ }
52
54
 
53
55
  export class SetClipboardDataAction implements ResponseAction {
54
56
  static readonly KIND = 'setClipboardData';
@@ -56,5 +58,6 @@ export class SetClipboardDataAction implements ResponseAction {
56
58
  constructor(
57
59
  public readonly clipboardData: ClipboardData,
58
60
  public readonly responseId: string = '',
59
- public readonly kind: string = SetClipboardDataAction.KIND) { }
61
+ public readonly kind: string = SetClipboardDataAction.KIND
62
+ ) {}
60
63
  }
@@ -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
@@ -30,17 +30,17 @@ import { GLSPServerStatusAction, ServerMessageAction } from '../../model-source/
30
30
 
31
31
  export class InvokeCopyAction implements Action {
32
32
  static readonly KIND = 'invoke-copy';
33
- constructor(public readonly kind = InvokeCopyAction.KIND) { }
33
+ constructor(public readonly kind = InvokeCopyAction.KIND) {}
34
34
  }
35
35
 
36
36
  export class InvokePasteAction implements Action {
37
37
  static readonly KIND = 'invoke-paste';
38
- constructor(public readonly kind = InvokePasteAction.KIND) { }
38
+ constructor(public readonly kind = InvokePasteAction.KIND) {}
39
39
  }
40
40
 
41
41
  export class InvokeCutAction implements Action {
42
42
  static readonly KIND = 'invoke-cut';
43
- constructor(public readonly kind = InvokeCutAction.KIND) { }
43
+ constructor(public readonly kind = InvokeCutAction.KIND) {}
44
44
  }
45
45
 
46
46
  @injectable()
@@ -49,21 +49,31 @@ export class InvokeCopyPasteActionHandler implements IActionHandler {
49
49
  handle(action: Action): void {
50
50
  switch (action.kind) {
51
51
  case InvokeCopyAction.KIND:
52
- document.execCommand('copy');
52
+ if (supportsCopy()) {
53
+ document.execCommand('copy');
54
+ } else {
55
+ this.notifyUserToUseShortcut('copy');
56
+ }
53
57
  break;
54
58
  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();
59
+ if (supportsPaste()) {
60
+ document.execCommand('paste');
61
+ } else {
62
+ this.notifyUserToUseShortcut('paste');
63
+ }
58
64
  break;
59
65
  case InvokeCutAction.KIND:
60
- document.execCommand('cut');
66
+ if (supportsCut()) {
67
+ document.execCommand('cut');
68
+ } else {
69
+ this.notifyUserToUseShortcut('cut');
70
+ }
61
71
  break;
62
72
  }
63
73
  }
64
74
 
65
- protected notifyUserToUseShortcut(): void {
66
- const message = 'Please use the browser\'s paste command or shortcut.';
75
+ protected notifyUserToUseShortcut(operation: string): void {
76
+ const message = `Please use the browser's ${operation} command or shortcut.`;
67
77
  const timeout = 10000;
68
78
  const severity = 'WARNING';
69
79
  this.dispatcher.dispatchAll([
@@ -86,22 +96,52 @@ export class CopyPasteContextMenuItemProvider implements IContextMenuItemProvide
86
96
 
87
97
  protected createPasteMenuItem(): MenuItem {
88
98
  return {
89
- id: 'paste', label: 'Paste', group: 'copy-paste',
90
- actions: [new InvokePasteAction()], isEnabled: () => true
99
+ id: 'paste',
100
+ label: 'Paste',
101
+ group: 'copy-paste',
102
+ actions: [new InvokePasteAction()],
103
+ isEnabled: () => true
91
104
  };
92
105
  }
93
106
 
94
107
  protected createCutMenuItem(hasSelectedElements: boolean): MenuItem {
95
108
  return {
96
- id: 'cut', label: 'Cut', group: 'copy-paste',
97
- actions: [new InvokeCutAction()], isEnabled: () => hasSelectedElements
109
+ id: 'cut',
110
+ label: 'Cut',
111
+ group: 'copy-paste',
112
+ actions: [new InvokeCutAction()],
113
+ isEnabled: () => hasSelectedElements
98
114
  };
99
115
  }
100
116
 
101
117
  protected createCopyMenuItem(hasSelectedElements: boolean): MenuItem {
102
118
  return {
103
- id: 'copy', label: 'Copy', group: 'copy-paste',
104
- actions: [new InvokeCopyAction()], isEnabled: () => hasSelectedElements
119
+ id: 'copy',
120
+ label: 'Copy',
121
+ group: 'copy-paste',
122
+ actions: [new InvokeCopyAction()],
123
+ isEnabled: () => hasSelectedElements
105
124
  };
106
125
  }
107
126
  }
127
+
128
+ export function supportsCopy(): boolean {
129
+ return isNative() || document.queryCommandSupported('copy');
130
+ }
131
+
132
+ export function supportsCut(): boolean {
133
+ return isNative() || document.queryCommandSupported('cut');
134
+ }
135
+
136
+ export function supportsPaste(): boolean {
137
+ const isChrome = userAgent().indexOf('Chrome') >= 0;
138
+ return isNative() || (!isChrome && document.queryCommandSupported('paste'));
139
+ }
140
+
141
+ export function isNative(): boolean {
142
+ return typeof (window as any).process !== 'undefined';
143
+ }
144
+
145
+ function userAgent(): string {
146
+ return typeof navigator !== 'undefined' ? navigator.userAgent : '';
147
+ }
@@ -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
@@ -91,11 +91,10 @@ function getClipboardIdFromDataTransfer(dataTransfer: DataTransfer): string | un
91
91
  return isClipboardId(jsonObject) ? jsonObject.clipboardId : undefined;
92
92
  }
93
93
 
94
- const CLIPBOARD_DATA_FORMAT = 'application/json';
94
+ const CLIPBOARD_DATA_FORMAT = 'text/plain';
95
95
 
96
96
  @injectable()
97
97
  export class ServerCopyPasteHandler implements ICopyPasteHandler {
98
-
99
98
  @inject(TYPES.IActionDispatcher) protected actionDispatcher: GLSPActionDispatcher;
100
99
  @inject(TYPES.ViewerOptions) protected viewerOptions: ViewerOptions;
101
100
  @inject(GLSP_TYPES.IAsyncClipboardService) protected clipboadService: IAsyncClipboardService;
@@ -126,7 +125,7 @@ export class ServerCopyPasteHandler implements ICopyPasteHandler {
126
125
  }
127
126
 
128
127
  handlePaste(event: ClipboardEvent): void {
129
- if (event.clipboardData) {
128
+ if (event.clipboardData && this.shouldPaste(event)) {
130
129
  const clipboardId = getClipboardIdFromDataTransfer(event.clipboardData);
131
130
  const clipboardData = this.clipboadService.get(clipboardId);
132
131
  if (clipboardData) {
@@ -137,8 +136,18 @@ export class ServerCopyPasteHandler implements ICopyPasteHandler {
137
136
  }
138
137
 
139
138
  protected shouldCopy(_event: ClipboardEvent): boolean | null {
140
- return this.editorContext.get().selectedElementIds.length > 0 && document.activeElement instanceof SVGElement
141
- && document.activeElement.parentElement && document.activeElement.parentElement.id === this.viewerOptions.baseDiv;
139
+ return this.editorContext.get().selectedElementIds.length > 0 && this.isDiagramActive();
140
+ }
141
+
142
+ protected shouldPaste(_event: ClipboardEvent): boolean | null {
143
+ return this.isDiagramActive();
142
144
  }
143
145
 
146
+ private isDiagramActive(): boolean | null {
147
+ return (
148
+ document.activeElement instanceof SVGElement &&
149
+ document.activeElement.parentElement &&
150
+ document.activeElement.parentElement.id === this.viewerOptions.baseDiv
151
+ );
152
+ }
144
153
  }