@eclipse-glsp/client 0.10.0-next.6bee8eb.163 → 0.10.0-next.88e4725.166
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/lib/base/action-dispatcher.d.ts +1 -0
- package/lib/base/action-dispatcher.d.ts.map +1 -1
- package/lib/base/action-dispatcher.js +11 -3
- package/lib/base/action-dispatcher.js.map +1 -1
- package/lib/base/actions/focus-change-action.d.ts +16 -7
- package/lib/base/actions/focus-change-action.d.ts.map +1 -1
- package/lib/base/actions/focus-change-action.js +31 -12
- package/lib/base/actions/focus-change-action.js.map +1 -1
- package/lib/base/actions/sprotty-actions.d.ts +7 -0
- package/lib/base/actions/sprotty-actions.d.ts.map +1 -0
- package/lib/{features/tool-palette/palette-item.js → base/actions/sprotty-actions.js} +4 -20
- package/lib/base/actions/sprotty-actions.js.map +1 -0
- package/lib/base/auto-complete/auto-complete-actions.d.ts +5 -3
- package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-actions.js +24 -5
- package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +2 -2
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +4 -4
- package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
- package/lib/base/command-stack.d.ts.map +1 -1
- package/lib/base/command-stack.js +4 -3
- package/lib/base/command-stack.js.map +1 -1
- package/lib/base/di.config.d.ts +1 -1
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +9 -10
- package/lib/base/di.config.js.map +1 -1
- package/lib/base/editor-context-service.d.ts +1 -1
- package/lib/base/editor-context-service.d.ts.map +1 -1
- package/lib/base/editor-context-service.js +5 -5
- package/lib/base/editor-context-service.js.map +1 -1
- package/lib/base/focus-tracker.d.ts +1 -1
- package/lib/base/focus-tracker.d.ts.map +1 -1
- package/lib/base/focus-tracker.js +3 -3
- package/lib/base/focus-tracker.js.map +1 -1
- package/lib/base/model/update-model-command.d.ts.map +1 -1
- package/lib/base/model/update-model-command.js +9 -9
- package/lib/base/model/update-model-command.js.map +1 -1
- package/lib/base/model-initialization-constraint.d.ts +2 -3
- package/lib/base/model-initialization-constraint.d.ts.map +1 -1
- package/lib/base/model-initialization-constraint.js +3 -4
- package/lib/base/model-initialization-constraint.js.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +3 -3
- package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
- package/lib/base/tool-manager/tool-actions.d.ts +14 -0
- package/lib/base/tool-manager/tool-actions.d.ts.map +1 -0
- package/lib/base/tool-manager/tool-actions.js +25 -0
- package/lib/base/tool-manager/tool-actions.js.map +1 -0
- package/lib/base/types.d.ts +144 -20
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +14 -26
- package/lib/base/types.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +2 -2
- package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
- package/lib/features/change-bounds/snap.d.ts +42 -1
- package/lib/features/change-bounds/snap.d.ts.map +1 -1
- package/lib/features/change-bounds/snap.js +77 -1
- package/lib/features/change-bounds/snap.js.map +1 -1
- package/lib/features/change-bounds/snap.spec.d.ts +17 -0
- package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
- package/lib/features/change-bounds/snap.spec.js +82 -0
- package/lib/features/change-bounds/snap.spec.js.map +1 -0
- package/lib/features/command-palette/di.config.d.ts +2 -2
- package/lib/features/command-palette/di.config.d.ts.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 +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 +11 -8
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts +17 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.js +3 -3
- 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 -7
- 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 +17 -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 +4 -19
- 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 +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 +6 -5
- package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts +12 -15
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.js +24 -31
- package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.d.ts +1 -1
- package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.js +6 -7
- package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
- package/lib/features/copy-paste/di.config.d.ts +1 -1
- package/lib/features/copy-paste/di.config.d.ts.map +1 -1
- package/lib/features/copy-paste/di.config.js +5 -7
- 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 +17 -1
- package/lib/features/decoration/decoration-placer.js.map +1 -1
- package/lib/features/decoration/di.config.d.ts +2 -2
- package/lib/features/decoration/di.config.d.ts.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.d.ts +1 -1
- package/lib/features/edit-label/di.config.d.ts.map +1 -1
- package/lib/features/edit-label/di.config.js +4 -4
- package/lib/features/edit-label/di.config.js.map +1 -1
- package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-tool.js +1 -1
- package/lib/features/edit-label/edit-label-tool.js.map +1 -1
- package/lib/features/edit-label/edit-label-validator.d.ts +4 -6
- package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-validator.js +8 -10
- package/lib/features/edit-label/edit-label-validator.js.map +1 -1
- package/lib/features/hints/di.config.js +2 -2
- package/lib/features/hints/di.config.js.map +1 -1
- package/lib/features/hints/type-hints.d.ts +14 -4
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +21 -18
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.d.ts.map +1 -1
- package/lib/features/hover/di.config.js +2 -0
- package/lib/features/hover/di.config.js.map +1 -1
- package/lib/features/hover/hover.d.ts +4 -2
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +22 -4
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts +1 -1
- package/lib/features/layout/di.config.js +1 -1
- package/lib/features/layout/freeform-layout.d.ts +17 -1
- package/lib/features/layout/freeform-layout.d.ts.map +1 -1
- package/lib/features/layout/freeform-layout.js +2 -2
- package/lib/features/layout/freeform-layout.js.map +1 -1
- package/lib/features/layout/layout-commands.d.ts +64 -37
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +79 -59
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.spec.js +29 -17
- package/lib/features/layout/layout-commands.spec.js.map +1 -1
- package/lib/features/layout/vbox-layout.d.ts +17 -1
- package/lib/features/layout/vbox-layout.d.ts.map +1 -1
- package/lib/features/layout/vbox-layout.js +4 -3
- package/lib/features/layout/vbox-layout.js.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +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 +7 -7
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
- package/lib/features/mouse-tool/di.config.d.ts +1 -1
- package/lib/features/mouse-tool/di.config.d.ts.map +1 -1
- package/lib/features/mouse-tool/di.config.js +2 -2
- package/lib/features/mouse-tool/di.config.js.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +4 -10
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/navigation-action-handler.d.ts +31 -16
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +50 -66
- package/lib/features/navigation/navigation-action-handler.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.d.ts +3 -3
- package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.js +7 -8
- package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +3 -3
- package/lib/features/navigation/navigation-target-resolver.spec.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 +3 -3
- package/lib/features/save/di.config.js.map +1 -1
- package/lib/features/save/save-keylistener.js +1 -1
- package/lib/features/save/save-keylistener.js.map +1 -1
- package/lib/features/select/di.config.d.ts +1 -1
- package/lib/features/select/di.config.d.ts.map +1 -1
- package/lib/features/select/di.config.js +4 -5
- package/lib/features/select/di.config.js.map +1 -1
- package/lib/features/select/select-feedback-action.d.ts +26 -22
- package/lib/features/select/select-feedback-action.d.ts.map +1 -1
- package/lib/features/select/select-feedback-action.js +18 -45
- package/lib/features/select/select-feedback-action.js.map +1 -1
- package/lib/features/select/select-mouse-listener.d.ts +1 -1
- package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
- package/lib/features/select/select-mouse-listener.js +1 -1
- 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 +16 -13
- package/lib/features/select/selection-service.js.map +1 -1
- package/lib/features/select/selection-service.spec.js +9 -6
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +16 -8
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +50 -20
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts +22 -10
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +46 -21
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +17 -10
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +41 -37
- 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 +4 -4
- package/lib/features/tool-feedback/di.config.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +43 -21
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +117 -91
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.js +3 -3
- package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +20 -9
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -15
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/view.d.ts +1 -1
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +18 -1
- package/lib/features/tool-feedback/view.js.map +1 -1
- package/lib/features/tool-palette/di.config.d.ts +1 -1
- package/lib/features/tool-palette/di.config.d.ts.map +1 -1
- package/lib/features/tool-palette/di.config.js +3 -2
- package/lib/features/tool-palette/di.config.js.map +1 -1
- package/lib/features/tool-palette/tool-palette.d.ts +9 -6
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +25 -20
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
- package/lib/features/tools/base-glsp-tool.js +3 -3
- package/lib/features/tools/base-glsp-tool.js.map +1 -1
- package/lib/features/tools/change-bounds-tool.d.ts +6 -8
- package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
- package/lib/features/tools/change-bounds-tool.js +22 -45
- 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 +5 -5
- package/lib/features/tools/delete-tool.js.map +1 -1
- package/lib/features/tools/di.config.js +9 -9
- 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 +16 -9
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts +2 -1
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +20 -15
- package/lib/features/tools/edge-edit-tool.js.map +1 -1
- package/lib/features/tools/marquee-behavior.d.ts +1 -1
- package/lib/features/tools/marquee-behavior.js +2 -2
- package/lib/features/tools/marquee-behavior.js.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.js +7 -7
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
- package/lib/features/tools/marquee-tool.js +1 -1
- package/lib/features/tools/marquee-tool.js.map +1 -1
- package/lib/features/tools/model.d.ts +2 -1
- package/lib/features/tools/model.d.ts.map +1 -1
- package/lib/features/tools/model.js +0 -15
- 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 +5 -5
- package/lib/features/tools/node-creation-tool.js.map +1 -1
- package/lib/features/validation/di.config.d.ts +1 -1
- package/lib/features/validation/di.config.d.ts.map +1 -1
- package/lib/features/validation/di.config.js +3 -3
- package/lib/features/validation/di.config.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts +15 -7
- package/lib/features/validation/marker-navigator.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.js +21 -19
- package/lib/features/validation/marker-navigator.js.map +1 -1
- package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.spec.js +2 -16
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +9 -11
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +27 -26
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/features/viewport/di.config.d.ts +1 -1
- package/lib/features/viewport/di.config.d.ts.map +1 -1
- package/lib/features/viewport/di.config.js +1 -1
- package/lib/features/viewport/di.config.js.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +2 -2
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
- package/lib/index.d.ts +4 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -5
- package/lib/index.js.map +1 -1
- package/lib/lib/model.d.ts +2 -1
- package/lib/lib/model.d.ts.map +1 -1
- package/lib/lib/model.js +0 -15
- package/lib/lib/model.js.map +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts +4 -4
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +5 -5
- package/lib/model-source/glsp-diagram-server.js.map +1 -1
- package/lib/sprotty-reexport.d.ts +174 -0
- package/lib/sprotty-reexport.d.ts.map +1 -0
- package/lib/sprotty-reexport.js +299 -0
- package/lib/sprotty-reexport.js.map +1 -0
- package/lib/utils/layout-utils.d.ts +3 -3
- package/lib/utils/layout-utils.d.ts.map +1 -1
- package/lib/utils/smodel-util.d.ts +27 -18
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +30 -11
- package/lib/utils/smodel-util.js.map +1 -1
- package/lib/utils/viewpoint-util.d.ts +3 -3
- package/lib/utils/viewpoint-util.d.ts.map +1 -1
- package/lib/utils/viewpoint-util.js +17 -1
- package/lib/utils/viewpoint-util.js.map +1 -1
- package/package.json +5 -4
- package/src/base/action-dispatcher.ts +13 -4
- package/src/base/actions/focus-change-action.ts +25 -8
- package/{lib/features/tool-palette/palette-item.d.ts → src/base/actions/sprotty-actions.ts} +11 -11
- package/src/base/auto-complete/auto-complete-actions.ts +7 -5
- package/src/base/auto-complete/auto-complete-widget.ts +8 -13
- package/src/base/command-stack.ts +4 -3
- package/src/base/di.config.ts +4 -5
- package/src/base/editor-context-service.ts +7 -7
- package/src/base/focus-tracker.ts +5 -4
- package/src/base/model/update-model-command.ts +7 -8
- package/src/base/model-initialization-constraint.ts +3 -4
- package/src/base/tool-manager/glsp-tool-manager.ts +4 -4
- package/src/base/tool-manager/tool-actions.ts +37 -0
- package/src/base/types.ts +31 -24
- package/src/features/change-bounds/movement-restrictor.ts +3 -3
- package/src/features/change-bounds/snap.spec.ts +89 -0
- package/src/features/change-bounds/snap.ts +86 -2
- package/src/features/command-palette/di.config.ts +5 -7
- package/src/features/command-palette/server-command-palette-provider.ts +9 -8
- package/src/features/context-menu/delete-element-context-menu.ts +6 -6
- package/src/features/context-menu/di.config.ts +3 -2
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +5 -6
- package/src/features/context-menu/server-context-menu-provider.ts +7 -6
- package/src/features/copy-paste/copy-paste-context-menu.ts +30 -23
- package/src/features/copy-paste/copy-paste-handler.ts +6 -6
- package/src/features/copy-paste/di.config.ts +7 -15
- package/src/features/decoration/decoration-placer.ts +2 -2
- package/src/features/decoration/di.config.ts +3 -5
- package/src/features/edit-label/di.config.ts +4 -5
- package/src/features/edit-label/edit-label-tool.ts +1 -2
- package/src/features/edit-label/edit-label-validator.ts +6 -10
- package/src/features/hints/di.config.ts +3 -3
- package/src/features/hints/type-hints.ts +31 -16
- package/src/features/hover/di.config.ts +4 -0
- package/src/features/hover/hover.ts +29 -11
- package/src/features/layout/di.config.ts +1 -1
- package/src/features/layout/freeform-layout.ts +3 -12
- package/src/features/layout/layout-commands.spec.ts +38 -22
- package/src/features/layout/layout-commands.ts +129 -55
- package/src/features/layout/vbox-layout.ts +4 -8
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +7 -12
- package/src/features/mouse-tool/di.config.ts +3 -4
- package/src/features/mouse-tool/mouse-tool.ts +4 -9
- package/src/features/navigation/navigation-action-handler.ts +76 -42
- package/src/features/navigation/navigation-target-resolver.spec.ts +3 -3
- package/src/features/navigation/navigation-target-resolver.ts +8 -13
- package/src/features/save/di.config.ts +2 -3
- package/src/features/save/save-keylistener.ts +1 -1
- package/src/features/select/di.config.ts +6 -8
- package/src/features/select/select-feedback-action.ts +18 -46
- package/src/features/select/select-mouse-listener.ts +1 -2
- package/src/features/select/selection-service.spec.ts +11 -8
- package/src/features/select/selection-service.ts +14 -10
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +42 -13
- package/src/features/tool-feedback/creation-tool-feedback.ts +42 -21
- package/src/features/tool-feedback/css-feedback.ts +40 -37
- package/src/features/tool-feedback/di.config.ts +4 -5
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +122 -78
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +2 -1
- package/src/features/tool-feedback/marquee-tool-feedback.ts +36 -11
- package/src/features/tool-feedback/view.tsx +3 -3
- package/src/features/tool-palette/di.config.ts +3 -2
- package/src/features/tool-palette/tool-palette.ts +30 -16
- package/src/features/tools/base-glsp-tool.ts +4 -4
- package/src/features/tools/change-bounds-tool.ts +31 -61
- package/src/features/tools/delete-tool.ts +6 -6
- package/src/features/tools/di.config.ts +10 -10
- package/src/features/tools/edge-creation-tool.ts +18 -9
- package/src/features/tools/edge-edit-tool.ts +20 -16
- package/src/features/tools/marquee-behavior.ts +2 -2
- package/src/features/tools/marquee-mouse-tool.ts +8 -9
- package/src/features/tools/marquee-tool.ts +1 -1
- package/src/features/tools/model.ts +2 -1
- package/src/features/tools/node-creation-tool.ts +5 -5
- package/src/features/validation/di.config.ts +4 -5
- package/src/features/validation/marker-navigator.spec.ts +4 -2
- package/src/features/validation/marker-navigator.ts +41 -21
- package/src/features/validation/validate.ts +27 -20
- package/src/features/viewport/di.config.ts +1 -2
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -3
- package/src/index.ts +4 -5
- package/src/lib/model.ts +2 -1
- package/src/model-source/glsp-diagram-server.ts +8 -10
- package/src/sprotty-reexport.ts +283 -0
- package/src/utils/layout-utils.ts +3 -3
- package/src/utils/smodel-util.ts +36 -20
- package/src/utils/viewpoint-util.ts +5 -14
- package/lib/features/tool-palette/palette-item.d.ts.map +0 -1
- package/lib/features/tool-palette/palette-item.js.map +0 -1
- package/lib/protocol-reexport.d.ts +0 -45
- package/lib/protocol-reexport.d.ts.map +0 -1
- package/lib/protocol-reexport.js +0 -80
- package/lib/protocol-reexport.js.map +0 -1
- package/src/features/tool-palette/palette-item.ts +0 -38
- package/src/protocol-reexport.ts +0 -64
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2019-2022 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,16 +14,15 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { ContainerModule } from 'inversify';
|
|
17
|
-
import { ApplyLabelEditCommand, configureCommand
|
|
18
|
-
|
|
19
|
-
import { GLSP_TYPES } from '../../base/types';
|
|
17
|
+
import { ApplyLabelEditCommand, configureCommand } from 'sprotty';
|
|
18
|
+
import { TYPES } from '../../base/types';
|
|
20
19
|
import { DirectLabelEditTool } from './edit-label-tool';
|
|
21
20
|
import { BalloonLabelValidationDecorator, ServerEditLabelValidator } from './edit-label-validator';
|
|
22
21
|
|
|
23
22
|
const glspEditLabelModule = new ContainerModule((bind, _unbind, isBound, _rebind) => {
|
|
24
23
|
bind(TYPES.IEditLabelValidator).to(ServerEditLabelValidator);
|
|
25
24
|
bind(TYPES.IEditLabelValidationDecorator).to(BalloonLabelValidationDecorator);
|
|
26
|
-
bind(
|
|
25
|
+
bind(TYPES.IDefaultTool).to(DirectLabelEditTool);
|
|
27
26
|
configureCommand({ bind, isBound }, ApplyLabelEditCommand);
|
|
28
27
|
});
|
|
29
28
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2020-2022 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,7 +15,6 @@
|
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { injectable } from 'inversify';
|
|
17
17
|
import { EditLabelKeyListener, EditLabelMouseListener, KeyListener, MouseListener } from 'sprotty';
|
|
18
|
-
|
|
19
18
|
import { BaseGLSPTool } from '../tools/base-glsp-tool';
|
|
20
19
|
|
|
21
20
|
@injectable()
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019-
|
|
2
|
+
* Copyright (c) 2019-2022 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,10 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import {
|
|
16
|
+
import { Action, RequestEditValidationAction, SetEditValidationResultAction, ValidationStatus } from '@eclipse-glsp/protocol';
|
|
17
17
|
import { inject, injectable } from 'inversify';
|
|
18
18
|
import {
|
|
19
|
-
Action,
|
|
20
19
|
EditableLabel,
|
|
21
20
|
EditLabelValidationResult,
|
|
22
21
|
IEditLabelValidationDecorator,
|
|
@@ -25,7 +24,6 @@ import {
|
|
|
25
24
|
SModelElement,
|
|
26
25
|
TYPES
|
|
27
26
|
} from 'sprotty';
|
|
28
|
-
|
|
29
27
|
import { GLSPActionDispatcher } from '../../base/action-dispatcher';
|
|
30
28
|
|
|
31
29
|
export namespace LabelEditValidation {
|
|
@@ -41,11 +39,9 @@ export namespace LabelEditValidation {
|
|
|
41
39
|
}
|
|
42
40
|
return { message, severity };
|
|
43
41
|
}
|
|
44
|
-
}
|
|
45
42
|
|
|
46
|
-
export
|
|
47
|
-
|
|
48
|
-
super(LabelEditValidation.CONTEXT_ID, labelId, value);
|
|
43
|
+
export function createValidationRequestAction(value: string, labelId: string): RequestEditValidationAction {
|
|
44
|
+
return RequestEditValidationAction.create({ contextId: CONTEXT_ID, modelElementId: labelId, text: value });
|
|
49
45
|
}
|
|
50
46
|
}
|
|
51
47
|
|
|
@@ -54,12 +50,12 @@ export class ServerEditLabelValidator implements IEditLabelValidator {
|
|
|
54
50
|
@inject(TYPES.IActionDispatcher) protected actionDispatcher: GLSPActionDispatcher;
|
|
55
51
|
|
|
56
52
|
validate(value: string, label: EditableLabel & SModelElement): Promise<EditLabelValidationResult> {
|
|
57
|
-
const action =
|
|
53
|
+
const action = LabelEditValidation.createValidationRequestAction(value, label.id);
|
|
58
54
|
return this.actionDispatcher.requestUntil(action).then(response => this.getValidationResultFromResponse(response));
|
|
59
55
|
}
|
|
60
56
|
|
|
61
57
|
getValidationResultFromResponse(action: Action): EditLabelValidationResult {
|
|
62
|
-
if (
|
|
58
|
+
if (SetEditValidationResultAction.is(action)) {
|
|
63
59
|
return LabelEditValidation.toEditLabelValidationResult(action.status);
|
|
64
60
|
}
|
|
65
61
|
return { severity: 'ok' as Severity };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019-
|
|
2
|
+
* Copyright (c) 2019-2022 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
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
import { SetTypeHintsAction } from '@eclipse-glsp/protocol';
|
|
17
17
|
import { ContainerModule } from 'inversify';
|
|
18
18
|
import { configureActionHandler, configureCommand } from 'sprotty';
|
|
19
|
-
import {
|
|
19
|
+
import { TYPES } from '../../base/types';
|
|
20
20
|
import { ApplyTypeHintsCommand, TypeHintProvider } from './type-hints';
|
|
21
21
|
|
|
22
22
|
const modelHintsModule = new ContainerModule((bind, _unbind, isBound) => {
|
|
23
23
|
bind(TypeHintProvider).toSelf().inSingletonScope();
|
|
24
|
-
bind(
|
|
24
|
+
bind(TYPES.ITypeHintProvider).toService(TypeHintProvider);
|
|
25
25
|
configureActionHandler({ bind, isBound }, SetTypeHintsAction.KIND, TypeHintProvider);
|
|
26
26
|
configureCommand({ bind, isBound }, ApplyTypeHintsCommand);
|
|
27
27
|
});
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { Action, EdgeTypeHint,
|
|
16
|
+
import { Action, EdgeTypeHint, SetTypeHintsAction, ShapeTypeHint, TypeHint } from '@eclipse-glsp/protocol';
|
|
17
17
|
import { inject, injectable } from 'inversify';
|
|
18
18
|
import {
|
|
19
19
|
CommandExecutionContext,
|
|
@@ -29,10 +29,9 @@ import {
|
|
|
29
29
|
SEdge,
|
|
30
30
|
SModelElement,
|
|
31
31
|
SModelRoot,
|
|
32
|
-
SShapeElement
|
|
33
|
-
TYPES
|
|
32
|
+
SShapeElement
|
|
34
33
|
} from 'sprotty';
|
|
35
|
-
import {
|
|
34
|
+
import { TYPES } from '../../base/types';
|
|
36
35
|
import { getElementTypeId, hasCompatibleType } from '../../utils/smodel-util';
|
|
37
36
|
import { resizeFeature } from '../change-bounds/model';
|
|
38
37
|
import { reconnectFeature } from '../reconnect/model';
|
|
@@ -40,19 +39,35 @@ import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-disp
|
|
|
40
39
|
import { FeedbackCommand } from '../tool-feedback/model';
|
|
41
40
|
import { Containable, containerFeature, reparentFeature } from './model';
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Is dispatched by the {@link TypeHintProvider} to apply the type hints received from the server
|
|
44
|
+
* onto the graphical model. The action is dispatched as persistent feedback to ensure the applied type hints
|
|
45
|
+
* don't get lost after a server-side model update.
|
|
46
|
+
*/
|
|
47
|
+
export interface ApplyTypeHintsAction extends Action {
|
|
48
|
+
kind: typeof ApplyTypeHintsAction.KIND;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export namespace ApplyTypeHintsAction {
|
|
52
|
+
export const KIND = 'applyTypeHints';
|
|
53
|
+
|
|
54
|
+
export function is(object: any): object is ApplyTypeHintsAction {
|
|
55
|
+
return Action.hasKind(object, KIND);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function create(): ApplyTypeHintsAction {
|
|
59
|
+
return { kind: KIND };
|
|
60
|
+
}
|
|
46
61
|
}
|
|
47
62
|
|
|
48
63
|
@injectable()
|
|
49
64
|
export class ApplyTypeHintsCommand extends FeedbackCommand {
|
|
50
|
-
public static KIND =
|
|
65
|
+
public static KIND = ApplyTypeHintsAction.KIND;
|
|
51
66
|
public override readonly priority = 10;
|
|
52
67
|
|
|
53
|
-
@inject(
|
|
68
|
+
@inject(TYPES.ITypeHintProvider) protected typeHintProvider: ITypeHintProvider;
|
|
54
69
|
|
|
55
|
-
constructor(@inject(TYPES.Action) protected action:
|
|
70
|
+
constructor(@inject(TYPES.Action) protected action: Action) {
|
|
56
71
|
super();
|
|
57
72
|
}
|
|
58
73
|
|
|
@@ -69,7 +84,7 @@ export class ApplyTypeHintsCommand extends FeedbackCommand {
|
|
|
69
84
|
|
|
70
85
|
protected applyEdgeTypeHint(element: SModelElement): void {
|
|
71
86
|
const hint = this.typeHintProvider.getEdgeTypeHint(element);
|
|
72
|
-
if (hint &&
|
|
87
|
+
if (hint && isModifiableFeatureSet(element.features)) {
|
|
73
88
|
addOrRemove(element.features, deletableFeature, hint.deletable);
|
|
74
89
|
addOrRemove(element.features, editFeature, hint.routable);
|
|
75
90
|
addOrRemove(element.features, reconnectFeature, hint.repositionable);
|
|
@@ -78,7 +93,7 @@ export class ApplyTypeHintsCommand extends FeedbackCommand {
|
|
|
78
93
|
|
|
79
94
|
protected applyShapeTypeHint(element: SModelElement): void {
|
|
80
95
|
const hint = this.typeHintProvider.getShapeTypeHint(element);
|
|
81
|
-
if (hint &&
|
|
96
|
+
if (hint && isModifiableFeatureSet(element.features)) {
|
|
82
97
|
addOrRemove(element.features, deletableFeature, hint.deletable);
|
|
83
98
|
addOrRemove(element.features, moveFeature, hint.repositionable);
|
|
84
99
|
addOrRemove(element.features, resizeFeature, hint.resizable);
|
|
@@ -119,7 +134,7 @@ function addOrRemove(features: Set<symbol>, feature: symbol, add: boolean): void
|
|
|
119
134
|
}
|
|
120
135
|
}
|
|
121
136
|
|
|
122
|
-
function
|
|
137
|
+
function isModifiableFeatureSet(featureSet?: FeatureSet): featureSet is FeatureSet & Set<symbol> {
|
|
123
138
|
return featureSet !== undefined && featureSet instanceof Set;
|
|
124
139
|
}
|
|
125
140
|
|
|
@@ -131,17 +146,17 @@ export interface ITypeHintProvider {
|
|
|
131
146
|
|
|
132
147
|
@injectable()
|
|
133
148
|
export class TypeHintProvider implements IActionHandler, ITypeHintProvider {
|
|
134
|
-
@inject(
|
|
149
|
+
@inject(TYPES.IFeedbackActionDispatcher)
|
|
135
150
|
protected feedbackActionDispatcher: IFeedbackActionDispatcher;
|
|
136
151
|
|
|
137
152
|
protected shapeHints: Map<string, ShapeTypeHint> = new Map();
|
|
138
153
|
protected edgeHints: Map<string, EdgeTypeHint> = new Map();
|
|
139
154
|
|
|
140
155
|
handle(action: Action): ICommand | Action | void {
|
|
141
|
-
if (
|
|
156
|
+
if (SetTypeHintsAction.is(action)) {
|
|
142
157
|
action.shapeHints.forEach(hint => this.shapeHints.set(hint.elementTypeId, hint));
|
|
143
158
|
action.edgeHints.forEach(hint => this.edgeHints.set(hint.elementTypeId, hint));
|
|
144
|
-
this.feedbackActionDispatcher.registerFeedback(this, [
|
|
159
|
+
this.feedbackActionDispatcher.registerFeedback(this, [ApplyTypeHintsAction.create()]);
|
|
145
160
|
}
|
|
146
161
|
}
|
|
147
162
|
|
|
@@ -19,6 +19,8 @@ import {
|
|
|
19
19
|
ClosePopupActionHandler,
|
|
20
20
|
configureActionHandler,
|
|
21
21
|
configureCommand,
|
|
22
|
+
EnableDefaultToolsAction,
|
|
23
|
+
EnableToolsAction,
|
|
22
24
|
FitToScreenCommand,
|
|
23
25
|
HoverFeedbackCommand,
|
|
24
26
|
HoverKeyListener,
|
|
@@ -56,6 +58,8 @@ const glspHoverModule = new ContainerModule((bind, _unbind, isBound) => {
|
|
|
56
58
|
configureActionHandler(context, SetViewportCommand.KIND, ClosePopupActionHandler);
|
|
57
59
|
configureActionHandler(context, MoveCommand.KIND, ClosePopupActionHandler);
|
|
58
60
|
configureActionHandler(context, FocusStateChangedAction.KIND, ClosePopupActionHandler);
|
|
61
|
+
configureActionHandler(context, EnableToolsAction.KIND, GlspHoverMouseListener);
|
|
62
|
+
configureActionHandler(context, EnableDefaultToolsAction.KIND, GlspHoverMouseListener);
|
|
59
63
|
configureActionHandler(context, FocusStateChangedAction.KIND, GlspHoverMouseListener);
|
|
60
64
|
});
|
|
61
65
|
|
|
@@ -13,7 +13,15 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
Action,
|
|
18
|
+
Bounds,
|
|
19
|
+
PreRenderedElementSchema,
|
|
20
|
+
RequestPopupModelAction,
|
|
21
|
+
SetPopupModelAction,
|
|
22
|
+
SModelElementSchema,
|
|
23
|
+
SModelRootSchema
|
|
24
|
+
} from '@eclipse-glsp/protocol';
|
|
17
25
|
import { injectable } from 'inversify';
|
|
18
26
|
import {
|
|
19
27
|
EMPTY_ROOT,
|
|
@@ -21,18 +29,17 @@ import {
|
|
|
21
29
|
HoverMouseListener,
|
|
22
30
|
IActionHandler,
|
|
23
31
|
ICommand,
|
|
24
|
-
PreRenderedElementSchema,
|
|
25
32
|
SIssueMarker,
|
|
26
33
|
SIssueSeverity,
|
|
27
|
-
SModelElement
|
|
28
|
-
SModelElementSchema,
|
|
29
|
-
SModelRootSchema
|
|
34
|
+
SModelElement
|
|
30
35
|
} from 'sprotty';
|
|
31
|
-
import {
|
|
36
|
+
import { FocusStateChangedAction } from '../../base/actions/focus-change-action';
|
|
37
|
+
import { EnableDefaultToolsAction, EnableToolsAction } from '../../base/tool-manager/tool-actions';
|
|
38
|
+
import { EdgeCreationTool } from '../tools/edge-creation-tool';
|
|
32
39
|
import { GIssueMarker } from '../validation/issue-marker';
|
|
33
|
-
|
|
34
40
|
@injectable()
|
|
35
41
|
export class GlspHoverMouseListener extends HoverMouseListener implements IActionHandler {
|
|
42
|
+
protected enableHover = true;
|
|
36
43
|
/**
|
|
37
44
|
* Stops mouse over timer and remove hover feedback, if focus is lost.
|
|
38
45
|
*
|
|
@@ -43,14 +50,25 @@ export class GlspHoverMouseListener extends HoverMouseListener implements IActio
|
|
|
43
50
|
* @returns a `HoverFeedbackAction` resetting the state, if the specified action indicates lost focus
|
|
44
51
|
*/
|
|
45
52
|
handle(action: Action): void | Action | ICommand {
|
|
46
|
-
if (
|
|
53
|
+
if (FocusStateChangedAction.is(action) && !action.hasFocus) {
|
|
47
54
|
this.stopMouseOverTimer();
|
|
48
55
|
if (this.lastHoverFeedbackElementId) {
|
|
49
56
|
const previousTargetId = this.lastHoverFeedbackElementId;
|
|
50
57
|
this.lastHoverFeedbackElementId = undefined;
|
|
51
|
-
return
|
|
58
|
+
return HoverFeedbackAction.create({ mouseoverElement: previousTargetId, mouseIsOver: false });
|
|
52
59
|
}
|
|
60
|
+
} else if (EnableToolsAction.is(action)) {
|
|
61
|
+
this.enableHover = !(action as EnableToolsAction).toolIds.includes(EdgeCreationTool.ID);
|
|
62
|
+
} else if (EnableDefaultToolsAction.is(action)) {
|
|
63
|
+
this.enableHover = true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
override mouseOver(target: SModelElement, event: MouseEvent): (Action | Promise<Action>)[] {
|
|
68
|
+
if (this.enableHover) {
|
|
69
|
+
return super.mouseOver(target, event);
|
|
53
70
|
}
|
|
71
|
+
return [];
|
|
54
72
|
}
|
|
55
73
|
|
|
56
74
|
protected override startMouseOverTimer(target: SModelElement, event: MouseEvent): Promise<Action> {
|
|
@@ -59,9 +77,9 @@ export class GlspHoverMouseListener extends HoverMouseListener implements IActio
|
|
|
59
77
|
this.state.mouseOverTimer = window.setTimeout(() => {
|
|
60
78
|
const popupBounds = this.computePopupBounds(target, { x: event.pageX, y: event.pageY });
|
|
61
79
|
if (target instanceof GIssueMarker) {
|
|
62
|
-
resolve(
|
|
80
|
+
resolve(SetPopupModelAction.create(this.createPopupModel(target as GIssueMarker, popupBounds)));
|
|
63
81
|
} else {
|
|
64
|
-
resolve(
|
|
82
|
+
resolve(RequestPopupModelAction.create({ elementId: target.id, bounds: popupBounds }));
|
|
65
83
|
}
|
|
66
84
|
|
|
67
85
|
this.state.popupOpen = true;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019-
|
|
2
|
+
* Copyright (c) 2019-2022 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,18 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Bounds, Dimension, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { injectable } from 'inversify';
|
|
17
|
-
import {
|
|
18
|
-
Bounds,
|
|
19
|
-
BoundsData,
|
|
20
|
-
Dimension,
|
|
21
|
-
isValidDimension,
|
|
22
|
-
LayoutContainer,
|
|
23
|
-
Point,
|
|
24
|
-
SChildElement,
|
|
25
|
-
SParentElement,
|
|
26
|
-
StatefulLayouter
|
|
27
|
-
} from 'sprotty';
|
|
18
|
+
import { BoundsData, LayoutContainer, SChildElement, SParentElement, StatefulLayouter } from 'sprotty';
|
|
28
19
|
import { AbstractLayout } from 'sprotty/lib/features/bounds/abstract-layout';
|
|
29
20
|
import { AbstractLayoutOptions } from 'sprotty/lib/features/bounds/layout-options';
|
|
30
21
|
|
|
@@ -64,7 +55,7 @@ export class FreeFormLayouter extends AbstractLayout<AbstractLayoutOptions> {
|
|
|
64
55
|
let maxY = 0;
|
|
65
56
|
container.children.forEach(child => {
|
|
66
57
|
const bounds = layouter.getBoundsData(child).bounds;
|
|
67
|
-
if (bounds !== undefined &&
|
|
58
|
+
if (bounds !== undefined && Dimension.isValid(bounds)) {
|
|
68
59
|
const childMaxX = bounds.x + bounds.width;
|
|
69
60
|
const childMaxY = bounds.y + bounds.height;
|
|
70
61
|
maxX = Math.max(maxX, childMaxX);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019-
|
|
2
|
+
* Copyright (c) 2019-2022 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,8 +13,16 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
/* eslint-disable
|
|
17
|
-
import {
|
|
16
|
+
/* eslint-disable deprecation/deprecation */
|
|
17
|
+
import {
|
|
18
|
+
Action,
|
|
19
|
+
Bounds,
|
|
20
|
+
ChangeBoundsOperation,
|
|
21
|
+
ElementAndBounds,
|
|
22
|
+
RequestAction,
|
|
23
|
+
ResponseAction,
|
|
24
|
+
SetBoundsAction
|
|
25
|
+
} from '@eclipse-glsp/protocol';
|
|
18
26
|
import { expect } from 'chai';
|
|
19
27
|
import { Container } from 'inversify';
|
|
20
28
|
import 'mocha';
|
|
@@ -29,16 +37,12 @@ import {
|
|
|
29
37
|
IActionDispatcher,
|
|
30
38
|
MoveAction,
|
|
31
39
|
MoveCommand,
|
|
32
|
-
RequestAction,
|
|
33
|
-
ResponseAction,
|
|
34
40
|
SChildElement,
|
|
35
|
-
SetBoundsAction,
|
|
36
41
|
SetBoundsCommand,
|
|
37
42
|
SGraphFactory,
|
|
38
|
-
SModelRoot
|
|
39
|
-
TYPES
|
|
43
|
+
SModelRoot
|
|
40
44
|
} from 'sprotty';
|
|
41
|
-
import {
|
|
45
|
+
import { TYPES } from '../../base/types';
|
|
42
46
|
import { resizeFeature } from '../change-bounds/model';
|
|
43
47
|
import { SelectionService } from '../select/selection-service';
|
|
44
48
|
import { FeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
|
|
@@ -69,12 +73,12 @@ class MockActionDispatcher implements IActionDispatcher {
|
|
|
69
73
|
|
|
70
74
|
const container = new Container();
|
|
71
75
|
container.load(defaultModule);
|
|
72
|
-
container.bind(
|
|
76
|
+
container.bind(TYPES.IFeedbackActionDispatcher).to(FeedbackActionDispatcher).inSingletonScope();
|
|
73
77
|
container.bind(SelectionService).toSelf().inSingletonScope();
|
|
74
|
-
container.bind(
|
|
78
|
+
container.bind(TYPES.SelectionService).toService(SelectionService);
|
|
75
79
|
container.rebind(TYPES.IModelFactory).to(SGraphFactory).inSingletonScope();
|
|
76
80
|
const graphFactory = container.get<SGraphFactory>(TYPES.IModelFactory);
|
|
77
|
-
const selectionService = container.get<SelectionService>(
|
|
81
|
+
const selectionService = container.get<SelectionService>(TYPES.SelectionService);
|
|
78
82
|
|
|
79
83
|
const actionDispatcher = new MockActionDispatcher();
|
|
80
84
|
|
|
@@ -128,7 +132,7 @@ describe('AlignElementsCommand', () => {
|
|
|
128
132
|
{ elementId: 'node2', newPosition: { x: 222, y: 222 }, newSize: defaultSize },
|
|
129
133
|
{ elementId: 'node3', newPosition: { x: 333, y: 333 }, newSize: defaultSize }
|
|
130
134
|
]);
|
|
131
|
-
const action =
|
|
135
|
+
const action = AlignElementsAction.create({ elementIds: ['node1', 'node2', 'node3'], alignment: Alignment.Left });
|
|
132
136
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
133
137
|
command.execute(newContext(newModel));
|
|
134
138
|
|
|
@@ -148,7 +152,7 @@ describe('AlignElementsCommand', () => {
|
|
|
148
152
|
{ elementId: 'node2', newPosition: { x: 222, y: 222 }, newSize: defaultSize },
|
|
149
153
|
{ elementId: 'node3', newPosition: { x: 333, y: 333 }, newSize: defaultSize }
|
|
150
154
|
]);
|
|
151
|
-
const action =
|
|
155
|
+
const action = AlignElementsAction.create({ elementIds: ['node1', 'node2', 'node3'], alignment: Alignment.Right });
|
|
152
156
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
153
157
|
command.execute(newContext(newModel));
|
|
154
158
|
|
|
@@ -168,7 +172,7 @@ describe('AlignElementsCommand', () => {
|
|
|
168
172
|
{ elementId: 'node2', newPosition: { x: 222, y: 222 }, newSize: defaultSize },
|
|
169
173
|
{ elementId: 'node3', newPosition: { x: 333, y: 333 }, newSize: defaultSize }
|
|
170
174
|
]);
|
|
171
|
-
const action =
|
|
175
|
+
const action = AlignElementsAction.create({ elementIds: ['node1', 'node2', 'node3'], alignment: Alignment.Center });
|
|
172
176
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
173
177
|
command.execute(newContext(newModel));
|
|
174
178
|
|
|
@@ -188,7 +192,7 @@ describe('AlignElementsCommand', () => {
|
|
|
188
192
|
{ elementId: 'node2', newPosition: { x: 222, y: 222 }, newSize: defaultSize },
|
|
189
193
|
{ elementId: 'node3', newPosition: { x: 333, y: 333 }, newSize: defaultSize }
|
|
190
194
|
]);
|
|
191
|
-
const action =
|
|
195
|
+
const action = AlignElementsAction.create({ elementIds: ['node1', 'node2', 'node3'], alignment: Alignment.Top });
|
|
192
196
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
193
197
|
command.execute(newContext(newModel));
|
|
194
198
|
|
|
@@ -208,7 +212,7 @@ describe('AlignElementsCommand', () => {
|
|
|
208
212
|
{ elementId: 'node2', newPosition: { x: 222, y: 222 }, newSize: defaultSize },
|
|
209
213
|
{ elementId: 'node3', newPosition: { x: 333, y: 333 }, newSize: defaultSize }
|
|
210
214
|
]);
|
|
211
|
-
const action =
|
|
215
|
+
const action = AlignElementsAction.create({ elementIds: ['node1', 'node2', 'node3'], alignment: Alignment.Bottom });
|
|
212
216
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
213
217
|
command.execute(newContext(newModel));
|
|
214
218
|
|
|
@@ -228,7 +232,7 @@ describe('AlignElementsCommand', () => {
|
|
|
228
232
|
{ elementId: 'node2', newPosition: { x: 222, y: 222 }, newSize: defaultSize },
|
|
229
233
|
{ elementId: 'node3', newPosition: { x: 333, y: 333 }, newSize: defaultSize }
|
|
230
234
|
]);
|
|
231
|
-
const action =
|
|
235
|
+
const action = AlignElementsAction.create({ elementIds: ['node1', 'node2', 'node3'], alignment: Alignment.Middle });
|
|
232
236
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
233
237
|
command.execute(newContext(newModel));
|
|
234
238
|
|
|
@@ -250,7 +254,11 @@ describe('ResizeElementsCommand', () => {
|
|
|
250
254
|
{ elementId: 'node2', newPosition: { x: 100, y: 200 }, newSize: { height: 20, width: 20 } },
|
|
251
255
|
{ elementId: 'node3', newPosition: { x: 100, y: 300 }, newSize: { height: 30, width: 30 } }
|
|
252
256
|
]);
|
|
253
|
-
const action =
|
|
257
|
+
const action = ResizeElementsAction.create({
|
|
258
|
+
elementIds: ['node1', 'node2', 'node3'],
|
|
259
|
+
dimension: ResizeDimension.Width,
|
|
260
|
+
reductionFunction: Reduce.last
|
|
261
|
+
});
|
|
254
262
|
const command = new ResizeElementsCommand(action, actionDispatcher, selectionService);
|
|
255
263
|
command.execute(newContext(newModel));
|
|
256
264
|
|
|
@@ -271,7 +279,11 @@ describe('ResizeElementsCommand', () => {
|
|
|
271
279
|
{ elementId: 'node2', newPosition: { x: 100, y: 200 }, newSize: { height: 20, width: 20 } },
|
|
272
280
|
{ elementId: 'node3', newPosition: { x: 100, y: 300 }, newSize: { height: 30, width: 30 } }
|
|
273
281
|
]);
|
|
274
|
-
const action =
|
|
282
|
+
const action = ResizeElementsAction.create({
|
|
283
|
+
elementIds: ['node1', 'node2', 'node3'],
|
|
284
|
+
dimension: ResizeDimension.Height,
|
|
285
|
+
reductionFunction: Reduce.last
|
|
286
|
+
});
|
|
275
287
|
const command = new ResizeElementsCommand(action, actionDispatcher, selectionService);
|
|
276
288
|
command.execute(newContext(newModel));
|
|
277
289
|
|
|
@@ -292,7 +304,11 @@ describe('ResizeElementsCommand', () => {
|
|
|
292
304
|
{ elementId: 'node2', newPosition: { x: 100, y: 200 }, newSize: { height: 20, width: 20 } },
|
|
293
305
|
{ elementId: 'node3', newPosition: { x: 100, y: 300 }, newSize: { height: 30, width: 30 } }
|
|
294
306
|
]);
|
|
295
|
-
const action =
|
|
307
|
+
const action = ResizeElementsAction.create({
|
|
308
|
+
elementIds: ['node1', 'node2', 'node3'],
|
|
309
|
+
dimension: ResizeDimension.Width_And_Height,
|
|
310
|
+
reductionFunction: Reduce.last
|
|
311
|
+
});
|
|
296
312
|
const command = new ResizeElementsCommand(action, actionDispatcher, selectionService);
|
|
297
313
|
command.execute(newContext(newModel));
|
|
298
314
|
|
|
@@ -308,7 +324,7 @@ describe('ResizeElementsCommand', () => {
|
|
|
308
324
|
});
|
|
309
325
|
|
|
310
326
|
function initModel(elementAndBounds: ElementAndBounds[]): SModelRoot {
|
|
311
|
-
const mySetBoundsAction =
|
|
327
|
+
const mySetBoundsAction = SetBoundsAction.create(elementAndBounds);
|
|
312
328
|
const setBoundsCommand = new SetBoundsCommand(mySetBoundsAction);
|
|
313
329
|
return setBoundsCommand.execute(context) as SModelRoot;
|
|
314
330
|
}
|