@eclipse-glsp/client 0.9.0-next.f54fd689 → 0.9.0
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/LICENSE +642 -277
- package/README.md +4 -2
- package/css/command-palette.css +9 -5
- package/css/decoration.css +3 -2
- package/css/glsp-sprotty.css +20 -7
- package/css/tool-palette.css +44 -27
- package/lib/base/action-dispatcher.d.ts +18 -2
- package/lib/base/action-dispatcher.d.ts.map +1 -1
- package/lib/base/action-dispatcher.js +41 -61
- package/lib/base/action-dispatcher.js.map +1 -1
- package/lib/{features/model-source-watcher/model-source-changed-action.d.ts → base/actions/focus-change-action.d.ts} +7 -7
- package/lib/base/actions/focus-change-action.d.ts.map +1 -0
- package/lib/base/actions/focus-change-action.js +16 -0
- package/lib/base/actions/focus-change-action.js.map +1 -0
- package/lib/base/argumentable.d.ts +22 -0
- package/lib/base/argumentable.d.ts.map +1 -0
- package/lib/base/argumentable.js +8 -0
- package/lib/base/argumentable.js.map +1 -0
- package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
- package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +12 -12
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +121 -152
- package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
- package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
- package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
- package/lib/base/auto-complete/validation-decorator.js +49 -65
- package/lib/base/auto-complete/validation-decorator.js.map +1 -1
- package/lib/base/command-stack.d.ts +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 +100 -0
- package/lib/base/container-modules.js.map +1 -0
- package/lib/base/di.config.d.ts +13 -3
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +52 -31
- package/lib/base/di.config.js.map +1 -1
- package/lib/base/drag-aware-mouse-listener.d.ts +3 -2
- package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
- package/lib/base/drag-aware-mouse-listener.js +23 -62
- package/lib/base/drag-aware-mouse-listener.js.map +1 -1
- package/lib/base/editor-context-service.d.ts +42 -0
- package/lib/base/editor-context-service.d.ts.map +1 -0
- package/lib/base/editor-context-service.js +109 -0
- package/lib/base/editor-context-service.js.map +1 -0
- package/lib/{features/undo-redo/model.d.ts → base/focus-tracker.d.ts} +10 -12
- package/lib/base/focus-tracker.d.ts.map +1 -0
- package/lib/base/focus-tracker.js +50 -0
- package/lib/base/focus-tracker.js.map +1 -0
- package/lib/base/model/model-registry.d.ts +5 -0
- package/lib/base/model/model-registry.d.ts.map +1 -0
- package/lib/base/model/model-registry.js +43 -0
- package/lib/base/model/model-registry.js.map +1 -0
- package/lib/base/model/update-model-command.d.ts +20 -6
- package/lib/base/model/update-model-command.d.ts.map +1 -1
- package/lib/base/model/update-model-command.js +69 -94
- package/lib/base/model/update-model-command.js.map +1 -1
- package/lib/base/model-initialization-constraint.d.ts +17 -2
- package/lib/base/model-initialization-constraint.d.ts.map +1 -1
- package/lib/base/model-initialization-constraint.js +34 -54
- package/lib/base/model-initialization-constraint.js.map +1 -1
- package/lib/base/selection-clearing-mouse-listener.d.ts +1 -1
- package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
- package/lib/base/selection-clearing-mouse-listener.js +11 -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.d.ts +2 -2
- package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +59 -141
- package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
- package/lib/base/types.d.ts +3 -1
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +23 -21
- package/lib/base/types.js.map +1 -1
- package/lib/base/view/view-registry.d.ts +5 -0
- package/lib/base/view/view-registry.d.ts.map +1 -0
- package/lib/base/view/view-registry.js +43 -0
- package/lib/base/view/view-registry.js.map +1 -0
- package/lib/features/change-bounds/model.d.ts +4 -2
- package/lib/features/change-bounds/model.d.ts.map +1 -1
- package/lib/features/change-bounds/model.js +21 -32
- package/lib/features/change-bounds/model.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts +18 -2
- package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +34 -46
- package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
- package/lib/features/change-bounds/snap.d.ts +17 -1
- package/lib/features/change-bounds/snap.d.ts.map +1 -1
- package/lib/features/change-bounds/snap.js +13 -39
- package/lib/features/change-bounds/snap.js.map +1 -1
- package/lib/features/command-palette/command-palette-tool.d.ts +1 -1
- package/lib/features/command-palette/command-palette-tool.d.ts.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.d.ts +2 -2
- 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 +19 -3
- package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.js +31 -36
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts +2 -2
- package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.js +24 -72
- package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
- package/lib/features/context-menu/di.config.d.ts +2 -2
- package/lib/features/context-menu/di.config.d.ts.map +1 -1
- package/lib/features/context-menu/di.config.js +14 -18
- 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 +2 -2
- 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 +19 -3
- package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.js +31 -32
- package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
- 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 +21 -4
- package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.js +70 -70
- package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
- package/lib/features/copy-paste/di.config.d.ts +2 -2
- package/lib/features/copy-paste/di.config.d.ts.map +1 -1
- package/lib/features/copy-paste/di.config.js +11 -11
- package/lib/features/copy-paste/di.config.js.map +1 -1
- package/lib/features/decoration/decoration-placer.d.ts +17 -1
- package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
- package/lib/features/decoration/decoration-placer.js +14 -47
- 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 -6
- 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.js +7 -7
- package/lib/features/edit-label/di.config.js.map +1 -1
- package/lib/features/edit-label/edit-label-tool.d.ts +2 -2
- 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 +18 -3
- package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-validator.js +40 -62
- package/lib/features/edit-label/edit-label-validator.js.map +1 -1
- package/lib/features/hints/di.config.d.ts +1 -16
- package/lib/features/hints/di.config.d.ts.map +1 -1
- package/lib/features/hints/di.config.js +9 -9
- package/lib/features/hints/di.config.js.map +1 -1
- package/lib/features/hints/model.d.ts +3 -2
- package/lib/features/hints/model.d.ts.map +1 -1
- package/lib/features/hints/model.js +2 -2
- package/lib/features/hints/model.js.map +1 -1
- package/lib/features/hints/type-hints.d.ts +21 -49
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +83 -142
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.d.ts +2 -2
- package/lib/features/hover/di.config.d.ts.map +1 -1
- package/lib/features/hover/di.config.js +9 -7
- package/lib/features/hover/di.config.js.map +1 -1
- package/lib/features/hover/hover.d.ts +18 -2
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +37 -75
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts +2 -2
- package/lib/features/layout/di.config.d.ts.map +1 -1
- package/lib/features/layout/di.config.js +11 -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 +26 -10
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +189 -264
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts +2 -17
- package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.spec.js +124 -117
- 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 +188 -0
- package/lib/features/layout/vbox-layout.js.map +1 -0
- package/lib/features/model-source-watcher/di.config.d.ts +1 -16
- package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
- package/lib/features/model-source-watcher/di.config.js +7 -7
- 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 +17 -2
- 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 -46
- 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.js +5 -5
- package/lib/features/mouse-tool/di.config.js.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts +3 -2
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +74 -217
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/di.config.d.ts +1 -16
- package/lib/features/navigation/di.config.d.ts.map +1 -1
- package/lib/features/navigation/di.config.js +11 -10
- package/lib/features/navigation/di.config.js.map +1 -1
- package/lib/features/navigation/navigation-action-handler.d.ts +19 -39
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +118 -255
- package/lib/features/navigation/navigation-action-handler.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
- package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.js +46 -188
- package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts +2 -17
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +27 -26
- package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
- package/lib/features/rank/model.d.ts +2 -2
- package/lib/features/rank/model.d.ts.map +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 +2 -2
- package/lib/features/reconnect/model.d.ts.map +1 -1
- package/lib/features/reconnect/model.js +10 -28
- package/lib/features/reconnect/model.js.map +1 -1
- package/lib/features/save/di.config.d.ts +2 -2
- package/lib/features/save/di.config.d.ts.map +1 -1
- package/lib/features/save/di.config.js +6 -6
- package/lib/features/save/di.config.js.map +1 -1
- package/lib/features/save/model.d.ts +1 -1
- package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -8
- package/lib/features/save/save-keylistener.d.ts.map +1 -0
- package/lib/{utils/array-utils.js → features/save/save-keylistener.js} +14 -19
- package/lib/features/save/save-keylistener.js.map +1 -0
- package/lib/features/select/di.config.d.ts +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 +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.d.ts +2 -2
- 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 +19 -3
- package/lib/features/select/selection-service.d.ts.map +1 -1
- package/lib/features/select/selection-service.js +134 -236
- package/lib/features/select/selection-service.js.map +1 -1
- package/lib/features/select/selection-service.spec.js +96 -138
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +21 -4
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +117 -149
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts +19 -2
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +81 -115
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +24 -5
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +40 -82
- package/lib/features/tool-feedback/css-feedback.js.map +1 -1
- package/lib/features/tool-feedback/di.config.d.ts +2 -2
- package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
- package/lib/features/tool-feedback/di.config.js +27 -24
- package/lib/features/tool-feedback/di.config.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +21 -4
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +160 -204
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +19 -3
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
- package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +48 -0
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -0
- package/lib/features/tool-feedback/marquee-tool-feedback.js +96 -0
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -0
- package/lib/features/tool-feedback/model.d.ts +2 -2
- 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 +22 -6
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +30 -51
- package/lib/features/tool-feedback/view.js.map +1 -1
- package/lib/features/tool-palette/di.config.d.ts +2 -2
- package/lib/features/tool-palette/di.config.d.ts.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 +2 -3
- package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
- package/lib/features/tool-palette/palette-item.js +6 -6
- package/lib/features/tool-palette/palette-item.js.map +1 -1
- package/lib/features/tool-palette/tool-palette.d.ts +23 -6
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +229 -286
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.d.ts +21 -5
- package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
- package/lib/features/tools/base-glsp-tool.js +37 -59
- package/lib/features/tools/base-glsp-tool.js.map +1 -1
- package/lib/features/tools/change-bounds-tool.d.ts +26 -9
- package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
- package/lib/features/tools/change-bounds-tool.js +192 -241
- package/lib/features/tools/change-bounds-tool.js.map +1 -1
- package/lib/features/tools/delete-tool.d.ts +20 -4
- package/lib/features/tools/delete-tool.d.ts.map +1 -1
- package/lib/features/tools/delete-tool.js +71 -104
- package/lib/features/tools/delete-tool.js.map +1 -1
- package/lib/features/tools/di.config.d.ts +5 -16
- package/lib/features/tools/di.config.d.ts.map +1 -1
- package/lib/features/tools/di.config.js +26 -13
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts +20 -5
- package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation-tool.js +64 -89
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts +22 -6
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +125 -189
- package/lib/features/tools/edge-edit-tool.js.map +1 -1
- package/lib/features/tools/marquee-behavior.d.ts +42 -0
- package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
- package/lib/features/tools/marquee-behavior.js +128 -0
- package/lib/features/tools/marquee-behavior.js.map +1 -0
- package/{src/base/args.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -2
- package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
- package/lib/features/tools/marquee-behavior.spec.js +165 -0
- package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
- package/lib/features/tools/marquee-mouse-tool.d.ts +48 -0
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -0
- package/lib/features/tools/marquee-mouse-tool.js +148 -0
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -0
- package/lib/features/tools/marquee-tool.d.ts +30 -0
- package/lib/features/tools/marquee-tool.d.ts.map +1 -0
- package/lib/features/tools/marquee-tool.js +54 -0
- package/lib/features/tools/marquee-tool.js.map +1 -0
- package/lib/features/tools/model.d.ts +22 -0
- package/lib/features/tools/model.d.ts.map +1 -0
- package/lib/features/tools/model.js +24 -0
- package/lib/features/tools/model.js.map +1 -0
- package/lib/features/tools/node-creation-tool.d.ts +20 -5
- package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/node-creation-tool.js +60 -90
- package/lib/features/tools/node-creation-tool.js.map +1 -1
- package/lib/features/tools/view.d.ts +7 -0
- package/lib/features/tools/view.d.ts.map +1 -0
- package/lib/features/tools/view.js +40 -0
- package/lib/features/tools/view.js.map +1 -0
- package/lib/features/validation/di.config.d.ts +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.d.ts +3 -3
- package/lib/features/validation/issue-marker.d.ts.map +1 -1
- package/lib/features/validation/issue-marker.js +18 -56
- package/lib/features/validation/issue-marker.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts +19 -3
- package/lib/features/validation/marker-navigator.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.js +131 -164
- package/lib/features/validation/marker-navigator.js.map +1 -1
- package/lib/features/validation/marker-navigator.spec.d.ts +2 -17
- package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.spec.js +84 -77
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +20 -31
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +148 -299
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/{base/args.d.ts → features/viewport/di.config.d.ts} +5 -5
- package/lib/features/viewport/di.config.d.ts.map +1 -0
- package/lib/features/viewport/di.config.js +34 -0
- package/lib/features/viewport/di.config.js.map +1 -0
- package/{src/features/model-source-watcher/model-source-changed-action.ts → lib/features/viewport/glsp-scroll-mouse-listener.d.ts} +8 -11
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -0
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +39 -0
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -0
- package/lib/index.d.ts +37 -35
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +39 -35
- package/lib/index.js.map +1 -1
- package/lib/lib/model.d.ts +3 -3
- package/lib/lib/model.d.ts.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 +4 -6
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +63 -122
- package/lib/model-source/glsp-diagram-server.js.map +1 -1
- package/lib/protocol-reexport.d.ts +45 -0
- package/lib/protocol-reexport.d.ts.map +1 -0
- package/lib/protocol-reexport.js +75 -0
- package/lib/protocol-reexport.js.map +1 -0
- package/lib/utils/argument-utils.d.ts +50 -0
- package/lib/utils/argument-utils.d.ts.map +1 -0
- package/lib/utils/argument-utils.js +110 -0
- package/lib/utils/argument-utils.js.map +1 -0
- package/lib/utils/html-utils.js +2 -2
- package/lib/utils/html-utils.js.map +1 -1
- package/lib/utils/layout-utils.d.ts +4 -3
- 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.d.ts +1 -39
- package/lib/utils/marker.d.ts.map +1 -1
- package/lib/utils/marker.js +14 -61
- package/lib/utils/marker.js.map +1 -1
- package/lib/utils/smodel-util.d.ts +7 -17
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +18 -67
- package/lib/utils/smodel-util.js.map +1 -1
- package/lib/utils/viewpoint-util.d.ts +3 -2
- package/lib/utils/viewpoint-util.d.ts.map +1 -1
- package/lib/utils/viewpoint-util.js +15 -30
- package/lib/utils/viewpoint-util.js.map +1 -1
- package/lib/views/base-view-module.d.ts +9 -0
- package/lib/views/base-view-module.d.ts.map +1 -0
- package/lib/views/base-view-module.js +59 -0
- package/lib/views/base-view-module.js.map +1 -0
- 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/glsp-edge-view.d.ts +27 -0
- package/lib/views/glsp-edge-view.d.ts.map +1 -0
- package/lib/views/glsp-edge-view.js +55 -0
- package/lib/views/glsp-edge-view.js.map +1 -0
- package/lib/views/index.d.ts +22 -0
- package/lib/views/index.d.ts.map +1 -0
- package/lib/views/index.js +34 -0
- package/lib/views/index.js.map +1 -0
- package/lib/views/issue-marker-view.d.ts +9 -0
- package/lib/views/issue-marker-view.d.ts.map +1 -0
- package/lib/views/issue-marker-view.js +68 -0
- package/lib/views/issue-marker-view.js.map +1 -0
- package/lib/views/rounded-corner-view.d.ts +13 -0
- package/lib/views/rounded-corner-view.d.ts.map +1 -0
- package/lib/views/rounded-corner-view.js +82 -0
- package/lib/views/rounded-corner-view.js.map +1 -0
- package/lib/views/rounded-corner.d.ts +38 -0
- package/lib/views/rounded-corner.d.ts.map +1 -0
- package/lib/views/rounded-corner.js +62 -0
- package/lib/views/rounded-corner.js.map +1 -0
- package/package.json +27 -34
- package/src/base/action-dispatcher.ts +7 -8
- package/src/{utils/array-utils.ts → base/actions/focus-change-action.ts} +8 -16
- package/src/{features/undo-redo/model.ts → base/argumentable.ts} +7 -8
- package/src/base/auto-complete/auto-complete-actions.ts +2 -2
- package/src/base/auto-complete/auto-complete-widget.ts +73 -57
- package/src/base/auto-complete/validation-decorator.ts +21 -15
- package/src/base/command-stack.ts +4 -7
- package/src/base/container-modules.ts +112 -0
- package/src/base/di.config.ts +47 -25
- package/src/base/drag-aware-mouse-listener.ts +7 -8
- package/src/base/{editor-context.ts → editor-context-service.ts} +13 -40
- package/src/base/focus-tracker.ts +48 -0
- package/src/base/model/model-registry.ts +31 -0
- package/src/base/model/update-model-command.ts +14 -22
- package/src/base/model-initialization-constraint.ts +16 -11
- package/src/base/selection-clearing-mouse-listener.ts +4 -3
- package/src/base/tool-manager/glsp-tool-manager.ts +12 -14
- package/src/base/types.ts +23 -21
- package/src/base/view/view-registry.ts +31 -0
- package/src/features/change-bounds/model.ts +23 -13
- package/src/features/change-bounds/movement-restrictor.ts +28 -18
- package/src/features/change-bounds/snap.ts +6 -5
- package/src/features/command-palette/command-palette-tool.ts +4 -4
- package/src/features/command-palette/di.config.ts +7 -7
- package/src/features/command-palette/server-command-palette-provider.ts +16 -14
- package/src/features/context-menu/delete-element-context-menu.ts +10 -11
- package/src/features/context-menu/di.config.ts +10 -12
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +8 -7
- package/src/features/context-menu/server-context-menu-provider.ts +13 -10
- package/src/features/copy-paste/copy-paste-context-menu.ts +66 -37
- package/src/features/copy-paste/copy-paste-handler.ts +30 -20
- package/src/features/copy-paste/di.config.ts +6 -7
- package/src/features/decoration/decoration-placer.ts +6 -15
- package/src/features/decoration/di.config.ts +4 -6
- package/src/features/edit-label/di.config.ts +5 -5
- package/src/features/edit-label/edit-label-tool.ts +4 -4
- package/src/features/edit-label/edit-label-validator.ts +18 -19
- package/src/features/hints/di.config.ts +6 -7
- package/src/features/hints/model.ts +7 -6
- package/src/features/hints/type-hints.ts +46 -113
- package/src/features/hover/di.config.ts +7 -7
- package/src/features/hover/hover.ts +11 -14
- package/src/features/layout/di.config.ts +10 -6
- package/src/features/layout/freeform-layout.ts +133 -0
- package/src/features/layout/layout-commands.spec.ts +104 -85
- package/src/features/layout/layout-commands.ts +65 -54
- package/src/features/layout/vbox-layout.ts +256 -0
- package/src/features/model-source-watcher/di.config.ts +5 -6
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +16 -12
- package/src/features/mouse-tool/di.config.ts +4 -4
- package/src/features/mouse-tool/mouse-tool.ts +44 -32
- package/src/features/navigation/di.config.ts +6 -12
- package/src/features/navigation/navigation-action-handler.ts +46 -78
- package/src/features/navigation/navigation-target-resolver.spec.ts +6 -9
- package/src/features/navigation/navigation-target-resolver.ts +16 -94
- package/src/features/rank/model.ts +3 -3
- package/src/features/reconnect/model.ts +9 -11
- package/src/features/save/di.config.ts +4 -5
- package/src/features/save/model.ts +1 -1
- package/src/features/save/{save.ts → save-keylistener.ts} +4 -8
- package/src/features/select/di.config.ts +6 -6
- package/src/features/select/select-feedback-action.ts +6 -8
- package/src/features/select/select-mouse-listener.ts +2 -2
- package/src/features/select/selection-service.spec.ts +25 -19
- package/src/features/select/selection-service.ts +25 -22
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +56 -39
- package/src/features/tool-feedback/creation-tool-feedback.ts +49 -24
- package/src/features/tool-feedback/css-feedback.ts +19 -14
- package/src/features/tool-feedback/di.config.ts +15 -14
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +56 -35
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +13 -14
- package/src/features/tool-feedback/marquee-tool-feedback.ts +103 -0
- package/src/features/tool-feedback/model.ts +2 -3
- package/src/features/tool-feedback/view.tsx +20 -13
- package/src/features/tool-palette/di.config.ts +5 -7
- package/src/features/tool-palette/palette-item.ts +5 -7
- package/src/features/tool-palette/tool-palette.ts +126 -107
- package/src/features/tools/base-glsp-tool.ts +12 -12
- package/src/features/tools/change-bounds-tool.ts +83 -53
- package/src/features/tools/delete-tool.ts +23 -20
- package/src/features/tools/di.config.ts +22 -11
- package/src/features/tools/edge-creation-tool.ts +20 -25
- package/src/features/tools/edge-edit-tool.ts +43 -46
- package/src/features/tools/marquee-behavior.spec.ts +175 -0
- package/src/features/tools/marquee-behavior.ts +158 -0
- package/src/features/tools/marquee-mouse-tool.ts +153 -0
- package/src/features/tools/marquee-tool.ts +51 -0
- package/src/features/tools/model.ts +22 -0
- package/src/features/tools/node-creation-tool.ts +18 -22
- package/src/features/tools/view.tsx +44 -0
- package/src/features/validation/di.config.ts +5 -5
- package/src/features/validation/issue-marker.ts +4 -5
- package/src/features/validation/marker-navigator.spec.ts +38 -33
- package/src/features/validation/marker-navigator.ts +39 -26
- package/src/features/validation/validate.ts +25 -59
- package/src/features/viewport/di.config.ts +47 -0
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +41 -0
- package/src/index.ts +57 -37
- package/src/lib/model.ts +4 -4
- package/src/model-source/glsp-diagram-server.ts +19 -33
- package/src/protocol-reexport.ts +64 -0
- package/src/utils/argument-utils.ts +130 -0
- package/src/utils/layout-utils.ts +19 -11
- package/src/utils/marker.ts +8 -32
- package/src/utils/smodel-util.ts +28 -22
- package/src/utils/viewpoint-util.ts +5 -6
- package/src/views/base-view-module.ts +97 -0
- package/src/views/compartments.tsx +37 -0
- package/src/views/glsp-edge-view.tsx +79 -0
- package/{lib/utils/array-utils.d.ts → src/views/index.ts} +7 -4
- package/src/views/issue-marker-view.tsx +65 -0
- package/src/views/rounded-corner-view.tsx +103 -0
- package/src/views/rounded-corner.ts +87 -0
- package/lib/base/actions/context-actions.d.ts +0 -36
- package/lib/base/actions/context-actions.d.ts.map +0 -1
- package/lib/base/actions/context-actions.js +0 -51
- package/lib/base/actions/context-actions.js.map +0 -1
- package/lib/base/actions/edit-mode-action.d.ts +0 -13
- package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
- package/lib/base/actions/edit-mode-action.js +0 -56
- package/lib/base/actions/edit-mode-action.js.map +0 -1
- package/lib/base/actions/edit-validation-actions.d.ts +0 -78
- package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
- package/lib/base/actions/edit-validation-actions.js +0 -82
- package/lib/base/actions/edit-validation-actions.js.map +0 -1
- 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/lib/base/args.d.ts.map +0 -1
- package/lib/base/args.js +0 -3
- package/lib/base/args.js.map +0 -1
- package/lib/base/editor-context.d.ts +0 -46
- package/lib/base/editor-context.d.ts.map +0 -1
- package/lib/base/editor-context.js +0 -174
- package/lib/base/editor-context.js.map +0 -1
- package/lib/base/operations/operation.d.ts +0 -129
- package/lib/base/operations/operation.d.ts.map +0 -1
- package/lib/base/operations/operation.js +0 -201
- package/lib/base/operations/operation.js.map +0 -1
- package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
- package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
- package/lib/features/copy-paste/copy-paste-actions.js +0 -68
- package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
- package/lib/features/decoration/view.d.ts +0 -8
- package/lib/features/decoration/view.d.ts.map +0 -1
- package/lib/features/decoration/view.js +0 -80
- package/lib/features/decoration/view.js.map +0 -1
- package/lib/features/hints/request-type-hints-action.d.ts +0 -32
- package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
- package/lib/features/hints/request-type-hints-action.js +0 -30
- package/lib/features/hints/request-type-hints-action.js.map +0 -1
- package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
- package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
- package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
- package/lib/features/save/save.d.ts.map +0 -1
- package/lib/features/save/save.js +0 -57
- package/lib/features/save/save.js.map +0 -1
- package/lib/features/undo-redo/model.d.ts.map +0 -1
- package/lib/features/undo-redo/model.js +0 -22
- package/lib/features/undo-redo/model.js.map +0 -1
- package/lib/model-source/glsp-server-status.d.ts +0 -30
- package/lib/model-source/glsp-server-status.d.ts.map +0 -1
- package/lib/model-source/glsp-server-status.js +0 -61
- package/lib/model-source/glsp-server-status.js.map +0 -1
- package/lib/utils/array-utils.d.ts.map +0 -1
- package/lib/utils/array-utils.js.map +0 -1
- package/src/base/actions/context-actions.ts +0 -43
- package/src/base/actions/edit-mode-action.ts +0 -33
- package/src/base/actions/edit-validation-actions.ts +0 -102
- package/src/base/actions/protocol-actions.ts +0 -82
- package/src/base/operations/operation.ts +0 -148
- package/src/features/copy-paste/copy-paste-actions.ts +0 -60
- package/src/features/decoration/view.tsx +0 -54
- package/src/features/hints/request-type-hints-action.ts +0 -36
- package/src/model-source/glsp-server-status.ts +0 -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
|
|
@@ -13,19 +13,17 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
|
|
19
|
-
import {
|
|
20
|
-
import
|
|
16
|
+
/* eslint-disable import/no-deprecated,no-unused-expressions */
|
|
17
|
+
import { Action, Bounds, ChangeBoundsOperation, ElementAndBounds } from '@eclipse-glsp/protocol';
|
|
18
|
+
import { expect } from 'chai';
|
|
19
|
+
import { Container } from 'inversify';
|
|
20
|
+
import 'mocha';
|
|
21
|
+
import 'reflect-metadata';
|
|
21
22
|
import {
|
|
22
|
-
Action,
|
|
23
23
|
AnimationFrameSyncer,
|
|
24
|
-
Bounds,
|
|
25
24
|
CommandExecutionContext,
|
|
26
25
|
ConsoleLogger,
|
|
27
26
|
defaultModule,
|
|
28
|
-
ElementAndBounds,
|
|
29
27
|
ElementMove,
|
|
30
28
|
FeatureSet,
|
|
31
29
|
IActionDispatcher,
|
|
@@ -39,13 +37,11 @@ import {
|
|
|
39
37
|
SGraphFactory,
|
|
40
38
|
SModelRoot,
|
|
41
39
|
TYPES
|
|
42
|
-
} from
|
|
43
|
-
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import { SelectionService } from "../select/selection-service";
|
|
48
|
-
import { FeedbackActionDispatcher } from "../tool-feedback/feedback-action-dispatcher";
|
|
40
|
+
} from 'sprotty';
|
|
41
|
+
import { GLSP_TYPES } from '../../base/types';
|
|
42
|
+
import { resizeFeature } from '../change-bounds/model';
|
|
43
|
+
import { SelectionService } from '../select/selection-service';
|
|
44
|
+
import { FeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
|
|
49
45
|
import {
|
|
50
46
|
AlignElementsAction,
|
|
51
47
|
AlignElementsCommand,
|
|
@@ -54,10 +50,10 @@ import {
|
|
|
54
50
|
ResizeDimension,
|
|
55
51
|
ResizeElementsAction,
|
|
56
52
|
ResizeElementsCommand
|
|
57
|
-
} from
|
|
53
|
+
} from './layout-commands';
|
|
58
54
|
|
|
59
55
|
class MockActionDispatcher implements IActionDispatcher {
|
|
60
|
-
constructor(public dispatchedActions: Action[] = []) {
|
|
56
|
+
constructor(public dispatchedActions: Action[] = []) {}
|
|
61
57
|
dispatch(action: Action): Promise<void> {
|
|
62
58
|
this.dispatchedActions.push(action);
|
|
63
59
|
return Promise.resolve();
|
|
@@ -67,7 +63,7 @@ class MockActionDispatcher implements IActionDispatcher {
|
|
|
67
63
|
return Promise.resolve();
|
|
68
64
|
}
|
|
69
65
|
request<Res extends ResponseAction>(action: RequestAction<Res>): Promise<Res> {
|
|
70
|
-
throw new Error(
|
|
66
|
+
throw new Error('Method not implemented.');
|
|
71
67
|
}
|
|
72
68
|
}
|
|
73
69
|
|
|
@@ -83,20 +79,23 @@ const selectionService = container.get<SelectionService>(GLSP_TYPES.SelectionSer
|
|
|
83
79
|
const actionDispatcher = new MockActionDispatcher();
|
|
84
80
|
|
|
85
81
|
const node1 = {
|
|
86
|
-
id: 'node1',
|
|
82
|
+
id: 'node1',
|
|
83
|
+
type: 'node:circle',
|
|
87
84
|
selected: true
|
|
88
85
|
};
|
|
89
86
|
const node2 = {
|
|
90
|
-
id: 'node2',
|
|
87
|
+
id: 'node2',
|
|
88
|
+
type: 'node:circle',
|
|
91
89
|
selected: true
|
|
92
90
|
};
|
|
93
91
|
const node3 = {
|
|
94
|
-
id: 'node3',
|
|
92
|
+
id: 'node3',
|
|
93
|
+
type: 'node:circle',
|
|
95
94
|
selected: true
|
|
96
95
|
};
|
|
97
96
|
const model = createModel();
|
|
98
97
|
|
|
99
|
-
function createModel() {
|
|
98
|
+
function createModel(): SModelRoot {
|
|
100
99
|
const root = graphFactory.createRoot({
|
|
101
100
|
id: 'model1',
|
|
102
101
|
type: 'graph',
|
|
@@ -106,7 +105,7 @@ function createModel() {
|
|
|
106
105
|
return root;
|
|
107
106
|
}
|
|
108
107
|
|
|
109
|
-
function applyFeature(element: SChildElement, feature: symbol) {
|
|
108
|
+
function applyFeature(element: SChildElement, feature: symbol): void {
|
|
110
109
|
(element.features as FeatureSet & Set<symbol>).add(feature);
|
|
111
110
|
}
|
|
112
111
|
|
|
@@ -122,7 +121,6 @@ const context: CommandExecutionContext = {
|
|
|
122
121
|
const defaultSize = { height: 10, width: 10 };
|
|
123
122
|
|
|
124
123
|
describe('AlignElementsCommand', () => {
|
|
125
|
-
|
|
126
124
|
it('should align all elements left', () => {
|
|
127
125
|
actionDispatcher.dispatchedActions = [];
|
|
128
126
|
const newModel = initModel([
|
|
@@ -134,11 +132,13 @@ describe('AlignElementsCommand', () => {
|
|
|
134
132
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
135
133
|
command.execute(newContext(newModel));
|
|
136
134
|
|
|
137
|
-
assertAllBounds(
|
|
138
|
-
[
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
135
|
+
assertAllBounds(
|
|
136
|
+
new Map([
|
|
137
|
+
['node1', { x: 111, y: 111, width: defaultSize.width, height: defaultSize.height }],
|
|
138
|
+
['node2', { x: 111, y: 222, width: defaultSize.width, height: defaultSize.height }],
|
|
139
|
+
['node3', { x: 111, y: 333, width: defaultSize.width, height: defaultSize.height }]
|
|
140
|
+
])
|
|
141
|
+
);
|
|
142
142
|
});
|
|
143
143
|
|
|
144
144
|
it('should align all elements right', () => {
|
|
@@ -152,11 +152,13 @@ describe('AlignElementsCommand', () => {
|
|
|
152
152
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
153
153
|
command.execute(newContext(newModel));
|
|
154
154
|
|
|
155
|
-
assertAllBounds(
|
|
156
|
-
[
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
155
|
+
assertAllBounds(
|
|
156
|
+
new Map([
|
|
157
|
+
['node1', { x: 333, y: 111, width: defaultSize.width, height: defaultSize.height }],
|
|
158
|
+
['node2', { x: 333, y: 222, width: defaultSize.width, height: defaultSize.height }],
|
|
159
|
+
['node3', { x: 333, y: 333, width: defaultSize.width, height: defaultSize.height }]
|
|
160
|
+
])
|
|
161
|
+
);
|
|
160
162
|
});
|
|
161
163
|
|
|
162
164
|
it('should align all elements center', () => {
|
|
@@ -170,11 +172,13 @@ describe('AlignElementsCommand', () => {
|
|
|
170
172
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
171
173
|
command.execute(newContext(newModel));
|
|
172
174
|
|
|
173
|
-
assertAllBounds(
|
|
174
|
-
[
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
assertAllBounds(
|
|
176
|
+
new Map([
|
|
177
|
+
['node1', { x: 222, y: 111, width: defaultSize.width, height: defaultSize.height }],
|
|
178
|
+
['node2', { x: 222, y: 222, width: defaultSize.width, height: defaultSize.height }],
|
|
179
|
+
['node3', { x: 222, y: 333, width: defaultSize.width, height: defaultSize.height }]
|
|
180
|
+
])
|
|
181
|
+
);
|
|
178
182
|
});
|
|
179
183
|
|
|
180
184
|
it('should align all elements top', () => {
|
|
@@ -188,11 +192,13 @@ describe('AlignElementsCommand', () => {
|
|
|
188
192
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
189
193
|
command.execute(newContext(newModel));
|
|
190
194
|
|
|
191
|
-
assertAllBounds(
|
|
192
|
-
[
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
195
|
+
assertAllBounds(
|
|
196
|
+
new Map([
|
|
197
|
+
['node1', { x: 111, y: 111, width: defaultSize.width, height: defaultSize.height }],
|
|
198
|
+
['node2', { x: 222, y: 111, width: defaultSize.width, height: defaultSize.height }],
|
|
199
|
+
['node3', { x: 333, y: 111, width: defaultSize.width, height: defaultSize.height }]
|
|
200
|
+
])
|
|
201
|
+
);
|
|
196
202
|
});
|
|
197
203
|
|
|
198
204
|
it('should align all elements bottom', () => {
|
|
@@ -206,11 +212,13 @@ describe('AlignElementsCommand', () => {
|
|
|
206
212
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
207
213
|
command.execute(newContext(newModel));
|
|
208
214
|
|
|
209
|
-
assertAllBounds(
|
|
210
|
-
[
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
215
|
+
assertAllBounds(
|
|
216
|
+
new Map([
|
|
217
|
+
['node1', { x: 111, y: 333, width: defaultSize.width, height: defaultSize.height }],
|
|
218
|
+
['node2', { x: 222, y: 333, width: defaultSize.width, height: defaultSize.height }],
|
|
219
|
+
['node3', { x: 333, y: 333, width: defaultSize.width, height: defaultSize.height }]
|
|
220
|
+
])
|
|
221
|
+
);
|
|
214
222
|
});
|
|
215
223
|
|
|
216
224
|
it('should align all elements middle', () => {
|
|
@@ -224,17 +232,17 @@ describe('AlignElementsCommand', () => {
|
|
|
224
232
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
225
233
|
command.execute(newContext(newModel));
|
|
226
234
|
|
|
227
|
-
assertAllBounds(
|
|
228
|
-
[
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
235
|
+
assertAllBounds(
|
|
236
|
+
new Map([
|
|
237
|
+
['node1', { x: 111, y: 222, width: defaultSize.width, height: defaultSize.height }],
|
|
238
|
+
['node2', { x: 222, y: 222, width: defaultSize.width, height: defaultSize.height }],
|
|
239
|
+
['node3', { x: 333, y: 222, width: defaultSize.width, height: defaultSize.height }]
|
|
240
|
+
])
|
|
241
|
+
);
|
|
232
242
|
});
|
|
233
|
-
|
|
234
243
|
});
|
|
235
244
|
|
|
236
245
|
describe('ResizeElementsCommand', () => {
|
|
237
|
-
|
|
238
246
|
it('should make same width as last', () => {
|
|
239
247
|
actionDispatcher.dispatchedActions = [];
|
|
240
248
|
const newModel = initModel([
|
|
@@ -247,11 +255,13 @@ describe('ResizeElementsCommand', () => {
|
|
|
247
255
|
command.execute(newContext(newModel));
|
|
248
256
|
|
|
249
257
|
// resize is keeping the center, so the X moves by diff / 2
|
|
250
|
-
assertAllBoundsInChangeBounds(
|
|
251
|
-
[
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
258
|
+
assertAllBoundsInChangeBounds(
|
|
259
|
+
new Map([
|
|
260
|
+
['node1', { x: 90, y: 100, height: 10, width: 30 }],
|
|
261
|
+
['node2', { x: 95, y: 200, height: 20, width: 30 }],
|
|
262
|
+
['node3', { x: 100, y: 300, height: 30, width: 30 }]
|
|
263
|
+
])
|
|
264
|
+
);
|
|
255
265
|
});
|
|
256
266
|
|
|
257
267
|
it('should make same height as last', () => {
|
|
@@ -266,11 +276,13 @@ describe('ResizeElementsCommand', () => {
|
|
|
266
276
|
command.execute(newContext(newModel));
|
|
267
277
|
|
|
268
278
|
// resize is keeping the center, so the Y moves by diff / 2
|
|
269
|
-
assertAllBoundsInChangeBounds(
|
|
270
|
-
[
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
279
|
+
assertAllBoundsInChangeBounds(
|
|
280
|
+
new Map([
|
|
281
|
+
['node1', { x: 100, y: 90, height: 30, width: 10 }],
|
|
282
|
+
['node2', { x: 100, y: 195, height: 30, width: 20 }],
|
|
283
|
+
['node3', { x: 100, y: 300, height: 30, width: 30 }]
|
|
284
|
+
])
|
|
285
|
+
);
|
|
274
286
|
});
|
|
275
287
|
|
|
276
288
|
it('should make same width and height as last', () => {
|
|
@@ -285,13 +297,14 @@ describe('ResizeElementsCommand', () => {
|
|
|
285
297
|
command.execute(newContext(newModel));
|
|
286
298
|
|
|
287
299
|
// resize is keeping the center, so the Y moves by diff / 2
|
|
288
|
-
assertAllBoundsInChangeBounds(
|
|
289
|
-
[
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
300
|
+
assertAllBoundsInChangeBounds(
|
|
301
|
+
new Map([
|
|
302
|
+
['node1', { x: 90, y: 90, height: 30, width: 30 }],
|
|
303
|
+
['node2', { x: 95, y: 195, height: 30, width: 30 }],
|
|
304
|
+
['node3', { x: 100, y: 300, height: 30, width: 30 }]
|
|
305
|
+
])
|
|
306
|
+
);
|
|
293
307
|
});
|
|
294
|
-
|
|
295
308
|
});
|
|
296
309
|
|
|
297
310
|
function initModel(elementAndBounds: ElementAndBounds[]): SModelRoot {
|
|
@@ -300,7 +313,7 @@ function initModel(elementAndBounds: ElementAndBounds[]): SModelRoot {
|
|
|
300
313
|
return setBoundsCommand.execute(context) as SModelRoot;
|
|
301
314
|
}
|
|
302
315
|
|
|
303
|
-
function newContext(root: SModelRoot) {
|
|
316
|
+
function newContext(root: SModelRoot): CommandExecutionContext {
|
|
304
317
|
return {
|
|
305
318
|
root: root,
|
|
306
319
|
modelFactory: graphFactory,
|
|
@@ -311,27 +324,27 @@ function newContext(root: SModelRoot) {
|
|
|
311
324
|
};
|
|
312
325
|
}
|
|
313
326
|
|
|
314
|
-
function assertAllBounds(allBounds: Map<string, Bounds>) {
|
|
327
|
+
function assertAllBounds(allBounds: Map<string, Bounds>): void {
|
|
315
328
|
allBounds.forEach((bounds, nodeId) => assertBounds(nodeId, bounds));
|
|
316
329
|
}
|
|
317
330
|
|
|
318
|
-
function assertAllBoundsInChangeBounds(allBounds: Map<string, Bounds>) {
|
|
331
|
+
function assertAllBoundsInChangeBounds(allBounds: Map<string, Bounds>): void {
|
|
319
332
|
allBounds.forEach((bounds, nodeId) => assertBoundsInChangeBoundsActions(nodeId, bounds));
|
|
320
333
|
}
|
|
321
334
|
|
|
322
|
-
function assertBounds(nodeId: string, bounds: Bounds) {
|
|
335
|
+
function assertBounds(nodeId: string, bounds: Bounds): void {
|
|
323
336
|
assertBoundsInMoves(nodeId, bounds);
|
|
324
337
|
assertBoundsInChangeBoundsActions(nodeId, bounds);
|
|
325
338
|
}
|
|
326
339
|
|
|
327
|
-
function assertBoundsInMoves(nodeId: string, bounds: Bounds) {
|
|
340
|
+
function assertBoundsInMoves(nodeId: string, bounds: Bounds): void {
|
|
328
341
|
const moves = dispatchedElementMoves();
|
|
329
342
|
const move = getMoveById(nodeId, moves);
|
|
330
343
|
expect(move.toPosition.x).to.be.equal(bounds.x);
|
|
331
344
|
expect(move.toPosition.y).to.be.equal(bounds.y);
|
|
332
345
|
}
|
|
333
346
|
|
|
334
|
-
function assertBoundsInChangeBoundsActions(nodeId: string, bounds: Bounds) {
|
|
347
|
+
function assertBoundsInChangeBoundsActions(nodeId: string, bounds: Bounds): void {
|
|
335
348
|
const allChangeBounds = dispatchedChangeBounds();
|
|
336
349
|
const changeBounds = getElementAndBoundsById(nodeId, allChangeBounds);
|
|
337
350
|
expect(changeBounds.newPosition!.x).to.be.equal(bounds.x);
|
|
@@ -340,20 +353,26 @@ function assertBoundsInChangeBoundsActions(nodeId: string, bounds: Bounds) {
|
|
|
340
353
|
expect(changeBounds.newSize!.width).to.be.equal(bounds.width);
|
|
341
354
|
}
|
|
342
355
|
|
|
343
|
-
function getMoveById(id: string, moves: ElementMove[]) {
|
|
356
|
+
function getMoveById(id: string, moves: ElementMove[]): ElementMove {
|
|
344
357
|
return moves.filter(m => m.elementId === id)[0];
|
|
345
358
|
}
|
|
346
359
|
|
|
347
|
-
function getElementAndBoundsById(id: string, elementAndBounds: ElementAndBounds[]) {
|
|
360
|
+
function getElementAndBoundsById(id: string, elementAndBounds: ElementAndBounds[]): ElementAndBounds {
|
|
348
361
|
return elementAndBounds.filter(m => m.elementId === id)[0];
|
|
349
362
|
}
|
|
350
363
|
|
|
351
|
-
function dispatchedElementMoves() {
|
|
352
|
-
return actionDispatcher.dispatchedActions
|
|
364
|
+
function dispatchedElementMoves(): ElementMove[] {
|
|
365
|
+
return actionDispatcher.dispatchedActions
|
|
366
|
+
.filter(isMoveAction)
|
|
367
|
+
.map(a => a.moves)
|
|
368
|
+
.reduce((acc, val) => acc.concat(val), []);
|
|
353
369
|
}
|
|
354
370
|
|
|
355
|
-
function dispatchedChangeBounds() {
|
|
356
|
-
return actionDispatcher.dispatchedActions
|
|
371
|
+
function dispatchedChangeBounds(): ElementAndBounds[] {
|
|
372
|
+
return actionDispatcher.dispatchedActions
|
|
373
|
+
.filter(isChangeBounds)
|
|
374
|
+
.map(a => a.newBounds)
|
|
375
|
+
.reduce((acc, val) => acc.concat(val), []);
|
|
357
376
|
}
|
|
358
377
|
|
|
359
378
|
function isMoveAction(action: Action): action is MoveAction {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2019-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,34 +13,27 @@
|
|
|
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, ChangeBoundsOperation, ElementAndBounds } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable, optional } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
Command,
|
|
20
20
|
CommandExecutionContext,
|
|
21
21
|
CommandReturn,
|
|
22
|
-
ElementAndBounds,
|
|
23
22
|
ElementMove,
|
|
24
23
|
IActionDispatcher,
|
|
25
24
|
MoveAction,
|
|
26
25
|
SetBoundsAction,
|
|
27
26
|
SModelElement,
|
|
28
27
|
TYPES
|
|
29
|
-
} from
|
|
30
|
-
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
} from "../../utils/layout-utils";
|
|
39
|
-
import { BoundsAwareModelElement } from "../../utils/smodel-util";
|
|
40
|
-
import { isBoundsAwareMoveable, isResizable } from "../change-bounds/model";
|
|
41
|
-
import { IMovementRestrictor } from "../change-bounds/movement-restrictor";
|
|
42
|
-
import { SelectionService } from "../select/selection-service";
|
|
43
|
-
|
|
28
|
+
} from 'sprotty';
|
|
29
|
+
import { GLSP_TYPES } from '../../base/types';
|
|
30
|
+
import { toValidElementAndBounds, toValidElementMove, WriteableElementAndBounds, WriteableElementMove } from '../../utils/layout-utils';
|
|
31
|
+
import { BoundsAwareModelElement } from '../../utils/smodel-util';
|
|
32
|
+
import { isBoundsAwareMoveable, isResizable } from '../change-bounds/model';
|
|
33
|
+
import { IMovementRestrictor } from '../change-bounds/movement-restrictor';
|
|
34
|
+
import { SelectionService } from '../select/selection-service';
|
|
35
|
+
|
|
36
|
+
// eslint-disable-next-line no-shadow
|
|
44
37
|
export enum ResizeDimension {
|
|
45
38
|
Width,
|
|
46
39
|
Height,
|
|
@@ -83,10 +76,11 @@ export class ResizeElementsAction implements Action {
|
|
|
83
76
|
* Function to reduce the dimension to a target dimension value, see Reduce.* for potential functions.
|
|
84
77
|
*/
|
|
85
78
|
public readonly reductionFunction: (...values: number[]) => number,
|
|
86
|
-
public readonly kind: string = ResizeElementsCommand.KIND
|
|
87
|
-
}
|
|
79
|
+
public readonly kind: string = ResizeElementsCommand.KIND
|
|
80
|
+
) {}
|
|
88
81
|
}
|
|
89
82
|
|
|
83
|
+
// eslint-disable-next-line no-shadow
|
|
90
84
|
export enum Alignment {
|
|
91
85
|
Left,
|
|
92
86
|
Center,
|
|
@@ -97,20 +91,19 @@ export enum Alignment {
|
|
|
97
91
|
}
|
|
98
92
|
|
|
99
93
|
export namespace Select {
|
|
100
|
-
export function all(elements: BoundsAwareModelElement[]) {
|
|
94
|
+
export function all(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[] {
|
|
101
95
|
return elements;
|
|
102
96
|
}
|
|
103
97
|
|
|
104
|
-
export function first(elements: BoundsAwareModelElement[]) {
|
|
98
|
+
export function first(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[] {
|
|
105
99
|
return [elements[0]];
|
|
106
100
|
}
|
|
107
101
|
|
|
108
|
-
export function last(elements: BoundsAwareModelElement[]) {
|
|
102
|
+
export function last(elements: BoundsAwareModelElement[]): BoundsAwareModelElement[] {
|
|
109
103
|
return [elements[elements.length - 1]];
|
|
110
104
|
}
|
|
111
105
|
}
|
|
112
106
|
|
|
113
|
-
|
|
114
107
|
export class AlignElementsAction implements Action {
|
|
115
108
|
constructor(
|
|
116
109
|
/**
|
|
@@ -125,16 +118,18 @@ export class AlignElementsAction implements Action {
|
|
|
125
118
|
* Function to selected elements that are considered during alignment calculation, see Select.* for potential functions.
|
|
126
119
|
*/
|
|
127
120
|
public readonly selectionFunction: (elements: BoundsAwareModelElement[]) => BoundsAwareModelElement[] = Select.all,
|
|
128
|
-
public readonly kind = AlignElementsCommand.KIND
|
|
129
|
-
}
|
|
121
|
+
public readonly kind = AlignElementsCommand.KIND
|
|
122
|
+
) {}
|
|
130
123
|
}
|
|
131
124
|
|
|
132
125
|
@injectable()
|
|
133
126
|
abstract class LayoutElementsCommand extends Command {
|
|
134
|
-
constructor(
|
|
127
|
+
constructor(
|
|
128
|
+
@inject(TYPES.Action) protected action: ResizeElementsAction | AlignElementsAction,
|
|
135
129
|
@inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
|
|
136
130
|
@inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService,
|
|
137
|
-
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
131
|
+
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
132
|
+
) {
|
|
138
133
|
super();
|
|
139
134
|
}
|
|
140
135
|
|
|
@@ -157,11 +152,11 @@ abstract class LayoutElementsCommand extends Command {
|
|
|
157
152
|
|
|
158
153
|
protected abstract isActionElement(element: SModelElement): element is BoundsAwareModelElement;
|
|
159
154
|
|
|
160
|
-
dispatchAction(action: Action) {
|
|
155
|
+
dispatchAction(action: Action): void {
|
|
161
156
|
this.actionDispatcher.dispatch(action);
|
|
162
157
|
}
|
|
163
158
|
|
|
164
|
-
dispatchActions(actions: Action[]) {
|
|
159
|
+
dispatchActions(actions: Action[]): void {
|
|
165
160
|
this.actionDispatcher.dispatchAll(actions);
|
|
166
161
|
}
|
|
167
162
|
}
|
|
@@ -170,10 +165,12 @@ abstract class LayoutElementsCommand extends Command {
|
|
|
170
165
|
export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
171
166
|
static readonly KIND = 'layout:resize';
|
|
172
167
|
|
|
173
|
-
constructor(
|
|
168
|
+
constructor(
|
|
169
|
+
@inject(TYPES.Action) protected action: ResizeElementsAction,
|
|
174
170
|
@inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
|
|
175
171
|
@inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService,
|
|
176
|
-
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
172
|
+
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
173
|
+
) {
|
|
177
174
|
super(action, actionDispatcher, selectionService, movementRestrictor);
|
|
178
175
|
}
|
|
179
176
|
|
|
@@ -199,7 +196,7 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
199
196
|
return context.root;
|
|
200
197
|
}
|
|
201
198
|
|
|
202
|
-
resizeWidth(elements: BoundsAwareModelElement[]) {
|
|
199
|
+
resizeWidth(elements: BoundsAwareModelElement[]): void {
|
|
203
200
|
const targetWidth = this.action.reductionFunction(...elements.map(element => element.bounds.width));
|
|
204
201
|
this.dispatchResizeActions(elements, (element, bounds) => {
|
|
205
202
|
// resize around center
|
|
@@ -209,7 +206,7 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
209
206
|
});
|
|
210
207
|
}
|
|
211
208
|
|
|
212
|
-
resizeHeight(elements: BoundsAwareModelElement[]) {
|
|
209
|
+
resizeHeight(elements: BoundsAwareModelElement[]): void {
|
|
213
210
|
const targetHeight = this.action.reductionFunction(...elements.map(element => element.bounds.height));
|
|
214
211
|
this.dispatchResizeActions(elements, (element, bounds) => {
|
|
215
212
|
// resize around middle
|
|
@@ -219,7 +216,7 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
219
216
|
});
|
|
220
217
|
}
|
|
221
218
|
|
|
222
|
-
resizeWidthAndHeight(elements: BoundsAwareModelElement[]) {
|
|
219
|
+
resizeWidthAndHeight(elements: BoundsAwareModelElement[]): void {
|
|
223
220
|
const targetWidth = this.action.reductionFunction(...elements.map(element => element.bounds.width));
|
|
224
221
|
const targetHeight = this.action.reductionFunction(...elements.map(element => element.bounds.height));
|
|
225
222
|
this.dispatchResizeActions(elements, (element, bounds) => {
|
|
@@ -233,7 +230,10 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
233
230
|
});
|
|
234
231
|
}
|
|
235
232
|
|
|
236
|
-
dispatchResizeActions(
|
|
233
|
+
dispatchResizeActions(
|
|
234
|
+
elements: BoundsAwareModelElement[],
|
|
235
|
+
change: (element: BoundsAwareModelElement, bounds: WriteableElementAndBounds) => void
|
|
236
|
+
): void {
|
|
237
237
|
const elementAndBounds: ElementAndBounds[] = []; // client- and server-side resize
|
|
238
238
|
elements.forEach(element => {
|
|
239
239
|
const elementChange = this.createElementAndBounds(element, change);
|
|
@@ -245,7 +245,10 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
245
245
|
this.dispatchActions([new SetBoundsAction(elementAndBounds), new ChangeBoundsOperation(elementAndBounds)]);
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
-
createElementAndBounds(
|
|
248
|
+
createElementAndBounds(
|
|
249
|
+
element: BoundsAwareModelElement,
|
|
250
|
+
change: (_element: BoundsAwareModelElement, _bounds: WriteableElementAndBounds) => void
|
|
251
|
+
): WriteableElementAndBounds | undefined {
|
|
249
252
|
const bounds: WriteableElementAndBounds = {
|
|
250
253
|
elementId: element.id,
|
|
251
254
|
newPosition: {
|
|
@@ -276,10 +279,12 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
276
279
|
export class AlignElementsCommand extends LayoutElementsCommand {
|
|
277
280
|
static readonly KIND = 'layout:align';
|
|
278
281
|
|
|
279
|
-
constructor(
|
|
282
|
+
constructor(
|
|
283
|
+
@inject(TYPES.Action) protected action: AlignElementsAction,
|
|
280
284
|
@inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
|
|
281
285
|
@inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService,
|
|
282
|
-
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
286
|
+
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
287
|
+
) {
|
|
283
288
|
super(action, actionDispatcher, selectionService, movementRestrictor);
|
|
284
289
|
}
|
|
285
290
|
|
|
@@ -314,49 +319,52 @@ export class AlignElementsCommand extends LayoutElementsCommand {
|
|
|
314
319
|
return context.root;
|
|
315
320
|
}
|
|
316
321
|
|
|
317
|
-
alignLeft(elements: BoundsAwareModelElement[]) {
|
|
322
|
+
alignLeft(elements: BoundsAwareModelElement[]): void {
|
|
318
323
|
const calculationElements = this.action.selectionFunction(elements);
|
|
319
324
|
const minX = calculationElements.map(element => element.bounds.x).reduce((a, b) => Math.min(a, b));
|
|
320
|
-
this.dispatchAlignActions(elements, (_, move) => move.toPosition.x = minX);
|
|
325
|
+
this.dispatchAlignActions(elements, (_, move) => (move.toPosition.x = minX));
|
|
321
326
|
}
|
|
322
327
|
|
|
323
|
-
alignCenter(elements: BoundsAwareModelElement[]) {
|
|
328
|
+
alignCenter(elements: BoundsAwareModelElement[]): void {
|
|
324
329
|
const calculationElements = this.action.selectionFunction(elements);
|
|
325
330
|
const minX = calculationElements.map(element => element.bounds.x).reduce((a, b) => Math.min(a, b));
|
|
326
331
|
const maxX = calculationElements.map(element => element.bounds.x + element.bounds.width).reduce((a, b) => Math.max(a, b));
|
|
327
332
|
const diffX = maxX - minX;
|
|
328
333
|
const centerX = minX + 0.5 * diffX;
|
|
329
|
-
this.dispatchAlignActions(elements, (element, move) => move.toPosition.x = centerX - 0.5 * element.bounds.width);
|
|
334
|
+
this.dispatchAlignActions(elements, (element, move) => (move.toPosition.x = centerX - 0.5 * element.bounds.width));
|
|
330
335
|
}
|
|
331
336
|
|
|
332
|
-
alignRight(elements: BoundsAwareModelElement[]) {
|
|
337
|
+
alignRight(elements: BoundsAwareModelElement[]): void {
|
|
333
338
|
const calculationElements = this.action.selectionFunction(elements);
|
|
334
339
|
const maxX = calculationElements.map(element => element.bounds.x + element.bounds.width).reduce((a, b) => Math.max(a, b));
|
|
335
|
-
this.dispatchAlignActions(elements, (element, move) => move.toPosition.x = maxX - element.bounds.width);
|
|
340
|
+
this.dispatchAlignActions(elements, (element, move) => (move.toPosition.x = maxX - element.bounds.width));
|
|
336
341
|
}
|
|
337
342
|
|
|
338
|
-
alignTop(elements: BoundsAwareModelElement[]) {
|
|
343
|
+
alignTop(elements: BoundsAwareModelElement[]): void {
|
|
339
344
|
const calculationElements = this.action.selectionFunction(elements);
|
|
340
345
|
const minY = calculationElements.map(element => element.bounds.y).reduce((a, b) => Math.min(a, b));
|
|
341
|
-
this.dispatchAlignActions(elements, (_, move) => move.toPosition.y = minY);
|
|
346
|
+
this.dispatchAlignActions(elements, (_, move) => (move.toPosition.y = minY));
|
|
342
347
|
}
|
|
343
348
|
|
|
344
|
-
alignMiddle(elements: BoundsAwareModelElement[]) {
|
|
349
|
+
alignMiddle(elements: BoundsAwareModelElement[]): void {
|
|
345
350
|
const calculationElements = this.action.selectionFunction(elements);
|
|
346
351
|
const minY = calculationElements.map(element => element.bounds.y).reduce((a, b) => Math.min(a, b));
|
|
347
352
|
const maxY = calculationElements.map(element => element.bounds.y + element.bounds.height).reduce((a, b) => Math.max(a, b));
|
|
348
353
|
const diffY = maxY - minY;
|
|
349
354
|
const middleY = minY + 0.5 * diffY;
|
|
350
|
-
this.dispatchAlignActions(elements, (element, move) => move.toPosition.y = middleY - 0.5 * element.bounds.height);
|
|
355
|
+
this.dispatchAlignActions(elements, (element, move) => (move.toPosition.y = middleY - 0.5 * element.bounds.height));
|
|
351
356
|
}
|
|
352
357
|
|
|
353
|
-
alignBottom(elements: BoundsAwareModelElement[]) {
|
|
358
|
+
alignBottom(elements: BoundsAwareModelElement[]): void {
|
|
354
359
|
const calculationElements = this.action.selectionFunction(elements);
|
|
355
360
|
const maxY = calculationElements.map(element => element.bounds.y + element.bounds.height).reduce((a, b) => Math.max(a, b));
|
|
356
|
-
this.dispatchAlignActions(elements, (element, move) => move.toPosition.y = maxY - element.bounds.height);
|
|
361
|
+
this.dispatchAlignActions(elements, (element, move) => (move.toPosition.y = maxY - element.bounds.height));
|
|
357
362
|
}
|
|
358
363
|
|
|
359
|
-
dispatchAlignActions(
|
|
364
|
+
dispatchAlignActions(
|
|
365
|
+
elements: BoundsAwareModelElement[],
|
|
366
|
+
change: (element: BoundsAwareModelElement, move: WriteableElementMove) => void
|
|
367
|
+
): void {
|
|
360
368
|
const moves: ElementMove[] = []; // client-side move
|
|
361
369
|
const elementAndBounds: ElementAndBounds[] = []; // server-side move
|
|
362
370
|
elements.forEach(element => {
|
|
@@ -371,7 +379,10 @@ export class AlignElementsCommand extends LayoutElementsCommand {
|
|
|
371
379
|
this.dispatchActions([new MoveAction(moves), new ChangeBoundsOperation(elementAndBounds)]);
|
|
372
380
|
}
|
|
373
381
|
|
|
374
|
-
createElementMove(
|
|
382
|
+
createElementMove(
|
|
383
|
+
element: BoundsAwareModelElement,
|
|
384
|
+
change: (_element: BoundsAwareModelElement, _move: WriteableElementMove) => void
|
|
385
|
+
): WriteableElementMove | undefined {
|
|
375
386
|
const move: WriteableElementMove = {
|
|
376
387
|
elementId: element.id,
|
|
377
388
|
fromPosition: {
|