@eclipse-glsp/client 0.9.0-next.e4ef6900 → 0.9.0-next.f12e3d87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/css/command-palette.css +6 -5
- package/css/glsp-sprotty.css +17 -8
- package/css/tool-palette.css +14 -14
- package/lib/base/action-dispatcher.d.ts.map +1 -1
- package/lib/base/action-dispatcher.js +39 -60
- package/lib/base/action-dispatcher.js.map +1 -1
- package/lib/base/actions/context-actions.d.ts +1 -1
- package/lib/base/actions/context-actions.d.ts.map +1 -1
- package/lib/base/actions/context-actions.js +11 -18
- package/lib/base/actions/context-actions.js.map +1 -1
- package/lib/base/actions/edit-mode-action.d.ts.map +1 -1
- package/lib/base/actions/edit-mode-action.js +12 -17
- package/lib/base/actions/edit-mode-action.js.map +1 -1
- package/lib/base/actions/edit-validation-actions.d.ts +1 -1
- package/lib/base/actions/edit-validation-actions.d.ts.map +1 -1
- package/lib/base/actions/edit-validation-actions.js +23 -26
- package/lib/base/actions/edit-validation-actions.js.map +1 -1
- package/lib/base/actions/focus-change-action.js +4 -5
- package/lib/base/actions/focus-change-action.js.map +1 -1
- package/lib/base/args.d.ts +1 -1
- package/lib/base/args.d.ts.map +1 -1
- package/lib/base/args.js.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +100 -150
- package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
- package/lib/base/auto-complete/validation-decorator.d.ts +1 -1
- package/lib/base/auto-complete/validation-decorator.js +38 -60
- package/lib/base/auto-complete/validation-decorator.js.map +1 -1
- package/lib/base/command-stack.d.ts.map +1 -1
- package/lib/base/command-stack.js +19 -37
- package/lib/base/command-stack.js.map +1 -1
- package/lib/base/container-modules.d.ts +40 -0
- package/lib/base/container-modules.d.ts.map +1 -0
- package/lib/base/container-modules.js +84 -0
- package/lib/base/container-modules.js.map +1 -0
- package/lib/base/di.config.d.ts +11 -2
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +37 -37
- package/lib/base/di.config.js.map +1 -1
- package/lib/base/drag-aware-mouse-listener.d.ts +1 -1
- package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
- package/lib/base/drag-aware-mouse-listener.js +24 -48
- package/lib/base/drag-aware-mouse-listener.js.map +1 -1
- package/lib/base/editor-context.d.ts.map +1 -1
- package/lib/base/editor-context.js +64 -128
- package/lib/base/editor-context.js.map +1 -1
- package/lib/base/focus-tracker.d.ts.map +1 -1
- package/lib/base/focus-tracker.js +19 -24
- package/lib/base/focus-tracker.js.map +1 -1
- package/lib/base/model/model-registry.js +10 -28
- package/lib/base/model/model-registry.js.map +1 -1
- package/lib/base/model/update-model-command.d.ts +2 -2
- package/lib/base/model/update-model-command.d.ts.map +1 -1
- package/lib/base/model/update-model-command.js +67 -88
- package/lib/base/model/update-model-command.js.map +1 -1
- package/lib/base/model-initialization-constraint.js +31 -52
- package/lib/base/model-initialization-constraint.js.map +1 -1
- package/lib/base/operations/operation.d.ts +5 -5
- package/lib/base/operations/operation.d.ts.map +1 -1
- package/lib/base/operations/operation.js +75 -115
- package/lib/base/operations/operation.js.map +1 -1
- package/lib/base/selection-clearing-mouse-listener.js +10 -28
- package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
- package/lib/base/source-uri-aware.js +2 -5
- package/lib/base/source-uri-aware.js.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +56 -137
- package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
- package/lib/base/types.d.ts +2 -1
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +3 -2
- package/lib/base/types.js.map +1 -1
- package/lib/base/view/view-registry.js +10 -28
- package/lib/base/view/view-registry.js.map +1 -1
- package/lib/features/change-bounds/model.d.ts +3 -1
- package/lib/features/change-bounds/model.d.ts.map +1 -1
- package/lib/features/change-bounds/model.js +20 -31
- package/lib/features/change-bounds/model.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +29 -28
- package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
- package/lib/features/change-bounds/snap.js +13 -24
- package/lib/features/change-bounds/snap.js.map +1 -1
- package/lib/features/command-palette/command-palette-tool.js +30 -38
- package/lib/features/command-palette/command-palette-tool.js.map +1 -1
- package/lib/features/command-palette/di.config.js +6 -6
- package/lib/features/command-palette/di.config.js.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.js +27 -32
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.js +19 -67
- package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
- package/lib/features/context-menu/di.config.d.ts +1 -1
- package/lib/features/context-menu/di.config.d.ts.map +1 -1
- package/lib/features/context-menu/di.config.js +8 -8
- package/lib/features/context-menu/di.config.js.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.js +29 -30
- package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-actions.d.ts +1 -1
- package/lib/features/copy-paste/copy-paste-actions.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-actions.js +20 -30
- package/lib/features/copy-paste/copy-paste-actions.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts +5 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
- package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.d.ts +2 -0
- package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.js +67 -67
- package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
- package/lib/features/copy-paste/di.config.js +10 -10
- package/lib/features/copy-paste/di.config.js.map +1 -1
- package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
- package/lib/features/decoration/decoration-placer.js +13 -32
- package/lib/features/decoration/decoration-placer.js.map +1 -1
- package/lib/features/decoration/di.config.js +4 -4
- package/lib/features/decoration/di.config.js.map +1 -1
- package/lib/features/edit-label/di.config.js +7 -7
- package/lib/features/edit-label/di.config.js.map +1 -1
- package/lib/features/edit-label/edit-label-tool.js +20 -43
- package/lib/features/edit-label/edit-label-tool.js.map +1 -1
- package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-validator.js +37 -59
- package/lib/features/edit-label/edit-label-validator.js.map +1 -1
- package/lib/features/hints/di.config.js +8 -8
- package/lib/features/hints/di.config.js.map +1 -1
- package/lib/features/hints/model.d.ts +1 -1
- package/lib/features/hints/model.d.ts.map +1 -1
- package/lib/features/hints/request-type-hints-action.d.ts +1 -1
- package/lib/features/hints/request-type-hints-action.d.ts.map +1 -1
- package/lib/features/hints/request-type-hints-action.js +12 -14
- package/lib/features/hints/request-type-hints-action.js.map +1 -1
- package/lib/features/hints/type-hints.d.ts +4 -4
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +91 -133
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.js +7 -7
- package/lib/features/hover/di.config.js.map +1 -1
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +35 -76
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts +5 -1
- package/lib/features/layout/di.config.d.ts.map +1 -1
- package/lib/features/layout/di.config.js +47 -7
- package/lib/features/layout/di.config.js.map +1 -1
- package/lib/features/layout/freeform-layout.d.ts +16 -0
- package/lib/features/layout/freeform-layout.d.ts.map +1 -0
- package/lib/features/layout/freeform-layout.js +107 -0
- package/lib/features/layout/freeform-layout.js.map +1 -0
- package/lib/features/layout/layout-commands.d.ts +2 -2
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +187 -263
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts +1 -1
- package/lib/features/layout/layout-commands.spec.js +94 -88
- package/lib/features/layout/layout-commands.spec.js.map +1 -1
- package/lib/features/layout/vbox-layout.d.ts +25 -0
- package/lib/features/layout/vbox-layout.d.ts.map +1 -0
- package/lib/features/layout/vbox-layout.js +187 -0
- package/lib/features/layout/vbox-layout.js.map +1 -0
- package/lib/features/model-source-watcher/di.config.js +6 -6
- package/lib/features/model-source-watcher/di.config.js.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -45
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action.d.ts +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action.js +4 -5
- package/lib/features/model-source-watcher/model-source-changed-action.js.map +1 -1
- package/lib/features/mouse-tool/di.config.js +5 -5
- package/lib/features/mouse-tool/di.config.js.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts +2 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +69 -215
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/di.config.js +9 -9
- package/lib/features/navigation/di.config.js.map +1 -1
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +136 -217
- package/lib/features/navigation/navigation-action-handler.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.js +57 -122
- package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +12 -12
- package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
- package/lib/features/rank/model.d.ts +1 -1
- package/lib/features/rank/model.js +2 -2
- package/lib/features/rank/model.js.map +1 -1
- package/lib/features/reconnect/model.d.ts +1 -1
- package/lib/features/reconnect/model.d.ts.map +1 -1
- package/lib/features/reconnect/model.js +9 -27
- package/lib/features/reconnect/model.js.map +1 -1
- package/lib/features/save/di.config.d.ts +1 -1
- package/lib/features/save/di.config.d.ts.map +1 -1
- package/lib/features/save/di.config.js +5 -5
- package/lib/features/save/di.config.js.map +1 -1
- package/lib/features/save/save.d.ts +1 -1
- package/lib/features/save/save.js +11 -31
- package/lib/features/save/save.js.map +1 -1
- package/lib/features/select/di.config.js +11 -11
- package/lib/features/select/di.config.js.map +1 -1
- package/lib/features/select/select-feedback-action.d.ts.map +1 -1
- package/lib/features/select/select-feedback-action.js +45 -71
- package/lib/features/select/select-feedback-action.js.map +1 -1
- package/lib/features/select/select-mouse-listener.js +7 -23
- package/lib/features/select/select-mouse-listener.js.map +1 -1
- package/lib/features/select/selection-service.d.ts.map +1 -1
- package/lib/features/select/selection-service.js +132 -234
- package/lib/features/select/selection-service.js.map +1 -1
- package/lib/features/select/selection-service.spec.js +97 -124
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +2 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +104 -127
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +69 -103
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +3 -1
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +37 -81
- package/lib/features/tool-feedback/css-feedback.js.map +1 -1
- package/lib/features/tool-feedback/di.config.d.ts +1 -1
- package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
- package/lib/features/tool-feedback/di.config.js +27 -27
- package/lib/features/tool-feedback/di.config.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -193
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +2 -2
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.js +36 -58
- package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -69
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/model.d.ts +1 -1
- package/lib/features/tool-feedback/model.js +11 -27
- package/lib/features/tool-feedback/model.js.map +1 -1
- package/lib/features/tool-feedback/view.d.ts +4 -4
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +30 -37
- package/lib/features/tool-feedback/view.js.map +1 -1
- package/lib/features/tool-palette/di.config.js +6 -6
- package/lib/features/tool-palette/di.config.js.map +1 -1
- package/lib/features/tool-palette/palette-item.d.ts +1 -1
- package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
- package/lib/features/tool-palette/palette-item.js +6 -5
- package/lib/features/tool-palette/palette-item.js.map +1 -1
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +182 -259
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.js +37 -44
- package/lib/features/tools/base-glsp-tool.js.map +1 -1
- package/lib/features/tools/change-bounds-tool.d.ts +3 -2
- package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
- package/lib/features/tools/change-bounds-tool.js +187 -237
- package/lib/features/tools/change-bounds-tool.js.map +1 -1
- package/lib/features/tools/delete-tool.d.ts.map +1 -1
- package/lib/features/tools/delete-tool.js +69 -102
- package/lib/features/tools/delete-tool.js.map +1 -1
- package/lib/features/tools/di.config.js +18 -18
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation-tool.js +60 -85
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +110 -181
- package/lib/features/tools/edge-edit-tool.js.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.js +128 -149
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
- package/lib/features/tools/marquee-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-tool.js +32 -58
- package/lib/features/tools/marquee-tool.js.map +1 -1
- package/lib/features/tools/model.js +4 -22
- package/lib/features/tools/model.js.map +1 -1
- package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/node-creation-tool.js +59 -89
- package/lib/features/tools/node-creation-tool.js.map +1 -1
- package/lib/features/tools/view.d.ts +1 -1
- package/lib/features/tools/view.d.ts.map +1 -1
- package/lib/features/tools/view.js +12 -31
- package/lib/features/tools/view.js.map +1 -1
- package/lib/features/undo-redo/model.d.ts +1 -1
- package/lib/features/undo-redo/model.js +8 -12
- package/lib/features/undo-redo/model.js.map +1 -1
- package/lib/features/validation/di.config.js +12 -12
- package/lib/features/validation/di.config.js.map +1 -1
- package/lib/features/validation/issue-marker.js +13 -51
- package/lib/features/validation/issue-marker.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.js +129 -163
- package/lib/features/validation/marker-navigator.js.map +1 -1
- package/lib/features/validation/marker-navigator.spec.d.ts +1 -1
- package/lib/features/validation/marker-navigator.spec.js +79 -73
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +2 -2
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +161 -276
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/features/viewport/di.config.js +10 -10
- package/lib/features/viewport/di.config.js.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -32
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
- package/lib/index.d.ts +5 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +25 -23
- package/lib/index.js.map +1 -1
- package/lib/lib/model.js +11 -27
- package/lib/lib/model.js.map +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +43 -118
- package/lib/model-source/glsp-diagram-server.js.map +1 -1
- package/lib/model-source/glsp-server-status.js +10 -27
- package/lib/model-source/glsp-server-status.js.map +1 -1
- package/lib/utils/argument-utils.d.ts +3 -3
- package/lib/utils/argument-utils.d.ts.map +1 -1
- package/lib/utils/argument-utils.js +27 -92
- package/lib/utils/argument-utils.js.map +1 -1
- package/lib/utils/array-utils.d.ts +1 -1
- package/lib/utils/array-utils.d.ts.map +1 -1
- package/lib/utils/array-utils.js +10 -15
- package/lib/utils/array-utils.js.map +1 -1
- package/lib/utils/html-utils.js +2 -2
- package/lib/utils/html-utils.js.map +1 -1
- package/lib/utils/layout-utils.d.ts +1 -1
- package/lib/utils/layout-utils.d.ts.map +1 -1
- package/lib/utils/layout-utils.js +5 -5
- package/lib/utils/layout-utils.js.map +1 -1
- package/lib/utils/marker.js +11 -53
- package/lib/utils/marker.js.map +1 -1
- package/lib/utils/smodel-util.d.ts +3 -3
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +17 -51
- package/lib/utils/smodel-util.js.map +1 -1
- package/lib/utils/viewpoint-util.d.ts +1 -1
- package/lib/utils/viewpoint-util.d.ts.map +1 -1
- package/lib/utils/viewpoint-util.js +16 -16
- package/lib/utils/viewpoint-util.js.map +1 -1
- package/lib/views/base-view-module.js +9 -9
- package/lib/views/base-view-module.js.map +1 -1
- package/lib/views/compartments.d.ts +6 -0
- package/lib/views/compartments.d.ts.map +1 -0
- package/lib/views/compartments.js +43 -0
- package/lib/views/compartments.js.map +1 -0
- package/lib/views/default-types.js +1 -1
- package/lib/views/default-types.js.map +1 -1
- package/lib/views/glsp-edge-view.d.ts +1 -2
- package/lib/views/glsp-edge-view.d.ts.map +1 -1
- package/lib/views/glsp-edge-view.js +32 -62
- package/lib/views/glsp-edge-view.js.map +1 -1
- package/lib/views/index.d.ts +1 -0
- package/lib/views/index.d.ts.map +1 -1
- package/lib/views/index.js +1 -0
- package/lib/views/index.js.map +1 -1
- package/lib/views/issue-marker-view.d.ts +1 -1
- package/lib/views/issue-marker-view.d.ts.map +1 -1
- package/lib/views/issue-marker-view.js +19 -42
- package/lib/views/issue-marker-view.js.map +1 -1
- package/lib/views/rounded-corner-view.d.ts +2 -3
- package/lib/views/rounded-corner-view.d.ts.map +1 -1
- package/lib/views/rounded-corner-view.js +40 -70
- package/lib/views/rounded-corner-view.js.map +1 -1
- package/lib/views/rounded-corner.d.ts.map +1 -1
- package/lib/views/rounded-corner.js +44 -65
- package/lib/views/rounded-corner.js.map +1 -1
- package/package.json +6 -16
- package/src/base/action-dispatcher.ts +1 -2
- package/src/base/actions/context-actions.ts +6 -6
- package/src/base/actions/edit-mode-action.ts +3 -4
- package/src/base/actions/edit-validation-actions.ts +26 -14
- package/src/base/actions/focus-change-action.ts +1 -1
- package/src/base/args.ts +4 -2
- package/src/base/auto-complete/auto-complete-widget.ts +34 -21
- package/src/base/auto-complete/validation-decorator.ts +5 -5
- package/src/base/command-stack.ts +1 -3
- package/src/base/container-modules.ts +113 -0
- package/src/base/di.config.ts +31 -16
- package/src/base/drag-aware-mouse-listener.ts +1 -3
- package/src/base/editor-context.ts +2 -4
- package/src/base/focus-tracker.ts +0 -2
- package/src/base/model/update-model-command.ts +6 -8
- package/src/base/operations/operation.ts +57 -31
- package/src/base/types.ts +3 -2
- package/src/features/change-bounds/model.ts +16 -5
- package/src/features/change-bounds/movement-restrictor.ts +15 -7
- package/src/features/command-palette/server-command-palette-provider.ts +8 -5
- package/src/features/context-menu/di.config.ts +11 -9
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +4 -3
- package/src/features/context-menu/server-context-menu-provider.ts +7 -3
- package/src/features/copy-paste/copy-paste-actions.ts +11 -8
- package/src/features/copy-paste/copy-paste-context-menu.ts +57 -17
- package/src/features/copy-paste/copy-paste-handler.ts +15 -6
- package/src/features/decoration/decoration-placer.ts +2 -13
- package/src/features/edit-label/edit-label-validator.ts +11 -12
- package/src/features/hints/model.ts +2 -2
- package/src/features/hints/request-type-hints-action.ts +10 -5
- package/src/features/hints/type-hints.ts +26 -30
- package/src/features/hover/hover.ts +1 -2
- package/src/features/layout/di.config.ts +30 -5
- package/src/features/layout/freeform-layout.ts +132 -0
- package/src/features/layout/layout-commands.spec.ts +79 -56
- package/src/features/layout/layout-commands.ts +42 -31
- package/src/features/layout/vbox-layout.ts +241 -0
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +3 -3
- package/src/features/model-source-watcher/model-source-changed-action.ts +2 -2
- package/src/features/mouse-tool/mouse-tool.ts +31 -22
- package/src/features/navigation/navigation-action-handler.ts +32 -22
- package/src/features/navigation/navigation-target-resolver.spec.ts +1 -3
- package/src/features/navigation/navigation-target-resolver.ts +14 -12
- package/src/features/rank/model.ts +2 -2
- package/src/features/reconnect/model.ts +2 -3
- package/src/features/save/di.config.ts +1 -2
- package/src/features/save/save.ts +2 -2
- package/src/features/select/select-feedback-action.ts +4 -6
- package/src/features/select/selection-service.spec.ts +9 -4
- package/src/features/select/selection-service.ts +13 -5
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +26 -17
- package/src/features/tool-feedback/creation-tool-feedback.ts +16 -7
- package/src/features/tool-feedback/css-feedback.ts +7 -4
- package/src/features/tool-feedback/di.config.ts +2 -5
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +18 -15
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +6 -8
- package/src/features/tool-feedback/marquee-tool-feedback.ts +3 -2
- package/src/features/tool-feedback/model.ts +1 -2
- package/src/features/tool-feedback/view.tsx +16 -10
- package/src/features/tool-palette/di.config.ts +1 -1
- package/src/features/tool-palette/palette-item.ts +3 -3
- package/src/features/tool-palette/tool-palette.ts +12 -14
- package/src/features/tools/change-bounds-tool.ts +54 -25
- package/src/features/tools/delete-tool.ts +8 -3
- package/src/features/tools/edge-creation-tool.ts +5 -8
- package/src/features/tools/edge-edit-tool.ts +9 -18
- package/src/features/tools/marquee-mouse-tool.ts +57 -37
- package/src/features/tools/marquee-tool.ts +0 -1
- package/src/features/tools/node-creation-tool.ts +4 -9
- package/src/features/tools/view.tsx +17 -12
- package/src/features/undo-redo/model.ts +3 -3
- package/src/features/validation/marker-navigator.spec.ts +15 -9
- package/src/features/validation/marker-navigator.ts +23 -8
- package/src/features/validation/validate.ts +9 -13
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +1 -10
- package/src/index.ts +26 -8
- package/src/model-source/glsp-diagram-server.ts +2 -14
- package/src/utils/argument-utils.ts +13 -9
- package/src/utils/array-utils.ts +4 -2
- package/src/utils/layout-utils.ts +11 -5
- package/src/utils/smodel-util.ts +14 -10
- package/src/utils/viewpoint-util.ts +3 -2
- package/src/views/compartments.tsx +37 -0
- package/src/views/glsp-edge-view.tsx +20 -13
- package/src/views/index.ts +1 -0
- package/src/views/issue-marker-view.tsx +11 -12
- package/src/views/rounded-corner-view.tsx +38 -25
- package/src/views/rounded-corner.ts +3 -4
- package/lib/base/actions/protocol-actions.d.ts +0 -41
- package/lib/base/actions/protocol-actions.d.ts.map +0 -1
- package/lib/base/actions/protocol-actions.js +0 -151
- package/lib/base/actions/protocol-actions.js.map +0 -1
- package/src/base/actions/protocol-actions.ts +0 -82
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2020-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -14,20 +14,10 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { injectable } from 'inversify';
|
|
17
|
-
import {
|
|
18
|
-
Decoration,
|
|
19
|
-
DecorationPlacer,
|
|
20
|
-
isSizeable,
|
|
21
|
-
ORIGIN_POINT,
|
|
22
|
-
Point,
|
|
23
|
-
SChildElement,
|
|
24
|
-
SModelElement,
|
|
25
|
-
SRoutableElement
|
|
26
|
-
} from 'sprotty';
|
|
17
|
+
import { Decoration, DecorationPlacer, isSizeable, ORIGIN_POINT, Point, SChildElement, SModelElement, SRoutableElement } from 'sprotty';
|
|
27
18
|
|
|
28
19
|
@injectable()
|
|
29
20
|
export class GlspDecorationPlacer extends DecorationPlacer {
|
|
30
|
-
|
|
31
21
|
protected static readonly DECORATION_OFFSET: Point = { x: 12, y: 10 };
|
|
32
22
|
|
|
33
23
|
protected getPosition(element: SModelElement & Decoration): Point {
|
|
@@ -42,5 +32,4 @@ export class GlspDecorationPlacer extends DecorationPlacer {
|
|
|
42
32
|
}
|
|
43
33
|
return ORIGIN_POINT;
|
|
44
34
|
}
|
|
45
|
-
|
|
46
35
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2019-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -26,11 +26,7 @@ import {
|
|
|
26
26
|
} from 'sprotty';
|
|
27
27
|
|
|
28
28
|
import { GLSPActionDispatcher } from '../../base/action-dispatcher';
|
|
29
|
-
import {
|
|
30
|
-
isSetEditValidationResultAction,
|
|
31
|
-
RequestEditValidationAction,
|
|
32
|
-
ValidationStatus
|
|
33
|
-
} from '../../base/actions/edit-validation-actions';
|
|
29
|
+
import { isSetEditValidationResultAction, RequestEditValidationAction, ValidationStatus } from '../../base/actions/edit-validation-actions';
|
|
34
30
|
|
|
35
31
|
export namespace LabelEditValidation {
|
|
36
32
|
export const CONTEXT_ID = 'label-edit';
|
|
@@ -55,7 +51,6 @@ export class ValidateLabelEditAction extends RequestEditValidationAction {
|
|
|
55
51
|
|
|
56
52
|
@injectable()
|
|
57
53
|
export class ServerEditLabelValidator implements IEditLabelValidator {
|
|
58
|
-
|
|
59
54
|
@inject(TYPES.IActionDispatcher) protected actionDispatcher: GLSPActionDispatcher;
|
|
60
55
|
|
|
61
56
|
validate(value: string, label: EditableLabel & SModelElement): Promise<EditLabelValidationResult> {
|
|
@@ -69,12 +64,10 @@ export class ServerEditLabelValidator implements IEditLabelValidator {
|
|
|
69
64
|
}
|
|
70
65
|
return { severity: 'ok' as Severity };
|
|
71
66
|
}
|
|
72
|
-
|
|
73
67
|
}
|
|
74
68
|
|
|
75
69
|
@injectable()
|
|
76
70
|
export class BalloonLabelValidationDecorator implements IEditLabelValidationDecorator {
|
|
77
|
-
|
|
78
71
|
decorate(input: HTMLInputElement, result: EditLabelValidationResult): void {
|
|
79
72
|
const containerElement = input.parentElement;
|
|
80
73
|
if (!containerElement) {
|
|
@@ -86,9 +79,15 @@ export class BalloonLabelValidationDecorator implements IEditLabelValidationDeco
|
|
|
86
79
|
containerElement.setAttribute('data-balloon-visible', 'true');
|
|
87
80
|
}
|
|
88
81
|
switch (result.severity) {
|
|
89
|
-
case 'ok':
|
|
90
|
-
|
|
91
|
-
|
|
82
|
+
case 'ok':
|
|
83
|
+
containerElement.classList.add('validation-ok');
|
|
84
|
+
break;
|
|
85
|
+
case 'warning':
|
|
86
|
+
containerElement.classList.add('validation-warning');
|
|
87
|
+
break;
|
|
88
|
+
case 'error':
|
|
89
|
+
containerElement.classList.add('validation-error');
|
|
90
|
+
break;
|
|
92
91
|
}
|
|
93
92
|
}
|
|
94
93
|
|
|
@@ -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
|
|
@@ -27,7 +27,7 @@ export function isContainable(element: SModelElement): element is SModelElement
|
|
|
27
27
|
|
|
28
28
|
export const reparentFeature = Symbol('reparentFeature');
|
|
29
29
|
|
|
30
|
-
export interface Reparentable extends SModelExtension {
|
|
30
|
+
export interface Reparentable extends SModelExtension {}
|
|
31
31
|
|
|
32
32
|
export function isReparentable(element: SModelElement): element is SModelElement & Reparentable {
|
|
33
33
|
return element.hasFeature(reparentFeature);
|
|
@@ -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
|
|
@@ -19,7 +19,7 @@ import { EdgeTypeHint, ShapeTypeHint } from './type-hints';
|
|
|
19
19
|
|
|
20
20
|
export class RequestTypeHintsAction implements Action {
|
|
21
21
|
static readonly KIND = 'requestTypeHints';
|
|
22
|
-
constructor(public readonly diagramType?: string, public readonly kind: string = RequestTypeHintsAction.KIND) {
|
|
22
|
+
constructor(public readonly diagramType?: string, public readonly kind: string = RequestTypeHintsAction.KIND) {}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export class SetTypeHintsAction implements Action {
|
|
@@ -27,10 +27,15 @@ export class SetTypeHintsAction implements Action {
|
|
|
27
27
|
constructor(
|
|
28
28
|
public readonly shapeHints: ShapeTypeHint[],
|
|
29
29
|
public readonly edgeHints: EdgeTypeHint[],
|
|
30
|
-
public readonly kind: string = SetTypeHintsAction.KIND
|
|
30
|
+
public readonly kind: string = SetTypeHintsAction.KIND
|
|
31
|
+
) {}
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
export function isSetTypeHintsAction(action: Action): action is SetTypeHintsAction {
|
|
34
|
-
return
|
|
35
|
-
|
|
35
|
+
return (
|
|
36
|
+
action !== undefined &&
|
|
37
|
+
action.kind === SetTypeHintsAction.KIND &&
|
|
38
|
+
(action as SetTypeHintsAction).shapeHints !== undefined &&
|
|
39
|
+
(action as SetTypeHintsAction).edgeHints !== undefined
|
|
40
|
+
);
|
|
36
41
|
}
|
|
@@ -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
|
|
@@ -50,8 +50,8 @@ export abstract class TypeHint {
|
|
|
50
50
|
readonly elementTypeId: string;
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
* Specifies whether the element can be relocated.
|
|
54
|
+
*/
|
|
55
55
|
readonly repositionable: boolean;
|
|
56
56
|
|
|
57
57
|
/**
|
|
@@ -89,14 +89,13 @@ export class EdgeTypeHint extends TypeHint {
|
|
|
89
89
|
readonly sourceElementTypeIds: string[];
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
* Allowed targe element types for this edge type
|
|
93
|
+
*/
|
|
94
94
|
readonly targetElementTypeIds: string[];
|
|
95
95
|
|
|
96
96
|
isAllowedSource(input: SModelElement | SModelElementSchema | string): boolean {
|
|
97
97
|
const type = getElementTypeId(input);
|
|
98
98
|
return this.sourceElementTypeIds.includes(type);
|
|
99
|
-
|
|
100
99
|
}
|
|
101
100
|
isAllowedTarget(input: SModelElement | SModelElementSchema | string): boolean {
|
|
102
101
|
const type = getElementTypeId(input);
|
|
@@ -111,7 +110,6 @@ export class ApplyTypeHintsAction implements Action {
|
|
|
111
110
|
|
|
112
111
|
@injectable()
|
|
113
112
|
export class ApplyTypeHintsCommand extends FeedbackCommand {
|
|
114
|
-
|
|
115
113
|
public static KIND = 'applyTypeHints';
|
|
116
114
|
public readonly priority = 10;
|
|
117
115
|
|
|
@@ -122,15 +120,13 @@ export class ApplyTypeHintsCommand extends FeedbackCommand {
|
|
|
122
120
|
}
|
|
123
121
|
|
|
124
122
|
execute(context: CommandExecutionContext): CommandReturn {
|
|
125
|
-
context.root.index.all()
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
});
|
|
123
|
+
context.root.index.all().forEach(element => {
|
|
124
|
+
if (element instanceof SShapeElement || element instanceof SModelRoot) {
|
|
125
|
+
this.applyShapeTypeHint(element);
|
|
126
|
+
} else if (element instanceof SEdge) {
|
|
127
|
+
return this.applyEdgeTypeHint(element);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
134
130
|
return context.root;
|
|
135
131
|
}
|
|
136
132
|
|
|
@@ -167,18 +163,14 @@ export class ApplyTypeHintsCommand extends FeedbackCommand {
|
|
|
167
163
|
function createConnectable(validSourceEdges: string[], validTargetEdges: string[]): Connectable {
|
|
168
164
|
return {
|
|
169
165
|
canConnect: (routable, role) =>
|
|
170
|
-
role === 'source' ?
|
|
171
|
-
validSourceEdges.includes(routable.type) :
|
|
172
|
-
validTargetEdges.includes(routable.type)
|
|
166
|
+
role === 'source' ? validSourceEdges.includes(routable.type) : validTargetEdges.includes(routable.type)
|
|
173
167
|
};
|
|
174
168
|
}
|
|
175
169
|
|
|
176
170
|
function createContainable(hint: ShapeTypeHint): Containable {
|
|
177
171
|
return {
|
|
178
172
|
isContainableElement: element =>
|
|
179
|
-
hint.containableElementTypeIds ?
|
|
180
|
-
hint.containableElementTypeIds.includes(getElementTypeId(element)) :
|
|
181
|
-
false
|
|
173
|
+
hint.containableElementTypeIds ? hint.containableElementTypeIds.includes(getElementTypeId(element)) : false
|
|
182
174
|
};
|
|
183
175
|
}
|
|
184
176
|
|
|
@@ -202,12 +194,11 @@ export interface ITypeHintProvider {
|
|
|
202
194
|
|
|
203
195
|
@injectable()
|
|
204
196
|
export class TypeHintProvider implements IActionHandler, ITypeHintProvider {
|
|
205
|
-
|
|
206
197
|
@inject(GLSP_TYPES.IFeedbackActionDispatcher)
|
|
207
198
|
protected feedbackActionDispatcher: IFeedbackActionDispatcher;
|
|
208
199
|
|
|
209
|
-
protected shapeHints: Map<string, ShapeTypeHint> = new Map;
|
|
210
|
-
protected edgeHints: Map<string, EdgeTypeHint> = new Map;
|
|
200
|
+
protected shapeHints: Map<string, ShapeTypeHint> = new Map();
|
|
201
|
+
protected edgeHints: Map<string, EdgeTypeHint> = new Map();
|
|
211
202
|
|
|
212
203
|
handle(action: Action): ICommand | Action | void {
|
|
213
204
|
if (isSetTypeHintsAction(action)) {
|
|
@@ -222,13 +213,19 @@ export class TypeHintProvider implements IActionHandler, ITypeHintProvider {
|
|
|
222
213
|
if (role === 'source') {
|
|
223
214
|
return Array.from(
|
|
224
215
|
Array.from(this.edgeHints.values())
|
|
225
|
-
.filter(hint =>
|
|
226
|
-
|
|
216
|
+
.filter(hint =>
|
|
217
|
+
hint.sourceElementTypeIds.some(sourceElementTypeId => hasCompatibleType(elementTypeId, sourceElementTypeId))
|
|
218
|
+
)
|
|
219
|
+
.map(hint => hint.elementTypeId)
|
|
220
|
+
);
|
|
227
221
|
} else {
|
|
228
222
|
return Array.from(
|
|
229
223
|
Array.from(this.edgeHints.values())
|
|
230
|
-
.filter(hint =>
|
|
231
|
-
|
|
224
|
+
.filter(hint =>
|
|
225
|
+
hint.targetElementTypeIds.some(targetElementTypeId => hasCompatibleType(elementTypeId, targetElementTypeId))
|
|
226
|
+
)
|
|
227
|
+
.map(hint => hint.elementTypeId)
|
|
228
|
+
);
|
|
232
229
|
}
|
|
233
230
|
}
|
|
234
231
|
|
|
@@ -254,4 +251,3 @@ function getTypeHint<T extends TypeHint>(input: SModelElement | SModelElement |
|
|
|
254
251
|
}
|
|
255
252
|
return hint;
|
|
256
253
|
}
|
|
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
|
|
@@ -33,7 +33,6 @@ import { GIssueMarker } from '../validation/issue-marker';
|
|
|
33
33
|
|
|
34
34
|
@injectable()
|
|
35
35
|
export class GlspHoverMouseListener extends HoverMouseListener {
|
|
36
|
-
|
|
37
36
|
protected startMouseOverTimer(target: SModelElement, event: MouseEvent): Promise<Action> {
|
|
38
37
|
this.stopMouseOverTimer();
|
|
39
38
|
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
|
|
@@ -13,14 +13,39 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { ContainerModule } from 'inversify';
|
|
17
|
-
import { configureCommand } from 'sprotty';
|
|
18
|
-
|
|
16
|
+
import { ContainerModule, inject, injectable, multiInject, optional } from 'inversify';
|
|
17
|
+
import { configureCommand, configureLayout, ILogger, LayoutRegistration, LayoutRegistry, TYPES } 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
|
+
configureLayout({ bind, isBound }, VBoxLayouterExt.KIND, VBoxLayouterExt);
|
|
27
|
+
configureLayout({ bind, isBound }, FreeFormLayouter.KIND, FreeFormLayouter);
|
|
28
|
+
|
|
29
|
+
bind(OverridableLayoutRegistry).toSelf().inSingletonScope();
|
|
30
|
+
rebind(TYPES.LayoutRegistry).toService(OverridableLayoutRegistry);
|
|
24
31
|
});
|
|
25
32
|
|
|
26
33
|
export default layoutCommandsModule;
|
|
34
|
+
|
|
35
|
+
@injectable()
|
|
36
|
+
export class OverridableLayoutRegistry extends LayoutRegistry {
|
|
37
|
+
|
|
38
|
+
// ensure logger is already used in constructor as otherwise not usable
|
|
39
|
+
constructor(@multiInject(TYPES.LayoutRegistration) @optional() layouts: (LayoutRegistration)[] = [],
|
|
40
|
+
@inject(TYPES.ILogger) logger: ILogger) {
|
|
41
|
+
super();
|
|
42
|
+
layouts.forEach(layout => {
|
|
43
|
+
if (this.hasKey(layout.layoutKind)) {
|
|
44
|
+
logger.warn('Layout kind is already defined and will be overridden: ', layout.layoutKind);
|
|
45
|
+
this.deregister(layout.layoutKind);
|
|
46
|
+
}
|
|
47
|
+
// allow overriding an existing layout kind
|
|
48
|
+
this.register(layout.layoutKind, layout.factory());
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
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
|
+
|
|
37
|
+
static KIND = 'freeform';
|
|
38
|
+
|
|
39
|
+
layout(container: SParentElement & LayoutContainer,
|
|
40
|
+
layouter: StatefulLayouter): void {
|
|
41
|
+
const boundsData = layouter.getBoundsData(container);
|
|
42
|
+
const options = this.getLayoutOptions(container);
|
|
43
|
+
const childrenSize = this.getChildrenSize(container, options, layouter);
|
|
44
|
+
|
|
45
|
+
// The real size of the compartment will be determined by the parent node layout;
|
|
46
|
+
// we only need to compute the bounds required to layout the children.
|
|
47
|
+
|
|
48
|
+
const maxWidth = childrenSize.width > 0 ? childrenSize.width + options.paddingLeft + options.paddingRight : 0;
|
|
49
|
+
const maxHeight = childrenSize.height > 0 ? childrenSize.height + options.paddingTop + options.paddingBottom : 0;
|
|
50
|
+
if (maxWidth > 0 && maxHeight > 0) {
|
|
51
|
+
const offset = this.layoutChildren(container, layouter, options, maxWidth, maxHeight);
|
|
52
|
+
boundsData.bounds = this.getFinalContainerBounds(container, offset, options, maxWidth, maxHeight);
|
|
53
|
+
boundsData.boundsChanged = true;
|
|
54
|
+
} else {
|
|
55
|
+
boundsData.bounds = { x: boundsData.bounds!.x, y: boundsData.bounds!.y, width: 0, height: 0 };
|
|
56
|
+
boundsData.boundsChanged = true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
protected getChildrenSize(container: SParentElement & LayoutContainer,
|
|
61
|
+
containerOptions: AbstractLayoutOptions,
|
|
62
|
+
layouter: StatefulLayouter): Dimension {
|
|
63
|
+
let maxX = 0;
|
|
64
|
+
let maxY = 0;
|
|
65
|
+
container.children.forEach(
|
|
66
|
+
child => {
|
|
67
|
+
const bounds = layouter.getBoundsData(child).bounds;
|
|
68
|
+
if (bounds !== undefined && isValidDimension(bounds)) {
|
|
69
|
+
const childMaxX = bounds.x + bounds.width;
|
|
70
|
+
const childMaxY = bounds.y + bounds.height;
|
|
71
|
+
maxX = Math.max(maxX, childMaxX);
|
|
72
|
+
maxY = Math.max(maxY, childMaxY);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
return {
|
|
77
|
+
width: maxX,
|
|
78
|
+
height: maxY
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
protected layoutChild(child: SChildElement,
|
|
83
|
+
boundsData: BoundsData,
|
|
84
|
+
bounds: Bounds,
|
|
85
|
+
childOptions: AbstractLayoutOptions,
|
|
86
|
+
containerOptions: AbstractLayoutOptions,
|
|
87
|
+
currentOffset: Point,
|
|
88
|
+
maxWidth: number,
|
|
89
|
+
maxHeight: number): 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(container: SParentElement & LayoutContainer,
|
|
101
|
+
lastOffset: Point,
|
|
102
|
+
options: AbstractLayoutOptions,
|
|
103
|
+
maxWidth: number,
|
|
104
|
+
maxHeight: number): Bounds {
|
|
105
|
+
const result = {
|
|
106
|
+
x: container.bounds.x,
|
|
107
|
+
y: container.bounds.y,
|
|
108
|
+
width: Math.max(options.minWidth, maxWidth + options.paddingLeft + options.paddingRight),
|
|
109
|
+
height: Math.max(options.minHeight, maxHeight + options.paddingTop + options.paddingBottom)
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
protected getDefaultLayoutOptions(): AbstractLayoutOptions {
|
|
116
|
+
return {
|
|
117
|
+
resizeContainer: true,
|
|
118
|
+
paddingTop: 0,
|
|
119
|
+
paddingBottom: 0,
|
|
120
|
+
paddingLeft: 0,
|
|
121
|
+
paddingRight: 0,
|
|
122
|
+
paddingFactor: 1,
|
|
123
|
+
minWidth: 0,
|
|
124
|
+
minHeight: 0
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
protected spread(a: AbstractLayoutOptions, b: AbstractLayoutOptions): AbstractLayoutOptions {
|
|
129
|
+
return { ...a, ...b };
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
}
|