@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.
- package/README.md +2 -1
- package/css/command-palette.css +6 -5
- package/css/glsp-sprotty.css +17 -8
- package/css/tool-palette.css +14 -14
- package/lib/base/action-dispatcher.d.ts.map +1 -1
- package/lib/base/action-dispatcher.js +39 -60
- package/lib/base/action-dispatcher.js.map +1 -1
- package/lib/base/actions/context-actions.d.ts +1 -1
- package/lib/base/actions/context-actions.d.ts.map +1 -1
- package/lib/base/actions/context-actions.js +11 -18
- package/lib/base/actions/context-actions.js.map +1 -1
- package/lib/base/actions/edit-mode-action.d.ts.map +1 -1
- package/lib/base/actions/edit-mode-action.js +12 -17
- package/lib/base/actions/edit-mode-action.js.map +1 -1
- package/lib/base/actions/edit-validation-actions.d.ts +1 -1
- package/lib/base/actions/edit-validation-actions.d.ts.map +1 -1
- package/lib/base/actions/edit-validation-actions.js +23 -26
- package/lib/base/actions/edit-validation-actions.js.map +1 -1
- package/lib/base/actions/focus-change-action.js +4 -5
- package/lib/base/actions/focus-change-action.js.map +1 -1
- package/lib/base/args.d.ts +1 -1
- package/lib/base/args.d.ts.map +1 -1
- package/lib/base/args.js.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +100 -150
- package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
- package/lib/base/auto-complete/validation-decorator.d.ts +1 -1
- package/lib/base/auto-complete/validation-decorator.js +38 -60
- package/lib/base/auto-complete/validation-decorator.js.map +1 -1
- package/lib/base/command-stack.d.ts.map +1 -1
- package/lib/base/command-stack.js +19 -37
- package/lib/base/command-stack.js.map +1 -1
- package/lib/base/container-modules.d.ts +40 -0
- package/lib/base/container-modules.d.ts.map +1 -0
- package/lib/base/container-modules.js +84 -0
- package/lib/base/container-modules.js.map +1 -0
- package/lib/base/di.config.d.ts +11 -2
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +37 -37
- package/lib/base/di.config.js.map +1 -1
- package/lib/base/drag-aware-mouse-listener.d.ts +1 -1
- package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
- package/lib/base/drag-aware-mouse-listener.js +24 -48
- package/lib/base/drag-aware-mouse-listener.js.map +1 -1
- package/lib/base/editor-context.d.ts.map +1 -1
- package/lib/base/editor-context.js +64 -128
- package/lib/base/editor-context.js.map +1 -1
- package/lib/base/focus-tracker.d.ts.map +1 -1
- package/lib/base/focus-tracker.js +19 -24
- package/lib/base/focus-tracker.js.map +1 -1
- package/lib/base/model/model-registry.js +10 -28
- package/lib/base/model/model-registry.js.map +1 -1
- package/lib/base/model/update-model-command.d.ts +2 -2
- package/lib/base/model/update-model-command.d.ts.map +1 -1
- package/lib/base/model/update-model-command.js +67 -88
- package/lib/base/model/update-model-command.js.map +1 -1
- package/lib/base/model-initialization-constraint.js +31 -52
- package/lib/base/model-initialization-constraint.js.map +1 -1
- package/lib/base/operations/operation.d.ts +5 -5
- package/lib/base/operations/operation.d.ts.map +1 -1
- package/lib/base/operations/operation.js +75 -115
- package/lib/base/operations/operation.js.map +1 -1
- package/lib/base/selection-clearing-mouse-listener.js +10 -28
- package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
- package/lib/base/source-uri-aware.js +2 -5
- package/lib/base/source-uri-aware.js.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +56 -137
- package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
- package/lib/base/types.d.ts +2 -1
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +3 -2
- package/lib/base/types.js.map +1 -1
- package/lib/base/view/view-registry.js +10 -28
- package/lib/base/view/view-registry.js.map +1 -1
- package/lib/features/change-bounds/model.d.ts +3 -1
- package/lib/features/change-bounds/model.d.ts.map +1 -1
- package/lib/features/change-bounds/model.js +20 -31
- package/lib/features/change-bounds/model.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +29 -28
- package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
- package/lib/features/change-bounds/snap.js +13 -24
- package/lib/features/change-bounds/snap.js.map +1 -1
- package/lib/features/command-palette/command-palette-tool.js +30 -38
- package/lib/features/command-palette/command-palette-tool.js.map +1 -1
- package/lib/features/command-palette/di.config.js +6 -6
- package/lib/features/command-palette/di.config.js.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.js +27 -32
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.js +19 -67
- package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
- package/lib/features/context-menu/di.config.d.ts +1 -1
- package/lib/features/context-menu/di.config.d.ts.map +1 -1
- package/lib/features/context-menu/di.config.js +8 -8
- package/lib/features/context-menu/di.config.js.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.js +29 -30
- package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-actions.d.ts +1 -1
- package/lib/features/copy-paste/copy-paste-actions.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-actions.js +20 -30
- package/lib/features/copy-paste/copy-paste-actions.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts +5 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
- package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.d.ts +2 -0
- package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.js +67 -67
- package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
- package/lib/features/copy-paste/di.config.js +10 -10
- package/lib/features/copy-paste/di.config.js.map +1 -1
- package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
- package/lib/features/decoration/decoration-placer.js +13 -32
- package/lib/features/decoration/decoration-placer.js.map +1 -1
- package/lib/features/decoration/di.config.js +4 -4
- package/lib/features/decoration/di.config.js.map +1 -1
- package/lib/features/edit-label/di.config.js +7 -7
- package/lib/features/edit-label/di.config.js.map +1 -1
- package/lib/features/edit-label/edit-label-tool.js +20 -43
- package/lib/features/edit-label/edit-label-tool.js.map +1 -1
- package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-validator.js +37 -59
- package/lib/features/edit-label/edit-label-validator.js.map +1 -1
- package/lib/features/hints/di.config.js +8 -8
- package/lib/features/hints/di.config.js.map +1 -1
- package/lib/features/hints/model.d.ts +1 -1
- package/lib/features/hints/model.d.ts.map +1 -1
- package/lib/features/hints/request-type-hints-action.d.ts +1 -1
- package/lib/features/hints/request-type-hints-action.d.ts.map +1 -1
- package/lib/features/hints/request-type-hints-action.js +12 -14
- package/lib/features/hints/request-type-hints-action.js.map +1 -1
- package/lib/features/hints/type-hints.d.ts +4 -4
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +91 -133
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.js +7 -7
- package/lib/features/hover/di.config.js.map +1 -1
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +35 -76
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts +5 -1
- package/lib/features/layout/di.config.d.ts.map +1 -1
- package/lib/features/layout/di.config.js +47 -7
- package/lib/features/layout/di.config.js.map +1 -1
- package/lib/features/layout/freeform-layout.d.ts +16 -0
- package/lib/features/layout/freeform-layout.d.ts.map +1 -0
- package/lib/features/layout/freeform-layout.js +107 -0
- package/lib/features/layout/freeform-layout.js.map +1 -0
- package/lib/features/layout/layout-commands.d.ts +2 -2
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +187 -263
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts +1 -1
- package/lib/features/layout/layout-commands.spec.js +94 -88
- package/lib/features/layout/layout-commands.spec.js.map +1 -1
- package/lib/features/layout/vbox-layout.d.ts +25 -0
- package/lib/features/layout/vbox-layout.d.ts.map +1 -0
- package/lib/features/layout/vbox-layout.js +187 -0
- package/lib/features/layout/vbox-layout.js.map +1 -0
- package/lib/features/model-source-watcher/di.config.js +6 -6
- package/lib/features/model-source-watcher/di.config.js.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -45
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action.d.ts +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action.js +4 -5
- package/lib/features/model-source-watcher/model-source-changed-action.js.map +1 -1
- package/lib/features/mouse-tool/di.config.js +5 -5
- package/lib/features/mouse-tool/di.config.js.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts +2 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +69 -215
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/di.config.js +9 -9
- package/lib/features/navigation/di.config.js.map +1 -1
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +136 -217
- package/lib/features/navigation/navigation-action-handler.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.js +57 -122
- package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
- package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
- package/lib/features/rank/model.d.ts +1 -1
- package/lib/features/rank/model.js +2 -2
- package/lib/features/rank/model.js.map +1 -1
- package/lib/features/reconnect/model.d.ts +1 -1
- package/lib/features/reconnect/model.d.ts.map +1 -1
- package/lib/features/reconnect/model.js +9 -27
- package/lib/features/reconnect/model.js.map +1 -1
- package/lib/features/save/di.config.d.ts +1 -1
- package/lib/features/save/di.config.d.ts.map +1 -1
- package/lib/features/save/di.config.js +5 -5
- package/lib/features/save/di.config.js.map +1 -1
- package/lib/features/save/save.d.ts +1 -1
- package/lib/features/save/save.js +11 -31
- package/lib/features/save/save.js.map +1 -1
- package/lib/features/select/di.config.js +11 -11
- package/lib/features/select/di.config.js.map +1 -1
- package/lib/features/select/select-feedback-action.d.ts.map +1 -1
- package/lib/features/select/select-feedback-action.js +45 -71
- package/lib/features/select/select-feedback-action.js.map +1 -1
- package/lib/features/select/select-mouse-listener.js +7 -23
- package/lib/features/select/select-mouse-listener.js.map +1 -1
- package/lib/features/select/selection-service.d.ts.map +1 -1
- package/lib/features/select/selection-service.js +132 -234
- package/lib/features/select/selection-service.js.map +1 -1
- package/lib/features/select/selection-service.spec.js +97 -124
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +2 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +104 -127
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +69 -103
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +3 -1
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +37 -81
- package/lib/features/tool-feedback/css-feedback.js.map +1 -1
- package/lib/features/tool-feedback/di.config.d.ts +1 -1
- package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
- package/lib/features/tool-feedback/di.config.js +27 -27
- package/lib/features/tool-feedback/di.config.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -193
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.js +36 -58
- package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -69
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/model.d.ts +1 -1
- package/lib/features/tool-feedback/model.js +11 -27
- package/lib/features/tool-feedback/model.js.map +1 -1
- package/lib/features/tool-feedback/view.d.ts +4 -4
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +30 -37
- package/lib/features/tool-feedback/view.js.map +1 -1
- package/lib/features/tool-palette/di.config.js +6 -6
- package/lib/features/tool-palette/di.config.js.map +1 -1
- package/lib/features/tool-palette/palette-item.d.ts +1 -1
- package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
- package/lib/features/tool-palette/palette-item.js +6 -5
- package/lib/features/tool-palette/palette-item.js.map +1 -1
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +182 -259
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.js +37 -44
- package/lib/features/tools/base-glsp-tool.js.map +1 -1
- package/lib/features/tools/change-bounds-tool.d.ts +3 -2
- package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
- package/lib/features/tools/change-bounds-tool.js +187 -237
- package/lib/features/tools/change-bounds-tool.js.map +1 -1
- package/lib/features/tools/delete-tool.d.ts.map +1 -1
- package/lib/features/tools/delete-tool.js +69 -102
- package/lib/features/tools/delete-tool.js.map +1 -1
- package/lib/features/tools/di.config.js +18 -18
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation-tool.js +60 -85
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +110 -181
- package/lib/features/tools/edge-edit-tool.js.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.js +128 -149
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
- package/lib/features/tools/marquee-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-tool.js +32 -58
- package/lib/features/tools/marquee-tool.js.map +1 -1
- package/lib/features/tools/model.js +4 -22
- package/lib/features/tools/model.js.map +1 -1
- package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/node-creation-tool.js +59 -89
- package/lib/features/tools/node-creation-tool.js.map +1 -1
- package/lib/features/tools/view.d.ts +1 -1
- package/lib/features/tools/view.d.ts.map +1 -1
- package/lib/features/tools/view.js +12 -31
- package/lib/features/tools/view.js.map +1 -1
- package/lib/features/undo-redo/model.d.ts +1 -1
- package/lib/features/undo-redo/model.js +8 -12
- package/lib/features/undo-redo/model.js.map +1 -1
- package/lib/features/validation/di.config.js +12 -12
- package/lib/features/validation/di.config.js.map +1 -1
- package/lib/features/validation/issue-marker.js +13 -51
- package/lib/features/validation/issue-marker.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.js +129 -163
- package/lib/features/validation/marker-navigator.js.map +1 -1
- package/lib/features/validation/marker-navigator.spec.d.ts +1 -1
- package/lib/features/validation/marker-navigator.spec.js +79 -73
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +2 -2
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +161 -276
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/features/viewport/di.config.js +10 -10
- package/lib/features/viewport/di.config.js.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -32
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
- package/lib/index.d.ts +5 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +25 -23
- package/lib/index.js.map +1 -1
- package/lib/lib/model.js +11 -27
- package/lib/lib/model.js.map +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +43 -118
- package/lib/model-source/glsp-diagram-server.js.map +1 -1
- package/lib/model-source/glsp-server-status.js +10 -27
- package/lib/model-source/glsp-server-status.js.map +1 -1
- package/lib/utils/argument-utils.d.ts +3 -3
- package/lib/utils/argument-utils.d.ts.map +1 -1
- package/lib/utils/argument-utils.js +27 -92
- package/lib/utils/argument-utils.js.map +1 -1
- package/lib/utils/array-utils.d.ts +1 -1
- package/lib/utils/array-utils.d.ts.map +1 -1
- package/lib/utils/array-utils.js +10 -15
- package/lib/utils/array-utils.js.map +1 -1
- package/lib/utils/html-utils.js +2 -2
- package/lib/utils/html-utils.js.map +1 -1
- package/lib/utils/layout-utils.d.ts +1 -1
- package/lib/utils/layout-utils.d.ts.map +1 -1
- package/lib/utils/layout-utils.js +5 -5
- package/lib/utils/layout-utils.js.map +1 -1
- package/lib/utils/marker.js +11 -53
- package/lib/utils/marker.js.map +1 -1
- package/lib/utils/smodel-util.d.ts +3 -3
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +17 -51
- package/lib/utils/smodel-util.js.map +1 -1
- package/lib/utils/viewpoint-util.d.ts +1 -1
- package/lib/utils/viewpoint-util.d.ts.map +1 -1
- package/lib/utils/viewpoint-util.js +16 -16
- package/lib/utils/viewpoint-util.js.map +1 -1
- package/lib/views/base-view-module.js +9 -9
- package/lib/views/base-view-module.js.map +1 -1
- package/lib/views/compartments.d.ts +6 -0
- package/lib/views/compartments.d.ts.map +1 -0
- package/lib/views/compartments.js +43 -0
- package/lib/views/compartments.js.map +1 -0
- package/lib/views/default-types.js +1 -1
- package/lib/views/default-types.js.map +1 -1
- package/lib/views/glsp-edge-view.d.ts +1 -2
- package/lib/views/glsp-edge-view.d.ts.map +1 -1
- package/lib/views/glsp-edge-view.js +32 -62
- package/lib/views/glsp-edge-view.js.map +1 -1
- package/lib/views/index.d.ts +1 -0
- package/lib/views/index.d.ts.map +1 -1
- package/lib/views/index.js +1 -0
- package/lib/views/index.js.map +1 -1
- package/lib/views/issue-marker-view.d.ts +1 -1
- package/lib/views/issue-marker-view.d.ts.map +1 -1
- package/lib/views/issue-marker-view.js +19 -42
- package/lib/views/issue-marker-view.js.map +1 -1
- package/lib/views/rounded-corner-view.d.ts +2 -3
- package/lib/views/rounded-corner-view.d.ts.map +1 -1
- package/lib/views/rounded-corner-view.js +40 -70
- package/lib/views/rounded-corner-view.js.map +1 -1
- package/lib/views/rounded-corner.d.ts.map +1 -1
- package/lib/views/rounded-corner.js +44 -65
- package/lib/views/rounded-corner.js.map +1 -1
- package/package.json +6 -16
- package/src/base/action-dispatcher.ts +1 -2
- package/src/base/actions/context-actions.ts +6 -6
- package/src/base/actions/edit-mode-action.ts +3 -4
- package/src/base/actions/edit-validation-actions.ts +26 -14
- package/src/base/actions/focus-change-action.ts +1 -1
- package/src/base/args.ts +4 -2
- package/src/base/auto-complete/auto-complete-widget.ts +34 -21
- package/src/base/auto-complete/validation-decorator.ts +5 -5
- package/src/base/command-stack.ts +1 -3
- package/src/base/container-modules.ts +113 -0
- package/src/base/di.config.ts +31 -16
- package/src/base/drag-aware-mouse-listener.ts +1 -3
- package/src/base/editor-context.ts +2 -4
- package/src/base/focus-tracker.ts +0 -2
- package/src/base/model/update-model-command.ts +6 -8
- package/src/base/operations/operation.ts +57 -31
- package/src/base/types.ts +3 -2
- package/src/features/change-bounds/model.ts +16 -5
- package/src/features/change-bounds/movement-restrictor.ts +15 -7
- package/src/features/command-palette/server-command-palette-provider.ts +8 -5
- package/src/features/context-menu/di.config.ts +11 -9
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +4 -3
- package/src/features/context-menu/server-context-menu-provider.ts +7 -3
- package/src/features/copy-paste/copy-paste-actions.ts +11 -8
- package/src/features/copy-paste/copy-paste-context-menu.ts +57 -17
- package/src/features/copy-paste/copy-paste-handler.ts +15 -6
- package/src/features/decoration/decoration-placer.ts +2 -13
- package/src/features/edit-label/edit-label-validator.ts +11 -12
- package/src/features/hints/model.ts +2 -2
- package/src/features/hints/request-type-hints-action.ts +10 -5
- package/src/features/hints/type-hints.ts +26 -30
- package/src/features/hover/hover.ts +1 -2
- package/src/features/layout/di.config.ts +30 -5
- package/src/features/layout/freeform-layout.ts +132 -0
- package/src/features/layout/layout-commands.spec.ts +79 -56
- package/src/features/layout/layout-commands.ts +42 -31
- package/src/features/layout/vbox-layout.ts +241 -0
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +3 -3
- package/src/features/model-source-watcher/model-source-changed-action.ts +2 -2
- package/src/features/mouse-tool/mouse-tool.ts +31 -22
- package/src/features/navigation/navigation-action-handler.ts +32 -22
- package/src/features/navigation/navigation-target-resolver.spec.ts +1 -3
- package/src/features/navigation/navigation-target-resolver.ts +14 -12
- package/src/features/rank/model.ts +2 -2
- package/src/features/reconnect/model.ts +2 -3
- package/src/features/save/di.config.ts +1 -2
- package/src/features/save/save.ts +2 -2
- package/src/features/select/select-feedback-action.ts +4 -6
- package/src/features/select/selection-service.spec.ts +9 -4
- package/src/features/select/selection-service.ts +13 -5
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +26 -17
- package/src/features/tool-feedback/creation-tool-feedback.ts +16 -7
- package/src/features/tool-feedback/css-feedback.ts +7 -4
- package/src/features/tool-feedback/di.config.ts +2 -5
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +18 -15
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +6 -8
- package/src/features/tool-feedback/marquee-tool-feedback.ts +3 -2
- package/src/features/tool-feedback/model.ts +1 -2
- package/src/features/tool-feedback/view.tsx +16 -10
- package/src/features/tool-palette/di.config.ts +1 -1
- package/src/features/tool-palette/palette-item.ts +3 -3
- package/src/features/tool-palette/tool-palette.ts +12 -14
- package/src/features/tools/change-bounds-tool.ts +54 -25
- package/src/features/tools/delete-tool.ts +8 -3
- package/src/features/tools/edge-creation-tool.ts +5 -8
- package/src/features/tools/edge-edit-tool.ts +9 -18
- package/src/features/tools/marquee-mouse-tool.ts +57 -37
- package/src/features/tools/marquee-tool.ts +0 -1
- package/src/features/tools/node-creation-tool.ts +4 -9
- package/src/features/tools/view.tsx +17 -12
- package/src/features/undo-redo/model.ts +3 -3
- package/src/features/validation/marker-navigator.spec.ts +15 -9
- package/src/features/validation/marker-navigator.ts +23 -8
- package/src/features/validation/validate.ts +9 -13
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +1 -10
- package/src/index.ts +26 -8
- package/src/model-source/glsp-diagram-server.ts +2 -14
- package/src/utils/argument-utils.ts +13 -9
- package/src/utils/array-utils.ts +4 -2
- package/src/utils/layout-utils.ts +11 -5
- package/src/utils/smodel-util.ts +14 -10
- package/src/utils/viewpoint-util.ts +3 -2
- package/src/views/compartments.tsx +37 -0
- package/src/views/glsp-edge-view.tsx +20 -13
- package/src/views/index.ts +1 -0
- package/src/views/issue-marker-view.tsx +11 -12
- package/src/views/rounded-corner-view.tsx +38 -25
- package/src/views/rounded-corner.ts +3 -4
- package/lib/base/actions/protocol-actions.d.ts +0 -41
- package/lib/base/actions/protocol-actions.d.ts.map +0 -1
- package/lib/base/actions/protocol-actions.js +0 -151
- package/lib/base/actions/protocol-actions.js.map +0 -1
- 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
|
|
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(
|
|
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(
|
|
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(
|
|
86
|
+
constructor(
|
|
87
|
+
public readonly elementId: string,
|
|
84
88
|
public readonly targetContainerId: string,
|
|
85
|
-
public readonly location?:
|
|
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
|
|
91
|
-
|
|
92
|
-
|
|
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(
|
|
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
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
|
117
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
65
|
-
.
|
|
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(
|
|
36
|
-
|
|
37
|
-
|
|
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>(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
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(
|
|
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 {
|
|
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
|
-
|
|
52
|
+
if (supportsCopy()) {
|
|
53
|
+
document.execCommand('copy');
|
|
54
|
+
} else {
|
|
55
|
+
this.notifyUserToUseShortcut('copy');
|
|
56
|
+
}
|
|
53
57
|
break;
|
|
54
58
|
case InvokePasteAction.KIND:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
if (supportsPaste()) {
|
|
60
|
+
document.execCommand('paste');
|
|
61
|
+
} else {
|
|
62
|
+
this.notifyUserToUseShortcut('paste');
|
|
63
|
+
}
|
|
58
64
|
break;
|
|
59
65
|
case InvokeCutAction.KIND:
|
|
60
|
-
|
|
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 =
|
|
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',
|
|
90
|
-
|
|
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',
|
|
97
|
-
|
|
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',
|
|
104
|
-
|
|
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 = '
|
|
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 &&
|
|
141
|
-
|
|
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
|
}
|