@eclipse-glsp/client 0.9.0-next.6d10f92e → 0.9.0-next.75608185
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 +9 -5
- package/css/decoration.css +3 -2
- package/css/glsp-sprotty.css +16 -7
- package/css/tool-palette.css +44 -27
- package/lib/base/action-dispatcher.d.ts +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/base/actions/focus-change-action.d.ts +1 -1
- package/lib/base/actions/focus-change-action.d.ts.map +1 -1
- package/lib/base/actions/focus-change-action.js +4 -5
- package/lib/base/actions/focus-change-action.js.map +1 -1
- package/lib/base/{args.d.ts → argumentable.d.ts} +4 -6
- package/lib/base/argumentable.d.ts.map +1 -0
- package/lib/base/{args.js → argumentable.js} +1 -1
- package/lib/base/argumentable.js.map +1 -0
- package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
- package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +5 -5
- 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 +84 -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 +50 -33
- 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/base/focus-tracker.d.ts +17 -1
- package/lib/base/focus-tracker.d.ts.map +1 -1
- package/lib/base/focus-tracker.js +19 -39
- package/lib/base/focus-tracker.js.map +1 -1
- package/lib/base/model/model-registry.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 +2 -1
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +22 -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 +8 -8
- 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 +6 -2
- 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 +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 -10
- package/lib/features/save/save-keylistener.d.ts.map +1 -0
- package/lib/features/{undo-redo/model.d.ts → save/save-keylistener.js} +16 -12
- package/lib/features/save/save-keylistener.js.map +1 -0
- package/lib/features/select/di.config.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 +21 -3
- 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 +2 -2
- 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 +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 +18 -2
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -86
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
- 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.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 +22 -6
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +225 -291
- 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 +1 -16
- package/lib/features/tools/di.config.d.ts.map +1 -1
- package/lib/features/tools/di.config.js +19 -19
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts +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-mouse-tool.d.ts +21 -4
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.js +155 -160
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
- package/lib/features/tools/marquee-tool.d.ts +18 -2
- package/lib/features/tools/marquee-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-tool.js +32 -73
- package/lib/features/tools/marquee-tool.js.map +1 -1
- package/lib/features/tools/model.d.ts +1 -1
- package/lib/features/tools/model.d.ts.map +1 -1
- package/lib/features/tools/model.js +6 -24
- package/lib/features/tools/model.js.map +1 -1
- 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 +3 -18
- package/lib/features/tools/view.d.ts.map +1 -1
- package/lib/features/tools/view.js +21 -39
- package/lib/features/tools/view.js.map +1 -1
- 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/features/viewport/di.config.d.ts +16 -1
- package/lib/features/viewport/di.config.d.ts.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 +3 -2
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -47
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
- package/lib/index.d.ts +31 -35
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +32 -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/{src/features/undo-redo/model.ts → lib/views/base-view-module.d.ts} +9 -11
- 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/default-types.d.ts +37 -0
- package/lib/views/default-types.d.ts.map +1 -0
- package/lib/views/default-types.js +47 -0
- package/lib/views/default-types.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/{features/model-source-watcher/model-source-changed-action.d.ts → views/index.d.ts} +9 -10
- package/lib/views/index.d.ts.map +1 -0
- package/lib/views/index.js +35 -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 +24 -32
- package/src/base/action-dispatcher.ts +7 -8
- package/src/base/actions/focus-change-action.ts +2 -2
- package/src/base/{args.ts → argumentable.ts} +3 -4
- package/src/base/auto-complete/auto-complete-actions.ts +2 -2
- package/src/base/auto-complete/auto-complete-widget.ts +66 -48
- package/src/base/auto-complete/validation-decorator.ts +21 -15
- package/src/base/command-stack.ts +4 -7
- package/src/base/container-modules.ts +113 -0
- package/src/base/di.config.ts +44 -27
- 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 +4 -6
- 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 +22 -21
- package/src/{features/model-source-watcher/model-source-changed-action.ts → base/view/view-registry.ts} +15 -10
- 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 +6 -7
- package/src/features/hover/hover.ts +11 -14
- package/src/features/layout/di.config.ts +32 -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 -12
- 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 +16 -13
- package/src/features/tool-feedback/di.config.ts +12 -15
- 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 +12 -12
- 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 -5
- package/src/features/tool-palette/palette-item.ts +5 -7
- package/src/features/tool-palette/tool-palette.ts +118 -110
- 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 +16 -17
- 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-mouse-tool.ts +109 -62
- package/src/features/tools/marquee-tool.ts +6 -6
- package/src/features/tools/model.ts +1 -2
- package/src/features/tools/node-creation-tool.ts +16 -23
- package/src/features/tools/view.tsx +21 -15
- 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 +4 -4
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
- package/src/index.ts +52 -38
- 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 +98 -0
- package/src/views/compartments.tsx +37 -0
- package/src/views/default-types.ts +48 -0
- package/src/views/glsp-edge-view.tsx +79 -0
- package/src/views/index.ts +22 -0
- 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.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 -62
- package/lib/features/save/save.js.map +0 -1
- package/lib/features/undo-redo/model.d.ts.map +0 -1
- package/lib/features/undo-redo/model.js +0 -22
- package/lib/features/undo-redo/model.js.map +0 -1
- package/lib/model-source/glsp-server-status.d.ts +0 -30
- package/lib/model-source/glsp-server-status.d.ts.map +0 -1
- package/lib/model-source/glsp-server-status.js +0 -61
- package/lib/model-source/glsp-server-status.js.map +0 -1
- package/lib/utils/array-utils.d.ts +0 -28
- package/lib/utils/array-utils.d.ts.map +0 -1
- package/lib/utils/array-utils.js +0 -61
- package/lib/utils/array-utils.js.map +0 -1
- package/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
- package/src/utils/array-utils.ts +0 -55
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,98 @@
|
|
|
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 { ContainerModule, interfaces } from 'inversify';
|
|
17
|
+
import {
|
|
18
|
+
CircularNode,
|
|
19
|
+
CircularNodeView,
|
|
20
|
+
configureModelElement,
|
|
21
|
+
DiamondNode,
|
|
22
|
+
DiamondNodeView,
|
|
23
|
+
ExpandButtonView,
|
|
24
|
+
ForeignObjectElement,
|
|
25
|
+
ForeignObjectView,
|
|
26
|
+
HtmlRoot,
|
|
27
|
+
HtmlRootView,
|
|
28
|
+
PreRenderedElement,
|
|
29
|
+
PreRenderedView,
|
|
30
|
+
RectangularNode,
|
|
31
|
+
RectangularNodeView,
|
|
32
|
+
SButton,
|
|
33
|
+
SCompartment,
|
|
34
|
+
SCompartmentView,
|
|
35
|
+
SEdge,
|
|
36
|
+
SGraphView,
|
|
37
|
+
ShapedPreRenderedElement,
|
|
38
|
+
SIssueMarker,
|
|
39
|
+
SLabel,
|
|
40
|
+
SLabelView,
|
|
41
|
+
SNode,
|
|
42
|
+
SPort,
|
|
43
|
+
SRoutingHandle,
|
|
44
|
+
SRoutingHandleView,
|
|
45
|
+
SvgViewportView,
|
|
46
|
+
ViewportRootElement
|
|
47
|
+
} from 'sprotty';
|
|
48
|
+
|
|
49
|
+
import { GLSPGraph } from '../lib/model';
|
|
50
|
+
import { DefaultTypes } from './default-types';
|
|
51
|
+
import { GEdgeView } from './glsp-edge-view';
|
|
52
|
+
import { GIssueMarkerView } from './issue-marker-view';
|
|
53
|
+
import { RoundedCornerNodeView } from './rounded-corner-view';
|
|
54
|
+
|
|
55
|
+
interface ContainerContext {
|
|
56
|
+
bind: interfaces.Bind;
|
|
57
|
+
isBound: interfaces.IsBound;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const baseViewModule = new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
61
|
+
const context = { bind, unbind, isBound, rebind };
|
|
62
|
+
configureDefaultModelElements(context);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
export function configureDefaultModelElements(context: ContainerContext): void {
|
|
66
|
+
// HTML elements
|
|
67
|
+
configureModelElement(context, DefaultTypes.HTML, HtmlRoot, HtmlRootView);
|
|
68
|
+
|
|
69
|
+
// generic elements
|
|
70
|
+
configureModelElement(context, DefaultTypes.FOREIGN_OBJECT, ForeignObjectElement, ForeignObjectView);
|
|
71
|
+
configureModelElement(context, DefaultTypes.PRE_RENDERED, PreRenderedElement, PreRenderedView);
|
|
72
|
+
configureModelElement(context, DefaultTypes.SHAPE_PRE_RENDERED, ShapedPreRenderedElement, PreRenderedView);
|
|
73
|
+
|
|
74
|
+
// SVG elements
|
|
75
|
+
configureModelElement(context, DefaultTypes.SVG, ViewportRootElement, SvgViewportView);
|
|
76
|
+
|
|
77
|
+
// graph elements
|
|
78
|
+
configureModelElement(context, DefaultTypes.GRAPH, GLSPGraph, SGraphView);
|
|
79
|
+
configureModelElement(context, DefaultTypes.NODE, SNode, RoundedCornerNodeView);
|
|
80
|
+
configureModelElement(context, DefaultTypes.COMPARTMENT, SCompartment, SCompartmentView);
|
|
81
|
+
configureModelElement(context, DefaultTypes.COMPARTMENT_HEADER, SCompartment, SCompartmentView);
|
|
82
|
+
configureModelElement(context, DefaultTypes.EDGE, SEdge, GEdgeView);
|
|
83
|
+
configureModelElement(context, DefaultTypes.PORT, SPort, RectangularNodeView);
|
|
84
|
+
configureModelElement(context, DefaultTypes.ROUTING_POINT, SRoutingHandle, SRoutingHandleView);
|
|
85
|
+
configureModelElement(context, DefaultTypes.VOLATILE_ROUTING_POINT, SRoutingHandle, SRoutingHandleView);
|
|
86
|
+
configureModelElement(context, DefaultTypes.LABEL, SLabel, SLabelView);
|
|
87
|
+
|
|
88
|
+
// UI elements
|
|
89
|
+
configureModelElement(context, DefaultTypes.BUTTON_EXPAND, SButton, ExpandButtonView);
|
|
90
|
+
configureModelElement(context, DefaultTypes.ISSUE_MARKER, SIssueMarker, GIssueMarkerView);
|
|
91
|
+
|
|
92
|
+
// shapes
|
|
93
|
+
configureModelElement(context, DefaultTypes.NODE_CIRCLE, CircularNode, CircularNodeView);
|
|
94
|
+
configureModelElement(context, DefaultTypes.NODE_DIAMOND, DiamondNode, DiamondNodeView);
|
|
95
|
+
configureModelElement(context, DefaultTypes.NODE_RECTANGLE, RectangularNode, RectangularNodeView);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
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,48 @@
|
|
|
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
|
+
|
|
17
|
+
export namespace DefaultTypes {
|
|
18
|
+
// HTML elements
|
|
19
|
+
export const HTML = 'html';
|
|
20
|
+
|
|
21
|
+
// generic types
|
|
22
|
+
export const FOREIGN_OBJECT = 'foreign-object';
|
|
23
|
+
export const PRE_RENDERED = 'pre-rendered';
|
|
24
|
+
export const SHAPE_PRE_RENDERED = 'shape-pre-rendered';
|
|
25
|
+
|
|
26
|
+
// SVG elements
|
|
27
|
+
export const SVG = 'svg';
|
|
28
|
+
|
|
29
|
+
// graph types
|
|
30
|
+
export const GRAPH = 'graph';
|
|
31
|
+
export const NODE = 'node';
|
|
32
|
+
export const COMPARTMENT = 'comp';
|
|
33
|
+
export const COMPARTMENT_HEADER = 'comp:header';
|
|
34
|
+
export const EDGE = 'edge';
|
|
35
|
+
export const PORT = 'port';
|
|
36
|
+
export const ROUTING_POINT = 'routing-point';
|
|
37
|
+
export const VOLATILE_ROUTING_POINT = `volatile-${ROUTING_POINT}`;
|
|
38
|
+
export const LABEL = 'label';
|
|
39
|
+
|
|
40
|
+
// UI elements
|
|
41
|
+
export const BUTTON_EXPAND = 'button:expand';
|
|
42
|
+
export const ISSUE_MARKER = 'marker';
|
|
43
|
+
|
|
44
|
+
// shapes
|
|
45
|
+
export const NODE_CIRCLE = 'node:circle';
|
|
46
|
+
export const NODE_RECTANGLE = 'node:rectangle';
|
|
47
|
+
export const NODE_DIAMOND = 'node:diamond';
|
|
48
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
export * from './base-view-module';
|
|
17
|
+
export * from './default-types';
|
|
18
|
+
export * from './glsp-edge-view';
|
|
19
|
+
export * from './issue-marker-view';
|
|
20
|
+
export * from './rounded-corner';
|
|
21
|
+
export * from './rounded-corner-view';
|
|
22
|
+
export * from './compartments';
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2020-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
|
+
/* eslint-disable max-len */
|
|
17
|
+
import { injectable } from 'inversify';
|
|
18
|
+
import { VNode } from 'snabbdom';
|
|
19
|
+
import { IssueMarkerView, RenderingContext, setClass, SIssueMarker, SIssueSeverity, svg } from 'sprotty';
|
|
20
|
+
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
22
|
+
const JSX = { createElement: svg };
|
|
23
|
+
|
|
24
|
+
@injectable()
|
|
25
|
+
export class GIssueMarkerView extends IssueMarkerView {
|
|
26
|
+
render(marker: SIssueMarker, _context: RenderingContext): VNode {
|
|
27
|
+
const maxSeverity = super.getMaxSeverity(marker);
|
|
28
|
+
const group = (
|
|
29
|
+
<g class-sprotty-issue={true}>
|
|
30
|
+
<g>
|
|
31
|
+
{this.getGlspIssueMarkerBackground(maxSeverity)}
|
|
32
|
+
<path d={this.getGlspIssueMarkerPath(maxSeverity)} />
|
|
33
|
+
</g>
|
|
34
|
+
</g>
|
|
35
|
+
);
|
|
36
|
+
setClass(group, 'sprotty-' + maxSeverity, true);
|
|
37
|
+
return group;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
protected getGlspIssueMarkerBackground(severity: SIssueSeverity): VNode {
|
|
41
|
+
switch (severity) {
|
|
42
|
+
case 'warning':
|
|
43
|
+
return <polygon class-sprotty-issue-background={true} points='8 2, 15.9 14.9, 0.2 14.9' />;
|
|
44
|
+
case 'error':
|
|
45
|
+
case 'info':
|
|
46
|
+
return <circle class-sprotty-issue-background={true} r={this.radius} cx={this.radius} cy={this.radius} />;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
protected get radius(): number {
|
|
51
|
+
return 8; // var(--theia-icon-size)=16px => 16/2=8
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
protected getGlspIssueMarkerPath(severity: SIssueSeverity): string {
|
|
55
|
+
switch (severity) {
|
|
56
|
+
// paths used here are svg versions of codicons, resized to var(--theia-icon-size) 16px
|
|
57
|
+
case 'error': // 'codicon-error'
|
|
58
|
+
return 'm 8.8527788,0.00699568 c 1.8523692,0.115773 3.5889642,1.04195762 4.8624692,2.31546152 1.505048,1.620823 2.31546,3.5889653 2.31546,5.9044268 0,1.852369 -0.694637,3.588965 -1.852367,5.094015 -1.157733,1.389277 -2.778554,2.431235 -4.6309235,2.778554 C 7.6950478,16.446772 5.8426784,16.215226 4.2218552,15.289042 2.6010319,14.362857 1.3275281,12.97358 0.63288942,11.236984 -0.06174907,9.5003878 -0.17752216,7.5322456 0.4013433,5.7956494 0.98020876,3.9432802 2.0221665,2.4382302 3.6429898,1.3962725 5.14804,0.35431486 7.0004094,-0.10877742 8.8527788,0.00699568 Z M 9.4316445,14.941722 c 1.5050505,-0.347319 2.8943275,-1.15773 3.9362845,-2.431234 0.926185,-1.273504 1.50505,-2.778554 1.389277,-4.3993771 0,-1.8523692 -0.69464,-3.7047384 -1.968142,-4.9782422 C 11.631331,1.9751379 10.242054,1.2804995 8.6212324,1.1647264 7.1161824,1.0489533 5.4953592,1.3962725 4.2218552,2.3224572 2.9483511,3.2486418 2.0221665,4.5221456 1.5590742,6.1429686 c -0.4630923,1.50505 -0.4630923,3.1258731 0.2315462,4.6309234 0.6946384,1.50505 1.7365963,2.66278 3.1258734,3.473192 1.3892769,0.810411 3.0101002,1.041958 4.5151507,0.694638 z M 8.042367,7.5322456 10.82092,4.6379187 11.631331,5.4483302 8.8527788,8.3426571 11.631331,11.236984 10.82092,12.047395 8.042367,9.1530686 5.2638128,12.047395 4.4534013,11.236984 7.2319555,8.3426571 4.4534013,5.4483302 5.2638128,4.6379187 Z';
|
|
59
|
+
case 'warning': // 'codicon-warning'
|
|
60
|
+
return 'M 7.5587159,0.61312771 H 8.565869 L 16.050847,14.644601 15.54727,15.491525 H 0.55442396 L 0.05084746,14.644601 Z M 8.0622924,2.0780776 1.5157974,14.347033 H 14.585897 Z M 8.7776,13.202541 V 12.058049 H 7.3469848 v 1.144492 z M 7.3469848,10.913557 V 6.3355883 H 8.7776 v 4.5779687 z';
|
|
61
|
+
case 'info': // 'codicon-info'
|
|
62
|
+
return 'M 8.7624795,0.01729008 A 7.8878137,7.8878137 0 0 1 13.625085,2.3592747 8.1894066,8.1894066 0 0 1 14.158672,13.251418 7.9458123,7.9458123 0 0 1 4.2061071,15.26977 8.1198082,8.1198082 0 0 1 0.58699265,11.209866 8.259005,8.259005 0 0 1 0.32019895,5.7463948 8.1198082,8.1198082 0 0 1 3.533323,1.3500986 7.8878137,7.8878137 0 0 1 8.7624795,0.01729008 Z M 9.3099868,14.921778 A 6.8322386,6.8322386 0 0 0 13.265493,12.520635 7.0410337,7.0410337 0 0 0 12.801504,3.1712556 6.7510406,6.7510406 0 0 0 4.1829077,2.3128758 7.029434,7.029434 0 0 0 4.762894,14.248994 6.7394408,6.7394408 0 0 0 9.3099868,14.921778 Z M 7.3786322,5.7811939 H 8.8285979 V 4.6212213 H 7.3786322 Z M 8.8285979,6.9411665 V 11.581057 H 7.3786322 V 6.9411665 Z';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
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 { Classes, VNode } from 'snabbdom';
|
|
18
|
+
import { Hoverable, RectangularNodeView, RenderingContext, Selectable, SNode, SPort, SShapeElement, svg } from 'sprotty';
|
|
19
|
+
|
|
20
|
+
import { CornerRadius } from '../utils/argument-utils';
|
|
21
|
+
import { RoundedCornerWrapper } from './rounded-corner';
|
|
22
|
+
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
24
|
+
const JSX = { createElement: svg };
|
|
25
|
+
|
|
26
|
+
@injectable()
|
|
27
|
+
export class RoundedCornerNodeView extends RectangularNodeView {
|
|
28
|
+
render(node: Readonly<SShapeElement & Hoverable & Selectable>, context: RenderingContext): VNode | undefined {
|
|
29
|
+
const cornerRadius = CornerRadius.from(node);
|
|
30
|
+
if (!cornerRadius) {
|
|
31
|
+
return this.renderWithoutRadius(node, context);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const wrapper = new RoundedCornerWrapper(node, cornerRadius);
|
|
35
|
+
return (
|
|
36
|
+
<g class-node={true}>
|
|
37
|
+
<defs>
|
|
38
|
+
<clipPath id={toClipPathId(node)}>
|
|
39
|
+
<path d={this.renderPath(wrapper, context, this.getClipPathInsets() || 0)}></path>
|
|
40
|
+
</clipPath>
|
|
41
|
+
</defs>
|
|
42
|
+
{this.renderPathNode(wrapper, context)}
|
|
43
|
+
{context.renderChildren(node)}
|
|
44
|
+
</g>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
protected renderWithoutRadius(node: Readonly<SShapeElement & Hoverable & Selectable>, context: RenderingContext): VNode | undefined {
|
|
49
|
+
return super.render(node, context);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
protected getClipPathInsets(): number | undefined {
|
|
53
|
+
return 2;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
protected renderPathNode(wrapper: Readonly<RoundedCornerWrapper>, context: RenderingContext): VNode {
|
|
57
|
+
return (
|
|
58
|
+
<path
|
|
59
|
+
d={this.renderPath(wrapper, context, 0)}
|
|
60
|
+
class-sprotty-node={wrapper.element instanceof SNode}
|
|
61
|
+
class-sprotty-port={wrapper.element instanceof SPort}
|
|
62
|
+
class-mouseover={wrapper.element.hoverFeedback}
|
|
63
|
+
class-selected={wrapper.element.selected}
|
|
64
|
+
{...this.additionalClasses(wrapper.element, context)}
|
|
65
|
+
/>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
protected additionalClasses(_node: Readonly<SShapeElement & Hoverable & Selectable>, _context: RenderingContext): Classes {
|
|
70
|
+
return {};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
protected renderPath(wrapper: Readonly<RoundedCornerWrapper>, _context: RenderingContext, inset: number): string {
|
|
74
|
+
// Calcualte length of straight line segments
|
|
75
|
+
const topLineLength = Math.max(0, wrapper.size.width - wrapper.cornerRadius.topLeft - wrapper.cornerRadius.topRight);
|
|
76
|
+
const rightLineLength = Math.max(0, wrapper.size.height - wrapper.cornerRadius.topRight - wrapper.cornerRadius.bottomRight);
|
|
77
|
+
const bottomLineLength = Math.max(0, wrapper.size.width - wrapper.cornerRadius.bottomLeft - wrapper.cornerRadius.bottomRight);
|
|
78
|
+
|
|
79
|
+
const path =
|
|
80
|
+
`M${0 + inset},${0 + wrapper.topLeftCorner.radiusY}` +
|
|
81
|
+
`q${0},${-(wrapper.topLeftCorner.radiusY - inset)} ${wrapper.topLeftCorner.radiusX - inset},${-(
|
|
82
|
+
wrapper.topLeftCorner.radiusY - inset
|
|
83
|
+
)}` +
|
|
84
|
+
`h${topLineLength}` +
|
|
85
|
+
`q${wrapper.topRightCorner.radiusX - inset},0 ${wrapper.topRightCorner.radiusX - inset},${
|
|
86
|
+
wrapper.topRightCorner.radiusY - inset
|
|
87
|
+
}` +
|
|
88
|
+
`v${rightLineLength}` +
|
|
89
|
+
`q0,${wrapper.bottomRightCorner.radiusY - inset} ${-(wrapper.bottomRightCorner.radiusX - inset)},${
|
|
90
|
+
wrapper.bottomRightCorner.radiusY - inset
|
|
91
|
+
}` +
|
|
92
|
+
`h${-bottomLineLength}` +
|
|
93
|
+
`q${-(wrapper.bottomLeftCorner.radiusX - inset)},0 ${-(wrapper.bottomLeftCorner.radiusX - inset)},${-(
|
|
94
|
+
wrapper.bottomLeftCorner.radiusY - inset
|
|
95
|
+
)}` +
|
|
96
|
+
'z ';
|
|
97
|
+
return path;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export function toClipPathId(node: Readonly<SShapeElement & Hoverable & Selectable>): string {
|
|
102
|
+
return `${node.id}_clip_path`;
|
|
103
|
+
}
|