@eclipse-glsp/client 0.9.0-rc-01 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +642 -277
- package/README.md +4 -2
- package/css/command-palette.css +9 -5
- package/css/decoration.css +3 -2
- package/css/glsp-sprotty.css +16 -7
- package/css/tool-palette.css +44 -27
- package/lib/base/action-dispatcher.d.ts +17 -1
- package/lib/base/action-dispatcher.d.ts.map +1 -1
- package/lib/base/action-dispatcher.js +41 -61
- package/lib/base/action-dispatcher.js.map +1 -1
- package/lib/base/actions/focus-change-action.d.ts +1 -1
- package/lib/base/actions/focus-change-action.d.ts.map +1 -1
- package/lib/base/actions/focus-change-action.js +4 -5
- package/lib/base/actions/focus-change-action.js.map +1 -1
- package/lib/base/{args.d.ts → argumentable.d.ts} +3 -5
- package/lib/base/argumentable.d.ts.map +1 -0
- package/lib/base/{args.js → argumentable.js} +1 -1
- package/lib/base/argumentable.js.map +1 -0
- package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
- package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +3 -3
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +119 -153
- package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
- package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
- package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
- package/lib/base/auto-complete/validation-decorator.js +44 -65
- package/lib/base/auto-complete/validation-decorator.js.map +1 -1
- package/lib/base/command-stack.d.ts.map +1 -1
- package/lib/base/command-stack.js +19 -37
- package/lib/base/command-stack.js.map +1 -1
- package/lib/base/container-modules.d.ts +40 -0
- package/lib/base/container-modules.d.ts.map +1 -0
- package/lib/base/container-modules.js +100 -0
- package/lib/base/container-modules.js.map +1 -0
- package/lib/base/di.config.d.ts +12 -2
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +43 -27
- package/lib/base/di.config.js.map +1 -1
- package/lib/base/drag-aware-mouse-listener.d.ts +3 -2
- package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
- package/lib/base/drag-aware-mouse-listener.js +23 -62
- package/lib/base/drag-aware-mouse-listener.js.map +1 -1
- package/lib/base/{editor-context.d.ts → editor-context-service.d.ts} +18 -22
- package/lib/base/editor-context-service.d.ts.map +1 -0
- package/lib/base/editor-context-service.js +109 -0
- package/lib/base/editor-context-service.js.map +1 -0
- package/lib/base/focus-tracker.d.ts +17 -1
- package/lib/base/focus-tracker.d.ts.map +1 -1
- package/lib/base/focus-tracker.js +19 -39
- package/lib/base/focus-tracker.js.map +1 -1
- package/lib/base/model/model-registry.js +10 -28
- package/lib/base/model/model-registry.js.map +1 -1
- package/lib/base/model/update-model-command.d.ts +19 -5
- package/lib/base/model/update-model-command.d.ts.map +1 -1
- package/lib/base/model/update-model-command.js +69 -94
- package/lib/base/model/update-model-command.js.map +1 -1
- package/lib/base/model-initialization-constraint.d.ts +16 -1
- package/lib/base/model-initialization-constraint.d.ts.map +1 -1
- package/lib/base/model-initialization-constraint.js +34 -54
- package/lib/base/model-initialization-constraint.js.map +1 -1
- package/lib/base/selection-clearing-mouse-listener.js +10 -28
- package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
- package/lib/base/source-uri-aware.js +2 -5
- package/lib/base/source-uri-aware.js.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +58 -140
- package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
- package/lib/base/types.d.ts +3 -1
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +4 -2
- package/lib/base/types.js.map +1 -1
- package/lib/base/view/view-registry.js +10 -28
- package/lib/base/view/view-registry.js.map +1 -1
- package/lib/features/change-bounds/model.d.ts +3 -1
- package/lib/features/change-bounds/model.d.ts.map +1 -1
- package/lib/features/change-bounds/model.js +20 -31
- package/lib/features/change-bounds/model.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts +17 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +28 -42
- package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
- package/lib/features/change-bounds/snap.d.ts +17 -1
- package/lib/features/change-bounds/snap.d.ts.map +1 -1
- package/lib/features/change-bounds/snap.js +13 -39
- package/lib/features/change-bounds/snap.js.map +1 -1
- package/lib/features/command-palette/command-palette-tool.js +30 -38
- package/lib/features/command-palette/command-palette-tool.js.map +1 -1
- package/lib/features/command-palette/di.config.js +6 -6
- package/lib/features/command-palette/di.config.js.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.d.ts +18 -2
- package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.js +28 -33
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.js +20 -68
- package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
- package/lib/features/context-menu/di.config.d.ts +1 -1
- package/lib/features/context-menu/di.config.d.ts.map +1 -1
- package/lib/features/context-menu/di.config.js +8 -8
- package/lib/features/context-menu/di.config.js.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.d.ts +18 -2
- package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.js +30 -31
- package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
- package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.d.ts +19 -2
- package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.js +70 -70
- package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
- package/lib/features/copy-paste/di.config.d.ts +1 -1
- package/lib/features/copy-paste/di.config.d.ts.map +1 -1
- package/lib/features/copy-paste/di.config.js +11 -11
- package/lib/features/copy-paste/di.config.js.map +1 -1
- package/lib/features/decoration/decoration-placer.d.ts +17 -1
- package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
- package/lib/features/decoration/decoration-placer.js +12 -46
- package/lib/features/decoration/decoration-placer.js.map +1 -1
- package/lib/features/decoration/di.config.js +4 -4
- package/lib/features/decoration/di.config.js.map +1 -1
- package/lib/features/edit-label/di.config.js +7 -7
- package/lib/features/edit-label/di.config.js.map +1 -1
- package/lib/features/edit-label/edit-label-tool.js +20 -43
- package/lib/features/edit-label/edit-label-tool.js.map +1 -1
- package/lib/features/edit-label/edit-label-validator.d.ts +16 -1
- package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-validator.js +40 -62
- package/lib/features/edit-label/edit-label-validator.js.map +1 -1
- package/lib/features/hints/di.config.d.ts +0 -15
- package/lib/features/hints/di.config.d.ts.map +1 -1
- package/lib/features/hints/di.config.js +9 -9
- package/lib/features/hints/di.config.js.map +1 -1
- package/lib/features/hints/model.d.ts +3 -2
- package/lib/features/hints/model.d.ts.map +1 -1
- package/lib/features/hints/model.js.map +1 -1
- package/lib/features/hints/type-hints.d.ts +17 -45
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +81 -140
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.d.ts +1 -1
- package/lib/features/hover/di.config.d.ts.map +1 -1
- package/lib/features/hover/di.config.js +8 -8
- package/lib/features/hover/di.config.js.map +1 -1
- package/lib/features/hover/hover.d.ts +17 -1
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +37 -77
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts +1 -1
- package/lib/features/layout/di.config.d.ts.map +1 -1
- package/lib/features/layout/di.config.js +11 -7
- package/lib/features/layout/di.config.js.map +1 -1
- package/lib/features/layout/freeform-layout.d.ts +16 -0
- package/lib/features/layout/freeform-layout.d.ts.map +1 -0
- package/lib/features/layout/freeform-layout.js +107 -0
- package/lib/features/layout/freeform-layout.js.map +1 -0
- package/lib/features/layout/layout-commands.d.ts +19 -3
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +189 -265
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts +0 -15
- package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.spec.js +95 -89
- package/lib/features/layout/layout-commands.spec.js.map +1 -1
- package/lib/features/layout/vbox-layout.d.ts +25 -0
- package/lib/features/layout/vbox-layout.d.ts.map +1 -0
- package/lib/features/layout/vbox-layout.js +188 -0
- package/lib/features/layout/vbox-layout.js.map +1 -0
- package/lib/features/model-source-watcher/di.config.d.ts +0 -15
- package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
- package/lib/features/model-source-watcher/di.config.js +7 -7
- package/lib/features/model-source-watcher/di.config.js.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -46
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
- package/lib/features/mouse-tool/di.config.js +5 -5
- package/lib/features/mouse-tool/di.config.js.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts +2 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +70 -215
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/di.config.d.ts +0 -15
- package/lib/features/navigation/di.config.d.ts.map +1 -1
- package/lib/features/navigation/di.config.js +11 -10
- package/lib/features/navigation/di.config.js.map +1 -1
- package/lib/features/navigation/navigation-action-handler.d.ts +19 -38
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +118 -254
- package/lib/features/navigation/navigation-action-handler.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
- package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.js +46 -188
- package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts +0 -15
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +26 -26
- package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
- package/lib/features/rank/model.d.ts +1 -1
- package/lib/features/rank/model.js +2 -2
- package/lib/features/rank/model.js.map +1 -1
- package/lib/features/reconnect/model.d.ts +1 -1
- package/lib/features/reconnect/model.d.ts.map +1 -1
- package/lib/features/reconnect/model.js +9 -27
- package/lib/features/reconnect/model.js.map +1 -1
- package/lib/features/save/di.config.d.ts +1 -1
- package/lib/features/save/di.config.d.ts.map +1 -1
- package/lib/features/save/di.config.js +6 -6
- package/lib/features/save/di.config.js.map +1 -1
- package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -10
- package/lib/features/save/save-keylistener.d.ts.map +1 -0
- package/lib/features/{undo-redo/model.d.ts → save/save-keylistener.js} +16 -12
- package/lib/features/save/save-keylistener.js.map +1 -0
- package/lib/features/select/di.config.js +11 -11
- package/lib/features/select/di.config.js.map +1 -1
- package/lib/features/select/select-feedback-action.d.ts.map +1 -1
- package/lib/features/select/select-feedback-action.js +45 -71
- package/lib/features/select/select-feedback-action.js.map +1 -1
- package/lib/features/select/select-mouse-listener.js +7 -23
- package/lib/features/select/select-mouse-listener.js.map +1 -1
- package/lib/features/select/selection-service.d.ts +17 -1
- package/lib/features/select/selection-service.d.ts.map +1 -1
- package/lib/features/select/selection-service.js +134 -236
- package/lib/features/select/selection-service.js.map +1 -1
- package/lib/features/select/selection-service.spec.js +96 -139
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +19 -2
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +102 -142
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts +17 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +69 -118
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +20 -2
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +37 -81
- package/lib/features/tool-feedback/css-feedback.js.map +1 -1
- package/lib/features/tool-feedback/di.config.d.ts +1 -1
- package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
- package/lib/features/tool-feedback/di.config.js +27 -27
- package/lib/features/tool-feedback/di.config.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +18 -2
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -208
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +19 -3
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
- package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +17 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -84
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/model.d.ts +1 -1
- package/lib/features/tool-feedback/model.js +11 -27
- package/lib/features/tool-feedback/model.js.map +1 -1
- package/lib/features/tool-feedback/view.d.ts +21 -5
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +29 -51
- package/lib/features/tool-feedback/view.js.map +1 -1
- package/lib/features/tool-palette/di.config.d.ts +1 -1
- package/lib/features/tool-palette/di.config.d.ts.map +1 -1
- package/lib/features/tool-palette/di.config.js +6 -6
- package/lib/features/tool-palette/di.config.js.map +1 -1
- package/lib/features/tool-palette/palette-item.d.ts +2 -3
- package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
- package/lib/features/tool-palette/palette-item.js +6 -6
- package/lib/features/tool-palette/palette-item.js.map +1 -1
- package/lib/features/tool-palette/tool-palette.d.ts +19 -3
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +199 -269
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.d.ts +18 -2
- package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
- package/lib/features/tools/base-glsp-tool.js +37 -59
- package/lib/features/tools/base-glsp-tool.js.map +1 -1
- package/lib/features/tools/change-bounds-tool.d.ts +20 -3
- package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
- package/lib/features/tools/change-bounds-tool.js +192 -241
- package/lib/features/tools/change-bounds-tool.js.map +1 -1
- package/lib/features/tools/delete-tool.d.ts +17 -1
- package/lib/features/tools/delete-tool.d.ts.map +1 -1
- package/lib/features/tools/delete-tool.js +71 -104
- package/lib/features/tools/delete-tool.js.map +1 -1
- package/lib/features/tools/di.config.d.ts +0 -15
- package/lib/features/tools/di.config.d.ts.map +1 -1
- package/lib/features/tools/di.config.js +19 -19
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts +17 -2
- package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation-tool.js +62 -87
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts +17 -1
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +112 -183
- package/lib/features/tools/edge-edit-tool.js.map +1 -1
- package/lib/features/tools/marquee-behavior.d.ts +42 -0
- package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
- package/lib/features/tools/marquee-behavior.js +128 -0
- package/lib/features/tools/marquee-behavior.js.map +1 -0
- package/{src/features/undo-redo/model.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -12
- package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
- package/lib/features/tools/marquee-behavior.spec.js +165 -0
- package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
- package/lib/features/tools/marquee-mouse-tool.d.ts +24 -13
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.js +86 -195
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
- package/lib/features/tools/marquee-tool.d.ts +17 -1
- package/lib/features/tools/marquee-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-tool.js +32 -73
- package/lib/features/tools/marquee-tool.js.map +1 -1
- package/lib/features/tools/model.js +4 -22
- package/lib/features/tools/model.js.map +1 -1
- package/lib/features/tools/node-creation-tool.d.ts +17 -2
- package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/node-creation-tool.js +60 -90
- package/lib/features/tools/node-creation-tool.js.map +1 -1
- package/lib/features/tools/view.d.ts +1 -1
- package/lib/features/tools/view.d.ts.map +1 -1
- package/lib/features/tools/view.js +12 -31
- package/lib/features/tools/view.js.map +1 -1
- package/lib/features/validation/di.config.js +12 -12
- package/lib/features/validation/di.config.js.map +1 -1
- package/lib/features/validation/issue-marker.d.ts +2 -2
- package/lib/features/validation/issue-marker.d.ts.map +1 -1
- package/lib/features/validation/issue-marker.js +17 -55
- package/lib/features/validation/issue-marker.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts +17 -1
- package/lib/features/validation/marker-navigator.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.js +131 -164
- package/lib/features/validation/marker-navigator.js.map +1 -1
- package/lib/features/validation/marker-navigator.spec.d.ts +0 -15
- package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.spec.js +83 -77
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +18 -29
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +147 -300
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/features/viewport/di.config.js +10 -10
- package/lib/features/viewport/di.config.js.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +18 -2
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -47
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
- package/lib/index.d.ts +9 -15
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +29 -34
- package/lib/index.js.map +1 -1
- package/lib/lib/model.js +11 -27
- package/lib/lib/model.js.map +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts +3 -5
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +60 -121
- package/lib/model-source/glsp-diagram-server.js.map +1 -1
- package/lib/protocol-reexport.d.ts +45 -0
- package/lib/protocol-reexport.d.ts.map +1 -0
- package/lib/protocol-reexport.js +75 -0
- package/lib/protocol-reexport.js.map +1 -0
- package/lib/utils/argument-utils.d.ts +3 -3
- package/lib/utils/argument-utils.d.ts.map +1 -1
- package/lib/utils/argument-utils.js +32 -97
- package/lib/utils/argument-utils.js.map +1 -1
- package/lib/utils/html-utils.js +2 -2
- package/lib/utils/html-utils.js.map +1 -1
- package/lib/utils/layout-utils.d.ts +3 -2
- package/lib/utils/layout-utils.d.ts.map +1 -1
- package/lib/utils/layout-utils.js +5 -5
- package/lib/utils/layout-utils.js.map +1 -1
- package/lib/utils/marker.d.ts +0 -38
- package/lib/utils/marker.d.ts.map +1 -1
- package/lib/utils/marker.js +14 -61
- package/lib/utils/marker.js.map +1 -1
- package/lib/utils/smodel-util.d.ts +4 -4
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +16 -65
- package/lib/utils/smodel-util.js.map +1 -1
- package/lib/utils/viewpoint-util.d.ts +3 -2
- package/lib/utils/viewpoint-util.d.ts.map +1 -1
- package/lib/utils/viewpoint-util.js +15 -30
- package/lib/utils/viewpoint-util.js.map +1 -1
- package/lib/views/base-view-module.d.ts +0 -15
- package/lib/views/base-view-module.d.ts.map +1 -1
- package/lib/views/base-view-module.js +28 -28
- package/lib/views/base-view-module.js.map +1 -1
- package/lib/views/compartments.d.ts +6 -0
- package/lib/views/compartments.d.ts.map +1 -0
- package/lib/views/compartments.js +43 -0
- package/lib/views/compartments.js.map +1 -0
- package/lib/views/glsp-edge-view.d.ts +18 -3
- package/lib/views/glsp-edge-view.d.ts.map +1 -1
- package/lib/views/glsp-edge-view.js +32 -77
- package/lib/views/glsp-edge-view.js.map +1 -1
- package/lib/views/index.d.ts +1 -1
- package/lib/views/index.d.ts.map +1 -1
- package/lib/views/index.js +1 -1
- package/lib/views/index.js.map +1 -1
- package/lib/views/issue-marker-view.d.ts +2 -1
- package/lib/views/issue-marker-view.d.ts.map +1 -1
- package/lib/views/issue-marker-view.js +36 -50
- package/lib/views/issue-marker-view.js.map +1 -1
- package/lib/views/rounded-corner-view.d.ts +2 -3
- package/lib/views/rounded-corner-view.d.ts.map +1 -1
- package/lib/views/rounded-corner-view.js +40 -70
- package/lib/views/rounded-corner-view.js.map +1 -1
- package/lib/views/rounded-corner.d.ts +2 -1
- package/lib/views/rounded-corner.d.ts.map +1 -1
- package/lib/views/rounded-corner.js +44 -65
- package/lib/views/rounded-corner.js.map +1 -1
- package/package.json +12 -19
- package/src/base/action-dispatcher.ts +3 -4
- package/src/base/actions/focus-change-action.ts +2 -2
- package/src/base/{args.ts → argumentable.ts} +2 -3
- package/src/base/auto-complete/auto-complete-actions.ts +1 -1
- package/src/base/auto-complete/auto-complete-widget.ts +37 -25
- package/src/base/auto-complete/validation-decorator.ts +12 -11
- package/src/base/command-stack.ts +2 -5
- package/src/base/container-modules.ts +112 -0
- package/src/base/di.config.ts +33 -18
- package/src/base/drag-aware-mouse-listener.ts +3 -4
- package/src/base/{editor-context.ts → editor-context-service.ts} +4 -31
- package/src/base/focus-tracker.ts +2 -4
- package/src/base/model/update-model-command.ts +8 -16
- package/src/base/model-initialization-constraint.ts +3 -2
- package/src/base/tool-manager/glsp-tool-manager.ts +3 -5
- package/src/base/types.ts +4 -2
- package/src/features/change-bounds/model.ts +15 -5
- package/src/features/change-bounds/movement-restrictor.ts +17 -9
- package/src/features/change-bounds/snap.ts +3 -2
- package/src/features/command-palette/server-command-palette-provider.ts +11 -9
- package/src/features/context-menu/delete-element-context-menu.ts +3 -4
- package/src/features/context-menu/di.config.ts +11 -9
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +4 -3
- package/src/features/context-menu/server-context-menu-provider.ts +10 -7
- package/src/features/copy-paste/copy-paste-context-menu.ts +59 -30
- package/src/features/copy-paste/copy-paste-handler.ts +18 -10
- package/src/features/copy-paste/di.config.ts +2 -3
- package/src/features/decoration/decoration-placer.ts +3 -13
- package/src/features/edit-label/edit-label-validator.ts +11 -12
- package/src/features/hints/di.config.ts +2 -3
- package/src/features/hints/model.ts +4 -3
- package/src/features/hints/type-hints.ts +23 -90
- package/src/features/hover/di.config.ts +1 -2
- package/src/features/hover/hover.ts +2 -7
- package/src/features/layout/di.config.ts +8 -4
- package/src/features/layout/freeform-layout.ts +133 -0
- package/src/features/layout/layout-commands.spec.ts +82 -64
- package/src/features/layout/layout-commands.ts +43 -34
- package/src/features/layout/vbox-layout.ts +256 -0
- package/src/features/model-source-watcher/di.config.ts +3 -4
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +11 -7
- package/src/features/mouse-tool/mouse-tool.ts +33 -23
- package/src/features/navigation/di.config.ts +4 -10
- package/src/features/navigation/navigation-action-handler.ts +33 -69
- package/src/features/navigation/navigation-target-resolver.spec.ts +3 -7
- package/src/features/navigation/navigation-target-resolver.ts +13 -91
- package/src/features/rank/model.ts +2 -2
- package/src/features/reconnect/model.ts +2 -3
- package/src/features/save/di.config.ts +2 -3
- package/src/features/save/{save.ts → save-keylistener.ts} +3 -11
- package/src/features/select/select-feedback-action.ts +4 -6
- package/src/features/select/selection-service.spec.ts +11 -6
- package/src/features/select/selection-service.ts +14 -10
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +26 -20
- package/src/features/tool-feedback/creation-tool-feedback.ts +17 -10
- package/src/features/tool-feedback/css-feedback.ts +9 -6
- package/src/features/tool-feedback/di.config.ts +2 -5
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +19 -18
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +8 -9
- package/src/features/tool-feedback/marquee-tool-feedback.ts +4 -5
- package/src/features/tool-feedback/model.ts +1 -2
- package/src/features/tool-feedback/view.tsx +17 -11
- package/src/features/tool-palette/di.config.ts +2 -4
- package/src/features/tool-palette/palette-item.ts +4 -6
- package/src/features/tool-palette/tool-palette.ts +44 -40
- package/src/features/tools/base-glsp-tool.ts +4 -4
- package/src/features/tools/change-bounds-tool.ts +64 -34
- package/src/features/tools/delete-tool.ts +9 -6
- package/src/features/tools/di.config.ts +2 -3
- package/src/features/tools/edge-creation-tool.ts +5 -10
- package/src/features/tools/edge-edit-tool.ts +10 -20
- package/src/features/tools/marquee-behavior.spec.ts +175 -0
- package/src/features/tools/marquee-behavior.ts +158 -0
- package/src/features/tools/marquee-mouse-tool.ts +43 -134
- package/src/features/tools/marquee-tool.ts +2 -3
- package/src/features/tools/node-creation-tool.ts +4 -11
- package/src/features/tools/view.tsx +17 -12
- package/src/features/validation/issue-marker.ts +2 -3
- package/src/features/validation/marker-navigator.spec.ts +18 -14
- package/src/features/validation/marker-navigator.ts +24 -12
- package/src/features/validation/validate.ts +7 -40
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -12
- package/src/index.ts +30 -19
- package/src/model-source/glsp-diagram-server.ts +12 -28
- package/src/protocol-reexport.ts +64 -0
- package/src/utils/argument-utils.ts +14 -11
- package/src/utils/layout-utils.ts +13 -7
- package/src/utils/marker.ts +2 -26
- package/src/utils/smodel-util.ts +15 -11
- package/src/utils/viewpoint-util.ts +4 -4
- package/src/views/base-view-module.ts +1 -2
- package/src/{base/actions/edit-mode-action.ts → views/compartments.tsx} +18 -14
- package/src/views/glsp-edge-view.tsx +21 -14
- package/src/views/index.ts +1 -1
- package/src/views/issue-marker-view.tsx +28 -19
- package/src/views/rounded-corner-view.tsx +38 -25
- package/src/views/rounded-corner.ts +5 -6
- package/lib/base/actions/context-actions.d.ts +0 -36
- package/lib/base/actions/context-actions.d.ts.map +0 -1
- package/lib/base/actions/context-actions.js +0 -51
- package/lib/base/actions/context-actions.js.map +0 -1
- package/lib/base/actions/edit-mode-action.d.ts +0 -13
- package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
- package/lib/base/actions/edit-mode-action.js +0 -56
- package/lib/base/actions/edit-mode-action.js.map +0 -1
- package/lib/base/actions/edit-validation-actions.d.ts +0 -78
- package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
- package/lib/base/actions/edit-validation-actions.js +0 -83
- package/lib/base/actions/edit-validation-actions.js.map +0 -1
- package/lib/base/actions/protocol-actions.d.ts +0 -41
- package/lib/base/actions/protocol-actions.d.ts.map +0 -1
- package/lib/base/actions/protocol-actions.js +0 -151
- package/lib/base/actions/protocol-actions.js.map +0 -1
- package/lib/base/args.d.ts.map +0 -1
- package/lib/base/args.js.map +0 -1
- package/lib/base/editor-context.d.ts.map +0 -1
- package/lib/base/editor-context.js +0 -174
- package/lib/base/editor-context.js.map +0 -1
- package/lib/base/operations/operation.d.ts +0 -135
- package/lib/base/operations/operation.d.ts.map +0 -1
- package/lib/base/operations/operation.js +0 -231
- package/lib/base/operations/operation.js.map +0 -1
- package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
- package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
- package/lib/features/copy-paste/copy-paste-actions.js +0 -68
- package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
- package/lib/features/hints/request-type-hints-action.d.ts +0 -32
- package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
- package/lib/features/hints/request-type-hints-action.js +0 -30
- package/lib/features/hints/request-type-hints-action.js.map +0 -1
- package/lib/features/model-source-watcher/model-source-changed-action.d.ts +0 -24
- package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
- package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
- package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
- package/lib/features/save/save.d.ts.map +0 -1
- package/lib/features/save/save.js +0 -62
- package/lib/features/save/save.js.map +0 -1
- package/lib/features/undo-redo/model.d.ts.map +0 -1
- package/lib/features/undo-redo/model.js +0 -22
- package/lib/features/undo-redo/model.js.map +0 -1
- package/lib/model-source/glsp-server-status.d.ts +0 -30
- package/lib/model-source/glsp-server-status.d.ts.map +0 -1
- package/lib/model-source/glsp-server-status.js +0 -61
- package/lib/model-source/glsp-server-status.js.map +0 -1
- package/lib/utils/array-utils.d.ts +0 -28
- package/lib/utils/array-utils.d.ts.map +0 -1
- package/lib/utils/array-utils.js +0 -61
- package/lib/utils/array-utils.js.map +0 -1
- package/lib/views/default-types.d.ts +0 -37
- package/lib/views/default-types.d.ts.map +0 -1
- package/lib/views/default-types.js +0 -47
- package/lib/views/default-types.js.map +0 -1
- package/src/base/actions/context-actions.ts +0 -43
- package/src/base/actions/edit-validation-actions.ts +0 -103
- package/src/base/actions/protocol-actions.ts +0 -82
- package/src/base/operations/operation.ts +0 -178
- package/src/features/copy-paste/copy-paste-actions.ts +0 -60
- package/src/features/hints/request-type-hints-action.ts +0 -36
- package/src/features/model-source-watcher/model-source-changed-action.ts +0 -26
- package/src/model-source/glsp-server-status.ts +0 -38
- package/src/utils/array-utils.ts +0 -55
- package/src/views/default-types.ts +0 -48
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2019-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,10 +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 { Action, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
|
-
import { VNode } from 'snabbdom
|
|
18
|
+
import { VNode } from 'snabbdom';
|
|
18
19
|
import {
|
|
19
|
-
Action,
|
|
20
20
|
CommandExecutionContext,
|
|
21
21
|
CommandReturn,
|
|
22
22
|
ElementMove,
|
|
@@ -26,24 +26,24 @@ import {
|
|
|
26
26
|
isViewport,
|
|
27
27
|
MouseListener,
|
|
28
28
|
MoveAction,
|
|
29
|
-
|
|
29
|
+
SChildElement,
|
|
30
30
|
SModelElement,
|
|
31
31
|
SModelRoot,
|
|
32
32
|
TYPES
|
|
33
33
|
} from 'sprotty';
|
|
34
|
-
|
|
35
34
|
import { isNotUndefined } from '../../utils/smodel-util';
|
|
36
35
|
import { addResizeHandles, isResizable, removeResizeHandles, SResizeHandle } from '../change-bounds/model';
|
|
37
36
|
import { createMovementRestrictionFeedback, removeMovementRestrictionFeedback } from '../change-bounds/movement-restrictor';
|
|
37
|
+
import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
|
|
38
38
|
import { ChangeBoundsTool } from '../tools/change-bounds-tool';
|
|
39
39
|
import { FeedbackCommand } from './model';
|
|
40
40
|
|
|
41
41
|
export class ShowChangeBoundsToolResizeFeedbackAction implements Action {
|
|
42
|
-
constructor(readonly elementId?: string, public readonly kind: string = ShowChangeBoundsToolResizeFeedbackCommand.KIND) {
|
|
42
|
+
constructor(readonly elementId?: string, public readonly kind: string = ShowChangeBoundsToolResizeFeedbackCommand.KIND) {}
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
export class HideChangeBoundsToolResizeFeedbackAction implements Action {
|
|
46
|
-
constructor(public readonly kind: string = HideChangeBoundsToolResizeFeedbackCommand.KIND) {
|
|
46
|
+
constructor(public readonly kind: string = HideChangeBoundsToolResizeFeedbackCommand.KIND) {}
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
@injectable()
|
|
@@ -54,10 +54,7 @@ export class ShowChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
|
|
|
54
54
|
|
|
55
55
|
execute(context: CommandExecutionContext): CommandReturn {
|
|
56
56
|
const index = context.root.index;
|
|
57
|
-
index
|
|
58
|
-
.all()
|
|
59
|
-
.filter(isResizable)
|
|
60
|
-
.forEach(removeResizeHandles);
|
|
57
|
+
index.all().filter(isResizable).forEach(removeResizeHandles);
|
|
61
58
|
|
|
62
59
|
if (isNotUndefined(this.action.elementId)) {
|
|
63
60
|
const resizeElement = index.getById(this.action.elementId);
|
|
@@ -77,10 +74,7 @@ export class HideChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
|
|
|
77
74
|
|
|
78
75
|
execute(context: CommandExecutionContext): CommandReturn {
|
|
79
76
|
const index = context.root.index;
|
|
80
|
-
index
|
|
81
|
-
.all()
|
|
82
|
-
.filter(isResizable)
|
|
83
|
-
.forEach(removeResizeHandles);
|
|
77
|
+
index.all().filter(isResizable).forEach(removeResizeHandles);
|
|
84
78
|
return context.root;
|
|
85
79
|
}
|
|
86
80
|
}
|
|
@@ -126,15 +120,17 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
126
120
|
const moveAction = this.getElementMoves(target, event, false);
|
|
127
121
|
if (moveAction) {
|
|
128
122
|
result.push(moveAction);
|
|
123
|
+
result.push(cursorFeedbackAction(CursorCSS.MOVE));
|
|
129
124
|
}
|
|
130
125
|
}
|
|
131
126
|
return result;
|
|
132
127
|
}
|
|
133
128
|
|
|
134
129
|
protected collectStartPositions(root: SModelRoot): void {
|
|
135
|
-
root.index
|
|
136
|
-
|
|
137
|
-
|
|
130
|
+
const selectedElements = root.index.all().filter(element => isSelectable(element) && element.selected);
|
|
131
|
+
const elementsSet = new Set(selectedElements);
|
|
132
|
+
selectedElements
|
|
133
|
+
.filter(element => !this.isChildOfSelected(elementsSet, element))
|
|
138
134
|
.forEach(element => {
|
|
139
135
|
if (isMoveable(element)) {
|
|
140
136
|
this.elementId2startPos.set(element.id, element.position);
|
|
@@ -142,6 +138,16 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
142
138
|
});
|
|
143
139
|
}
|
|
144
140
|
|
|
141
|
+
protected isChildOfSelected(selectedElements: Set<SModelElement>, element: SModelElement): boolean {
|
|
142
|
+
while (element instanceof SChildElement) {
|
|
143
|
+
element = element.parent;
|
|
144
|
+
if (selectedElements.has(element)) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
|
|
145
151
|
protected getElementMoves(target: SModelElement, event: MouseEvent, isFinished: boolean): MoveAction | undefined {
|
|
146
152
|
if (!this.startDragPosition) {
|
|
147
153
|
return undefined;
|
|
@@ -214,7 +220,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
214
220
|
}
|
|
215
221
|
|
|
216
222
|
mouseEnter(target: SModelElement, event: MouseEvent): Action[] {
|
|
217
|
-
if (target instanceof SModelRoot && event.buttons === 0) {
|
|
223
|
+
if (target instanceof SModelRoot && event.buttons === 0 && !this.startDragPosition) {
|
|
218
224
|
this.mouseUp(target, event);
|
|
219
225
|
}
|
|
220
226
|
return [];
|
|
@@ -230,7 +236,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
230
236
|
if (this.tool.movementRestrictor) {
|
|
231
237
|
this.tool.deregisterFeedback([removeMovementRestrictionFeedback(target, this.tool.movementRestrictor)], this);
|
|
232
238
|
}
|
|
233
|
-
|
|
239
|
+
result.push(cursorFeedbackAction(CursorCSS.DEFAULT));
|
|
234
240
|
}
|
|
235
241
|
this.hasDragged = false;
|
|
236
242
|
this.startDragPosition = undefined;
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
add,
|
|
20
20
|
AnchorComputerRegistry,
|
|
21
21
|
center,
|
|
@@ -28,7 +28,6 @@ import {
|
|
|
28
28
|
isConnectable,
|
|
29
29
|
MouseListener,
|
|
30
30
|
MoveAction,
|
|
31
|
-
Point,
|
|
32
31
|
PolylineEdgeRouter,
|
|
33
32
|
SChildElement,
|
|
34
33
|
SConnectableElement,
|
|
@@ -39,7 +38,6 @@ import {
|
|
|
39
38
|
SRoutableElement,
|
|
40
39
|
TYPES
|
|
41
40
|
} from 'sprotty';
|
|
42
|
-
|
|
43
41
|
import { isRoutable } from '../../utils/smodel-util';
|
|
44
42
|
import { getAbsolutePosition, toAbsoluteBounds, toAbsolutePosition } from '../../utils/viewpoint-util';
|
|
45
43
|
import { FeedbackCommand } from './model';
|
|
@@ -49,7 +47,8 @@ export class DrawFeedbackEdgeAction implements Action {
|
|
|
49
47
|
public readonly elementTypeId: string,
|
|
50
48
|
public readonly sourceId: string,
|
|
51
49
|
public readonly edgeSchema?: SEdgeSchema,
|
|
52
|
-
public readonly kind: string = DrawFeedbackEdgeCommand.KIND
|
|
50
|
+
public readonly kind: string = DrawFeedbackEdgeCommand.KIND
|
|
51
|
+
) {}
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
@injectable()
|
|
@@ -68,7 +67,7 @@ export class DrawFeedbackEdgeCommand extends FeedbackCommand {
|
|
|
68
67
|
}
|
|
69
68
|
|
|
70
69
|
export class RemoveFeedbackEdgeAction implements Action {
|
|
71
|
-
constructor(public readonly kind: string = RemoveFeedbackEdgeCommand.KIND) {
|
|
70
|
+
constructor(public readonly kind: string = RemoveFeedbackEdgeCommand.KIND) {}
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
@injectable()
|
|
@@ -83,10 +82,12 @@ export class RemoveFeedbackEdgeCommand extends FeedbackCommand {
|
|
|
83
82
|
|
|
84
83
|
export class FeedbackEdgeEnd extends SDanglingAnchor {
|
|
85
84
|
static readonly TYPE = 'feedback-edge-end';
|
|
86
|
-
constructor(
|
|
85
|
+
constructor(
|
|
86
|
+
readonly sourceId: string,
|
|
87
87
|
readonly elementTypeId: string,
|
|
88
88
|
public feedbackEdge: SRoutableElement | undefined = undefined,
|
|
89
|
-
public readonly type: string = FeedbackEdgeEnd.TYPE
|
|
89
|
+
public readonly type: string = FeedbackEdgeEnd.TYPE
|
|
90
|
+
) {
|
|
90
91
|
super();
|
|
91
92
|
}
|
|
92
93
|
}
|
|
@@ -105,8 +106,9 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
|
|
|
105
106
|
|
|
106
107
|
const edge = edgeEnd.feedbackEdge;
|
|
107
108
|
const position = getAbsolutePosition(edgeEnd, event);
|
|
108
|
-
const endAtMousePosition = findChildrenAtPosition(target.root, position)
|
|
109
|
-
|
|
109
|
+
const endAtMousePosition = findChildrenAtPosition(target.root, position).find(
|
|
110
|
+
element => isConnectable(element) && element.canConnect(edge, 'target')
|
|
111
|
+
);
|
|
110
112
|
|
|
111
113
|
if (endAtMousePosition instanceof SConnectableElement && edge.source && isBoundsAware(edge.source)) {
|
|
112
114
|
const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.source.bounds));
|
|
@@ -149,7 +151,12 @@ export const defaultFeedbackEdgeSchema: SEdgeSchema = {
|
|
|
149
151
|
opacity: 0.3
|
|
150
152
|
} as SEdgeSchema;
|
|
151
153
|
|
|
152
|
-
export function drawFeedbackEdge(
|
|
154
|
+
export function drawFeedbackEdge(
|
|
155
|
+
context: CommandExecutionContext,
|
|
156
|
+
sourceId: string,
|
|
157
|
+
elementTypeId: string,
|
|
158
|
+
feedbackEdgeSchema: SEdgeSchema
|
|
159
|
+
): void {
|
|
153
160
|
const root = context.root;
|
|
154
161
|
const sourceChild = root.index.getById(sourceId);
|
|
155
162
|
if (!sourceChild) {
|
|
@@ -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,10 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action, isStringArray } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
import { isStringArray } from '../../utils/array-utils';
|
|
18
|
+
import { CommandExecutionContext, SModelElement, SModelRoot, TYPES } from 'sprotty';
|
|
20
19
|
import { addCssClasses, removeCssClasses } from '../../utils/smodel-util';
|
|
21
20
|
import { FeedbackCommand } from './model';
|
|
22
21
|
|
|
@@ -27,7 +26,8 @@ export class ModifyCSSFeedbackAction implements Action {
|
|
|
27
26
|
public readonly input?: string[] | SModelElement[],
|
|
28
27
|
public readonly addClasses?: string[],
|
|
29
28
|
public readonly removeClasses?: string[],
|
|
30
|
-
public kind = ModifyCssFeedbackCommand.KIND
|
|
29
|
+
public kind = ModifyCssFeedbackCommand.KIND
|
|
30
|
+
) {
|
|
31
31
|
if (input) {
|
|
32
32
|
this.elementIds = isStringArray(input) ? input : input.map(element => element.id);
|
|
33
33
|
}
|
|
@@ -68,6 +68,7 @@ function exists(elt?: SModelElement): elt is SModelElement {
|
|
|
68
68
|
return elt !== undefined;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
// eslint-disable-next-line no-shadow
|
|
71
72
|
export enum CursorCSS {
|
|
72
73
|
DEFAULT = 'default-mode',
|
|
73
74
|
OVERLAP_FORBIDDEN = 'overlap-forbidden-mode',
|
|
@@ -77,7 +78,9 @@ export enum CursorCSS {
|
|
|
77
78
|
EDGE_RECONNECT = 'edge-reconnect-select-target-mode',
|
|
78
79
|
OPERATION_NOT_ALLOWED = 'edge-modification-not-allowed-mode',
|
|
79
80
|
ELEMENT_DELETION = 'element-deletion-mode',
|
|
80
|
-
|
|
81
|
+
RESIZE_NESW = 'resize-nesw-mode',
|
|
82
|
+
RESIZE_NWSE = 'resize-nwse-mode',
|
|
83
|
+
MOVE = 'move-mode',
|
|
81
84
|
MARQUEE = 'marquee-mode'
|
|
82
85
|
}
|
|
83
86
|
|
|
@@ -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
|
|
@@ -18,10 +18,7 @@ import { configureCommand, configureView, LocationPostprocessor, MoveCommand, TY
|
|
|
18
18
|
|
|
19
19
|
import { GLSP_TYPES } from '../../base/types';
|
|
20
20
|
import { SResizeHandle } from '../change-bounds/model';
|
|
21
|
-
import {
|
|
22
|
-
HideChangeBoundsToolResizeFeedbackCommand,
|
|
23
|
-
ShowChangeBoundsToolResizeFeedbackCommand
|
|
24
|
-
} from './change-bounds-tool-feedback';
|
|
21
|
+
import { HideChangeBoundsToolResizeFeedbackCommand, ShowChangeBoundsToolResizeFeedbackCommand } from './change-bounds-tool-feedback';
|
|
25
22
|
import { DrawFeedbackEdgeCommand, FeedbackEdgeEnd, RemoveFeedbackEdgeCommand } from './creation-tool-feedback';
|
|
26
23
|
import { ModifyCssFeedbackCommand } from './css-feedback';
|
|
27
24
|
import {
|
|
@@ -13,10 +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 { Action, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
|
-
import { VNode } from 'snabbdom
|
|
18
|
+
import { VNode } from 'snabbdom';
|
|
18
19
|
import {
|
|
19
|
-
Action,
|
|
20
20
|
add,
|
|
21
21
|
AnchorComputerRegistry,
|
|
22
22
|
center,
|
|
@@ -33,7 +33,6 @@ import {
|
|
|
33
33
|
isViewport,
|
|
34
34
|
MouseListener,
|
|
35
35
|
MoveAction,
|
|
36
|
-
Point,
|
|
37
36
|
PolylineEdgeRouter,
|
|
38
37
|
SConnectableElement,
|
|
39
38
|
SModelElement,
|
|
@@ -43,16 +42,10 @@ import {
|
|
|
43
42
|
SwitchEditModeCommand,
|
|
44
43
|
TYPES
|
|
45
44
|
} from 'sprotty';
|
|
46
|
-
|
|
47
45
|
import { isNotUndefined, isRoutable, isRoutingHandle } from '../../utils/smodel-util';
|
|
48
46
|
import { getAbsolutePosition, toAbsoluteBounds } from '../../utils/viewpoint-util';
|
|
49
47
|
import { addReconnectHandles, removeReconnectHandles } from '../reconnect/model';
|
|
50
|
-
import {
|
|
51
|
-
FeedbackEdgeEnd,
|
|
52
|
-
feedbackEdgeEndId,
|
|
53
|
-
FeedbackEdgeEndMovingMouseListener,
|
|
54
|
-
feedbackEdgeId
|
|
55
|
-
} from './creation-tool-feedback';
|
|
48
|
+
import { FeedbackEdgeEnd, feedbackEdgeEndId, FeedbackEdgeEndMovingMouseListener, feedbackEdgeId } from './creation-tool-feedback';
|
|
56
49
|
import { FeedbackCommand } from './model';
|
|
57
50
|
|
|
58
51
|
/**
|
|
@@ -60,11 +53,11 @@ import { FeedbackCommand } from './model';
|
|
|
60
53
|
*/
|
|
61
54
|
|
|
62
55
|
export class ShowEdgeReconnectHandlesFeedbackAction implements Action {
|
|
63
|
-
constructor(readonly elementId?: string, public readonly kind: string = ShowEdgeReconnectHandlesFeedbackCommand.KIND) {
|
|
56
|
+
constructor(readonly elementId?: string, public readonly kind: string = ShowEdgeReconnectHandlesFeedbackCommand.KIND) {}
|
|
64
57
|
}
|
|
65
58
|
|
|
66
59
|
export class HideEdgeReconnectHandlesFeedbackAction implements Action {
|
|
67
|
-
constructor(public readonly kind: string = HideEdgeReconnectHandlesFeedbackCommand.KIND) {
|
|
60
|
+
constructor(public readonly kind: string = HideEdgeReconnectHandlesFeedbackCommand.KIND) {}
|
|
68
61
|
}
|
|
69
62
|
|
|
70
63
|
@injectable()
|
|
@@ -108,9 +101,11 @@ export class HideEdgeReconnectHandlesFeedbackCommand extends FeedbackCommand {
|
|
|
108
101
|
*/
|
|
109
102
|
|
|
110
103
|
export class SwitchRoutingModeAction extends SwitchEditModeAction {
|
|
111
|
-
constructor(
|
|
104
|
+
constructor(
|
|
105
|
+
public readonly elementsToActivate: string[] = [],
|
|
112
106
|
public readonly elementsToDeactivate: string[] = [],
|
|
113
|
-
public readonly kind: string = SwitchRoutingModeCommand.KIND
|
|
107
|
+
public readonly kind: string = SwitchRoutingModeCommand.KIND
|
|
108
|
+
) {
|
|
114
109
|
super(elementsToActivate, elementsToDeactivate);
|
|
115
110
|
}
|
|
116
111
|
}
|
|
@@ -128,7 +123,11 @@ export class SwitchRoutingModeCommand extends SwitchEditModeCommand {
|
|
|
128
123
|
*/
|
|
129
124
|
|
|
130
125
|
export class DrawFeedbackEdgeSourceAction implements Action {
|
|
131
|
-
constructor(
|
|
126
|
+
constructor(
|
|
127
|
+
readonly elementTypeId: string,
|
|
128
|
+
readonly targetId: string,
|
|
129
|
+
public readonly kind: string = DrawFeedbackEdgeSourceCommand.KIND
|
|
130
|
+
) {}
|
|
132
131
|
}
|
|
133
132
|
|
|
134
133
|
@injectable()
|
|
@@ -169,8 +168,9 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
|
|
|
169
168
|
|
|
170
169
|
const edge = edgeEnd.feedbackEdge;
|
|
171
170
|
const position = getAbsolutePosition(edgeEnd, event);
|
|
172
|
-
const endAtMousePosition = findChildrenAtPosition(target.root, position)
|
|
173
|
-
|
|
171
|
+
const endAtMousePosition = findChildrenAtPosition(target.root, position).find(
|
|
172
|
+
e => isConnectable(e) && e.canConnect(edge, 'source')
|
|
173
|
+
);
|
|
174
174
|
|
|
175
175
|
if (endAtMousePosition instanceof SConnectableElement && edge.target && isBoundsAware(edge.target)) {
|
|
176
176
|
const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.target.bounds));
|
|
@@ -234,7 +234,8 @@ export class FeedbackEdgeRouteMovingMouseListener extends MouseListener {
|
|
|
234
234
|
const dx = (event.pageX - this.lastDragPosition.x) / zoom;
|
|
235
235
|
const dy = (event.pageY - this.lastDragPosition.y) / zoom;
|
|
236
236
|
const handleMoves: ElementMove[] = [];
|
|
237
|
-
target.root.index
|
|
237
|
+
target.root.index
|
|
238
|
+
.all()
|
|
238
239
|
.filter(element => isSelected(element))
|
|
239
240
|
.forEach(element => {
|
|
240
241
|
if (isRoutingHandle(element)) {
|
|
@@ -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,10 +13,11 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
|
-
import {
|
|
18
|
+
import { IActionDispatcher, ILogger, TYPES } from 'sprotty';
|
|
18
19
|
|
|
19
|
-
export interface IFeedbackEmitter {
|
|
20
|
+
export interface IFeedbackEmitter {}
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* Dispatcher for actions that are meant to show visual feedback on
|
|
@@ -52,14 +53,14 @@ export interface IFeedbackActionDispatcher {
|
|
|
52
53
|
deregisterFeedback(feedbackEmitter: IFeedbackEmitter, actions: Action[]): void;
|
|
53
54
|
|
|
54
55
|
/**
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
* Retrieve all `actions` sent out by currently registered `feedbackEmitter`.
|
|
57
|
+
*/
|
|
57
58
|
getRegisteredFeedback(): Action[];
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
@injectable()
|
|
61
62
|
export class FeedbackActionDispatcher implements IFeedbackActionDispatcher {
|
|
62
|
-
protected feedbackEmitters: Map<IFeedbackEmitter, Action[]> = new Map;
|
|
63
|
+
protected feedbackEmitters: Map<IFeedbackEmitter, Action[]> = new Map();
|
|
63
64
|
|
|
64
65
|
@inject(TYPES.IActionDispatcherProvider) protected actionDispatcher: () => Promise<IActionDispatcher>;
|
|
65
66
|
@inject(TYPES.ILogger) protected logger: ILogger;
|
|
@@ -93,9 +94,7 @@ export class FeedbackActionDispatcher implements IFeedbackActionDispatcher {
|
|
|
93
94
|
if (value.find(a => a === action)) {
|
|
94
95
|
result.push(key);
|
|
95
96
|
}
|
|
96
|
-
}
|
|
97
|
-
);
|
|
97
|
+
});
|
|
98
98
|
return result;
|
|
99
99
|
}
|
|
100
|
-
|
|
101
100
|
}
|
|
@@ -13,27 +13,26 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
AnchorComputerRegistry,
|
|
20
20
|
CommandExecutionContext,
|
|
21
21
|
CommandReturn,
|
|
22
22
|
MouseListener,
|
|
23
|
-
Point,
|
|
24
23
|
SChildElement,
|
|
25
24
|
SModelElement,
|
|
26
25
|
SModelRoot,
|
|
27
26
|
TYPES
|
|
28
27
|
} from 'sprotty';
|
|
29
|
-
|
|
30
28
|
import { FeedbackCommand } from './model';
|
|
31
29
|
|
|
32
30
|
export class DrawMarqueeAction implements Action {
|
|
33
31
|
constructor(
|
|
34
32
|
public readonly startPoint: Point,
|
|
35
33
|
public readonly endPoint: Point,
|
|
36
|
-
public readonly kind: string = DrawMarqueeCommand.KIND
|
|
34
|
+
public readonly kind: string = DrawMarqueeCommand.KIND
|
|
35
|
+
) {}
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
@injectable()
|
|
@@ -51,7 +50,7 @@ export class DrawMarqueeCommand extends FeedbackCommand {
|
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
export class RemoveMarqueeAction implements Action {
|
|
54
|
-
constructor(public readonly kind: string = RemoveMarqueeCommand.KIND) {
|
|
53
|
+
constructor(public readonly kind: string = RemoveMarqueeCommand.KIND) {}
|
|
55
54
|
}
|
|
56
55
|
|
|
57
56
|
@injectable()
|
|
@@ -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
|
|
@@ -29,4 +29,3 @@ export abstract class FeedbackCommand extends Command {
|
|
|
29
29
|
return context.root;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
|
|
@@ -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,20 +13,19 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { injectable } from 'inversify';
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
19
|
-
import { IView, ORIGIN_POINT, Point, RenderingContext, setAttr, SModelElement } from 'sprotty';
|
|
20
|
-
|
|
18
|
+
import { VNode } from 'snabbdom';
|
|
19
|
+
import { IView, ORIGIN_POINT, RenderingContext, setAttr, SModelElement, svg } from 'sprotty';
|
|
21
20
|
import { isResizable, ResizeHandleLocation, SResizeHandle } from '../change-bounds/model';
|
|
22
21
|
|
|
23
22
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
24
|
-
const JSX = { createElement:
|
|
23
|
+
const JSX = { createElement: svg };
|
|
25
24
|
|
|
26
25
|
/**
|
|
27
|
-
* This view is used for the invisible end of the feedback edge.
|
|
28
|
-
* A feedback edge is shown as a visual feedback when creating edges.
|
|
29
|
-
*/
|
|
26
|
+
* This view is used for the invisible end of the feedback edge.
|
|
27
|
+
* A feedback edge is shown as a visual feedback when creating edges.
|
|
28
|
+
*/
|
|
30
29
|
@injectable()
|
|
31
30
|
export class FeedbackEdgeEndView implements IView {
|
|
32
31
|
render(model: Readonly<SModelElement>, context: RenderingContext): VNode {
|
|
@@ -40,8 +39,15 @@ export class SResizeHandleView implements IView {
|
|
|
40
39
|
render(handle: SResizeHandle, context: RenderingContext): VNode {
|
|
41
40
|
const position = this.getPosition(handle);
|
|
42
41
|
if (position !== undefined) {
|
|
43
|
-
const node =
|
|
44
|
-
|
|
42
|
+
const node = (
|
|
43
|
+
<circle
|
|
44
|
+
class-sprotty-resize-handle={true}
|
|
45
|
+
class-mouseover={handle.hoverFeedback}
|
|
46
|
+
cx={position.x}
|
|
47
|
+
cy={position.y}
|
|
48
|
+
r={this.getRadius()}
|
|
49
|
+
/>
|
|
50
|
+
);
|
|
45
51
|
setAttr(node, 'data-kind', handle.location);
|
|
46
52
|
return node;
|
|
47
53
|
}
|
|
@@ -13,14 +13,12 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import '../../../css/tool-palette.css';
|
|
17
|
-
|
|
18
16
|
import { ContainerModule } from 'inversify';
|
|
19
17
|
import { configureActionHandler, EnableDefaultToolsAction, TYPES } from 'sprotty';
|
|
20
|
-
|
|
18
|
+
import '../../../css/tool-palette.css';
|
|
21
19
|
import { EnableToolPaletteAction, ToolPalette } from './tool-palette';
|
|
22
20
|
|
|
23
|
-
const toolPaletteModule = new ContainerModule((bind, _unbind, isBound) => {
|
|
21
|
+
const toolPaletteModule = new ContainerModule((bind, _unbind, isBound, rebind) => {
|
|
24
22
|
bind(ToolPalette).toSelf().inSingletonScope();
|
|
25
23
|
bind(TYPES.IUIExtension).toService(ToolPalette);
|
|
26
24
|
configureActionHandler({ bind, isBound }, EnableToolPaletteAction.KIND, ToolPalette);
|
|
@@ -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,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { isLabeledAction, LabeledAction } from '
|
|
17
|
-
|
|
18
|
-
import { isTriggerElementTypeCreationAction, TriggerElementCreationAction } from '../../base/operations/operation';
|
|
16
|
+
import { isLabeledAction, isTriggerElementTypeCreationAction, LabeledAction, TriggerElementCreationAction } from '@eclipse-glsp/protocol';
|
|
19
17
|
|
|
20
18
|
export interface PaletteItem extends LabeledAction {
|
|
21
19
|
readonly id: string;
|
|
@@ -30,11 +28,11 @@ export function isPaletteItem(object?: any): object is PaletteItem {
|
|
|
30
28
|
export namespace PaletteItem {
|
|
31
29
|
export function getTriggerAction(item?: PaletteItem): TriggerElementCreationAction | undefined {
|
|
32
30
|
if (item) {
|
|
33
|
-
const initiAction = item.actions
|
|
31
|
+
const initiAction = item.actions
|
|
32
|
+
.filter(a => isTriggerElementTypeCreationAction(a))
|
|
34
33
|
.map(action => action as TriggerElementCreationAction);
|
|
35
34
|
return initiAction.length > 0 ? initiAction[0] : undefined;
|
|
36
35
|
}
|
|
37
36
|
return undefined;
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
|
-
|