@eclipse-glsp/client 0.9.0-rc-01 → 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 +16 -7
- package/css/tool-palette.css +44 -27
- package/lib/base/action-dispatcher.d.ts +17 -1
- 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/base/actions/focus-change-action.d.ts +1 -1
- package/lib/base/actions/focus-change-action.d.ts.map +1 -1
- package/lib/base/actions/focus-change-action.js +4 -5
- package/lib/base/actions/focus-change-action.js.map +1 -1
- package/lib/base/{args.d.ts → argumentable.d.ts} +3 -5
- package/lib/base/argumentable.d.ts.map +1 -0
- package/lib/base/{args.js → argumentable.js} +1 -1
- 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-widget.d.ts +3 -3
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +119 -153
- 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 +44 -65
- package/lib/base/auto-complete/validation-decorator.js.map +1 -1
- package/lib/base/command-stack.d.ts.map +1 -1
- package/lib/base/command-stack.js +19 -37
- package/lib/base/command-stack.js.map +1 -1
- package/lib/base/container-modules.d.ts +40 -0
- package/lib/base/container-modules.d.ts.map +1 -0
- package/lib/base/container-modules.js +100 -0
- package/lib/base/container-modules.js.map +1 -0
- package/lib/base/di.config.d.ts +12 -2
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +43 -27
- 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.d.ts → editor-context-service.d.ts} +18 -22
- 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/base/focus-tracker.d.ts +17 -1
- package/lib/base/focus-tracker.d.ts.map +1 -1
- package/lib/base/focus-tracker.js +19 -39
- package/lib/base/focus-tracker.js.map +1 -1
- package/lib/base/model/model-registry.js +10 -28
- package/lib/base/model/model-registry.js.map +1 -1
- package/lib/base/model/update-model-command.d.ts +19 -5
- 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 +16 -1
- 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.js +10 -28
- package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
- package/lib/base/source-uri-aware.js +2 -5
- package/lib/base/source-uri-aware.js.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +58 -140
- 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 +4 -2
- package/lib/base/types.js.map +1 -1
- package/lib/base/view/view-registry.js +10 -28
- package/lib/base/view/view-registry.js.map +1 -1
- package/lib/features/change-bounds/model.d.ts +3 -1
- package/lib/features/change-bounds/model.d.ts.map +1 -1
- package/lib/features/change-bounds/model.js +20 -31
- package/lib/features/change-bounds/model.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts +17 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +28 -42
- 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.js +30 -38
- package/lib/features/command-palette/command-palette-tool.js.map +1 -1
- package/lib/features/command-palette/di.config.js +6 -6
- package/lib/features/command-palette/di.config.js.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.d.ts +18 -2
- package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.js +28 -33
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts +1 -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 +20 -68
- package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
- package/lib/features/context-menu/di.config.d.ts +1 -1
- package/lib/features/context-menu/di.config.d.ts.map +1 -1
- package/lib/features/context-menu/di.config.js +8 -8
- package/lib/features/context-menu/di.config.js.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.d.ts +18 -2
- package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.js +30 -31
- 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 +19 -2
- 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 +1 -1
- 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 +12 -46
- package/lib/features/decoration/decoration-placer.js.map +1 -1
- package/lib/features/decoration/di.config.js +4 -4
- package/lib/features/decoration/di.config.js.map +1 -1
- package/lib/features/edit-label/di.config.js +7 -7
- package/lib/features/edit-label/di.config.js.map +1 -1
- package/lib/features/edit-label/edit-label-tool.js +20 -43
- package/lib/features/edit-label/edit-label-tool.js.map +1 -1
- package/lib/features/edit-label/edit-label-validator.d.ts +16 -1
- 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 +0 -15
- 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.map +1 -1
- package/lib/features/hints/type-hints.d.ts +17 -45
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +81 -140
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.d.ts +1 -1
- package/lib/features/hover/di.config.d.ts.map +1 -1
- package/lib/features/hover/di.config.js +8 -8
- package/lib/features/hover/di.config.js.map +1 -1
- package/lib/features/hover/hover.d.ts +17 -1
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +37 -77
- 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.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 +19 -3
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +189 -265
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts +0 -15
- package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.spec.js +95 -89
- 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 +0 -15
- 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.js +5 -5
- package/lib/features/mouse-tool/di.config.js.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts +2 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +70 -215
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/di.config.d.ts +0 -15
- 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 -38
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +118 -254
- 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 +0 -15
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +26 -26
- package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
- package/lib/features/rank/model.d.ts +1 -1
- package/lib/features/rank/model.js +2 -2
- package/lib/features/rank/model.js.map +1 -1
- package/lib/features/reconnect/model.d.ts +1 -1
- package/lib/features/reconnect/model.d.ts.map +1 -1
- package/lib/features/reconnect/model.js +9 -27
- package/lib/features/reconnect/model.js.map +1 -1
- package/lib/features/save/di.config.d.ts +1 -1
- package/lib/features/save/di.config.d.ts.map +1 -1
- package/lib/features/save/di.config.js +6 -6
- package/lib/features/save/di.config.js.map +1 -1
- package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -10
- package/lib/features/save/save-keylistener.d.ts.map +1 -0
- package/lib/features/{undo-redo/model.d.ts → save/save-keylistener.js} +16 -12
- package/lib/features/save/save-keylistener.js.map +1 -0
- package/lib/features/select/di.config.js +11 -11
- package/lib/features/select/di.config.js.map +1 -1
- package/lib/features/select/select-feedback-action.d.ts.map +1 -1
- package/lib/features/select/select-feedback-action.js +45 -71
- package/lib/features/select/select-feedback-action.js.map +1 -1
- package/lib/features/select/select-mouse-listener.js +7 -23
- package/lib/features/select/select-mouse-listener.js.map +1 -1
- package/lib/features/select/selection-service.d.ts +17 -1
- 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 -139
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +19 -2
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +102 -142
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts +17 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +69 -118
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +20 -2
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +37 -81
- package/lib/features/tool-feedback/css-feedback.js.map +1 -1
- package/lib/features/tool-feedback/di.config.d.ts +1 -1
- package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
- package/lib/features/tool-feedback/di.config.js +27 -27
- package/lib/features/tool-feedback/di.config.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +18 -2
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -208
- 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 +17 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -84
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/model.d.ts +1 -1
- package/lib/features/tool-feedback/model.js +11 -27
- package/lib/features/tool-feedback/model.js.map +1 -1
- package/lib/features/tool-feedback/view.d.ts +21 -5
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +29 -51
- 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 +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 +19 -3
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +199 -269
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.d.ts +18 -2
- 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 +20 -3
- 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 +17 -1
- 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 +0 -15
- package/lib/features/tools/di.config.d.ts.map +1 -1
- package/lib/features/tools/di.config.js +19 -19
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts +17 -2
- package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation-tool.js +62 -87
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts +17 -1
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +112 -183
- 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/features/undo-redo/model.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -12
- 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 +24 -13
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.js +86 -195
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
- package/lib/features/tools/marquee-tool.d.ts +17 -1
- package/lib/features/tools/marquee-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-tool.js +32 -73
- package/lib/features/tools/marquee-tool.js.map +1 -1
- package/lib/features/tools/model.js +4 -22
- package/lib/features/tools/model.js.map +1 -1
- package/lib/features/tools/node-creation-tool.d.ts +17 -2
- 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 +1 -1
- package/lib/features/tools/view.d.ts.map +1 -1
- package/lib/features/tools/view.js +12 -31
- package/lib/features/tools/view.js.map +1 -1
- package/lib/features/validation/di.config.js +12 -12
- package/lib/features/validation/di.config.js.map +1 -1
- package/lib/features/validation/issue-marker.d.ts +2 -2
- package/lib/features/validation/issue-marker.d.ts.map +1 -1
- package/lib/features/validation/issue-marker.js +17 -55
- package/lib/features/validation/issue-marker.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts +17 -1
- 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 +0 -15
- package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.spec.js +83 -77
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +18 -29
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +147 -300
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/features/viewport/di.config.js +10 -10
- package/lib/features/viewport/di.config.js.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +18 -2
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -47
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
- package/lib/index.d.ts +9 -15
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +29 -34
- package/lib/index.js.map +1 -1
- package/lib/lib/model.js +11 -27
- package/lib/lib/model.js.map +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts +3 -5
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +60 -121
- 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 +3 -3
- package/lib/utils/argument-utils.d.ts.map +1 -1
- package/lib/utils/argument-utils.js +32 -97
- package/lib/utils/argument-utils.js.map +1 -1
- package/lib/utils/html-utils.js +2 -2
- package/lib/utils/html-utils.js.map +1 -1
- package/lib/utils/layout-utils.d.ts +3 -2
- 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 +0 -38
- 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 +4 -4
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +16 -65
- 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 +0 -15
- package/lib/views/base-view-module.d.ts.map +1 -1
- package/lib/views/base-view-module.js +28 -28
- package/lib/views/base-view-module.js.map +1 -1
- package/lib/views/compartments.d.ts +6 -0
- package/lib/views/compartments.d.ts.map +1 -0
- package/lib/views/compartments.js +43 -0
- package/lib/views/compartments.js.map +1 -0
- package/lib/views/glsp-edge-view.d.ts +18 -3
- package/lib/views/glsp-edge-view.d.ts.map +1 -1
- package/lib/views/glsp-edge-view.js +32 -77
- package/lib/views/glsp-edge-view.js.map +1 -1
- package/lib/views/index.d.ts +1 -1
- package/lib/views/index.d.ts.map +1 -1
- package/lib/views/index.js +1 -1
- package/lib/views/index.js.map +1 -1
- package/lib/views/issue-marker-view.d.ts +2 -1
- package/lib/views/issue-marker-view.d.ts.map +1 -1
- package/lib/views/issue-marker-view.js +36 -50
- package/lib/views/issue-marker-view.js.map +1 -1
- package/lib/views/rounded-corner-view.d.ts +2 -3
- package/lib/views/rounded-corner-view.d.ts.map +1 -1
- package/lib/views/rounded-corner-view.js +40 -70
- package/lib/views/rounded-corner-view.js.map +1 -1
- package/lib/views/rounded-corner.d.ts +2 -1
- package/lib/views/rounded-corner.d.ts.map +1 -1
- package/lib/views/rounded-corner.js +44 -65
- package/lib/views/rounded-corner.js.map +1 -1
- package/package.json +12 -19
- package/src/base/action-dispatcher.ts +3 -4
- package/src/base/actions/focus-change-action.ts +2 -2
- package/src/base/{args.ts → argumentable.ts} +2 -3
- package/src/base/auto-complete/auto-complete-actions.ts +1 -1
- package/src/base/auto-complete/auto-complete-widget.ts +37 -25
- package/src/base/auto-complete/validation-decorator.ts +12 -11
- package/src/base/command-stack.ts +2 -5
- package/src/base/container-modules.ts +112 -0
- package/src/base/di.config.ts +33 -18
- package/src/base/drag-aware-mouse-listener.ts +3 -4
- package/src/base/{editor-context.ts → editor-context-service.ts} +4 -31
- package/src/base/focus-tracker.ts +2 -4
- package/src/base/model/update-model-command.ts +8 -16
- package/src/base/model-initialization-constraint.ts +3 -2
- package/src/base/tool-manager/glsp-tool-manager.ts +3 -5
- package/src/base/types.ts +4 -2
- package/src/features/change-bounds/model.ts +15 -5
- package/src/features/change-bounds/movement-restrictor.ts +17 -9
- package/src/features/change-bounds/snap.ts +3 -2
- package/src/features/command-palette/server-command-palette-provider.ts +11 -9
- package/src/features/context-menu/delete-element-context-menu.ts +3 -4
- package/src/features/context-menu/di.config.ts +11 -9
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +4 -3
- package/src/features/context-menu/server-context-menu-provider.ts +10 -7
- package/src/features/copy-paste/copy-paste-context-menu.ts +59 -30
- package/src/features/copy-paste/copy-paste-handler.ts +18 -10
- package/src/features/copy-paste/di.config.ts +2 -3
- package/src/features/decoration/decoration-placer.ts +3 -13
- package/src/features/edit-label/edit-label-validator.ts +11 -12
- package/src/features/hints/di.config.ts +2 -3
- package/src/features/hints/model.ts +4 -3
- package/src/features/hints/type-hints.ts +23 -90
- package/src/features/hover/di.config.ts +1 -2
- package/src/features/hover/hover.ts +2 -7
- package/src/features/layout/di.config.ts +8 -4
- package/src/features/layout/freeform-layout.ts +133 -0
- package/src/features/layout/layout-commands.spec.ts +82 -64
- package/src/features/layout/layout-commands.ts +43 -34
- package/src/features/layout/vbox-layout.ts +256 -0
- package/src/features/model-source-watcher/di.config.ts +3 -4
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +11 -7
- package/src/features/mouse-tool/mouse-tool.ts +33 -23
- package/src/features/navigation/di.config.ts +4 -10
- package/src/features/navigation/navigation-action-handler.ts +33 -69
- package/src/features/navigation/navigation-target-resolver.spec.ts +3 -7
- package/src/features/navigation/navigation-target-resolver.ts +13 -91
- package/src/features/rank/model.ts +2 -2
- package/src/features/reconnect/model.ts +2 -3
- package/src/features/save/di.config.ts +2 -3
- package/src/features/save/{save.ts → save-keylistener.ts} +3 -11
- package/src/features/select/select-feedback-action.ts +4 -6
- package/src/features/select/selection-service.spec.ts +11 -6
- package/src/features/select/selection-service.ts +14 -10
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +26 -20
- package/src/features/tool-feedback/creation-tool-feedback.ts +17 -10
- package/src/features/tool-feedback/css-feedback.ts +9 -6
- package/src/features/tool-feedback/di.config.ts +2 -5
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +19 -18
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +8 -9
- package/src/features/tool-feedback/marquee-tool-feedback.ts +4 -5
- package/src/features/tool-feedback/model.ts +1 -2
- package/src/features/tool-feedback/view.tsx +17 -11
- package/src/features/tool-palette/di.config.ts +2 -4
- package/src/features/tool-palette/palette-item.ts +4 -6
- package/src/features/tool-palette/tool-palette.ts +44 -40
- package/src/features/tools/base-glsp-tool.ts +4 -4
- package/src/features/tools/change-bounds-tool.ts +64 -34
- package/src/features/tools/delete-tool.ts +9 -6
- package/src/features/tools/di.config.ts +2 -3
- package/src/features/tools/edge-creation-tool.ts +5 -10
- package/src/features/tools/edge-edit-tool.ts +10 -20
- 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 +43 -134
- package/src/features/tools/marquee-tool.ts +2 -3
- package/src/features/tools/node-creation-tool.ts +4 -11
- package/src/features/tools/view.tsx +17 -12
- package/src/features/validation/issue-marker.ts +2 -3
- package/src/features/validation/marker-navigator.spec.ts +18 -14
- package/src/features/validation/marker-navigator.ts +24 -12
- package/src/features/validation/validate.ts +7 -40
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -12
- package/src/index.ts +30 -19
- package/src/model-source/glsp-diagram-server.ts +12 -28
- package/src/protocol-reexport.ts +64 -0
- package/src/utils/argument-utils.ts +14 -11
- package/src/utils/layout-utils.ts +13 -7
- package/src/utils/marker.ts +2 -26
- package/src/utils/smodel-util.ts +15 -11
- package/src/utils/viewpoint-util.ts +4 -4
- package/src/views/base-view-module.ts +1 -2
- package/src/{base/actions/edit-mode-action.ts → views/compartments.tsx} +18 -14
- package/src/views/glsp-edge-view.tsx +21 -14
- package/src/views/index.ts +1 -1
- package/src/views/issue-marker-view.tsx +28 -19
- package/src/views/rounded-corner-view.tsx +38 -25
- package/src/views/rounded-corner.ts +5 -6
- 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 -83
- 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.map +0 -1
- 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 -135
- package/lib/base/operations/operation.d.ts.map +0 -1
- package/lib/base/operations/operation.js +0 -231
- 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/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 +0 -24
- 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 -62
- 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 +0 -28
- package/lib/utils/array-utils.d.ts.map +0 -1
- package/lib/utils/array-utils.js +0 -61
- package/lib/utils/array-utils.js.map +0 -1
- package/lib/views/default-types.d.ts +0 -37
- package/lib/views/default-types.d.ts.map +0 -1
- package/lib/views/default-types.js +0 -47
- package/lib/views/default-types.js.map +0 -1
- package/src/base/actions/context-actions.ts +0 -43
- package/src/base/actions/edit-validation-actions.ts +0 -103
- package/src/base/actions/protocol-actions.ts +0 -82
- package/src/base/operations/operation.ts +0 -178
- package/src/features/copy-paste/copy-paste-actions.ts +0 -60
- package/src/features/hints/request-type-hints-action.ts +0 -36
- package/src/features/model-source-watcher/model-source-changed-action.ts +0 -26
- package/src/model-source/glsp-server-status.ts +0 -38
- package/src/utils/array-utils.ts +0 -55
- package/src/views/default-types.ts +0 -48
|
@@ -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,9 +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 { Action, EdgeTypeHint, isSetTypeHintsAction, ShapeTypeHint, TypeHint } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
CommandExecutionContext,
|
|
20
20
|
CommandReturn,
|
|
21
21
|
Connectable,
|
|
@@ -28,12 +28,10 @@ import {
|
|
|
28
28
|
moveFeature,
|
|
29
29
|
SEdge,
|
|
30
30
|
SModelElement,
|
|
31
|
-
SModelElementSchema,
|
|
32
31
|
SModelRoot,
|
|
33
32
|
SShapeElement,
|
|
34
33
|
TYPES
|
|
35
34
|
} from 'sprotty';
|
|
36
|
-
|
|
37
35
|
import { GLSP_TYPES } from '../../base/types';
|
|
38
36
|
import { getElementTypeId, hasCompatibleType } from '../../utils/smodel-util';
|
|
39
37
|
import { resizeFeature } from '../change-bounds/model';
|
|
@@ -41,68 +39,6 @@ import { reconnectFeature } from '../reconnect/model';
|
|
|
41
39
|
import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
|
|
42
40
|
import { FeedbackCommand } from '../tool-feedback/model';
|
|
43
41
|
import { Containable, containerFeature, reparentFeature } from './model';
|
|
44
|
-
import { isSetTypeHintsAction } from './request-type-hints-action';
|
|
45
|
-
|
|
46
|
-
export abstract class TypeHint {
|
|
47
|
-
/**
|
|
48
|
-
The id of the element.
|
|
49
|
-
*/
|
|
50
|
-
readonly elementTypeId: string;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Specifies whether the element can be relocated.
|
|
54
|
-
*/
|
|
55
|
-
readonly repositionable: boolean;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Specifices wheter the element can be deleted
|
|
59
|
-
*/
|
|
60
|
-
readonly deletable: boolean;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export class ShapeTypeHint extends TypeHint {
|
|
64
|
-
/**
|
|
65
|
-
* Specifies whether the element can be resized.
|
|
66
|
-
*/
|
|
67
|
-
readonly resizable: boolean;
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Specifies whether the element can be moved to another parent
|
|
71
|
-
*/
|
|
72
|
-
readonly reparentable: boolean;
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* The types of elements that can be contained by this element (if any)
|
|
76
|
-
*/
|
|
77
|
-
readonly containableElementTypeIds?: string[];
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export class EdgeTypeHint extends TypeHint {
|
|
81
|
-
/**
|
|
82
|
-
* Specifies whether the routing of this element can be changed.
|
|
83
|
-
*/
|
|
84
|
-
readonly routable: boolean;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Allowed source element types for this edge type
|
|
88
|
-
*/
|
|
89
|
-
readonly sourceElementTypeIds: string[];
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Allowed targe element types for this edge type
|
|
93
|
-
*/
|
|
94
|
-
readonly targetElementTypeIds: string[];
|
|
95
|
-
|
|
96
|
-
isAllowedSource(input: SModelElement | SModelElementSchema | string): boolean {
|
|
97
|
-
const type = getElementTypeId(input);
|
|
98
|
-
return this.sourceElementTypeIds.includes(type);
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
isAllowedTarget(input: SModelElement | SModelElementSchema | string): boolean {
|
|
102
|
-
const type = getElementTypeId(input);
|
|
103
|
-
return this.targetElementTypeIds.includes(type);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
42
|
|
|
107
43
|
@injectable()
|
|
108
44
|
export class ApplyTypeHintsAction implements Action {
|
|
@@ -111,7 +47,6 @@ export class ApplyTypeHintsAction implements Action {
|
|
|
111
47
|
|
|
112
48
|
@injectable()
|
|
113
49
|
export class ApplyTypeHintsCommand extends FeedbackCommand {
|
|
114
|
-
|
|
115
50
|
public static KIND = 'applyTypeHints';
|
|
116
51
|
public readonly priority = 10;
|
|
117
52
|
|
|
@@ -122,15 +57,13 @@ export class ApplyTypeHintsCommand extends FeedbackCommand {
|
|
|
122
57
|
}
|
|
123
58
|
|
|
124
59
|
execute(context: CommandExecutionContext): CommandReturn {
|
|
125
|
-
context.root.index.all()
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
});
|
|
60
|
+
context.root.index.all().forEach(element => {
|
|
61
|
+
if (element instanceof SShapeElement || element instanceof SModelRoot) {
|
|
62
|
+
this.applyShapeTypeHint(element);
|
|
63
|
+
} else if (element instanceof SEdge) {
|
|
64
|
+
return this.applyEdgeTypeHint(element);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
134
67
|
return context.root;
|
|
135
68
|
}
|
|
136
69
|
|
|
@@ -167,18 +100,14 @@ export class ApplyTypeHintsCommand extends FeedbackCommand {
|
|
|
167
100
|
function createConnectable(validSourceEdges: string[], validTargetEdges: string[]): Connectable {
|
|
168
101
|
return {
|
|
169
102
|
canConnect: (routable, role) =>
|
|
170
|
-
role === 'source' ?
|
|
171
|
-
validSourceEdges.includes(routable.type) :
|
|
172
|
-
validTargetEdges.includes(routable.type)
|
|
103
|
+
role === 'source' ? validSourceEdges.includes(routable.type) : validTargetEdges.includes(routable.type)
|
|
173
104
|
};
|
|
174
105
|
}
|
|
175
106
|
|
|
176
107
|
function createContainable(hint: ShapeTypeHint): Containable {
|
|
177
108
|
return {
|
|
178
109
|
isContainableElement: element =>
|
|
179
|
-
hint.containableElementTypeIds ?
|
|
180
|
-
hint.containableElementTypeIds.includes(getElementTypeId(element)) :
|
|
181
|
-
false
|
|
110
|
+
hint.containableElementTypeIds ? hint.containableElementTypeIds.includes(getElementTypeId(element)) : false
|
|
182
111
|
};
|
|
183
112
|
}
|
|
184
113
|
|
|
@@ -202,12 +131,11 @@ export interface ITypeHintProvider {
|
|
|
202
131
|
|
|
203
132
|
@injectable()
|
|
204
133
|
export class TypeHintProvider implements IActionHandler, ITypeHintProvider {
|
|
205
|
-
|
|
206
134
|
@inject(GLSP_TYPES.IFeedbackActionDispatcher)
|
|
207
135
|
protected feedbackActionDispatcher: IFeedbackActionDispatcher;
|
|
208
136
|
|
|
209
|
-
protected shapeHints: Map<string, ShapeTypeHint> = new Map;
|
|
210
|
-
protected edgeHints: Map<string, EdgeTypeHint> = new Map;
|
|
137
|
+
protected shapeHints: Map<string, ShapeTypeHint> = new Map();
|
|
138
|
+
protected edgeHints: Map<string, EdgeTypeHint> = new Map();
|
|
211
139
|
|
|
212
140
|
handle(action: Action): ICommand | Action | void {
|
|
213
141
|
if (isSetTypeHintsAction(action)) {
|
|
@@ -222,13 +150,19 @@ export class TypeHintProvider implements IActionHandler, ITypeHintProvider {
|
|
|
222
150
|
if (role === 'source') {
|
|
223
151
|
return Array.from(
|
|
224
152
|
Array.from(this.edgeHints.values())
|
|
225
|
-
.filter(hint =>
|
|
226
|
-
|
|
153
|
+
.filter(hint =>
|
|
154
|
+
hint.sourceElementTypeIds.some(sourceElementTypeId => hasCompatibleType(elementTypeId, sourceElementTypeId))
|
|
155
|
+
)
|
|
156
|
+
.map(hint => hint.elementTypeId)
|
|
157
|
+
);
|
|
227
158
|
} else {
|
|
228
159
|
return Array.from(
|
|
229
160
|
Array.from(this.edgeHints.values())
|
|
230
|
-
.filter(hint =>
|
|
231
|
-
|
|
161
|
+
.filter(hint =>
|
|
162
|
+
hint.targetElementTypeIds.some(targetElementTypeId => hasCompatibleType(elementTypeId, targetElementTypeId))
|
|
163
|
+
)
|
|
164
|
+
.map(hint => hint.elementTypeId)
|
|
165
|
+
);
|
|
232
166
|
}
|
|
233
167
|
}
|
|
234
168
|
|
|
@@ -254,4 +188,3 @@ function getTypeHint<T extends TypeHint>(input: SModelElement | SModelElement |
|
|
|
254
188
|
}
|
|
255
189
|
return hint;
|
|
256
190
|
}
|
|
257
|
-
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2020-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -30,7 +30,6 @@ import {
|
|
|
30
30
|
TYPES
|
|
31
31
|
} from 'sprotty';
|
|
32
32
|
import { PopupPositionUpdater } from 'sprotty/lib/features/hover/popup-position-updater';
|
|
33
|
-
|
|
34
33
|
import { FocusStateChangedAction } from '../../base/actions/focus-change-action';
|
|
35
34
|
import { GlspHoverMouseListener } from './hover';
|
|
36
35
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2020-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,27 +13,22 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action, Bounds, RequestPopupModelAction, SetPopupModelAction } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { injectable } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
|
-
Bounds,
|
|
20
19
|
EMPTY_ROOT,
|
|
21
20
|
HoverMouseListener,
|
|
22
21
|
PreRenderedElementSchema,
|
|
23
|
-
RequestPopupModelAction,
|
|
24
|
-
SetPopupModelAction,
|
|
25
22
|
SIssueMarker,
|
|
26
23
|
SIssueSeverity,
|
|
27
24
|
SModelElement,
|
|
28
25
|
SModelElementSchema,
|
|
29
26
|
SModelRootSchema
|
|
30
27
|
} from 'sprotty';
|
|
31
|
-
|
|
32
28
|
import { GIssueMarker } from '../validation/issue-marker';
|
|
33
29
|
|
|
34
30
|
@injectable()
|
|
35
31
|
export class GlspHoverMouseListener extends HoverMouseListener {
|
|
36
|
-
|
|
37
32
|
protected startMouseOverTimer(target: SModelElement, event: MouseEvent): Promise<Action> {
|
|
38
33
|
this.stopMouseOverTimer();
|
|
39
34
|
return new Promise(resolve => {
|
|
@@ -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
|
|
@@ -14,13 +14,17 @@
|
|
|
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 { configureCommand } from 'sprotty';
|
|
18
|
-
|
|
17
|
+
import { configureCommand, configureLayout, VBoxLayouter } from 'sprotty';
|
|
18
|
+
import { FreeFormLayouter } from './freeform-layout';
|
|
19
19
|
import { AlignElementsCommand, ResizeElementsCommand } from './layout-commands';
|
|
20
|
+
import { VBoxLayouterExt } from './vbox-layout';
|
|
20
21
|
|
|
21
|
-
const layoutCommandsModule = new ContainerModule((bind, _unbind, isBound) => {
|
|
22
|
+
const layoutCommandsModule = new ContainerModule((bind, _unbind, isBound, rebind) => {
|
|
22
23
|
configureCommand({ bind, isBound }, ResizeElementsCommand);
|
|
23
24
|
configureCommand({ bind, isBound }, AlignElementsCommand);
|
|
25
|
+
|
|
26
|
+
rebind(VBoxLayouter).to(VBoxLayouterExt);
|
|
27
|
+
configureLayout({ bind, isBound }, FreeFormLayouter.KIND, FreeFormLayouter);
|
|
24
28
|
});
|
|
25
29
|
|
|
26
30
|
export default layoutCommandsModule;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2021 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
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';
|
|
28
|
+
import { AbstractLayout } from 'sprotty/lib/features/bounds/abstract-layout';
|
|
29
|
+
import { AbstractLayoutOptions } from 'sprotty/lib/features/bounds/layout-options';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Layouts children of a container with explit X/Y positions
|
|
33
|
+
*/
|
|
34
|
+
@injectable()
|
|
35
|
+
export class FreeFormLayouter extends AbstractLayout<AbstractLayoutOptions> {
|
|
36
|
+
static KIND = 'freeform';
|
|
37
|
+
|
|
38
|
+
layout(container: SParentElement & LayoutContainer, layouter: StatefulLayouter): void {
|
|
39
|
+
const boundsData = layouter.getBoundsData(container);
|
|
40
|
+
const options = this.getLayoutOptions(container);
|
|
41
|
+
const childrenSize = this.getChildrenSize(container, options, layouter);
|
|
42
|
+
|
|
43
|
+
// The real size of the compartment will be determined by the parent node layout;
|
|
44
|
+
// we only need to compute the bounds required to layout the children.
|
|
45
|
+
|
|
46
|
+
const maxWidth = childrenSize.width > 0 ? childrenSize.width + options.paddingLeft + options.paddingRight : 0;
|
|
47
|
+
const maxHeight = childrenSize.height > 0 ? childrenSize.height + options.paddingTop + options.paddingBottom : 0;
|
|
48
|
+
if (maxWidth > 0 && maxHeight > 0) {
|
|
49
|
+
const offset = this.layoutChildren(container, layouter, options, maxWidth, maxHeight);
|
|
50
|
+
boundsData.bounds = this.getFinalContainerBounds(container, offset, options, maxWidth, maxHeight);
|
|
51
|
+
boundsData.boundsChanged = true;
|
|
52
|
+
} else {
|
|
53
|
+
boundsData.bounds = { x: boundsData.bounds!.x, y: boundsData.bounds!.y, width: 0, height: 0 };
|
|
54
|
+
boundsData.boundsChanged = true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
protected getChildrenSize(
|
|
59
|
+
container: SParentElement & LayoutContainer,
|
|
60
|
+
containerOptions: AbstractLayoutOptions,
|
|
61
|
+
layouter: StatefulLayouter
|
|
62
|
+
): Dimension {
|
|
63
|
+
let maxX = 0;
|
|
64
|
+
let maxY = 0;
|
|
65
|
+
container.children.forEach(child => {
|
|
66
|
+
const bounds = layouter.getBoundsData(child).bounds;
|
|
67
|
+
if (bounds !== undefined && isValidDimension(bounds)) {
|
|
68
|
+
const childMaxX = bounds.x + bounds.width;
|
|
69
|
+
const childMaxY = bounds.y + bounds.height;
|
|
70
|
+
maxX = Math.max(maxX, childMaxX);
|
|
71
|
+
maxY = Math.max(maxY, childMaxY);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return {
|
|
75
|
+
width: maxX,
|
|
76
|
+
height: maxY
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
protected layoutChild(
|
|
81
|
+
child: SChildElement,
|
|
82
|
+
boundsData: BoundsData,
|
|
83
|
+
bounds: Bounds,
|
|
84
|
+
childOptions: AbstractLayoutOptions,
|
|
85
|
+
containerOptions: AbstractLayoutOptions,
|
|
86
|
+
currentOffset: Point,
|
|
87
|
+
maxWidth: number,
|
|
88
|
+
maxHeight: number
|
|
89
|
+
): Point {
|
|
90
|
+
boundsData.bounds = {
|
|
91
|
+
x: (child as any).bounds.x,
|
|
92
|
+
y: (child as any).bounds.y,
|
|
93
|
+
width: bounds.width,
|
|
94
|
+
height: bounds.height
|
|
95
|
+
};
|
|
96
|
+
boundsData.boundsChanged = true;
|
|
97
|
+
return currentOffset;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
protected getFinalContainerBounds(
|
|
101
|
+
container: SParentElement & LayoutContainer,
|
|
102
|
+
lastOffset: Point,
|
|
103
|
+
options: AbstractLayoutOptions,
|
|
104
|
+
maxWidth: number,
|
|
105
|
+
maxHeight: number
|
|
106
|
+
): Bounds {
|
|
107
|
+
const result = {
|
|
108
|
+
x: container.bounds.x,
|
|
109
|
+
y: container.bounds.y,
|
|
110
|
+
width: Math.max(options.minWidth, maxWidth + options.paddingLeft + options.paddingRight),
|
|
111
|
+
height: Math.max(options.minHeight, maxHeight + options.paddingTop + options.paddingBottom)
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
protected getDefaultLayoutOptions(): AbstractLayoutOptions {
|
|
118
|
+
return {
|
|
119
|
+
resizeContainer: true,
|
|
120
|
+
paddingTop: 0,
|
|
121
|
+
paddingBottom: 0,
|
|
122
|
+
paddingLeft: 0,
|
|
123
|
+
paddingRight: 0,
|
|
124
|
+
paddingFactor: 1,
|
|
125
|
+
minWidth: 0,
|
|
126
|
+
minHeight: 0
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
protected spread(a: AbstractLayoutOptions, b: AbstractLayoutOptions): AbstractLayoutOptions {
|
|
131
|
+
return { ...a, ...b };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -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
|
|
@@ -14,19 +14,16 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
/* eslint-disable import/no-deprecated,no-unused-expressions */
|
|
17
|
-
import '
|
|
18
|
-
import 'reflect-metadata';
|
|
19
|
-
|
|
17
|
+
import { Action, Bounds, ChangeBoundsOperation, ElementAndBounds } from '@eclipse-glsp/protocol';
|
|
20
18
|
import { expect } from 'chai';
|
|
21
19
|
import { Container } from 'inversify';
|
|
20
|
+
import 'mocha';
|
|
21
|
+
import 'reflect-metadata';
|
|
22
22
|
import {
|
|
23
|
-
Action,
|
|
24
23
|
AnimationFrameSyncer,
|
|
25
|
-
Bounds,
|
|
26
24
|
CommandExecutionContext,
|
|
27
25
|
ConsoleLogger,
|
|
28
26
|
defaultModule,
|
|
29
|
-
ElementAndBounds,
|
|
30
27
|
ElementMove,
|
|
31
28
|
FeatureSet,
|
|
32
29
|
IActionDispatcher,
|
|
@@ -41,8 +38,6 @@ import {
|
|
|
41
38
|
SModelRoot,
|
|
42
39
|
TYPES
|
|
43
40
|
} from 'sprotty';
|
|
44
|
-
|
|
45
|
-
import { ChangeBoundsOperation } from '../../base/operations/operation';
|
|
46
41
|
import { GLSP_TYPES } from '../../base/types';
|
|
47
42
|
import { resizeFeature } from '../change-bounds/model';
|
|
48
43
|
import { SelectionService } from '../select/selection-service';
|
|
@@ -58,7 +53,7 @@ import {
|
|
|
58
53
|
} from './layout-commands';
|
|
59
54
|
|
|
60
55
|
class MockActionDispatcher implements IActionDispatcher {
|
|
61
|
-
constructor(public dispatchedActions: Action[] = []) {
|
|
56
|
+
constructor(public dispatchedActions: Action[] = []) {}
|
|
62
57
|
dispatch(action: Action): Promise<void> {
|
|
63
58
|
this.dispatchedActions.push(action);
|
|
64
59
|
return Promise.resolve();
|
|
@@ -84,15 +79,18 @@ const selectionService = container.get<SelectionService>(GLSP_TYPES.SelectionSer
|
|
|
84
79
|
const actionDispatcher = new MockActionDispatcher();
|
|
85
80
|
|
|
86
81
|
const node1 = {
|
|
87
|
-
id: 'node1',
|
|
82
|
+
id: 'node1',
|
|
83
|
+
type: 'node:circle',
|
|
88
84
|
selected: true
|
|
89
85
|
};
|
|
90
86
|
const node2 = {
|
|
91
|
-
id: 'node2',
|
|
87
|
+
id: 'node2',
|
|
88
|
+
type: 'node:circle',
|
|
92
89
|
selected: true
|
|
93
90
|
};
|
|
94
91
|
const node3 = {
|
|
95
|
-
id: 'node3',
|
|
92
|
+
id: 'node3',
|
|
93
|
+
type: 'node:circle',
|
|
96
94
|
selected: true
|
|
97
95
|
};
|
|
98
96
|
const model = createModel();
|
|
@@ -123,7 +121,6 @@ const context: CommandExecutionContext = {
|
|
|
123
121
|
const defaultSize = { height: 10, width: 10 };
|
|
124
122
|
|
|
125
123
|
describe('AlignElementsCommand', () => {
|
|
126
|
-
|
|
127
124
|
it('should align all elements left', () => {
|
|
128
125
|
actionDispatcher.dispatchedActions = [];
|
|
129
126
|
const newModel = initModel([
|
|
@@ -135,11 +132,13 @@ describe('AlignElementsCommand', () => {
|
|
|
135
132
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
136
133
|
command.execute(newContext(newModel));
|
|
137
134
|
|
|
138
|
-
assertAllBounds(
|
|
139
|
-
[
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
+
);
|
|
143
142
|
});
|
|
144
143
|
|
|
145
144
|
it('should align all elements right', () => {
|
|
@@ -153,11 +152,13 @@ describe('AlignElementsCommand', () => {
|
|
|
153
152
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
154
153
|
command.execute(newContext(newModel));
|
|
155
154
|
|
|
156
|
-
assertAllBounds(
|
|
157
|
-
[
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
+
);
|
|
161
162
|
});
|
|
162
163
|
|
|
163
164
|
it('should align all elements center', () => {
|
|
@@ -171,11 +172,13 @@ describe('AlignElementsCommand', () => {
|
|
|
171
172
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
172
173
|
command.execute(newContext(newModel));
|
|
173
174
|
|
|
174
|
-
assertAllBounds(
|
|
175
|
-
[
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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
|
+
);
|
|
179
182
|
});
|
|
180
183
|
|
|
181
184
|
it('should align all elements top', () => {
|
|
@@ -189,11 +192,13 @@ describe('AlignElementsCommand', () => {
|
|
|
189
192
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
190
193
|
command.execute(newContext(newModel));
|
|
191
194
|
|
|
192
|
-
assertAllBounds(
|
|
193
|
-
[
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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
|
+
);
|
|
197
202
|
});
|
|
198
203
|
|
|
199
204
|
it('should align all elements bottom', () => {
|
|
@@ -207,11 +212,13 @@ describe('AlignElementsCommand', () => {
|
|
|
207
212
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
208
213
|
command.execute(newContext(newModel));
|
|
209
214
|
|
|
210
|
-
assertAllBounds(
|
|
211
|
-
[
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
+
);
|
|
215
222
|
});
|
|
216
223
|
|
|
217
224
|
it('should align all elements middle', () => {
|
|
@@ -225,17 +232,17 @@ describe('AlignElementsCommand', () => {
|
|
|
225
232
|
const command = new AlignElementsCommand(action, actionDispatcher, selectionService);
|
|
226
233
|
command.execute(newContext(newModel));
|
|
227
234
|
|
|
228
|
-
assertAllBounds(
|
|
229
|
-
[
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
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
|
+
);
|
|
233
242
|
});
|
|
234
|
-
|
|
235
243
|
});
|
|
236
244
|
|
|
237
245
|
describe('ResizeElementsCommand', () => {
|
|
238
|
-
|
|
239
246
|
it('should make same width as last', () => {
|
|
240
247
|
actionDispatcher.dispatchedActions = [];
|
|
241
248
|
const newModel = initModel([
|
|
@@ -248,11 +255,13 @@ describe('ResizeElementsCommand', () => {
|
|
|
248
255
|
command.execute(newContext(newModel));
|
|
249
256
|
|
|
250
257
|
// resize is keeping the center, so the X moves by diff / 2
|
|
251
|
-
assertAllBoundsInChangeBounds(
|
|
252
|
-
[
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
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
|
+
);
|
|
256
265
|
});
|
|
257
266
|
|
|
258
267
|
it('should make same height as last', () => {
|
|
@@ -267,11 +276,13 @@ describe('ResizeElementsCommand', () => {
|
|
|
267
276
|
command.execute(newContext(newModel));
|
|
268
277
|
|
|
269
278
|
// resize is keeping the center, so the Y moves by diff / 2
|
|
270
|
-
assertAllBoundsInChangeBounds(
|
|
271
|
-
[
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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
|
+
);
|
|
275
286
|
});
|
|
276
287
|
|
|
277
288
|
it('should make same width and height as last', () => {
|
|
@@ -286,13 +297,14 @@ describe('ResizeElementsCommand', () => {
|
|
|
286
297
|
command.execute(newContext(newModel));
|
|
287
298
|
|
|
288
299
|
// resize is keeping the center, so the Y moves by diff / 2
|
|
289
|
-
assertAllBoundsInChangeBounds(
|
|
290
|
-
[
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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
|
+
);
|
|
294
307
|
});
|
|
295
|
-
|
|
296
308
|
});
|
|
297
309
|
|
|
298
310
|
function initModel(elementAndBounds: ElementAndBounds[]): SModelRoot {
|
|
@@ -350,11 +362,17 @@ function getElementAndBoundsById(id: string, elementAndBounds: ElementAndBounds[
|
|
|
350
362
|
}
|
|
351
363
|
|
|
352
364
|
function dispatchedElementMoves(): ElementMove[] {
|
|
353
|
-
return actionDispatcher.dispatchedActions
|
|
365
|
+
return actionDispatcher.dispatchedActions
|
|
366
|
+
.filter(isMoveAction)
|
|
367
|
+
.map(a => a.moves)
|
|
368
|
+
.reduce((acc, val) => acc.concat(val), []);
|
|
354
369
|
}
|
|
355
370
|
|
|
356
371
|
function dispatchedChangeBounds(): ElementAndBounds[] {
|
|
357
|
-
return actionDispatcher.dispatchedActions
|
|
372
|
+
return actionDispatcher.dispatchedActions
|
|
373
|
+
.filter(isChangeBounds)
|
|
374
|
+
.map(a => a.newBounds)
|
|
375
|
+
.reduce((acc, val) => acc.concat(val), []);
|
|
358
376
|
}
|
|
359
377
|
|
|
360
378
|
function isMoveAction(action: Action): action is MoveAction {
|