@eclipse-glsp/client 0.9.0-next.f54fd689 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +642 -277
- package/README.md +4 -2
- package/css/command-palette.css +9 -5
- package/css/decoration.css +3 -2
- package/css/glsp-sprotty.css +20 -7
- package/css/tool-palette.css +44 -27
- package/lib/base/action-dispatcher.d.ts +18 -2
- package/lib/base/action-dispatcher.d.ts.map +1 -1
- package/lib/base/action-dispatcher.js +41 -61
- package/lib/base/action-dispatcher.js.map +1 -1
- package/lib/{features/model-source-watcher/model-source-changed-action.d.ts → base/actions/focus-change-action.d.ts} +7 -7
- package/lib/base/actions/focus-change-action.d.ts.map +1 -0
- package/lib/base/actions/focus-change-action.js +16 -0
- package/lib/base/actions/focus-change-action.js.map +1 -0
- package/lib/base/argumentable.d.ts +22 -0
- package/lib/base/argumentable.d.ts.map +1 -0
- package/lib/base/argumentable.js +8 -0
- package/lib/base/argumentable.js.map +1 -0
- package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
- package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +12 -12
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +121 -152
- package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
- package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
- package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
- package/lib/base/auto-complete/validation-decorator.js +49 -65
- package/lib/base/auto-complete/validation-decorator.js.map +1 -1
- package/lib/base/command-stack.d.ts +1 -1
- package/lib/base/command-stack.d.ts.map +1 -1
- package/lib/base/command-stack.js +19 -37
- package/lib/base/command-stack.js.map +1 -1
- package/lib/base/container-modules.d.ts +40 -0
- package/lib/base/container-modules.d.ts.map +1 -0
- package/lib/base/container-modules.js +100 -0
- package/lib/base/container-modules.js.map +1 -0
- package/lib/base/di.config.d.ts +13 -3
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +52 -31
- package/lib/base/di.config.js.map +1 -1
- package/lib/base/drag-aware-mouse-listener.d.ts +3 -2
- package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
- package/lib/base/drag-aware-mouse-listener.js +23 -62
- package/lib/base/drag-aware-mouse-listener.js.map +1 -1
- package/lib/base/editor-context-service.d.ts +42 -0
- package/lib/base/editor-context-service.d.ts.map +1 -0
- package/lib/base/editor-context-service.js +109 -0
- package/lib/base/editor-context-service.js.map +1 -0
- package/lib/{features/undo-redo/model.d.ts → base/focus-tracker.d.ts} +10 -12
- package/lib/base/focus-tracker.d.ts.map +1 -0
- package/lib/base/focus-tracker.js +50 -0
- package/lib/base/focus-tracker.js.map +1 -0
- package/lib/base/model/model-registry.d.ts +5 -0
- package/lib/base/model/model-registry.d.ts.map +1 -0
- package/lib/base/model/model-registry.js +43 -0
- package/lib/base/model/model-registry.js.map +1 -0
- package/lib/base/model/update-model-command.d.ts +20 -6
- package/lib/base/model/update-model-command.d.ts.map +1 -1
- package/lib/base/model/update-model-command.js +69 -94
- package/lib/base/model/update-model-command.js.map +1 -1
- package/lib/base/model-initialization-constraint.d.ts +17 -2
- package/lib/base/model-initialization-constraint.d.ts.map +1 -1
- package/lib/base/model-initialization-constraint.js +34 -54
- package/lib/base/model-initialization-constraint.js.map +1 -1
- package/lib/base/selection-clearing-mouse-listener.d.ts +1 -1
- package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
- package/lib/base/selection-clearing-mouse-listener.js +11 -28
- package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
- package/lib/base/source-uri-aware.js +2 -5
- package/lib/base/source-uri-aware.js.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts +2 -2
- package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +59 -141
- package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
- package/lib/base/types.d.ts +3 -1
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +23 -21
- package/lib/base/types.js.map +1 -1
- package/lib/base/view/view-registry.d.ts +5 -0
- package/lib/base/view/view-registry.d.ts.map +1 -0
- package/lib/base/view/view-registry.js +43 -0
- package/lib/base/view/view-registry.js.map +1 -0
- package/lib/features/change-bounds/model.d.ts +4 -2
- package/lib/features/change-bounds/model.d.ts.map +1 -1
- package/lib/features/change-bounds/model.js +21 -32
- package/lib/features/change-bounds/model.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts +18 -2
- package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +34 -46
- package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
- package/lib/features/change-bounds/snap.d.ts +17 -1
- package/lib/features/change-bounds/snap.d.ts.map +1 -1
- package/lib/features/change-bounds/snap.js +13 -39
- package/lib/features/change-bounds/snap.js.map +1 -1
- package/lib/features/command-palette/command-palette-tool.d.ts +1 -1
- package/lib/features/command-palette/command-palette-tool.d.ts.map +1 -1
- package/lib/features/command-palette/command-palette-tool.js +30 -38
- package/lib/features/command-palette/command-palette-tool.js.map +1 -1
- package/lib/features/command-palette/di.config.d.ts +2 -2
- package/lib/features/command-palette/di.config.js +6 -6
- package/lib/features/command-palette/di.config.js.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.d.ts +19 -3
- package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.js +31 -36
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts +2 -2
- package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.js +24 -72
- package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
- package/lib/features/context-menu/di.config.d.ts +2 -2
- package/lib/features/context-menu/di.config.d.ts.map +1 -1
- package/lib/features/context-menu/di.config.js +14 -18
- package/lib/features/context-menu/di.config.js.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +2 -2
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.d.ts +19 -3
- package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.js +31 -32
- package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
- package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.d.ts +21 -4
- package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.js +70 -70
- package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
- package/lib/features/copy-paste/di.config.d.ts +2 -2
- package/lib/features/copy-paste/di.config.d.ts.map +1 -1
- package/lib/features/copy-paste/di.config.js +11 -11
- package/lib/features/copy-paste/di.config.js.map +1 -1
- package/lib/features/decoration/decoration-placer.d.ts +17 -1
- package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
- package/lib/features/decoration/decoration-placer.js +14 -47
- package/lib/features/decoration/decoration-placer.js.map +1 -1
- package/lib/features/decoration/di.config.d.ts +2 -2
- package/lib/features/decoration/di.config.d.ts.map +1 -1
- package/lib/features/decoration/di.config.js +4 -6
- package/lib/features/decoration/di.config.js.map +1 -1
- package/lib/features/edit-label/di.config.d.ts +1 -1
- package/lib/features/edit-label/di.config.js +7 -7
- package/lib/features/edit-label/di.config.js.map +1 -1
- package/lib/features/edit-label/edit-label-tool.d.ts +2 -2
- package/lib/features/edit-label/edit-label-tool.js +20 -43
- package/lib/features/edit-label/edit-label-tool.js.map +1 -1
- package/lib/features/edit-label/edit-label-validator.d.ts +18 -3
- package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-validator.js +40 -62
- package/lib/features/edit-label/edit-label-validator.js.map +1 -1
- package/lib/features/hints/di.config.d.ts +1 -16
- package/lib/features/hints/di.config.d.ts.map +1 -1
- package/lib/features/hints/di.config.js +9 -9
- package/lib/features/hints/di.config.js.map +1 -1
- package/lib/features/hints/model.d.ts +3 -2
- package/lib/features/hints/model.d.ts.map +1 -1
- package/lib/features/hints/model.js +2 -2
- package/lib/features/hints/model.js.map +1 -1
- package/lib/features/hints/type-hints.d.ts +21 -49
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +83 -142
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.d.ts +2 -2
- package/lib/features/hover/di.config.d.ts.map +1 -1
- package/lib/features/hover/di.config.js +9 -7
- package/lib/features/hover/di.config.js.map +1 -1
- package/lib/features/hover/hover.d.ts +18 -2
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +37 -75
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts +2 -2
- package/lib/features/layout/di.config.d.ts.map +1 -1
- package/lib/features/layout/di.config.js +11 -7
- package/lib/features/layout/di.config.js.map +1 -1
- package/lib/features/layout/freeform-layout.d.ts +16 -0
- package/lib/features/layout/freeform-layout.d.ts.map +1 -0
- package/lib/features/layout/freeform-layout.js +107 -0
- package/lib/features/layout/freeform-layout.js.map +1 -0
- package/lib/features/layout/layout-commands.d.ts +26 -10
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +189 -264
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts +2 -17
- package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.spec.js +124 -117
- package/lib/features/layout/layout-commands.spec.js.map +1 -1
- package/lib/features/layout/vbox-layout.d.ts +25 -0
- package/lib/features/layout/vbox-layout.d.ts.map +1 -0
- package/lib/features/layout/vbox-layout.js +188 -0
- package/lib/features/layout/vbox-layout.js.map +1 -0
- package/lib/features/model-source-watcher/di.config.d.ts +1 -16
- package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
- package/lib/features/model-source-watcher/di.config.js +7 -7
- package/lib/features/model-source-watcher/di.config.js.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -46
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
- package/lib/features/mouse-tool/di.config.d.ts +1 -1
- package/lib/features/mouse-tool/di.config.js +5 -5
- package/lib/features/mouse-tool/di.config.js.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts +3 -2
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +74 -217
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/di.config.d.ts +1 -16
- package/lib/features/navigation/di.config.d.ts.map +1 -1
- package/lib/features/navigation/di.config.js +11 -10
- package/lib/features/navigation/di.config.js.map +1 -1
- package/lib/features/navigation/navigation-action-handler.d.ts +19 -39
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +118 -255
- package/lib/features/navigation/navigation-action-handler.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
- package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.js +46 -188
- package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts +2 -17
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +27 -26
- package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
- package/lib/features/rank/model.d.ts +2 -2
- package/lib/features/rank/model.d.ts.map +1 -1
- package/lib/features/rank/model.js +2 -2
- package/lib/features/rank/model.js.map +1 -1
- package/lib/features/reconnect/model.d.ts +2 -2
- package/lib/features/reconnect/model.d.ts.map +1 -1
- package/lib/features/reconnect/model.js +10 -28
- package/lib/features/reconnect/model.js.map +1 -1
- package/lib/features/save/di.config.d.ts +2 -2
- package/lib/features/save/di.config.d.ts.map +1 -1
- package/lib/features/save/di.config.js +6 -6
- package/lib/features/save/di.config.js.map +1 -1
- package/lib/features/save/model.d.ts +1 -1
- package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -8
- package/lib/features/save/save-keylistener.d.ts.map +1 -0
- package/lib/{utils/array-utils.js → features/save/save-keylistener.js} +14 -19
- package/lib/features/save/save-keylistener.js.map +1 -0
- package/lib/features/select/di.config.d.ts +1 -1
- package/lib/features/select/di.config.js +11 -11
- package/lib/features/select/di.config.js.map +1 -1
- package/lib/features/select/select-feedback-action.d.ts +1 -1
- package/lib/features/select/select-feedback-action.d.ts.map +1 -1
- package/lib/features/select/select-feedback-action.js +45 -71
- package/lib/features/select/select-feedback-action.js.map +1 -1
- package/lib/features/select/select-mouse-listener.d.ts +2 -2
- package/lib/features/select/select-mouse-listener.js +7 -23
- package/lib/features/select/select-mouse-listener.js.map +1 -1
- package/lib/features/select/selection-service.d.ts +19 -3
- package/lib/features/select/selection-service.d.ts.map +1 -1
- package/lib/features/select/selection-service.js +134 -236
- package/lib/features/select/selection-service.js.map +1 -1
- package/lib/features/select/selection-service.spec.js +96 -138
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +21 -4
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +117 -149
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts +19 -2
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +81 -115
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +24 -5
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +40 -82
- package/lib/features/tool-feedback/css-feedback.js.map +1 -1
- package/lib/features/tool-feedback/di.config.d.ts +2 -2
- package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
- package/lib/features/tool-feedback/di.config.js +27 -24
- package/lib/features/tool-feedback/di.config.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +21 -4
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +160 -204
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +19 -3
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
- package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +48 -0
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -0
- package/lib/features/tool-feedback/marquee-tool-feedback.js +96 -0
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -0
- package/lib/features/tool-feedback/model.d.ts +2 -2
- package/lib/features/tool-feedback/model.js +11 -27
- package/lib/features/tool-feedback/model.js.map +1 -1
- package/lib/features/tool-feedback/view.d.ts +22 -6
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +30 -51
- package/lib/features/tool-feedback/view.js.map +1 -1
- package/lib/features/tool-palette/di.config.d.ts +2 -2
- package/lib/features/tool-palette/di.config.d.ts.map +1 -1
- package/lib/features/tool-palette/di.config.js +6 -6
- package/lib/features/tool-palette/di.config.js.map +1 -1
- package/lib/features/tool-palette/palette-item.d.ts +2 -3
- package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
- package/lib/features/tool-palette/palette-item.js +6 -6
- package/lib/features/tool-palette/palette-item.js.map +1 -1
- package/lib/features/tool-palette/tool-palette.d.ts +23 -6
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +229 -286
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.d.ts +21 -5
- package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
- package/lib/features/tools/base-glsp-tool.js +37 -59
- package/lib/features/tools/base-glsp-tool.js.map +1 -1
- package/lib/features/tools/change-bounds-tool.d.ts +26 -9
- package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
- package/lib/features/tools/change-bounds-tool.js +192 -241
- package/lib/features/tools/change-bounds-tool.js.map +1 -1
- package/lib/features/tools/delete-tool.d.ts +20 -4
- package/lib/features/tools/delete-tool.d.ts.map +1 -1
- package/lib/features/tools/delete-tool.js +71 -104
- package/lib/features/tools/delete-tool.js.map +1 -1
- package/lib/features/tools/di.config.d.ts +5 -16
- package/lib/features/tools/di.config.d.ts.map +1 -1
- package/lib/features/tools/di.config.js +26 -13
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts +20 -5
- package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation-tool.js +64 -89
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts +22 -6
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +125 -189
- package/lib/features/tools/edge-edit-tool.js.map +1 -1
- package/lib/features/tools/marquee-behavior.d.ts +42 -0
- package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
- package/lib/features/tools/marquee-behavior.js +128 -0
- package/lib/features/tools/marquee-behavior.js.map +1 -0
- package/{src/base/args.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -2
- package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
- package/lib/features/tools/marquee-behavior.spec.js +165 -0
- package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
- package/lib/features/tools/marquee-mouse-tool.d.ts +48 -0
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -0
- package/lib/features/tools/marquee-mouse-tool.js +148 -0
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -0
- package/lib/features/tools/marquee-tool.d.ts +30 -0
- package/lib/features/tools/marquee-tool.d.ts.map +1 -0
- package/lib/features/tools/marquee-tool.js +54 -0
- package/lib/features/tools/marquee-tool.js.map +1 -0
- package/lib/features/tools/model.d.ts +22 -0
- package/lib/features/tools/model.d.ts.map +1 -0
- package/lib/features/tools/model.js +24 -0
- package/lib/features/tools/model.js.map +1 -0
- package/lib/features/tools/node-creation-tool.d.ts +20 -5
- package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/node-creation-tool.js +60 -90
- package/lib/features/tools/node-creation-tool.js.map +1 -1
- package/lib/features/tools/view.d.ts +7 -0
- package/lib/features/tools/view.d.ts.map +1 -0
- package/lib/features/tools/view.js +40 -0
- package/lib/features/tools/view.js.map +1 -0
- package/lib/features/validation/di.config.d.ts +1 -1
- package/lib/features/validation/di.config.js +12 -12
- package/lib/features/validation/di.config.js.map +1 -1
- package/lib/features/validation/issue-marker.d.ts +3 -3
- package/lib/features/validation/issue-marker.d.ts.map +1 -1
- package/lib/features/validation/issue-marker.js +18 -56
- package/lib/features/validation/issue-marker.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts +19 -3
- package/lib/features/validation/marker-navigator.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.js +131 -164
- package/lib/features/validation/marker-navigator.js.map +1 -1
- package/lib/features/validation/marker-navigator.spec.d.ts +2 -17
- package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.spec.js +84 -77
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +20 -31
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +148 -299
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/{base/args.d.ts → features/viewport/di.config.d.ts} +5 -5
- package/lib/features/viewport/di.config.d.ts.map +1 -0
- package/lib/features/viewport/di.config.js +34 -0
- package/lib/features/viewport/di.config.js.map +1 -0
- package/{src/features/model-source-watcher/model-source-changed-action.ts → lib/features/viewport/glsp-scroll-mouse-listener.d.ts} +8 -11
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -0
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +39 -0
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -0
- package/lib/index.d.ts +37 -35
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +39 -35
- package/lib/index.js.map +1 -1
- package/lib/lib/model.d.ts +3 -3
- package/lib/lib/model.d.ts.map +1 -1
- package/lib/lib/model.js +11 -27
- package/lib/lib/model.js.map +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts +4 -6
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +63 -122
- package/lib/model-source/glsp-diagram-server.js.map +1 -1
- package/lib/protocol-reexport.d.ts +45 -0
- package/lib/protocol-reexport.d.ts.map +1 -0
- package/lib/protocol-reexport.js +75 -0
- package/lib/protocol-reexport.js.map +1 -0
- package/lib/utils/argument-utils.d.ts +50 -0
- package/lib/utils/argument-utils.d.ts.map +1 -0
- package/lib/utils/argument-utils.js +110 -0
- package/lib/utils/argument-utils.js.map +1 -0
- package/lib/utils/html-utils.js +2 -2
- package/lib/utils/html-utils.js.map +1 -1
- package/lib/utils/layout-utils.d.ts +4 -3
- package/lib/utils/layout-utils.d.ts.map +1 -1
- package/lib/utils/layout-utils.js +5 -5
- package/lib/utils/layout-utils.js.map +1 -1
- package/lib/utils/marker.d.ts +1 -39
- package/lib/utils/marker.d.ts.map +1 -1
- package/lib/utils/marker.js +14 -61
- package/lib/utils/marker.js.map +1 -1
- package/lib/utils/smodel-util.d.ts +7 -17
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +18 -67
- package/lib/utils/smodel-util.js.map +1 -1
- package/lib/utils/viewpoint-util.d.ts +3 -2
- package/lib/utils/viewpoint-util.d.ts.map +1 -1
- package/lib/utils/viewpoint-util.js +15 -30
- package/lib/utils/viewpoint-util.js.map +1 -1
- package/lib/views/base-view-module.d.ts +9 -0
- package/lib/views/base-view-module.d.ts.map +1 -0
- package/lib/views/base-view-module.js +59 -0
- package/lib/views/base-view-module.js.map +1 -0
- package/lib/views/compartments.d.ts +6 -0
- package/lib/views/compartments.d.ts.map +1 -0
- package/lib/views/compartments.js +43 -0
- package/lib/views/compartments.js.map +1 -0
- package/lib/views/glsp-edge-view.d.ts +27 -0
- package/lib/views/glsp-edge-view.d.ts.map +1 -0
- package/lib/views/glsp-edge-view.js +55 -0
- package/lib/views/glsp-edge-view.js.map +1 -0
- package/lib/views/index.d.ts +22 -0
- package/lib/views/index.d.ts.map +1 -0
- package/lib/views/index.js +34 -0
- package/lib/views/index.js.map +1 -0
- package/lib/views/issue-marker-view.d.ts +9 -0
- package/lib/views/issue-marker-view.d.ts.map +1 -0
- package/lib/views/issue-marker-view.js +68 -0
- package/lib/views/issue-marker-view.js.map +1 -0
- package/lib/views/rounded-corner-view.d.ts +13 -0
- package/lib/views/rounded-corner-view.d.ts.map +1 -0
- package/lib/views/rounded-corner-view.js +82 -0
- package/lib/views/rounded-corner-view.js.map +1 -0
- package/lib/views/rounded-corner.d.ts +38 -0
- package/lib/views/rounded-corner.d.ts.map +1 -0
- package/lib/views/rounded-corner.js +62 -0
- package/lib/views/rounded-corner.js.map +1 -0
- package/package.json +27 -34
- package/src/base/action-dispatcher.ts +7 -8
- package/src/{utils/array-utils.ts → base/actions/focus-change-action.ts} +8 -16
- package/src/{features/undo-redo/model.ts → base/argumentable.ts} +7 -8
- package/src/base/auto-complete/auto-complete-actions.ts +2 -2
- package/src/base/auto-complete/auto-complete-widget.ts +73 -57
- package/src/base/auto-complete/validation-decorator.ts +21 -15
- package/src/base/command-stack.ts +4 -7
- package/src/base/container-modules.ts +112 -0
- package/src/base/di.config.ts +47 -25
- package/src/base/drag-aware-mouse-listener.ts +7 -8
- package/src/base/{editor-context.ts → editor-context-service.ts} +13 -40
- package/src/base/focus-tracker.ts +48 -0
- package/src/base/model/model-registry.ts +31 -0
- package/src/base/model/update-model-command.ts +14 -22
- package/src/base/model-initialization-constraint.ts +16 -11
- package/src/base/selection-clearing-mouse-listener.ts +4 -3
- package/src/base/tool-manager/glsp-tool-manager.ts +12 -14
- package/src/base/types.ts +23 -21
- package/src/base/view/view-registry.ts +31 -0
- package/src/features/change-bounds/model.ts +23 -13
- package/src/features/change-bounds/movement-restrictor.ts +28 -18
- package/src/features/change-bounds/snap.ts +6 -5
- package/src/features/command-palette/command-palette-tool.ts +4 -4
- package/src/features/command-palette/di.config.ts +7 -7
- package/src/features/command-palette/server-command-palette-provider.ts +16 -14
- package/src/features/context-menu/delete-element-context-menu.ts +10 -11
- package/src/features/context-menu/di.config.ts +10 -12
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +8 -7
- package/src/features/context-menu/server-context-menu-provider.ts +13 -10
- package/src/features/copy-paste/copy-paste-context-menu.ts +66 -37
- package/src/features/copy-paste/copy-paste-handler.ts +30 -20
- package/src/features/copy-paste/di.config.ts +6 -7
- package/src/features/decoration/decoration-placer.ts +6 -15
- package/src/features/decoration/di.config.ts +4 -6
- package/src/features/edit-label/di.config.ts +5 -5
- package/src/features/edit-label/edit-label-tool.ts +4 -4
- package/src/features/edit-label/edit-label-validator.ts +18 -19
- package/src/features/hints/di.config.ts +6 -7
- package/src/features/hints/model.ts +7 -6
- package/src/features/hints/type-hints.ts +46 -113
- package/src/features/hover/di.config.ts +7 -7
- package/src/features/hover/hover.ts +11 -14
- package/src/features/layout/di.config.ts +10 -6
- package/src/features/layout/freeform-layout.ts +133 -0
- package/src/features/layout/layout-commands.spec.ts +104 -85
- package/src/features/layout/layout-commands.ts +65 -54
- package/src/features/layout/vbox-layout.ts +256 -0
- package/src/features/model-source-watcher/di.config.ts +5 -6
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +16 -12
- package/src/features/mouse-tool/di.config.ts +4 -4
- package/src/features/mouse-tool/mouse-tool.ts +44 -32
- package/src/features/navigation/di.config.ts +6 -12
- package/src/features/navigation/navigation-action-handler.ts +46 -78
- package/src/features/navigation/navigation-target-resolver.spec.ts +6 -9
- package/src/features/navigation/navigation-target-resolver.ts +16 -94
- package/src/features/rank/model.ts +3 -3
- package/src/features/reconnect/model.ts +9 -11
- package/src/features/save/di.config.ts +4 -5
- package/src/features/save/model.ts +1 -1
- package/src/features/save/{save.ts → save-keylistener.ts} +4 -8
- package/src/features/select/di.config.ts +6 -6
- package/src/features/select/select-feedback-action.ts +6 -8
- package/src/features/select/select-mouse-listener.ts +2 -2
- package/src/features/select/selection-service.spec.ts +25 -19
- package/src/features/select/selection-service.ts +25 -22
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +56 -39
- package/src/features/tool-feedback/creation-tool-feedback.ts +49 -24
- package/src/features/tool-feedback/css-feedback.ts +19 -14
- package/src/features/tool-feedback/di.config.ts +15 -14
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +56 -35
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +13 -14
- package/src/features/tool-feedback/marquee-tool-feedback.ts +103 -0
- package/src/features/tool-feedback/model.ts +2 -3
- package/src/features/tool-feedback/view.tsx +20 -13
- package/src/features/tool-palette/di.config.ts +5 -7
- package/src/features/tool-palette/palette-item.ts +5 -7
- package/src/features/tool-palette/tool-palette.ts +126 -107
- package/src/features/tools/base-glsp-tool.ts +12 -12
- package/src/features/tools/change-bounds-tool.ts +83 -53
- package/src/features/tools/delete-tool.ts +23 -20
- package/src/features/tools/di.config.ts +22 -11
- package/src/features/tools/edge-creation-tool.ts +20 -25
- package/src/features/tools/edge-edit-tool.ts +43 -46
- package/src/features/tools/marquee-behavior.spec.ts +175 -0
- package/src/features/tools/marquee-behavior.ts +158 -0
- package/src/features/tools/marquee-mouse-tool.ts +153 -0
- package/src/features/tools/marquee-tool.ts +51 -0
- package/src/features/tools/model.ts +22 -0
- package/src/features/tools/node-creation-tool.ts +18 -22
- package/src/features/tools/view.tsx +44 -0
- package/src/features/validation/di.config.ts +5 -5
- package/src/features/validation/issue-marker.ts +4 -5
- package/src/features/validation/marker-navigator.spec.ts +38 -33
- package/src/features/validation/marker-navigator.ts +39 -26
- package/src/features/validation/validate.ts +25 -59
- package/src/features/viewport/di.config.ts +47 -0
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +41 -0
- package/src/index.ts +57 -37
- package/src/lib/model.ts +4 -4
- package/src/model-source/glsp-diagram-server.ts +19 -33
- package/src/protocol-reexport.ts +64 -0
- package/src/utils/argument-utils.ts +130 -0
- package/src/utils/layout-utils.ts +19 -11
- package/src/utils/marker.ts +8 -32
- package/src/utils/smodel-util.ts +28 -22
- package/src/utils/viewpoint-util.ts +5 -6
- package/src/views/base-view-module.ts +97 -0
- package/src/views/compartments.tsx +37 -0
- package/src/views/glsp-edge-view.tsx +79 -0
- package/{lib/utils/array-utils.d.ts → src/views/index.ts} +7 -4
- package/src/views/issue-marker-view.tsx +65 -0
- package/src/views/rounded-corner-view.tsx +103 -0
- package/src/views/rounded-corner.ts +87 -0
- package/lib/base/actions/context-actions.d.ts +0 -36
- package/lib/base/actions/context-actions.d.ts.map +0 -1
- package/lib/base/actions/context-actions.js +0 -51
- package/lib/base/actions/context-actions.js.map +0 -1
- package/lib/base/actions/edit-mode-action.d.ts +0 -13
- package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
- package/lib/base/actions/edit-mode-action.js +0 -56
- package/lib/base/actions/edit-mode-action.js.map +0 -1
- package/lib/base/actions/edit-validation-actions.d.ts +0 -78
- package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
- package/lib/base/actions/edit-validation-actions.js +0 -82
- package/lib/base/actions/edit-validation-actions.js.map +0 -1
- package/lib/base/actions/protocol-actions.d.ts +0 -41
- package/lib/base/actions/protocol-actions.d.ts.map +0 -1
- package/lib/base/actions/protocol-actions.js +0 -151
- package/lib/base/actions/protocol-actions.js.map +0 -1
- package/lib/base/args.d.ts.map +0 -1
- package/lib/base/args.js +0 -3
- package/lib/base/args.js.map +0 -1
- package/lib/base/editor-context.d.ts +0 -46
- package/lib/base/editor-context.d.ts.map +0 -1
- package/lib/base/editor-context.js +0 -174
- package/lib/base/editor-context.js.map +0 -1
- package/lib/base/operations/operation.d.ts +0 -129
- package/lib/base/operations/operation.d.ts.map +0 -1
- package/lib/base/operations/operation.js +0 -201
- package/lib/base/operations/operation.js.map +0 -1
- package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
- package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
- package/lib/features/copy-paste/copy-paste-actions.js +0 -68
- package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
- package/lib/features/decoration/view.d.ts +0 -8
- package/lib/features/decoration/view.d.ts.map +0 -1
- package/lib/features/decoration/view.js +0 -80
- package/lib/features/decoration/view.js.map +0 -1
- package/lib/features/hints/request-type-hints-action.d.ts +0 -32
- package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
- package/lib/features/hints/request-type-hints-action.js +0 -30
- package/lib/features/hints/request-type-hints-action.js.map +0 -1
- package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
- package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
- package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
- package/lib/features/save/save.d.ts.map +0 -1
- package/lib/features/save/save.js +0 -57
- package/lib/features/save/save.js.map +0 -1
- package/lib/features/undo-redo/model.d.ts.map +0 -1
- package/lib/features/undo-redo/model.js +0 -22
- package/lib/features/undo-redo/model.js.map +0 -1
- package/lib/model-source/glsp-server-status.d.ts +0 -30
- package/lib/model-source/glsp-server-status.d.ts.map +0 -1
- package/lib/model-source/glsp-server-status.js +0 -61
- package/lib/model-source/glsp-server-status.js.map +0 -1
- package/lib/utils/array-utils.d.ts.map +0 -1
- package/lib/utils/array-utils.js.map +0 -1
- package/src/base/actions/context-actions.ts +0 -43
- package/src/base/actions/edit-mode-action.ts +0 -33
- package/src/base/actions/edit-validation-actions.ts +0 -102
- package/src/base/actions/protocol-actions.ts +0 -82
- package/src/base/operations/operation.ts +0 -148
- package/src/features/copy-paste/copy-paste-actions.ts +0 -60
- package/src/features/decoration/view.tsx +0 -54
- package/src/features/hints/request-type-hints-action.ts +0 -36
- package/src/model-source/glsp-server-status.ts +0 -38
|
@@ -0,0 +1,130 @@
|
|
|
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 { SModelElement } from 'sprotty';
|
|
17
|
+
import { hasArguments } from '../base/argumentable';
|
|
18
|
+
|
|
19
|
+
export namespace GArgument {
|
|
20
|
+
export function asNumber(argValue: string | number | boolean): number | undefined {
|
|
21
|
+
return typeof argValue === 'number' ? argValue : undefined;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function asNumbers(argValues: (string | number | boolean)[]): (number | undefined)[] {
|
|
25
|
+
return argValues.map(asNumber);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function asString(argValue: string | number | boolean): string | undefined {
|
|
29
|
+
return typeof argValue === 'string' ? argValue : undefined;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function asStrings(argValues: (string | number | boolean)[]): (string | undefined)[] {
|
|
33
|
+
return argValues.map(asString);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function asBoolean(argValue: string | number | boolean): boolean | undefined {
|
|
37
|
+
return typeof argValue === 'boolean' ? argValue : undefined;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function asBooleans(argValues: (string | number | boolean)[]): (boolean | undefined)[] {
|
|
41
|
+
return argValues.map(asBoolean);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function getArgument(element: SModelElement | undefined, key: string): string | number | boolean | undefined {
|
|
45
|
+
return hasArguments(element) ? element.args[key] : undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function getNumber(element: SModelElement | undefined, key: string): number | undefined {
|
|
49
|
+
return hasArguments(element) ? asNumber(element.args[key]) : undefined;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function getString(element: SModelElement | undefined, key: string): string | undefined {
|
|
53
|
+
return hasArguments(element) ? asString(element.args[key]) : undefined;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function getBoolean(element: SModelElement | undefined, key: string): boolean | undefined {
|
|
57
|
+
return hasArguments(element) ? asBoolean(element.args[key]) : undefined;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function getArguments(element: SModelElement | undefined, ...keys: string[]): (number | boolean | string)[] | undefined {
|
|
61
|
+
if (!hasArguments(element)) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const values = [];
|
|
65
|
+
for (const key of keys) {
|
|
66
|
+
const value = element.args[key];
|
|
67
|
+
if (value) {
|
|
68
|
+
values.push(value);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return values;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function getNumbers(element: SModelElement | undefined, ...keys: string[]): (number | undefined)[] | undefined {
|
|
75
|
+
const values = getArguments(element, ...keys);
|
|
76
|
+
return values ? asNumbers(values) : undefined;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function getStrings(element: SModelElement | undefined, ...keys: string[]): (string | undefined)[] | undefined {
|
|
80
|
+
const values = getArguments(element, ...keys);
|
|
81
|
+
return values ? asStrings(values) : undefined;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function getBooleans(element: SModelElement | undefined, ...keys: string[]): (boolean | undefined)[] | undefined {
|
|
85
|
+
const values = getArguments(element, ...keys);
|
|
86
|
+
return values ? asBooleans(values) : undefined;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function hasNValues<T>(values: (T | undefined)[], length: number): values is T[] {
|
|
90
|
+
return values.length === length && values.filter(e => e === undefined).length === 0;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export namespace EdgePadding {
|
|
95
|
+
const KEY = 'edgePadding';
|
|
96
|
+
|
|
97
|
+
export function from(element: SModelElement | undefined): number | undefined {
|
|
98
|
+
return GArgument.getNumber(element, KEY);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export class CornerRadius {
|
|
103
|
+
static NO_RADIUS = new CornerRadius(0);
|
|
104
|
+
|
|
105
|
+
static KEY_RADIUS_TOP_LEFT = 'radiusTopLeft';
|
|
106
|
+
static KEY_RADIUS_TOP_RIGHT = 'radiusTopRight';
|
|
107
|
+
static KEY_RADIUS_BOTTOM_RIGHT = 'radiusBottomRight';
|
|
108
|
+
static KEY_RADIUS_BOTTOM_LEFT = 'radiusBottomLeft';
|
|
109
|
+
|
|
110
|
+
constructor(
|
|
111
|
+
public readonly topLeft: number = 0,
|
|
112
|
+
public readonly topRight: number = topLeft,
|
|
113
|
+
public readonly bottomRight: number = topLeft,
|
|
114
|
+
public readonly bottomLeft: number = topRight
|
|
115
|
+
) {}
|
|
116
|
+
|
|
117
|
+
static from(element: SModelElement | undefined): CornerRadius | undefined {
|
|
118
|
+
const radius = GArgument.getNumbers(
|
|
119
|
+
element,
|
|
120
|
+
this.KEY_RADIUS_TOP_LEFT,
|
|
121
|
+
this.KEY_RADIUS_TOP_RIGHT,
|
|
122
|
+
this.KEY_RADIUS_BOTTOM_RIGHT,
|
|
123
|
+
this.KEY_RADIUS_BOTTOM_LEFT
|
|
124
|
+
);
|
|
125
|
+
if (radius === undefined || radius[0] === undefined) {
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
return GArgument.hasNValues(radius, 4) ? new CornerRadius(radius[0], radius[1], radius[2], radius[3]) : new CornerRadius(radius[0]);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -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,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 {
|
|
17
|
-
|
|
18
|
-
import { IMovementRestrictor } from
|
|
16
|
+
import { Point } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { BoundsAware, Dimension, ElementAndBounds, ElementMove, ModelLayoutOptions, SModelElement } from 'sprotty';
|
|
18
|
+
import { IMovementRestrictor } from '../features/change-bounds/movement-restrictor';
|
|
19
19
|
|
|
20
20
|
export function minWidth(element: SModelElement & BoundsAware): number {
|
|
21
21
|
const layoutOptions = getLayoutOptions(element);
|
|
@@ -41,25 +41,33 @@ export function getLayoutOptions(element: SModelElement): ModelLayoutOptions | u
|
|
|
41
41
|
return undefined;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
export function isValidSize(element: SModelElement & BoundsAware, size: Dimension) {
|
|
44
|
+
export function isValidSize(element: SModelElement & BoundsAware, size: Dimension): boolean {
|
|
45
45
|
return size.width >= minWidth(element) && size.height >= minHeight(element);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
export function isValidMove(element: SModelElement & BoundsAware, newPosition: Point, movementRestrictor?: IMovementRestrictor) {
|
|
48
|
+
export function isValidMove(element: SModelElement & BoundsAware, newPosition: Point, movementRestrictor?: IMovementRestrictor): boolean {
|
|
49
49
|
if (movementRestrictor) {
|
|
50
50
|
return movementRestrictor.validate(newPosition, element);
|
|
51
51
|
}
|
|
52
52
|
return true;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
export function toValidElementMove(
|
|
55
|
+
export function toValidElementMove(
|
|
56
|
+
element: SModelElement & BoundsAware,
|
|
57
|
+
move: WriteableElementMove,
|
|
58
|
+
movementRestrictor?: IMovementRestrictor
|
|
59
|
+
): WriteableElementMove | undefined {
|
|
56
60
|
if (!isValidMove(element, move.toPosition, movementRestrictor)) {
|
|
57
61
|
return;
|
|
58
62
|
}
|
|
59
63
|
return move;
|
|
60
64
|
}
|
|
61
65
|
|
|
62
|
-
export function toValidElementAndBounds(
|
|
66
|
+
export function toValidElementAndBounds(
|
|
67
|
+
element: SModelElement & BoundsAware,
|
|
68
|
+
bounds: WriteableElementAndBounds,
|
|
69
|
+
movementRestrictor?: IMovementRestrictor
|
|
70
|
+
): WriteableElementAndBounds | undefined {
|
|
63
71
|
if (!isValidMove(element, bounds.newPosition, movementRestrictor)) {
|
|
64
72
|
return;
|
|
65
73
|
}
|
|
@@ -85,11 +93,11 @@ export interface WriteableElementMove extends ElementMove {
|
|
|
85
93
|
}
|
|
86
94
|
|
|
87
95
|
export interface WriteableDimension extends Dimension {
|
|
88
|
-
width: number
|
|
89
|
-
height: number
|
|
96
|
+
width: number;
|
|
97
|
+
height: number;
|
|
90
98
|
}
|
|
91
99
|
|
|
92
100
|
export interface WriteableElementAndBounds extends ElementAndBounds {
|
|
93
101
|
newPosition: WriteablePoint;
|
|
94
|
-
newSize: WriteableDimension
|
|
102
|
+
newSize: WriteableDimension;
|
|
95
103
|
}
|
package/src/utils/marker.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2019-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,21 +13,16 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
export namespace MarkerKind {
|
|
19
|
-
export const INFO = "info";
|
|
20
|
-
export const WARNING = "warning";
|
|
21
|
-
export const ERROR = "error";
|
|
22
|
-
}
|
|
16
|
+
import { MarkerKind } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { SIssueMarker, SParentElement } from 'sprotty';
|
|
23
18
|
|
|
24
19
|
export namespace MarkerPredicates {
|
|
25
|
-
export const ALL = () => true;
|
|
26
|
-
export const ERRORS = (marker: SIssueMarker) => hasIssueWithSeverity(marker, MarkerKind.ERROR);
|
|
27
|
-
export const WARNINGS = (marker: SIssueMarker) => hasIssueWithSeverity(marker, MarkerKind.WARNING);
|
|
28
|
-
export const INFOS = (marker: SIssueMarker) => hasIssueWithSeverity(marker, MarkerKind.INFO);
|
|
20
|
+
export const ALL = (): boolean => true;
|
|
21
|
+
export const ERRORS = (marker: SIssueMarker): boolean => hasIssueWithSeverity(marker, MarkerKind.ERROR);
|
|
22
|
+
export const WARNINGS = (marker: SIssueMarker): boolean => hasIssueWithSeverity(marker, MarkerKind.WARNING);
|
|
23
|
+
export const INFOS = (marker: SIssueMarker): boolean => hasIssueWithSeverity(marker, MarkerKind.INFO);
|
|
29
24
|
|
|
30
|
-
export function hasIssueWithSeverity(marker: SIssueMarker, severity: 'info' | 'warning' | 'error') {
|
|
25
|
+
export function hasIssueWithSeverity(marker: SIssueMarker, severity: 'info' | 'warning' | 'error'): boolean {
|
|
31
26
|
return marker.issues.find(issue => issue.severity === severity) !== undefined;
|
|
32
27
|
}
|
|
33
28
|
}
|
|
@@ -42,22 +37,3 @@ export function collectIssueMarkers(root: SParentElement): SIssueMarker[] {
|
|
|
42
37
|
}
|
|
43
38
|
return markers;
|
|
44
39
|
}
|
|
45
|
-
|
|
46
|
-
export interface Marker {
|
|
47
|
-
/**
|
|
48
|
-
* Short label describing this marker message, e.g., short validation message
|
|
49
|
-
*/
|
|
50
|
-
readonly label: string;
|
|
51
|
-
/**
|
|
52
|
-
* Full description of this marker, e.g., full validation message
|
|
53
|
-
*/
|
|
54
|
-
readonly description: string;
|
|
55
|
-
/**
|
|
56
|
-
* Id of the model element this marker refers to
|
|
57
|
-
*/
|
|
58
|
-
readonly elementId: string;
|
|
59
|
-
/**
|
|
60
|
-
* Marker kind, e.g., info, warning, error or custom kind
|
|
61
|
-
*/
|
|
62
|
-
readonly kind: string;
|
|
63
|
-
}
|
package/src/utils/smodel-util.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2019-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,8 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { ElementAndRoutingPoints } from '@eclipse-glsp/protocol';
|
|
16
17
|
import {
|
|
17
18
|
BoundsAware,
|
|
19
|
+
ElementAndBounds,
|
|
18
20
|
isBoundsAware,
|
|
19
21
|
isMoveable,
|
|
20
22
|
isSelectable,
|
|
@@ -22,38 +24,42 @@ import {
|
|
|
22
24
|
Selectable,
|
|
23
25
|
SModelElement,
|
|
24
26
|
SModelElementSchema,
|
|
27
|
+
SModelIndex,
|
|
25
28
|
SRoutableElement,
|
|
26
29
|
SRoutingHandle
|
|
27
|
-
} from
|
|
30
|
+
} from 'sprotty';
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
export function getIndex(element: SModelElement) {
|
|
32
|
+
export function getIndex(element: SModelElement): SModelIndex<SModelElement> {
|
|
33
33
|
return element.root.index;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
export function forEachElement<T>(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
export function forEachElement<T>(
|
|
37
|
+
element: SModelElement,
|
|
38
|
+
predicate: (modelElement: SModelElement) => modelElement is SModelElement & T,
|
|
39
|
+
runnable: (modelElement: SModelElement & T) => void
|
|
40
|
+
): void {
|
|
41
|
+
getIndex(element).all().filter(predicate).forEach(runnable);
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
export function getMatchingElements<T>(
|
|
44
|
+
export function getMatchingElements<T>(
|
|
45
|
+
element: SModelElement,
|
|
46
|
+
predicate: (modelElement: SModelElement) => modelElement is SModelElement & T
|
|
47
|
+
): (SModelElement & T)[] {
|
|
43
48
|
const matching: (SModelElement & T)[] = [];
|
|
44
49
|
forEachElement(element, predicate, item => matching.push(item));
|
|
45
50
|
return matching;
|
|
46
51
|
}
|
|
47
52
|
|
|
48
|
-
export function hasSelectedElements(element: SModelElement) {
|
|
53
|
+
export function hasSelectedElements(element: SModelElement): boolean {
|
|
49
54
|
return getSelectedElementCount(element) > 0;
|
|
50
55
|
}
|
|
51
56
|
|
|
52
57
|
export function getSelectedElementCount(element: SModelElement): number {
|
|
53
58
|
let selected = 0;
|
|
54
|
-
getIndex(element)
|
|
59
|
+
getIndex(element)
|
|
60
|
+
.all()
|
|
55
61
|
.filter(isSelected)
|
|
56
|
-
.forEach(e => selected = selected + 1);
|
|
62
|
+
.forEach(e => (selected = selected + 1));
|
|
57
63
|
return selected;
|
|
58
64
|
}
|
|
59
65
|
|
|
@@ -61,7 +67,7 @@ export function isNotUndefined<T>(element: T | undefined): element is T {
|
|
|
61
67
|
return element !== undefined;
|
|
62
68
|
}
|
|
63
69
|
|
|
64
|
-
export function addCssClasses(root: SModelElement, cssClasses: string[]) {
|
|
70
|
+
export function addCssClasses(root: SModelElement, cssClasses: string[]): void {
|
|
65
71
|
if (root.cssClasses === undefined) {
|
|
66
72
|
root.cssClasses = [];
|
|
67
73
|
}
|
|
@@ -72,7 +78,7 @@ export function addCssClasses(root: SModelElement, cssClasses: string[]) {
|
|
|
72
78
|
}
|
|
73
79
|
}
|
|
74
80
|
|
|
75
|
-
export function removeCssClasses(root: SModelElement, cssClasses: string[]) {
|
|
81
|
+
export function removeCssClasses(root: SModelElement, cssClasses: string[]): void {
|
|
76
82
|
if (root.cssClasses === undefined || root.cssClasses.length === 0) {
|
|
77
83
|
return;
|
|
78
84
|
}
|
|
@@ -108,7 +114,7 @@ export type SelectableBoundsAware = SModelElement & BoundsAware & Selectable;
|
|
|
108
114
|
|
|
109
115
|
export type BoundsAwareModelElement = SModelElement & BoundsAware;
|
|
110
116
|
|
|
111
|
-
export function toElementAndBounds(element: SModelElement & BoundsAware) {
|
|
117
|
+
export function toElementAndBounds(element: SModelElement & BoundsAware): ElementAndBounds {
|
|
112
118
|
return {
|
|
113
119
|
elementId: element.id,
|
|
114
120
|
newPosition: {
|
|
@@ -133,15 +139,15 @@ export function toElementAndRoutingPoints(element: SRoutableElement): ElementAnd
|
|
|
133
139
|
* Checks if the model is compatible with the passed type string.
|
|
134
140
|
* (either has the same type or a subtype of this type)
|
|
135
141
|
*/
|
|
136
|
-
export function hasCompatibleType(input: SModelElement | SModelElementSchema | string, type: string) {
|
|
142
|
+
export function hasCompatibleType(input: SModelElement | SModelElementSchema | string, type: string): boolean {
|
|
137
143
|
const inputType = getElementTypeId(input);
|
|
138
|
-
return inputType === type ? true : inputType.split(
|
|
144
|
+
return inputType === type ? true : inputType.split(':').includes(type);
|
|
139
145
|
}
|
|
140
146
|
|
|
141
|
-
export function getElementTypeId(input: SModelElement | SModelElementSchema | string) {
|
|
147
|
+
export function getElementTypeId(input: SModelElement | SModelElementSchema | string): string {
|
|
142
148
|
if (typeof input === 'string') {
|
|
143
|
-
return
|
|
149
|
+
return input as string;
|
|
144
150
|
} else {
|
|
145
|
-
return
|
|
151
|
+
return (input as any)['type'] as string;
|
|
146
152
|
}
|
|
147
153
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2019-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,19 +13,18 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Bounds, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import {
|
|
17
|
-
Bounds,
|
|
18
18
|
BoundsAware,
|
|
19
19
|
Dimension,
|
|
20
20
|
findParentByFeature,
|
|
21
21
|
isAlignable,
|
|
22
22
|
isViewport,
|
|
23
23
|
ORIGIN_POINT,
|
|
24
|
-
Point,
|
|
25
24
|
SModelElement,
|
|
26
25
|
translateBounds,
|
|
27
26
|
Viewport
|
|
28
|
-
} from
|
|
27
|
+
} from 'sprotty';
|
|
29
28
|
|
|
30
29
|
/**
|
|
31
30
|
* Return the position corresponding to this mouse event (Browser coordinates)
|
|
@@ -41,7 +40,8 @@ import {
|
|
|
41
40
|
* A mouseEvent
|
|
42
41
|
*/
|
|
43
42
|
export function getAbsolutePosition(target: SModelElement, mouseEvent: MouseEvent): Point {
|
|
44
|
-
let xPos = mouseEvent.pageX
|
|
43
|
+
let xPos = mouseEvent.pageX;
|
|
44
|
+
let yPos = mouseEvent.pageY;
|
|
45
45
|
const canvasBounds = target.root.canvasBounds;
|
|
46
46
|
xPos -= canvasBounds.x;
|
|
47
47
|
yPos -= canvasBounds.y;
|
|
@@ -56,7 +56,6 @@ export function getAbsolutePosition(target: SModelElement, mouseEvent: MouseEven
|
|
|
56
56
|
xPos /= zoom;
|
|
57
57
|
yPos /= zoom;
|
|
58
58
|
}
|
|
59
|
-
xPos;
|
|
60
59
|
|
|
61
60
|
return {
|
|
62
61
|
x: xPos,
|
|
@@ -0,0 +1,97 @@
|
|
|
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 { DefaultTypes } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { ContainerModule, interfaces } from 'inversify';
|
|
18
|
+
import {
|
|
19
|
+
CircularNode,
|
|
20
|
+
CircularNodeView,
|
|
21
|
+
configureModelElement,
|
|
22
|
+
DiamondNode,
|
|
23
|
+
DiamondNodeView,
|
|
24
|
+
ExpandButtonView,
|
|
25
|
+
ForeignObjectElement,
|
|
26
|
+
ForeignObjectView,
|
|
27
|
+
HtmlRoot,
|
|
28
|
+
HtmlRootView,
|
|
29
|
+
PreRenderedElement,
|
|
30
|
+
PreRenderedView,
|
|
31
|
+
RectangularNode,
|
|
32
|
+
RectangularNodeView,
|
|
33
|
+
SButton,
|
|
34
|
+
SCompartment,
|
|
35
|
+
SCompartmentView,
|
|
36
|
+
SEdge,
|
|
37
|
+
SGraphView,
|
|
38
|
+
ShapedPreRenderedElement,
|
|
39
|
+
SIssueMarker,
|
|
40
|
+
SLabel,
|
|
41
|
+
SLabelView,
|
|
42
|
+
SNode,
|
|
43
|
+
SPort,
|
|
44
|
+
SRoutingHandle,
|
|
45
|
+
SRoutingHandleView,
|
|
46
|
+
SvgViewportView,
|
|
47
|
+
ViewportRootElement
|
|
48
|
+
} from 'sprotty';
|
|
49
|
+
import { GLSPGraph } from '../lib/model';
|
|
50
|
+
import { GEdgeView } from './glsp-edge-view';
|
|
51
|
+
import { GIssueMarkerView } from './issue-marker-view';
|
|
52
|
+
import { RoundedCornerNodeView } from './rounded-corner-view';
|
|
53
|
+
|
|
54
|
+
interface ContainerContext {
|
|
55
|
+
bind: interfaces.Bind;
|
|
56
|
+
isBound: interfaces.IsBound;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const baseViewModule = new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
60
|
+
const context = { bind, unbind, isBound, rebind };
|
|
61
|
+
configureDefaultModelElements(context);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
export function configureDefaultModelElements(context: ContainerContext): void {
|
|
65
|
+
// HTML elements
|
|
66
|
+
configureModelElement(context, DefaultTypes.HTML, HtmlRoot, HtmlRootView);
|
|
67
|
+
|
|
68
|
+
// generic elements
|
|
69
|
+
configureModelElement(context, DefaultTypes.FOREIGN_OBJECT, ForeignObjectElement, ForeignObjectView);
|
|
70
|
+
configureModelElement(context, DefaultTypes.PRE_RENDERED, PreRenderedElement, PreRenderedView);
|
|
71
|
+
configureModelElement(context, DefaultTypes.SHAPE_PRE_RENDERED, ShapedPreRenderedElement, PreRenderedView);
|
|
72
|
+
|
|
73
|
+
// SVG elements
|
|
74
|
+
configureModelElement(context, DefaultTypes.SVG, ViewportRootElement, SvgViewportView);
|
|
75
|
+
|
|
76
|
+
// graph elements
|
|
77
|
+
configureModelElement(context, DefaultTypes.GRAPH, GLSPGraph, SGraphView);
|
|
78
|
+
configureModelElement(context, DefaultTypes.NODE, SNode, RoundedCornerNodeView);
|
|
79
|
+
configureModelElement(context, DefaultTypes.COMPARTMENT, SCompartment, SCompartmentView);
|
|
80
|
+
configureModelElement(context, DefaultTypes.COMPARTMENT_HEADER, SCompartment, SCompartmentView);
|
|
81
|
+
configureModelElement(context, DefaultTypes.EDGE, SEdge, GEdgeView);
|
|
82
|
+
configureModelElement(context, DefaultTypes.PORT, SPort, RectangularNodeView);
|
|
83
|
+
configureModelElement(context, DefaultTypes.ROUTING_POINT, SRoutingHandle, SRoutingHandleView);
|
|
84
|
+
configureModelElement(context, DefaultTypes.VOLATILE_ROUTING_POINT, SRoutingHandle, SRoutingHandleView);
|
|
85
|
+
configureModelElement(context, DefaultTypes.LABEL, SLabel, SLabelView);
|
|
86
|
+
|
|
87
|
+
// UI elements
|
|
88
|
+
configureModelElement(context, DefaultTypes.BUTTON_EXPAND, SButton, ExpandButtonView);
|
|
89
|
+
configureModelElement(context, DefaultTypes.ISSUE_MARKER, SIssueMarker, GIssueMarkerView);
|
|
90
|
+
|
|
91
|
+
// shapes
|
|
92
|
+
configureModelElement(context, DefaultTypes.NODE_CIRCLE, CircularNode, CircularNodeView);
|
|
93
|
+
configureModelElement(context, DefaultTypes.NODE_DIAMOND, DiamondNode, DiamondNodeView);
|
|
94
|
+
configureModelElement(context, DefaultTypes.NODE_RECTANGLE, RectangularNode, RectangularNodeView);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export default baseViewModule;
|
|
@@ -0,0 +1,37 @@
|
|
|
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 { VNode } from 'snabbdom';
|
|
18
|
+
import { BoundsAware, RenderingContext, SChildElement, SCompartment, ShapeView, svg } from 'sprotty/lib';
|
|
19
|
+
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
21
|
+
const JSX = { createElement: svg };
|
|
22
|
+
|
|
23
|
+
@injectable()
|
|
24
|
+
export class StructureCompartmentView extends ShapeView {
|
|
25
|
+
render(model: Readonly<SCompartment & SChildElement & BoundsAware>, context: RenderingContext): VNode | undefined {
|
|
26
|
+
if (!this.isVisible(model, context)) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<g>
|
|
32
|
+
<rect class-sprotty-comp={true} class-debug={true} x='0' y='0' width={model.size.width} height={model.size.height}></rect>
|
|
33
|
+
{context.renderChildren(model)}
|
|
34
|
+
</g>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
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 { Point } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { injectable } from 'inversify';
|
|
18
|
+
import { Classes, VNode } from 'snabbdom';
|
|
19
|
+
import { PolylineEdgeView, RenderingContext, SEdge, svg } from 'sprotty';
|
|
20
|
+
import { EdgePadding } from '../utils/argument-utils';
|
|
21
|
+
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
23
|
+
const JSX = { createElement: svg };
|
|
24
|
+
|
|
25
|
+
@injectable()
|
|
26
|
+
export class GEdgeView extends PolylineEdgeView {
|
|
27
|
+
render(edge: Readonly<SEdge>, context: RenderingContext): VNode {
|
|
28
|
+
const router = this.edgeRouterRegistry.get(edge.routerKind);
|
|
29
|
+
const route = router.route(edge);
|
|
30
|
+
if (route.length === 0) {
|
|
31
|
+
return this.renderDanglingEdge('Cannot compute route', edge, context);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<g class-sprotty-edge={true} class-mouseover={edge.hoverFeedback} {...this.addtionalClasses(edge, context)}>
|
|
36
|
+
{this.renderLine(edge, route, context)}
|
|
37
|
+
{this.renderAdditionals(edge, route, context)}
|
|
38
|
+
{context.renderChildren(edge, { route })}
|
|
39
|
+
</g>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
protected addtionalClasses(_edge: Readonly<SEdge>, _context: RenderingContext): Classes {
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
protected renderLine(_edge: SEdge, segments: Point[], _context: RenderingContext): VNode {
|
|
48
|
+
return <path d={this.createPathForSegments(segments)} />;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
protected renderAdditionals(edge: SEdge, segments: Point[], _context: RenderingContext): VNode[] {
|
|
52
|
+
// for additional padding we draw another transparent path with larger stroke width
|
|
53
|
+
const edgePadding = EdgePadding.from(edge);
|
|
54
|
+
return edgePadding ? [this.renderMouseHandle(segments, edgePadding)] : [];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
protected renderMouseHandle(segments: Point[], padding: number): VNode {
|
|
58
|
+
return (
|
|
59
|
+
<path
|
|
60
|
+
class-mouse-handle
|
|
61
|
+
d={this.createPathForSegments(segments)}
|
|
62
|
+
style-stroke-width={padding * 2}
|
|
63
|
+
style-stroke='transparent'
|
|
64
|
+
style-stroke-dasharray='none'
|
|
65
|
+
style-stroke-dashoffset='0'
|
|
66
|
+
/>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
protected createPathForSegments(segments: Point[]): string {
|
|
71
|
+
const firstPoint = segments[0];
|
|
72
|
+
let path = `M ${firstPoint.x},${firstPoint.y}`;
|
|
73
|
+
for (let i = 1; i < segments.length; i++) {
|
|
74
|
+
const p = segments[i];
|
|
75
|
+
path += ` L ${p.x},${p.y}`;
|
|
76
|
+
}
|
|
77
|
+
return path;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 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,6 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
export
|
|
17
|
-
export
|
|
18
|
-
|
|
16
|
+
export * from './base-view-module';
|
|
17
|
+
export * from './compartments';
|
|
18
|
+
export * from './glsp-edge-view';
|
|
19
|
+
export * from './issue-marker-view';
|
|
20
|
+
export * from './rounded-corner';
|
|
21
|
+
export * from './rounded-corner-view';
|