@theia/core 1.45.1 → 1.46.0-next.72
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 +6 -6
- package/i18n/nls.cs.json +524 -520
- package/i18n/nls.de.json +524 -520
- package/i18n/nls.es.json +524 -520
- package/i18n/nls.fr.json +524 -520
- package/i18n/nls.hu.json +524 -520
- package/i18n/nls.it.json +524 -520
- package/i18n/nls.ja.json +524 -520
- package/i18n/nls.json +524 -520
- package/i18n/nls.pl.json +524 -520
- package/i18n/nls.pt-br.json +524 -520
- package/i18n/nls.pt-pt.json +524 -520
- package/i18n/nls.ru.json +524 -520
- package/i18n/nls.zh-cn.json +524 -520
- package/lib/browser/about-dialog.d.ts +33 -33
- package/lib/browser/about-dialog.js +136 -136
- package/lib/browser/authentication-service.d.ts +144 -144
- package/lib/browser/authentication-service.js +332 -332
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.d.ts +34 -34
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.js +114 -114
- package/lib/browser/breadcrumbs/breadcrumb-renderer.d.ts +12 -12
- package/lib/browser/breadcrumbs/breadcrumb-renderer.js +42 -42
- package/lib/browser/breadcrumbs/breadcrumbs-constants.d.ts +49 -49
- package/lib/browser/breadcrumbs/breadcrumbs-constants.js +27 -27
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts +43 -43
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +187 -187
- package/lib/browser/breadcrumbs/breadcrumbs-service.d.ts +32 -32
- package/lib/browser/breadcrumbs/breadcrumbs-service.js +119 -119
- package/lib/browser/breadcrumbs/index.d.ts +5 -5
- package/lib/browser/breadcrumbs/index.js +32 -32
- package/lib/browser/browser-clipboard-service.d.ts +23 -23
- package/lib/browser/browser-clipboard-service.js +115 -115
- package/lib/browser/browser.d.ts +37 -34
- package/lib/browser/browser.d.ts.map +1 -1
- package/lib/browser/browser.js +196 -192
- package/lib/browser/browser.js.map +1 -1
- package/lib/browser/clipboard-service.d.ts +6 -6
- package/lib/browser/clipboard-service.js +19 -19
- package/lib/browser/color-application-contribution.d.ts +24 -24
- package/lib/browser/color-application-contribution.js +108 -108
- package/lib/browser/color-registry.d.ts +14 -14
- package/lib/browser/color-registry.js +63 -63
- package/lib/browser/command-open-handler.d.ts +9 -9
- package/lib/browser/command-open-handler.js +66 -66
- package/lib/browser/common-frontend-contribution.d.ts +206 -206
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +2307 -2307
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/common-styling-participants.d.ts +27 -27
- package/lib/browser/common-styling-participants.js +370 -370
- package/lib/browser/connection-status-service.d.ts +77 -77
- package/lib/browser/connection-status-service.js +209 -209
- package/lib/browser/connection-status-service.spec.d.ts +1 -1
- package/lib/browser/connection-status-service.spec.js +161 -161
- package/lib/browser/context-key-service.d.ts +82 -83
- package/lib/browser/context-key-service.d.ts.map +1 -1
- package/lib/browser/context-key-service.js +88 -88
- package/lib/browser/context-key-service.js.map +1 -1
- package/lib/browser/context-menu-renderer.d.ts +54 -55
- package/lib/browser/context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/context-menu-renderer.js +92 -96
- package/lib/browser/context-menu-renderer.js.map +1 -1
- package/lib/browser/core-preferences.d.ts +37 -36
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +300 -295
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/credentials-service.d.ts +35 -35
- package/lib/browser/credentials-service.js +91 -91
- package/lib/browser/decoration-style.d.ts +6 -6
- package/lib/browser/decoration-style.js +64 -64
- package/lib/browser/decorations-service.d.ts +30 -30
- package/lib/browser/decorations-service.js +163 -163
- package/lib/browser/dialogs/react-dialog.d.ts +17 -17
- package/lib/browser/dialogs/react-dialog.js +60 -60
- package/lib/browser/dialogs.d.ts +135 -135
- package/lib/browser/dialogs.js +457 -457
- package/lib/browser/diff-uris.d.ts +17 -17
- package/lib/browser/diff-uris.js +126 -126
- package/lib/browser/encoding-registry.d.ts +18 -18
- package/lib/browser/encoding-registry.js +96 -96
- package/lib/browser/endpoint.d.ts +42 -42
- package/lib/browser/endpoint.js +120 -120
- package/lib/browser/endpoint.spec.d.ts +1 -1
- package/lib/browser/endpoint.spec.js +122 -122
- package/lib/browser/external-uri-service.d.ts +24 -24
- package/lib/browser/external-uri-service.js +77 -77
- package/lib/browser/frontend-application-bindings.d.ts +5 -5
- package/lib/browser/frontend-application-bindings.js +56 -56
- package/lib/browser/frontend-application-config-provider.d.ts +8 -8
- package/lib/browser/frontend-application-config-provider.js +46 -46
- package/lib/browser/frontend-application-config-provider.spec.d.ts +1 -1
- package/lib/browser/frontend-application-config-provider.spec.js +40 -40
- package/lib/browser/frontend-application-contribution.d.ts +75 -75
- package/lib/browser/frontend-application-contribution.js +50 -50
- package/lib/browser/frontend-application-module.d.ts +8 -8
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +354 -353
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/frontend-application-state.d.ts +19 -19
- package/lib/browser/frontend-application-state.js +79 -79
- package/lib/browser/frontend-application.d.ts +86 -86
- package/lib/browser/frontend-application.js +319 -319
- package/lib/browser/hover-service.d.ts +50 -50
- package/lib/browser/hover-service.js +207 -207
- package/lib/browser/http-open-handler.d.ts +14 -14
- package/lib/browser/http-open-handler.js +54 -54
- package/lib/browser/i18n/i18n-frontend-module.d.ts +3 -3
- package/lib/browser/i18n/i18n-frontend-module.js +25 -25
- package/lib/browser/i18n/language-quick-pick-service.d.ts +15 -15
- package/lib/browser/i18n/language-quick-pick-service.js +144 -144
- package/lib/browser/icon-registry.d.ts +56 -62
- package/lib/browser/icon-registry.d.ts.map +1 -1
- package/lib/browser/icon-registry.js +24 -24
- package/lib/browser/icon-registry.js.map +1 -1
- package/lib/browser/icon-theme-contribution.d.ts +23 -23
- package/lib/browser/icon-theme-contribution.js +72 -72
- package/lib/browser/icon-theme-service.d.ts +63 -63
- package/lib/browser/icon-theme-service.js +206 -206
- package/lib/browser/index.d.ts +31 -31
- package/lib/browser/index.js +58 -58
- package/lib/browser/json-schema-store.d.ts +37 -37
- package/lib/browser/json-schema-store.js +119 -119
- package/lib/browser/keybinding.d.ts +288 -288
- package/lib/browser/keybinding.js +682 -682
- package/lib/browser/keybinding.spec.d.ts +1 -1
- package/lib/browser/keybinding.spec.js +456 -456
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.d.ts +13 -13
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +118 -118
- package/lib/browser/keyboard/browser-keyboard-layout-provider.d.ts +91 -91
- package/lib/browser/keyboard/browser-keyboard-layout-provider.js +426 -426
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.d.ts +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js +157 -157
- package/lib/browser/keyboard/browser-keyboard-module.d.ts +3 -3
- package/lib/browser/keyboard/browser-keyboard-module.js +30 -30
- package/lib/browser/keyboard/index.d.ts +4 -4
- package/lib/browser/keyboard/index.js +31 -31
- package/lib/browser/keyboard/keyboard-layout-service.d.ts +49 -49
- package/lib/browser/keyboard/keyboard-layout-service.js +435 -435
- package/lib/browser/keyboard/keyboard-layout-service.spec.d.ts +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.spec.js +115 -115
- package/lib/browser/keyboard/keys.d.ts +4 -4
- package/lib/browser/keyboard/keys.js +31 -31
- package/lib/browser/keyboard/keys.spec.d.ts +1 -1
- package/lib/browser/keyboard/keys.spec.js +205 -205
- package/lib/browser/keys.d.ts +2 -2
- package/lib/browser/keys.js +28 -28
- package/lib/browser/label-parser.d.ts +34 -34
- package/lib/browser/label-parser.js +112 -112
- package/lib/browser/label-parser.spec.d.ts +1 -1
- package/lib/browser/label-parser.spec.js +146 -146
- package/lib/browser/label-provider.d.ts +140 -140
- package/lib/browser/label-provider.js +318 -318
- package/lib/browser/label-provider.spec.d.ts +1 -1
- package/lib/browser/label-provider.spec.js +53 -53
- package/lib/browser/language-icon-provider.d.ts +14 -14
- package/lib/browser/language-icon-provider.js +73 -73
- package/lib/browser/language-service.d.ts +38 -38
- package/lib/browser/language-service.js +71 -71
- package/lib/browser/logger-frontend-module.d.ts +2 -2
- package/lib/browser/logger-frontend-module.js +63 -63
- package/lib/browser/markdown-rendering/markdown-renderer.d.ts +39 -39
- package/lib/browser/markdown-rendering/markdown-renderer.d.ts.map +1 -1
- package/lib/browser/markdown-rendering/markdown-renderer.js +80 -80
- package/lib/browser/menu/browser-context-menu-renderer.d.ts +12 -12
- package/lib/browser/menu/browser-context-menu-renderer.js +61 -61
- package/lib/browser/menu/browser-menu-module.d.ts +3 -3
- package/lib/browser/menu/browser-menu-module.js +28 -28
- package/lib/browser/menu/browser-menu-plugin.d.ts +103 -103
- package/lib/browser/menu/browser-menu-plugin.js +450 -450
- package/lib/browser/menu/context-menu-context.d.ts +7 -7
- package/lib/browser/menu/context-menu-context.js +50 -50
- package/lib/browser/messaging/connection-source.d.ts +8 -8
- package/lib/browser/messaging/connection-source.js +19 -19
- package/lib/browser/messaging/frontend-id-provider.d.ts +12 -12
- package/lib/browser/messaging/frontend-id-provider.js +39 -39
- package/lib/browser/messaging/index.d.ts +1 -1
- package/lib/browser/messaging/index.js +28 -28
- package/lib/browser/messaging/messaging-frontend-module.d.ts +2 -2
- package/lib/browser/messaging/messaging-frontend-module.js +41 -41
- package/lib/browser/messaging/service-connection-provider.d.ts +47 -47
- package/lib/browser/messaging/service-connection-provider.js +114 -114
- package/lib/browser/messaging/ws-connection-provider.d.ts +12 -12
- package/lib/browser/messaging/ws-connection-provider.js +57 -57
- package/lib/browser/messaging/ws-connection-source.d.ts +42 -42
- package/lib/browser/messaging/ws-connection-source.js +225 -225
- package/lib/browser/mime-service.d.ts +7 -7
- package/lib/browser/mime-service.js +35 -35
- package/lib/browser/navigatable-types.d.ts +33 -33
- package/lib/browser/navigatable-types.js +63 -63
- package/lib/browser/navigatable.d.ts +8 -8
- package/lib/browser/navigatable.js +47 -47
- package/lib/browser/opener-service.d.ts +79 -79
- package/lib/browser/opener-service.js +90 -90
- package/lib/browser/opener-service.spec.d.ts +1 -1
- package/lib/browser/opener-service.spec.js +46 -46
- package/lib/browser/performance/frontend-stopwatch.d.ts +20 -20
- package/lib/browser/performance/frontend-stopwatch.js +74 -74
- package/lib/browser/performance/index.d.ts +2 -2
- package/lib/browser/performance/index.js +29 -29
- package/lib/browser/performance/measurement-frontend-bindings.d.ts +19 -19
- package/lib/browser/performance/measurement-frontend-bindings.js +32 -32
- package/lib/browser/preferences/index.d.ts +7 -7
- package/lib/browser/preferences/index.js +34 -34
- package/lib/browser/preferences/injectable-preference-proxy.d.ts +51 -51
- package/lib/browser/preferences/injectable-preference-proxy.js +284 -284
- package/lib/browser/preferences/preference-configurations.d.ts +22 -22
- package/lib/browser/preferences/preference-configurations.js +80 -80
- package/lib/browser/preferences/preference-contribution.d.ts +111 -111
- package/lib/browser/preferences/preference-contribution.js +394 -394
- package/lib/browser/preferences/preference-language-override-service.d.ts +39 -39
- package/lib/browser/preferences/preference-language-override-service.js +112 -112
- package/lib/browser/preferences/preference-provider.d.ts +132 -132
- package/lib/browser/preferences/preference-provider.js +227 -227
- package/lib/browser/preferences/preference-provider.spec.d.ts +1 -1
- package/lib/browser/preferences/preference-provider.spec.js +33 -33
- package/lib/browser/preferences/preference-proxy.d.ts +150 -150
- package/lib/browser/preferences/preference-proxy.js +229 -229
- package/lib/browser/preferences/preference-proxy.spec.d.ts +1 -1
- package/lib/browser/preferences/preference-proxy.spec.js +337 -337
- package/lib/browser/preferences/preference-schema-provider.spec.d.ts +1 -1
- package/lib/browser/preferences/preference-schema-provider.spec.js +115 -115
- package/lib/browser/preferences/preference-scope.d.ts +2 -2
- package/lib/browser/preferences/preference-scope.js +20 -20
- package/lib/browser/preferences/preference-service.d.ts +278 -278
- package/lib/browser/preferences/preference-service.js +358 -358
- package/lib/browser/preferences/preference-service.spec.d.ts +1 -1
- package/lib/browser/preferences/preference-service.spec.js +505 -505
- package/lib/browser/preferences/preference-validation-service.d.ts +57 -57
- package/lib/browser/preferences/preference-validation-service.js +354 -354
- package/lib/browser/preferences/preference-validation-service.spec.d.ts +1 -1
- package/lib/browser/preferences/preference-validation-service.spec.js +330 -330
- package/lib/browser/preferences/test/index.d.ts +3 -3
- package/lib/browser/preferences/test/index.js +30 -30
- package/lib/browser/preferences/test/mock-preference-provider.d.ts +16 -16
- package/lib/browser/preferences/test/mock-preference-provider.js +46 -46
- package/lib/browser/preferences/test/mock-preference-proxy.d.ts +3 -3
- package/lib/browser/preferences/test/mock-preference-proxy.js +49 -49
- package/lib/browser/preferences/test/mock-preference-service.d.ts +28 -28
- package/lib/browser/preferences/test/mock-preference-service.js +67 -67
- package/lib/browser/preload/i18n-preload-contribution.d.ts +6 -6
- package/lib/browser/preload/i18n-preload-contribution.js +62 -62
- package/lib/browser/preload/os-preload-contribution.d.ts +6 -6
- package/lib/browser/preload/os-preload-contribution.js +48 -48
- package/lib/browser/preload/preload-module.d.ts +3 -3
- package/lib/browser/preload/preload-module.js +38 -38
- package/lib/browser/preload/preloader.d.ts +11 -11
- package/lib/browser/preload/preloader.js +44 -44
- package/lib/browser/preload/theme-preload-contribution.d.ts +4 -4
- package/lib/browser/preload/theme-preload-contribution.js +39 -39
- package/lib/browser/progress-bar-factory.d.ts +11 -11
- package/lib/browser/progress-bar-factory.js +20 -20
- package/lib/browser/progress-bar.d.ts +15 -15
- package/lib/browser/progress-bar.js +89 -89
- package/lib/browser/progress-client.d.ts +12 -12
- package/lib/browser/progress-client.js +61 -61
- package/lib/browser/progress-location-service.d.ts +21 -21
- package/lib/browser/progress-location-service.js +96 -96
- package/lib/browser/progress-location-service.spec.d.ts +1 -1
- package/lib/browser/progress-location-service.spec.js +44 -44
- package/lib/browser/progress-status-bar-item.d.ts +16 -16
- package/lib/browser/progress-status-bar-item.js +89 -89
- package/lib/browser/quick-input/index.d.ts +8 -8
- package/lib/browser/quick-input/index.js +35 -35
- package/lib/browser/quick-input/quick-access.d.ts +53 -53
- package/lib/browser/quick-input/quick-access.js +20 -20
- package/lib/browser/quick-input/quick-command-frontend-contribution.d.ts +11 -11
- package/lib/browser/quick-input/quick-command-frontend-contribution.js +104 -104
- package/lib/browser/quick-input/quick-command-service.d.ts +59 -59
- package/lib/browser/quick-input/quick-command-service.js +233 -233
- package/lib/browser/quick-input/quick-help-service.d.ts +11 -11
- package/lib/browser/quick-input/quick-help-service.js +91 -91
- package/lib/browser/quick-input/quick-input-frontend-contribution.d.ts +7 -7
- package/lib/browser/quick-input/quick-input-frontend-contribution.js +46 -46
- package/lib/browser/quick-input/quick-input-service.d.ts +1 -1
- package/lib/browser/quick-input/quick-input-service.js +28 -28
- package/lib/browser/quick-input/quick-input-service.spec.d.ts +1 -1
- package/lib/browser/quick-input/quick-input-service.spec.js +159 -159
- package/lib/browser/quick-input/quick-pick-service-impl.d.ts +30 -30
- package/lib/browser/quick-input/quick-pick-service-impl.js +77 -77
- package/lib/browser/quick-input/quick-view-service.d.ts +23 -23
- package/lib/browser/quick-input/quick-view-service.js +86 -86
- package/lib/browser/request/browser-request-module.d.ts +18 -18
- package/lib/browser/request/browser-request-module.js +23 -23
- package/lib/browser/request/browser-request-service.d.ts +41 -41
- package/lib/browser/request/browser-request-service.js +180 -180
- package/lib/browser/resource-context-key.d.ts +19 -19
- package/lib/browser/resource-context-key.js +83 -83
- package/lib/browser/save-resource-service.d.ts +35 -35
- package/lib/browser/save-resource-service.d.ts.map +1 -1
- package/lib/browser/save-resource-service.js +72 -71
- package/lib/browser/save-resource-service.js.map +1 -1
- package/lib/browser/saveable.d.ts +124 -124
- package/lib/browser/saveable.js +274 -274
- package/lib/browser/secondary-window-handler.d.ts +64 -64
- package/lib/browser/secondary-window-handler.js +208 -208
- package/lib/browser/shell/additional-views-menu-widget.d.ts +19 -19
- package/lib/browser/shell/additional-views-menu-widget.js +81 -81
- package/lib/browser/shell/application-shell-mouse-tracker.d.ts +30 -30
- package/lib/browser/shell/application-shell-mouse-tracker.js +107 -107
- package/lib/browser/shell/application-shell.d.ts +572 -572
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +1995 -1990
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/current-widget-command-adapter.d.ts +23 -23
- package/lib/browser/shell/current-widget-command-adapter.js +41 -41
- package/lib/browser/shell/index.d.ts +7 -7
- package/lib/browser/shell/index.js +34 -34
- package/lib/browser/shell/shell-layout-restorer.d.ts +123 -123
- package/lib/browser/shell/shell-layout-restorer.js +347 -347
- package/lib/browser/shell/side-panel-handler.d.ts +286 -286
- package/lib/browser/shell/side-panel-handler.js +667 -667
- package/lib/browser/shell/side-panel-toolbar.d.ts +25 -25
- package/lib/browser/shell/side-panel-toolbar.js +96 -96
- package/lib/browser/shell/sidebar-bottom-menu-widget.d.ts +9 -9
- package/lib/browser/shell/sidebar-bottom-menu-widget.js +46 -46
- package/lib/browser/shell/sidebar-menu-widget.d.ts +38 -38
- package/lib/browser/shell/sidebar-menu-widget.js +121 -121
- package/lib/browser/shell/sidebar-top-menu-widget.d.ts +6 -6
- package/lib/browser/shell/sidebar-top-menu-widget.js +35 -35
- package/lib/browser/shell/split-panels.d.ts +42 -42
- package/lib/browser/shell/split-panels.js +177 -177
- package/lib/browser/shell/tab-bar-decorator.d.ts +40 -35
- package/lib/browser/shell/tab-bar-decorator.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-decorator.js +95 -64
- package/lib/browser/shell/tab-bar-decorator.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/index.d.ts +3 -3
- package/lib/browser/shell/tab-bar-toolbar/index.js +30 -30
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +15 -15
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +35 -35
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +95 -95
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +253 -253
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts +136 -136
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js +88 -88
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +88 -88
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +417 -417
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.d.ts +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js +51 -51
- package/lib/browser/shell/tab-bars.d.ts +339 -338
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.js +1309 -1277
- package/lib/browser/shell/tab-bars.js.map +1 -1
- package/lib/browser/shell/tab-bars.spec.d.ts +1 -1
- package/lib/browser/shell/tab-bars.spec.js +56 -56
- package/lib/browser/shell/theia-dock-panel.d.ts +59 -59
- package/lib/browser/shell/theia-dock-panel.js +226 -226
- package/lib/browser/shell/view-contribution.d.ts +43 -43
- package/lib/browser/shell/view-contribution.js +167 -167
- package/lib/browser/source-tree/index.d.ts +3 -3
- package/lib/browser/source-tree/index.js +30 -30
- package/lib/browser/source-tree/source-tree-widget.d.ts +21 -21
- package/lib/browser/source-tree/source-tree-widget.js +118 -118
- package/lib/browser/source-tree/source-tree.d.ts +36 -36
- package/lib/browser/source-tree/source-tree.js +134 -134
- package/lib/browser/source-tree/tree-source.d.ts +35 -35
- package/lib/browser/source-tree/tree-source.js +64 -64
- package/lib/browser/status-bar/index.d.ts +5 -5
- package/lib/browser/status-bar/index.js +40 -40
- package/lib/browser/status-bar/status-bar-types.d.ts +72 -72
- package/lib/browser/status-bar/status-bar-types.js +25 -25
- package/lib/browser/status-bar/status-bar-view-model.d.ts +35 -35
- package/lib/browser/status-bar/status-bar-view-model.js +212 -212
- package/lib/browser/status-bar/status-bar.d.ts +34 -34
- package/lib/browser/status-bar/status-bar.js +192 -192
- package/lib/browser/storage-service.d.ts +35 -35
- package/lib/browser/storage-service.js +130 -130
- package/lib/browser/storage-service.spec.d.ts +1 -1
- package/lib/browser/storage-service.spec.js +68 -68
- package/lib/browser/styling-service.d.ts +28 -28
- package/lib/browser/styling-service.js +85 -85
- package/lib/browser/supported-encodings.d.ts +9 -9
- package/lib/browser/supported-encodings.js +263 -263
- package/lib/browser/test/jsdom.d.ts +8 -8
- package/lib/browser/test/jsdom.js +69 -69
- package/lib/browser/test/mock-connection-status-service.d.ts +5 -5
- package/lib/browser/test/mock-connection-status-service.js +32 -32
- package/lib/browser/test/mock-env-variables-server.d.ts +12 -12
- package/lib/browser/test/mock-env-variables-server.js +42 -42
- package/lib/browser/test/mock-opener-service.d.ts +8 -8
- package/lib/browser/test/mock-opener-service.js +40 -40
- package/lib/browser/test/mock-storage-service.d.ts +11 -11
- package/lib/browser/test/mock-storage-service.js +54 -54
- package/lib/browser/theming.d.ts +50 -50
- package/lib/browser/theming.js +211 -211
- package/lib/browser/tooltip-service.d.ts +34 -34
- package/lib/browser/tooltip-service.js +87 -87
- package/lib/browser/tooltip-service.js.map +1 -1
- package/lib/browser/tree/fuzzy-search.d.ts +60 -60
- package/lib/browser/tree/fuzzy-search.js +80 -80
- package/lib/browser/tree/fuzzy-search.spec.d.ts +1 -1
- package/lib/browser/tree/fuzzy-search.spec.js +89 -89
- package/lib/browser/tree/index.d.ts +13 -12
- package/lib/browser/tree/index.d.ts.map +1 -1
- package/lib/browser/tree/index.js +40 -39
- package/lib/browser/tree/index.js.map +1 -1
- package/lib/browser/tree/search-box-debounce.d.ts +33 -33
- package/lib/browser/tree/search-box-debounce.js +75 -75
- package/lib/browser/tree/search-box.d.ts +105 -105
- package/lib/browser/tree/search-box.js +265 -265
- package/lib/browser/tree/test/mock-selectable-tree-model.d.ts +15 -0
- package/lib/browser/tree/test/mock-selectable-tree-model.d.ts.map +1 -0
- package/lib/browser/tree/test/mock-selectable-tree-model.js +103 -0
- package/lib/browser/tree/test/mock-selectable-tree-model.js.map +1 -0
- package/lib/browser/tree/test/mock-tree-model.d.ts +12 -12
- package/lib/browser/tree/test/mock-tree-model.js +129 -129
- package/lib/browser/tree/test/tree-test-container.d.ts +2 -2
- package/lib/browser/tree/test/tree-test-container.js +52 -52
- package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.d.ts +8 -8
- package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js +67 -67
- package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts +23 -23
- package/lib/browser/tree/tree-compression/compressed-tree-model.js +97 -97
- package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts +38 -38
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js +198 -198
- package/lib/browser/tree/tree-compression/index.d.ts +4 -4
- package/lib/browser/tree/tree-compression/index.js +31 -31
- package/lib/browser/tree/tree-compression/tree-compression-service.d.ts +58 -58
- package/lib/browser/tree/tree-compression/tree-compression-service.js +103 -103
- package/lib/browser/tree/tree-consistency.spec.d.ts +1 -1
- package/lib/browser/tree/tree-consistency.spec.js +104 -104
- package/lib/browser/tree/tree-container.d.ts +51 -51
- package/lib/browser/tree/tree-container.js +115 -115
- package/lib/browser/tree/tree-container.spec.d.ts +1 -1
- package/lib/browser/tree/tree-container.spec.js +45 -45
- package/lib/browser/tree/tree-decorator.d.ts +143 -143
- package/lib/browser/tree/tree-decorator.js +123 -123
- package/lib/browser/tree/tree-decorator.spec.d.ts +1 -1
- package/lib/browser/tree/tree-decorator.spec.js +145 -145
- package/lib/browser/tree/tree-expansion.d.ts +65 -65
- package/lib/browser/tree/tree-expansion.js +132 -132
- package/lib/browser/tree/tree-expansion.spec.d.ts +1 -1
- package/lib/browser/tree/tree-expansion.spec.js +155 -155
- package/lib/browser/tree/tree-focus-service.d.ts +19 -19
- package/lib/browser/tree/tree-focus-service.js +61 -61
- package/lib/browser/tree/tree-iterator.d.ts +94 -94
- package/lib/browser/tree/tree-iterator.js +223 -223
- package/lib/browser/tree/tree-iterator.spec.d.ts +1 -1
- package/lib/browser/tree/tree-iterator.spec.js +150 -150
- package/lib/browser/tree/tree-label-provider.d.ts +8 -8
- package/lib/browser/tree/tree-label-provider.js +44 -44
- package/lib/browser/tree/tree-model.d.ts +202 -178
- package/lib/browser/tree/tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-model.js +403 -357
- package/lib/browser/tree/tree-model.js.map +1 -1
- package/lib/browser/tree/tree-navigation.d.ts +10 -10
- package/lib/browser/tree/tree-navigation.js +62 -62
- package/lib/browser/tree/tree-preference.d.ts +11 -0
- package/lib/browser/tree/tree-preference.d.ts.map +1 -0
- package/lib/browser/tree/tree-preference.js +47 -0
- package/lib/browser/tree/tree-preference.js.map +1 -0
- package/lib/browser/tree/tree-search.d.ts +36 -36
- package/lib/browser/tree/tree-search.js +138 -138
- package/lib/browser/tree/tree-selectable.spec.d.ts +2 -0
- package/lib/browser/tree/tree-selectable.spec.d.ts.map +1 -0
- package/lib/browser/tree/tree-selectable.spec.js +147 -0
- package/lib/browser/tree/tree-selectable.spec.js.map +1 -0
- package/lib/browser/tree/tree-selection-impl.d.ts +44 -44
- package/lib/browser/tree/tree-selection-impl.js +166 -166
- package/lib/browser/tree/tree-selection-state.d.ts +48 -48
- package/lib/browser/tree/tree-selection-state.js +227 -227
- package/lib/browser/tree/tree-selection-state.spec.d.ts +1 -1
- package/lib/browser/tree/tree-selection-state.spec.js +420 -420
- package/lib/browser/tree/tree-selection.d.ts +86 -86
- package/lib/browser/tree/tree-selection.js +86 -86
- package/lib/browser/tree/tree-view-welcome-widget.d.ts +45 -45
- package/lib/browser/tree/tree-view-welcome-widget.js +200 -200
- package/lib/browser/tree/tree-widget-selection.d.ts +11 -11
- package/lib/browser/tree/tree-widget-selection.js +46 -46
- package/lib/browser/tree/tree-widget.d.ts +559 -556
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +1363 -1342
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/tree/tree.d.ts +180 -180
- package/lib/browser/tree/tree.d.ts.map +1 -1
- package/lib/browser/tree/tree.js +296 -293
- package/lib/browser/tree/tree.js.map +1 -1
- package/lib/browser/tree/tree.spec.d.ts +1 -1
- package/lib/browser/tree/tree.spec.js +226 -226
- package/lib/browser/user-working-directory-provider.d.ts +23 -23
- package/lib/browser/user-working-directory-provider.js +84 -84
- package/lib/browser/view-container.d.ts +312 -312
- package/lib/browser/view-container.js +1466 -1466
- package/lib/browser/widget-decoration.d.ts +299 -299
- package/lib/browser/widget-decoration.js +140 -140
- package/lib/browser/widget-manager.d.ts +172 -163
- package/lib/browser/widget-manager.d.ts.map +1 -1
- package/lib/browser/widget-manager.js +230 -207
- package/lib/browser/widget-manager.js.map +1 -1
- package/lib/browser/widget-manager.spec.d.ts +1 -1
- package/lib/browser/widget-manager.spec.js +91 -91
- package/lib/browser/widget-open-handler.d.ts +88 -88
- package/lib/browser/widget-open-handler.js +145 -145
- package/lib/browser/widgets/alert-message.d.ts +23 -23
- package/lib/browser/widgets/alert-message.js +38 -38
- package/lib/browser/widgets/enhanced-preview-widget.d.ts +6 -6
- package/lib/browser/widgets/enhanced-preview-widget.js +26 -26
- package/lib/browser/widgets/extractable-widget.d.ts +13 -13
- package/lib/browser/widgets/extractable-widget.js +26 -26
- package/lib/browser/widgets/index.d.ts +4 -4
- package/lib/browser/widgets/index.js +31 -31
- package/lib/browser/widgets/previewable-widget.d.ts +8 -8
- package/lib/browser/widgets/previewable-widget.js +30 -30
- package/lib/browser/widgets/react-renderer.d.ts +14 -14
- package/lib/browser/widgets/react-renderer.js +59 -59
- package/lib/browser/widgets/react-widget.d.ts +16 -16
- package/lib/browser/widgets/react-widget.js +57 -57
- package/lib/browser/widgets/select-component.d.ts +53 -53
- package/lib/browser/widgets/select-component.d.ts.map +1 -1
- package/lib/browser/widgets/select-component.js +307 -306
- package/lib/browser/widgets/select-component.js.map +1 -1
- package/lib/browser/widgets/widget.d.ts +108 -106
- package/lib/browser/widgets/widget.d.ts.map +1 -1
- package/lib/browser/widgets/widget.js +385 -377
- package/lib/browser/widgets/widget.js.map +1 -1
- package/lib/browser/window/browser-window-module.d.ts +3 -3
- package/lib/browser/window/browser-window-module.js +32 -32
- package/lib/browser/window/default-secondary-window-service.d.ts +25 -25
- package/lib/browser/window/default-secondary-window-service.js +198 -198
- package/lib/browser/window/default-window-service.d.ts +49 -49
- package/lib/browser/window/default-window-service.js +172 -172
- package/lib/browser/window/default-window-service.spec.d.ts +1 -1
- package/lib/browser/window/default-window-service.spec.js +80 -80
- package/lib/browser/window/secondary-window-service.d.ts +20 -20
- package/lib/browser/window/secondary-window-service.js +19 -19
- package/lib/browser/window/test/mock-window-service.d.ts +10 -10
- package/lib/browser/window/test/mock-window-service.js +38 -38
- package/lib/browser/window/window-service.d.ts +45 -45
- package/lib/browser/window/window-service.js +22 -22
- package/lib/browser/window/window-title-service.d.ts +31 -31
- package/lib/browser/window/window-title-service.js +120 -120
- package/lib/browser/window/window-title-updater.d.ts +19 -19
- package/lib/browser/window/window-title-updater.js +107 -107
- package/lib/browser/window-contribution.d.ts +14 -14
- package/lib/browser/window-contribution.js +70 -70
- package/lib/browser-only/frontend-only-application-module.d.ts +5 -0
- package/lib/browser-only/frontend-only-application-module.d.ts.map +1 -0
- package/lib/browser-only/frontend-only-application-module.js +115 -0
- package/lib/browser-only/frontend-only-application-module.js.map +1 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.d.ts +4 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.js +35 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.js.map +1 -0
- package/lib/browser-only/logger-frontend-only-module.d.ts +3 -0
- package/lib/browser-only/logger-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/logger-frontend-only-module.js +61 -0
- package/lib/browser-only/logger-frontend-only-module.js.map +1 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts +14 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts.map +1 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js +57 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.d.ts +3 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.js +48 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.js.map +1 -0
- package/lib/browser-only/preload/frontend-only-preload-module.d.ts +4 -0
- package/lib/browser-only/preload/frontend-only-preload-module.d.ts.map +1 -0
- package/lib/browser-only/preload/frontend-only-preload-module.js +52 -0
- package/lib/browser-only/preload/frontend-only-preload-module.js.map +1 -0
- package/lib/common/accessibility.d.ts +16 -16
- package/lib/common/accessibility.js +17 -17
- package/lib/common/application-error.d.ts +20 -20
- package/lib/common/application-error.js +62 -62
- package/lib/common/application-error.spec.d.ts +1 -1
- package/lib/common/application-error.spec.js +26 -26
- package/lib/common/application-protocol.d.ts +20 -19
- package/lib/common/application-protocol.d.ts.map +1 -1
- package/lib/common/application-protocol.js +20 -20
- package/lib/common/array-utils.d.ts +55 -55
- package/lib/common/array-utils.js +118 -118
- package/lib/common/buffer.d.ts +43 -43
- package/lib/common/buffer.js +205 -205
- package/lib/common/cancellation.d.ts +24 -24
- package/lib/common/cancellation.js +142 -142
- package/lib/common/char-code.d.ts +401 -401
- package/lib/common/char-code.js +22 -22
- package/lib/common/collections.d.ts +29 -29
- package/lib/common/collections.js +121 -121
- package/lib/common/color.d.ts +71 -71
- package/lib/common/color.js +43 -43
- package/lib/common/command.d.ts +232 -232
- package/lib/common/command.js +364 -364
- package/lib/common/command.spec.d.ts +1 -1
- package/lib/common/command.spec.js +173 -173
- package/lib/common/contribution-filter/contribution-filter-registry.d.ts +17 -17
- package/lib/common/contribution-filter/contribution-filter-registry.js +88 -88
- package/lib/common/contribution-filter/contribution-filter.d.ts +41 -41
- package/lib/common/contribution-filter/contribution-filter.js +20 -20
- package/lib/common/contribution-filter/filter.d.ts +6 -6
- package/lib/common/contribution-filter/filter.js +19 -19
- package/lib/common/contribution-filter/index.d.ts +3 -3
- package/lib/common/contribution-filter/index.js +30 -30
- package/lib/common/contribution-provider.d.ts +20 -20
- package/lib/common/contribution-provider.js +82 -82
- package/lib/common/disposable.d.ts +80 -43
- package/lib/common/disposable.d.ts.map +1 -1
- package/lib/common/disposable.js +173 -120
- package/lib/common/disposable.js.map +1 -1
- package/lib/common/disposable.spec.d.ts +1 -1
- package/lib/common/disposable.spec.js +80 -29
- package/lib/common/disposable.spec.js.map +1 -1
- package/lib/common/encoding-service.d.ts +38 -38
- package/lib/common/encoding-service.js +307 -307
- package/lib/common/encodings.d.ts +7 -7
- package/lib/common/encodings.js +25 -25
- package/lib/common/env-variables/env-variables-protocol.d.ts +20 -20
- package/lib/common/env-variables/env-variables-protocol.js +20 -20
- package/lib/common/env-variables/index.d.ts +1 -1
- package/lib/common/env-variables/index.js +28 -28
- package/lib/common/event.d.ts +115 -115
- package/lib/common/event.js +385 -385
- package/lib/common/event.spec.d.ts +1 -1
- package/lib/common/event.spec.js +29 -29
- package/lib/{node → common}/file-uri.d.ts +14 -14
- package/lib/common/file-uri.d.ts.map +1 -0
- package/lib/{node → common}/file-uri.js +62 -62
- package/lib/common/file-uri.js.map +1 -0
- package/lib/common/frontend-application-state.d.ts +15 -15
- package/lib/common/frontend-application-state.js +33 -33
- package/lib/common/glob.d.ts +50 -50
- package/lib/common/glob.js +591 -591
- package/lib/common/hash.d.ts +7 -7
- package/lib/common/hash.js +84 -84
- package/lib/common/i18n/localization-server.d.ts +6 -6
- package/lib/common/i18n/localization-server.js +20 -20
- package/lib/common/i18n/localization.d.ts +34 -34
- package/lib/common/i18n/localization.js +59 -59
- package/lib/common/index.d.ts +35 -34
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +65 -64
- package/lib/common/index.js.map +1 -1
- package/lib/common/json-schema.d.ts +72 -72
- package/lib/common/json-schema.js +17 -17
- package/lib/common/key-store.d.ts +12 -12
- package/lib/common/key-store.js +20 -20
- package/lib/common/keybinding.d.ts +75 -75
- package/lib/common/keybinding.js +113 -113
- package/lib/common/keyboard/keyboard-layout-provider.d.ts +26 -26
- package/lib/common/keyboard/keyboard-layout-provider.js +22 -22
- package/lib/common/keys.d.ts +253 -253
- package/lib/common/keys.js +634 -634
- package/lib/common/label-protocol.d.ts +13 -13
- package/lib/common/label-protocol.js +17 -17
- package/lib/common/logger-protocol.d.ts +41 -41
- package/lib/common/logger-protocol.js +105 -105
- package/lib/common/logger-watcher.d.ts +9 -9
- package/lib/common/logger-watcher.js +54 -54
- package/lib/common/logger.d.ts +207 -207
- package/lib/common/logger.js +212 -212
- package/lib/common/logger.spec.d.ts +1 -1
- package/lib/common/logger.spec.js +41 -41
- package/lib/common/lsp-types.d.ts +9 -9
- package/lib/common/lsp-types.js +30 -30
- package/lib/common/markdown-rendering/icon-utilities.d.ts +7 -7
- package/lib/common/markdown-rendering/icon-utilities.js +32 -32
- package/lib/common/markdown-rendering/index.d.ts +2 -2
- package/lib/common/markdown-rendering/index.js +29 -29
- package/lib/common/markdown-rendering/markdown-string.d.ts +46 -43
- package/lib/common/markdown-rendering/markdown-string.d.ts.map +1 -1
- package/lib/common/markdown-rendering/markdown-string.js +126 -126
- package/lib/common/markdown-rendering/markdown-string.js.map +1 -1
- package/lib/common/menu/action-menu-node.d.ts +19 -19
- package/lib/common/menu/action-menu-node.js +56 -56
- package/lib/common/menu/composite-menu-node.d.ts +46 -46
- package/lib/common/menu/composite-menu-node.js +93 -93
- package/lib/common/menu/index.d.ts +5 -5
- package/lib/common/menu/index.js +32 -32
- package/lib/common/menu/menu-adapter.d.ts +35 -35
- package/lib/common/menu/menu-adapter.js +100 -100
- package/lib/common/menu/menu-model-registry.d.ts +145 -145
- package/lib/common/menu/menu-model-registry.d.ts.map +1 -1
- package/lib/common/menu/menu-model-registry.js +286 -272
- package/lib/common/menu/menu-model-registry.js.map +1 -1
- package/lib/common/menu/menu-types.d.ts +148 -148
- package/lib/common/menu/menu-types.js +93 -93
- package/lib/common/menu/menu.spec.d.ts +1 -1
- package/lib/common/menu/menu.spec.js +96 -69
- package/lib/common/menu/menu.spec.js.map +1 -1
- package/lib/common/message-rpc/channel.d.ts +123 -123
- package/lib/common/message-rpc/channel.js +230 -230
- package/lib/common/message-rpc/channel.spec.d.ts +8 -8
- package/lib/common/message-rpc/channel.spec.js +79 -79
- package/lib/common/message-rpc/index.d.ts +3 -3
- package/lib/common/message-rpc/index.js +24 -24
- package/lib/common/message-rpc/message-buffer.d.ts +51 -51
- package/lib/common/message-rpc/message-buffer.js +59 -59
- package/lib/common/message-rpc/msg-pack-extension-manager.d.ts +22 -22
- package/lib/common/message-rpc/msg-pack-extension-manager.js +57 -57
- package/lib/common/message-rpc/rpc-message-encoder.d.ts +103 -103
- package/lib/common/message-rpc/rpc-message-encoder.js +113 -113
- package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts +1 -1
- package/lib/common/message-rpc/rpc-message-encoder.spec.js +58 -58
- package/lib/common/message-rpc/rpc-protocol.d.ts +67 -65
- package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -1
- package/lib/common/message-rpc/rpc-protocol.js +209 -191
- package/lib/common/message-rpc/rpc-protocol.js.map +1 -1
- package/lib/common/message-rpc/uint8-array-message-buffer.d.ts +52 -52
- package/lib/common/message-rpc/uint8-array-message-buffer.js +174 -174
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts +1 -1
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.js +38 -38
- package/lib/common/message-service-protocol.d.ts +110 -110
- package/lib/common/message-service-protocol.js +78 -78
- package/lib/common/message-service.d.ts +134 -134
- package/lib/common/message-service.js +162 -162
- package/lib/common/messaging/connection-error-handler.d.ts +28 -28
- package/lib/common/messaging/connection-error-handler.js +47 -47
- package/lib/common/messaging/connection-management.d.ts +24 -24
- package/lib/common/messaging/connection-management.js +37 -37
- package/lib/common/messaging/handler.d.ts +7 -7
- package/lib/common/messaging/handler.js +20 -20
- package/lib/common/messaging/index.d.ts +3 -3
- package/lib/common/messaging/index.js +30 -30
- package/lib/common/messaging/proxy-factory.d.ts +180 -180
- package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/common/messaging/proxy-factory.js +280 -287
- package/lib/common/messaging/proxy-factory.js.map +1 -1
- package/lib/common/messaging/proxy-factory.spec.d.ts +1 -1
- package/lib/common/messaging/proxy-factory.spec.js +99 -99
- package/lib/common/messaging/socket-write-buffer.d.ts +10 -10
- package/lib/common/messaging/socket-write-buffer.js +49 -49
- package/lib/common/messaging/web-socket-channel.d.ts +19 -19
- package/lib/common/messaging/web-socket-channel.js +64 -64
- package/lib/common/nls.d.ts +15 -15
- package/lib/common/nls.js +133 -133
- package/lib/common/numbers.d.ts +5 -5
- package/lib/common/numbers.js +23 -23
- package/lib/common/objects.d.ts +8 -8
- package/lib/common/objects.js +118 -118
- package/lib/common/objects.spec.d.ts +1 -1
- package/lib/common/objects.spec.js +101 -101
- package/lib/common/os.d.ts +31 -31
- package/lib/common/os.js +73 -73
- package/lib/common/path.d.ts +93 -93
- package/lib/common/path.js +307 -307
- package/lib/common/path.spec.d.ts +1 -1
- package/lib/common/path.spec.js +350 -350
- package/lib/common/paths.d.ts +24 -24
- package/lib/common/paths.js +226 -226
- package/lib/common/performance/index.d.ts +3 -3
- package/lib/common/performance/index.js +30 -30
- package/lib/common/performance/measurement-protocol.d.ts +64 -64
- package/lib/common/performance/measurement-protocol.js +78 -78
- package/lib/common/performance/measurement.d.ts +111 -111
- package/lib/common/performance/measurement.js +17 -17
- package/lib/common/performance/stopwatch.d.ts +75 -75
- package/lib/common/performance/stopwatch.js +156 -156
- package/lib/common/preferences/preference-schema.d.ts +52 -52
- package/lib/common/preferences/preference-schema.js +58 -58
- package/lib/common/preferences/preference-scope.d.ts +19 -19
- package/lib/common/preferences/preference-scope.js +71 -71
- package/lib/common/preferences/preference-scope.spec.d.ts +1 -1
- package/lib/common/preferences/preference-scope.spec.js +44 -44
- package/lib/common/prioritizeable.d.ts +16 -16
- package/lib/common/prioritizeable.js +55 -55
- package/lib/common/progress-service-protocol.d.ts +13 -13
- package/lib/common/progress-service-protocol.js +19 -19
- package/lib/common/progress-service.d.ts +13 -13
- package/lib/common/progress-service.js +96 -96
- package/lib/common/promise-util.d.ts +51 -51
- package/lib/common/promise-util.js +132 -132
- package/lib/common/promise-util.spec.d.ts +1 -1
- package/lib/common/promise-util.spec.js +55 -55
- package/lib/common/quick-pick-service.d.ts +269 -280
- package/lib/common/quick-pick-service.d.ts.map +1 -1
- package/lib/common/quick-pick-service.js +133 -158
- package/lib/common/quick-pick-service.js.map +1 -1
- package/lib/common/reference.d.ts +95 -40
- package/lib/common/reference.d.ts.map +1 -1
- package/lib/common/reference.js +207 -152
- package/lib/common/reference.js.map +1 -1
- package/lib/common/reference.spec.d.ts +1 -1
- package/lib/common/reference.spec.js +125 -125
- package/lib/common/resource.d.ts +207 -205
- package/lib/common/resource.d.ts.map +1 -1
- package/lib/common/resource.js +333 -333
- package/lib/common/resource.js.map +1 -1
- package/lib/common/selection-command-handler.d.ts +24 -24
- package/lib/common/selection-command-handler.js +83 -83
- package/lib/common/selection-service.d.ts +18 -18
- package/lib/common/selection-service.js +48 -48
- package/lib/common/selection-service.spec.d.ts +1 -1
- package/lib/common/selection-service.spec.js +38 -38
- package/lib/common/selection.d.ts +9 -9
- package/lib/common/selection.js +47 -47
- package/lib/common/severity.d.ts +15 -15
- package/lib/common/severity.js +113 -113
- package/lib/common/stream.d.ts +176 -176
- package/lib/common/stream.js +474 -474
- package/lib/common/strings.d.ts +24 -24
- package/lib/common/strings.js +215 -215
- package/lib/common/telemetry.d.ts +19 -19
- package/lib/common/telemetry.js +24 -24
- package/lib/common/ternary-search-tree.d.ts +50 -50
- package/lib/common/ternary-search-tree.js +381 -381
- package/lib/common/test/expect.d.ts +2 -2
- package/lib/common/test/expect.js +34 -34
- package/lib/common/test/mock-logger.d.ts +27 -27
- package/lib/common/test/mock-logger.js +104 -104
- package/lib/common/test/mock-menu.d.ts +7 -7
- package/lib/common/test/mock-menu.js +34 -34
- package/lib/common/test/mock-resource-provider.d.ts +6 -6
- package/lib/common/test/mock-resource-provider.js +44 -44
- package/lib/common/theme.d.ts +40 -15
- package/lib/common/theme.d.ts.map +1 -1
- package/lib/common/theme.js +22 -22
- package/lib/common/theme.js.map +1 -1
- package/lib/common/types.d.ts +58 -58
- package/lib/common/types.js +126 -126
- package/lib/common/types.spec.d.ts +1 -1
- package/lib/common/types.spec.js +73 -73
- package/lib/common/uri-command-handler.d.ts +53 -53
- package/lib/common/uri-command-handler.js +99 -99
- package/lib/common/uri-command-handler.spec.d.ts +1 -1
- package/lib/common/uri-command-handler.spec.js +80 -80
- package/lib/common/uri.d.ts +87 -86
- package/lib/common/uri.d.ts.map +1 -1
- package/lib/common/uri.js +236 -236
- package/lib/common/uri.js.map +1 -1
- package/lib/common/uri.spec.d.ts +1 -1
- package/lib/common/uri.spec.js +230 -230
- package/lib/common/uuid.d.ts +8 -2
- package/lib/common/uuid.d.ts.map +1 -1
- package/lib/common/uuid.js +44 -85
- package/lib/common/uuid.js.map +1 -1
- package/lib/common/version.d.ts +1 -1
- package/lib/common/version.js +19 -19
- package/lib/common/view-column.d.ts +17 -17
- package/lib/common/view-column.js +36 -36
- package/lib/common/window.d.ts +16 -16
- package/lib/common/window.js +22 -22
- package/lib/electron-browser/electron-clipboard-service.d.ts +5 -5
- package/lib/electron-browser/electron-clipboard-service.js +38 -38
- package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.d.ts +11 -11
- package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js +54 -54
- package/lib/electron-browser/keyboard/electron-keyboard-module.d.ts +3 -3
- package/lib/electron-browser/keyboard/electron-keyboard-module.js +26 -26
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts +30 -30
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +137 -137
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +59 -59
- package/lib/electron-browser/menu/electron-main-menu-factory.js +282 -282
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts +78 -77
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +482 -473
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-module.d.ts +3 -3
- package/lib/electron-browser/menu/electron-menu-module.js +39 -39
- package/lib/electron-browser/messaging/electron-frontend-id-provider.d.ts +4 -4
- package/lib/electron-browser/messaging/electron-frontend-id-provider.js +34 -34
- package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts +23 -23
- package/lib/electron-browser/messaging/electron-ipc-connection-source.js +64 -64
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.d.ts +6 -6
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.js +54 -54
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.d.ts +2 -2
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.js +75 -75
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-source.d.ts +11 -11
- package/lib/electron-browser/messaging/electron-ws-connection-source.js +50 -50
- package/lib/electron-browser/preload.d.ts +1 -1
- package/lib/electron-browser/preload.js +201 -201
- package/lib/electron-browser/request/electron-browser-request-module.d.ts +18 -18
- package/lib/electron-browser/request/electron-browser-request-module.js +26 -26
- package/lib/electron-browser/token/electron-token-frontend-module.d.ts +3 -3
- package/lib/electron-browser/token/electron-token-frontend-module.js +22 -22
- package/lib/electron-browser/window/electron-frontend-application-state.d.ts +4 -4
- package/lib/electron-browser/window/electron-frontend-application-state.js +36 -36
- package/lib/electron-browser/window/electron-secondary-window-service.d.ts +7 -7
- package/lib/electron-browser/window/electron-secondary-window-service.js +47 -47
- package/lib/electron-browser/window/electron-window-module.d.ts +3 -3
- package/lib/electron-browser/window/electron-window-module.js +39 -39
- package/lib/electron-browser/window/electron-window-preferences.d.ts +18 -18
- package/lib/electron-browser/window/electron-window-preferences.js +72 -72
- package/lib/electron-browser/window/electron-window-service.d.ts +29 -29
- package/lib/electron-browser/window/electron-window-service.js +114 -114
- package/lib/electron-common/electron-api.d.ts +104 -104
- package/lib/electron-common/electron-api.js +56 -56
- package/lib/electron-common/electron-main-window-service.d.ts +7 -7
- package/lib/electron-common/electron-main-window-service.js +20 -20
- package/lib/electron-common/electron-token.d.ts +10 -10
- package/lib/electron-common/electron-token.js +27 -27
- package/lib/electron-main/electron-api-main.d.ts +22 -22
- package/lib/electron-main/electron-api-main.js +294 -294
- package/lib/electron-main/electron-main-application-module.d.ts +3 -3
- package/lib/electron-main/electron-main-application-module.js +56 -56
- package/lib/electron-main/electron-main-application-module.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +159 -159
- package/lib/electron-main/electron-main-application.js +611 -611
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/electron-main-constants.d.ts +6 -6
- package/lib/electron-main/electron-main-constants.js +19 -19
- package/lib/electron-main/electron-main-window-service-impl.d.ts +8 -8
- package/lib/electron-main/electron-main-window-service-impl.js +54 -54
- package/lib/electron-main/electron-security-token-service.d.ts +5 -5
- package/lib/electron-main/electron-security-token-service.js +49 -49
- package/lib/electron-main/event-utils.d.ts +8 -8
- package/lib/electron-main/event-utils.js +33 -33
- package/lib/electron-main/messaging/electron-connection-handler.d.ts +5 -5
- package/lib/electron-main/messaging/electron-connection-handler.js +23 -23
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +41 -41
- package/lib/electron-main/messaging/electron-messaging-contribution.js +150 -150
- package/lib/electron-main/messaging/electron-messaging-service.d.ts +17 -17
- package/lib/electron-main/messaging/electron-messaging-service.js +22 -22
- package/lib/electron-main/theia-electron-window.d.ts +53 -53
- package/lib/electron-main/theia-electron-window.js +194 -194
- package/lib/electron-main/theia-electron-window.js.map +1 -1
- package/lib/electron-node/hosting/electron-backend-hosting-module.d.ts +3 -3
- package/lib/electron-node/hosting/electron-backend-hosting-module.js +24 -24
- package/lib/electron-node/hosting/electron-ws-origin-validator.d.ts +8 -8
- package/lib/electron-node/hosting/electron-ws-origin-validator.js +48 -48
- package/lib/electron-node/keyboard/electron-backend-keyboard-module.d.ts +3 -3
- package/lib/electron-node/keyboard/electron-backend-keyboard-module.js +26 -26
- package/lib/electron-node/keyboard/electron-keyboard-layout-provider.d.ts +5 -5
- package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js +41 -41
- package/lib/electron-node/request/electron-backend-request-module.d.ts +18 -18
- package/lib/electron-node/request/electron-backend-request-module.js +23 -23
- package/lib/electron-node/request/electron-backend-request-service.d.ts +22 -22
- package/lib/electron-node/request/electron-backend-request-service.js +86 -86
- package/lib/electron-node/token/electron-token-backend-contribution.d.ts +15 -15
- package/lib/electron-node/token/electron-token-backend-contribution.js +58 -58
- package/lib/electron-node/token/electron-token-backend-module.d.ts +3 -3
- package/lib/electron-node/token/electron-token-backend-module.js +28 -28
- package/lib/electron-node/token/electron-token-validator.d.ts +29 -29
- package/lib/electron-node/token/electron-token-validator.js +103 -103
- package/lib/node/application-server.d.ts +10 -9
- package/lib/node/application-server.d.ts.map +1 -1
- package/lib/node/application-server.js +63 -57
- package/lib/node/application-server.js.map +1 -1
- package/lib/node/backend-application-config-provider.d.ts +7 -7
- package/lib/node/backend-application-config-provider.js +45 -45
- package/lib/node/backend-application-config-provider.spec.d.ts +1 -1
- package/lib/node/backend-application-config-provider.spec.js +28 -28
- package/lib/node/backend-application-module.d.ts +2 -2
- package/lib/node/backend-application-module.js +108 -108
- package/lib/node/backend-application.d.ts +108 -108
- package/lib/node/backend-application.js +301 -301
- package/lib/node/backend-remote-service.d.ts +3 -3
- package/lib/node/backend-remote-service.js +34 -34
- package/lib/node/cli.d.ts +17 -17
- package/lib/node/cli.js +70 -70
- package/lib/node/cli.spec.d.ts +1 -1
- package/lib/node/cli.spec.js +89 -89
- package/lib/node/console-logger-server.d.ts +15 -15
- package/lib/node/console-logger-server.js +90 -90
- package/lib/node/console-logger-server.spec.d.ts +1 -1
- package/lib/node/console-logger-server.spec.js +69 -69
- package/lib/node/debug.d.ts +1 -1
- package/lib/node/debug.js +28 -28
- package/lib/node/dynamic-require.d.ts +7 -7
- package/lib/node/dynamic-require.js +56 -56
- package/lib/node/env-variables/env-variables-server.d.ts +23 -23
- package/lib/node/env-variables/env-variables-server.js +125 -125
- package/lib/node/env-variables/env-variables-server.js.map +1 -1
- package/lib/node/env-variables/index.d.ts +1 -1
- package/lib/node/env-variables/index.js +28 -28
- package/lib/node/environment-utils.d.ts +21 -21
- package/lib/node/environment-utils.js +77 -77
- package/lib/node/environment-utils.spec.d.ts +1 -1
- package/lib/node/environment-utils.spec.js +77 -77
- package/lib/node/file-uri.spec.d.ts +1 -1
- package/lib/node/file-uri.spec.js +66 -66
- package/lib/node/file-uri.spec.js.map +1 -1
- package/lib/node/filesystem-locking.d.ts +23 -23
- package/lib/node/filesystem-locking.js +70 -70
- package/lib/node/hosting/backend-application-hosts.d.ts +23 -23
- package/lib/node/hosting/backend-application-hosts.js +77 -77
- package/lib/node/hosting/backend-hosting-module.d.ts +3 -3
- package/lib/node/hosting/backend-hosting-module.js +26 -26
- package/lib/node/hosting/ws-origin-validator.d.ts +8 -8
- package/lib/node/hosting/ws-origin-validator.js +47 -47
- package/lib/node/i18n/i18n-backend-module.d.ts +3 -3
- package/lib/node/i18n/i18n-backend-module.js +38 -38
- package/lib/node/i18n/localization-contribution.d.ts +18 -18
- package/lib/node/i18n/localization-contribution.js +116 -116
- package/lib/node/i18n/localization-provider.d.ts +23 -23
- package/lib/node/i18n/localization-provider.js +114 -114
- package/lib/node/i18n/localization-server.d.ts +14 -14
- package/lib/node/i18n/localization-server.js +62 -62
- package/lib/node/i18n/theia-localization-contribution.d.ts +4 -4
- package/lib/node/i18n/theia-localization-contribution.js +45 -45
- package/lib/node/index.d.ts +6 -6
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +35 -35
- package/lib/node/index.js.map +1 -1
- package/lib/node/key-store-server.d.ts +27 -27
- package/lib/node/key-store-server.js +150 -150
- package/lib/node/logger-backend-module.d.ts +9 -9
- package/lib/node/logger-backend-module.js +78 -78
- package/lib/node/logger-cli-contribution.d.ts +33 -33
- package/lib/node/logger-cli-contribution.js +152 -152
- package/lib/node/logger-cli-contribution.spec.d.ts +1 -1
- package/lib/node/logger-cli-contribution.spec.js +207 -207
- package/lib/node/main.d.ts +7 -7
- package/lib/node/main.js +29 -29
- package/lib/node/messaging/binary-message-pipe.d.ts +44 -44
- package/lib/node/messaging/binary-message-pipe.js +151 -151
- package/lib/node/messaging/connection-container-module.d.ts +53 -53
- package/lib/node/messaging/connection-container-module.js +81 -81
- package/lib/node/messaging/default-messaging-service.d.ts +28 -28
- package/lib/node/messaging/default-messaging-service.js +139 -139
- package/lib/node/messaging/frontend-connection-service.d.ts +6 -6
- package/lib/node/messaging/frontend-connection-service.js +18 -18
- package/lib/node/messaging/index.d.ts +3 -3
- package/lib/node/messaging/index.js +30 -30
- package/lib/node/messaging/ipc-bootstrap.d.ts +1 -1
- package/lib/node/messaging/ipc-bootstrap.js +24 -24
- package/lib/node/messaging/ipc-channel.d.ts +17 -17
- package/lib/node/messaging/ipc-channel.js +69 -69
- package/lib/node/messaging/ipc-connection-provider.d.ts +21 -21
- package/lib/node/messaging/ipc-connection-provider.js +100 -100
- package/lib/node/messaging/ipc-protocol.d.ts +19 -19
- package/lib/node/messaging/ipc-protocol.js +68 -68
- package/lib/node/messaging/messaging-backend-module.d.ts +2 -2
- package/lib/node/messaging/messaging-backend-module.js +52 -52
- package/lib/node/messaging/messaging-listeners.d.ts +27 -27
- package/lib/node/messaging/messaging-listeners.js +53 -53
- package/lib/node/messaging/messaging-service.d.ts +28 -28
- package/lib/node/messaging/messaging-service.js +24 -24
- package/lib/node/messaging/test/test-web-socket-channel.d.ts +12 -12
- package/lib/node/messaging/test/test-web-socket-channel.js +62 -62
- package/lib/node/messaging/websocket-endpoint.d.ts +20 -20
- package/lib/node/messaging/websocket-endpoint.js +88 -88
- package/lib/node/messaging/websocket-frontend-connection-service.d.ts +30 -30
- package/lib/node/messaging/websocket-frontend-connection-service.js +177 -177
- package/lib/node/os-backend-provider.d.ts +4 -4
- package/lib/node/os-backend-provider.js +35 -35
- package/lib/node/performance/index.d.ts +2 -2
- package/lib/node/performance/index.js +29 -29
- package/lib/node/performance/measurement-backend-bindings.d.ts +19 -19
- package/lib/node/performance/measurement-backend-bindings.js +30 -30
- package/lib/node/performance/node-stopwatch.d.ts +20 -20
- package/lib/node/performance/node-stopwatch.js +51 -51
- package/lib/node/process-utils.d.ts +13 -13
- package/lib/node/process-utils.js +110 -110
- package/lib/node/process-utils.spec.d.ts +1 -1
- package/lib/node/process-utils.spec.js +44 -44
- package/lib/node/request/backend-request-facade.d.ts +22 -22
- package/lib/node/request/backend-request-facade.js +49 -49
- package/lib/node/request/backend-request-module.d.ts +18 -18
- package/lib/node/request/backend-request-module.js +24 -24
- package/lib/node/request/proxy-cli-contribution.d.ts +27 -27
- package/lib/node/request/proxy-cli-contribution.js +72 -72
- package/lib/node/ws-request-validators.d.ts +25 -25
- package/lib/node/ws-request-validators.js +60 -60
- package/package.json +13 -8
- package/shared/ajv/index.d.ts +2 -2
- package/shared/markdown-it.d.ts +2 -2
- package/shared/markdown-it.js +1 -1
- package/shared/reflect-metadata/index.d.ts +1 -1
- package/shared/reflect-metadata/index.js +1 -1
- package/shared/vscode-languageserver-types/index.d.ts +1 -1
- package/src/browser/about-dialog.tsx +137 -137
- package/src/browser/authentication-service.ts +456 -456
- package/src/browser/breadcrumbs/breadcrumb-popup-container.ts +101 -101
- package/src/browser/breadcrumbs/breadcrumb-renderer.tsx +41 -41
- package/src/browser/breadcrumbs/breadcrumbs-constants.ts +79 -79
- package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +185 -185
- package/src/browser/breadcrumbs/breadcrumbs-service.ts +108 -108
- package/src/browser/breadcrumbs/index.ts +21 -21
- package/src/browser/browser-clipboard-service.ts +122 -122
- package/src/browser/browser.ts +225 -220
- package/src/browser/clipboard-service.ts +23 -23
- package/src/browser/color-application-contribution.ts +101 -101
- package/src/browser/color-registry.ts +60 -60
- package/src/browser/command-open-handler.ts +54 -54
- package/src/browser/common-frontend-contribution.ts +2526 -2526
- package/src/browser/common-styling-participants.ts +361 -361
- package/src/browser/connection-status-service.spec.ts +200 -200
- package/src/browser/connection-status-service.ts +216 -216
- package/src/browser/context-key-service.ts +142 -143
- package/src/browser/context-menu-renderer.ts +124 -128
- package/src/browser/core-preferences.ts +334 -328
- package/src/browser/credentials-service.ts +106 -106
- package/src/browser/decoration-style.ts +65 -65
- package/src/browser/decorations-service.ts +209 -209
- package/src/browser/dialogs/react-dialog.tsx +56 -56
- package/src/browser/dialogs.ts +534 -534
- package/src/browser/diff-uris.ts +117 -117
- package/src/browser/encoding-registry.ts +97 -97
- package/src/browser/endpoint.spec.ts +148 -148
- package/src/browser/endpoint.ts +136 -136
- package/src/browser/external-uri-service.ts +79 -79
- package/src/browser/file-icons-js.d.ts +20 -20
- package/src/browser/frontend-application-bindings.ts +62 -62
- package/src/browser/frontend-application-config-provider.spec.ts +45 -45
- package/src/browser/frontend-application-config-provider.ts +50 -50
- package/src/browser/frontend-application-contribution.ts +110 -110
- package/src/browser/frontend-application-module.ts +458 -457
- package/src/browser/frontend-application-state.ts +74 -74
- package/src/browser/frontend-application.ts +326 -326
- package/src/browser/hover-service.ts +218 -218
- package/src/browser/http-open-handler.ts +47 -47
- package/src/browser/i18n/i18n-frontend-module.ts +27 -27
- package/src/browser/i18n/language-quick-pick-service.ts +130 -130
- package/src/browser/icon-registry.ts +87 -96
- package/src/browser/icon-theme-contribution.ts +64 -64
- package/src/browser/icon-theme-service.ts +217 -217
- package/src/browser/icons/CollapseAll.svg +7 -7
- package/src/browser/icons/CollapseAll_inverse.svg +7 -7
- package/src/browser/icons/Refresh.svg +7 -7
- package/src/browser/icons/Refresh_inverse.svg +7 -7
- package/src/browser/icons/add-inverse.svg +4 -4
- package/src/browser/icons/add.svg +4 -4
- package/src/browser/icons/arrow-down-bright.svg +6 -6
- package/src/browser/icons/arrow-down-dark.svg +6 -6
- package/src/browser/icons/arrow-up-bright.svg +6 -6
- package/src/browser/icons/arrow-up-dark.svg +6 -6
- package/src/browser/icons/case-sensitive-dark.svg +16 -16
- package/src/browser/icons/case-sensitive.svg +16 -16
- package/src/browser/icons/chevron-right-dark.svg +5 -5
- package/src/browser/icons/chevron-right-light.svg +6 -6
- package/src/browser/icons/circle-bright.svg +7 -7
- package/src/browser/icons/circle-dark.svg +7 -7
- package/src/browser/icons/clear-search-results-dark.svg +7 -7
- package/src/browser/icons/clear-search-results.svg +7 -7
- package/src/browser/icons/close-all-bright.svg +7 -7
- package/src/browser/icons/close-all-dark.svg +7 -7
- package/src/browser/icons/close-bright.svg +7 -7
- package/src/browser/icons/close-dark.svg +7 -7
- package/src/browser/icons/collapse.svg +4 -4
- package/src/browser/icons/edit-json-dark.svg +6 -6
- package/src/browser/icons/edit-json.svg +6 -6
- package/src/browser/icons/expand.svg +4 -4
- package/src/browser/icons/loading-dark.svg +6 -6
- package/src/browser/icons/loading-light.svg +6 -6
- package/src/browser/icons/open-change-bright.svg +3 -3
- package/src/browser/icons/open-change-dark.svg +4 -4
- package/src/browser/icons/open-file-bright.svg +4 -4
- package/src/browser/icons/open-file-dark.svg +4 -4
- package/src/browser/icons/preview-bright.svg +3 -3
- package/src/browser/icons/preview-dark.svg +3 -3
- package/src/browser/icons/regex-dark.svg +10 -10
- package/src/browser/icons/regex.svg +10 -10
- package/src/browser/icons/remove-all-inverse.svg +4 -4
- package/src/browser/icons/remove-all.svg +4 -4
- package/src/browser/icons/replace-all-inverse.svg +13 -13
- package/src/browser/icons/replace-all.svg +13 -13
- package/src/browser/icons/replace-inverse.svg +15 -15
- package/src/browser/icons/replace.svg +15 -15
- package/src/browser/icons/whole-word-dark.svg +19 -19
- package/src/browser/icons/whole-word.svg +19 -19
- package/src/browser/index.ts +47 -47
- package/src/browser/json-schema-store.ts +127 -127
- package/src/browser/keybinding.spec.ts +553 -553
- package/src/browser/keybinding.ts +756 -756
- package/src/browser/keyboard/browser-keyboard-frontend-contribution.ts +108 -108
- package/src/browser/keyboard/browser-keyboard-layout-provider.spec.ts +171 -171
- package/src/browser/keyboard/browser-keyboard-layout-provider.ts +469 -469
- package/src/browser/keyboard/browser-keyboard-module.ts +30 -30
- package/src/browser/keyboard/index.ts +20 -20
- package/src/browser/keyboard/keyboard-layout-service.spec.ts +121 -121
- package/src/browser/keyboard/keyboard-layout-service.ts +455 -455
- package/src/browser/keyboard/keys.spec.ts +258 -258
- package/src/browser/keyboard/keys.ts +20 -20
- package/src/browser/keys.ts +21 -21
- package/src/browser/label-parser.spec.ts +165 -165
- package/src/browser/label-parser.ts +108 -108
- package/src/browser/label-provider.spec.ts +62 -62
- package/src/browser/label-provider.ts +385 -385
- package/src/browser/language-icon-provider.ts +55 -55
- package/src/browser/language-service.ts +77 -77
- package/src/browser/logger-frontend-module.ts +65 -65
- package/src/browser/markdown-rendering/markdown-renderer.ts +98 -98
- package/src/browser/menu/browser-context-menu-renderer.ts +47 -47
- package/src/browser/menu/browser-menu-module.ts +28 -28
- package/src/browser/menu/browser-menu-plugin.ts +484 -484
- package/src/browser/menu/context-menu-context.ts +41 -41
- package/src/browser/messaging/connection-source.ts +26 -26
- package/src/browser/messaging/frontend-id-provider.ts +37 -37
- package/src/browser/messaging/index.ts +17 -17
- package/src/browser/messaging/messaging-frontend-module.ts +41 -41
- package/src/browser/messaging/service-connection-provider.ts +126 -126
- package/src/browser/messaging/ws-connection-provider.ts +48 -48
- package/src/browser/messaging/ws-connection-source.ts +230 -230
- package/src/browser/mime-service.ts +30 -30
- package/src/browser/navigatable-types.ts +81 -81
- package/src/browser/navigatable.ts +39 -39
- package/src/browser/opener-service.spec.ts +49 -49
- package/src/browser/opener-service.ts +146 -146
- package/src/browser/performance/frontend-stopwatch.ts +65 -65
- package/src/browser/performance/index.ts +18 -18
- package/src/browser/performance/measurement-frontend-bindings.ts +31 -31
- package/src/browser/preferences/index.ts +23 -23
- package/src/browser/preferences/injectable-preference-proxy.ts +283 -283
- package/src/browser/preferences/preference-configurations.ts +82 -82
- package/src/browser/preferences/preference-contribution.ts +436 -436
- package/src/browser/preferences/preference-language-override-service.ts +111 -111
- package/src/browser/preferences/preference-provider.spec.ts +36 -36
- package/src/browser/preferences/preference-provider.ts +277 -277
- package/src/browser/preferences/preference-proxy.spec.ts +367 -367
- package/src/browser/preferences/preference-proxy.ts +367 -367
- package/src/browser/preferences/preference-schema-provider.spec.ts +130 -130
- package/src/browser/preferences/preference-scope.ts +18 -18
- package/src/browser/preferences/preference-service.spec.ts +613 -613
- package/src/browser/preferences/preference-service.ts +594 -594
- package/src/browser/preferences/preference-validation-service.spec.ts +334 -334
- package/src/browser/preferences/preference-validation-service.ts +358 -358
- package/src/browser/preferences/test/index.ts +19 -19
- package/src/browser/preferences/test/mock-preference-provider.ts +50 -50
- package/src/browser/preferences/test/mock-preference-proxy.ts +48 -48
- package/src/browser/preferences/test/mock-preference-service.ts +63 -63
- package/src/browser/preload/i18n-preload-contribution.ts +50 -50
- package/src/browser/preload/os-preload-contribution.ts +37 -37
- package/src/browser/preload/preload-module.ts +45 -45
- package/src/browser/preload/preloader.ts +37 -37
- package/src/browser/preload/theme-preload-contribution.ts +31 -31
- package/src/browser/progress-bar-factory.ts +29 -29
- package/src/browser/progress-bar.ts +76 -76
- package/src/browser/progress-client.ts +53 -53
- package/src/browser/progress-location-service.spec.ts +50 -50
- package/src/browser/progress-location-service.ts +96 -96
- package/src/browser/progress-status-bar-item.ts +83 -83
- package/src/browser/quick-input/index.ts +23 -23
- package/src/browser/quick-input/quick-access.ts +75 -75
- package/src/browser/quick-input/quick-command-frontend-contribution.ts +89 -89
- package/src/browser/quick-input/quick-command-service.ts +246 -246
- package/src/browser/quick-input/quick-help-service.ts +87 -87
- package/src/browser/quick-input/quick-input-frontend-contribution.ts +33 -33
- package/src/browser/quick-input/quick-input-service.spec.ts +176 -176
- package/src/browser/quick-input/quick-input-service.ts +17 -17
- package/src/browser/quick-input/quick-pick-service-impl.ts +69 -69
- package/src/browser/quick-input/quick-view-service.ts +83 -83
- package/src/browser/request/browser-request-module.ts +23 -23
- package/src/browser/request/browser-request-service.ts +172 -172
- package/src/browser/resource-context-key.ts +77 -77
- package/src/browser/save-resource-service.ts +60 -59
- package/src/browser/saveable.ts +365 -365
- package/src/browser/secondary-window-handler.ts +212 -212
- package/src/browser/shell/additional-views-menu-widget.tsx +71 -71
- package/src/browser/shell/application-shell-mouse-tracker.ts +103 -103
- package/src/browser/shell/application-shell.ts +2254 -2249
- package/src/browser/shell/current-widget-command-adapter.ts +57 -57
- package/src/browser/shell/index.ts +23 -23
- package/src/browser/shell/shell-layout-restorer.ts +399 -399
- package/src/browser/shell/side-panel-handler.ts +793 -793
- package/src/browser/shell/side-panel-toolbar.ts +111 -111
- package/src/browser/shell/sidebar-bottom-menu-widget.tsx +39 -39
- package/src/browser/shell/sidebar-menu-widget.tsx +140 -140
- package/src/browser/shell/sidebar-top-menu-widget.tsx +26 -26
- package/src/browser/shell/split-panels.ts +190 -190
- package/src/browser/shell/tab-bar-decorator.ts +106 -76
- package/src/browser/shell/tab-bar-toolbar/index.ts +19 -19
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.ts +31 -31
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +256 -256
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts +207 -207
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.ts +62 -62
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +423 -423
- package/src/browser/shell/tab-bars.spec.ts +63 -63
- package/src/browser/shell/tab-bars.ts +1481 -1449
- package/src/browser/shell/theia-dock-panel.ts +255 -255
- package/src/browser/shell/view-contribution.ts +177 -177
- package/src/browser/source-tree/index.ts +19 -19
- package/src/browser/source-tree/source-tree-widget.tsx +107 -107
- package/src/browser/source-tree/source-tree.ts +146 -146
- package/src/browser/source-tree/tree-source.ts +73 -73
- package/src/browser/status-bar/index.ts +29 -29
- package/src/browser/status-bar/status-bar-types.ts +97 -97
- package/src/browser/status-bar/status-bar-view-model.ts +209 -209
- package/src/browser/status-bar/status-bar.tsx +189 -189
- package/src/browser/storage-service.spec.ts +76 -76
- package/src/browser/storage-service.ts +129 -129
- package/src/browser/style/about.css +36 -36
- package/src/browser/style/alert-messages.css +62 -62
- package/src/browser/style/ansi.css +88 -88
- package/src/browser/style/breadcrumbs.css +130 -130
- package/src/browser/style/dialog.css +126 -126
- package/src/browser/style/dockpanel.css +76 -76
- package/src/browser/style/hover-service.css +101 -101
- package/src/browser/style/icons.css +61 -61
- package/src/browser/style/index.css +351 -346
- package/src/browser/style/materialcolors.css +278 -278
- package/src/browser/style/menus.css +230 -230
- package/src/browser/style/notification.css +39 -39
- package/src/browser/style/os.css +87 -87
- package/src/browser/style/progress-bar.css +43 -43
- package/src/browser/style/quick-title-bar.css +45 -45
- package/src/browser/style/scrollbars.css +172 -172
- package/src/browser/style/search-box.css +123 -123
- package/src/browser/style/select-component.css +107 -108
- package/src/browser/style/sidepanel.css +364 -364
- package/src/browser/style/status-bar.css +127 -127
- package/src/browser/style/tabs.css +647 -641
- package/src/browser/style/tooltip.css +28 -28
- package/src/browser/style/tree-decorators.css +81 -81
- package/src/browser/style/tree.css +232 -232
- package/src/browser/style/view-container.css +194 -194
- package/src/browser/style/widget.css +19 -19
- package/src/browser/styling-service.ts +87 -87
- package/src/browser/supported-encodings.ts +262 -262
- package/src/browser/test/jsdom.ts +69 -69
- package/src/browser/test/mock-connection-status-service.ts +33 -33
- package/src/browser/test/mock-env-variables-server.ts +47 -47
- package/src/browser/test/mock-opener-service.ts +34 -34
- package/src/browser/test/mock-storage-service.ts +49 -49
- package/src/browser/theming.ts +206 -206
- package/src/browser/tooltip-service.tsx +96 -96
- package/src/browser/tree/fuzzy-search.spec.ts +99 -99
- package/src/browser/tree/fuzzy-search.ts +136 -136
- package/src/browser/tree/index.ts +29 -28
- package/src/browser/tree/search-box-debounce.ts +96 -96
- package/src/browser/tree/search-box.ts +355 -355
- package/src/browser/tree/test/mock-selectable-tree-model.ts +109 -0
- package/src/browser/tree/test/mock-tree-model.ts +136 -136
- package/src/browser/tree/test/tree-test-container.ts +50 -50
- package/src/browser/tree/tree-compression/compressed-tree-expansion-service.ts +46 -46
- package/src/browser/tree/tree-compression/compressed-tree-model.ts +88 -88
- package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +203 -203
- package/src/browser/tree/tree-compression/index.ts +20 -20
- package/src/browser/tree/tree-compression/tree-compression-service.ts +125 -125
- package/src/browser/tree/tree-compression/tree-compression.css +28 -28
- package/src/browser/tree/tree-consistency.spec.ts +105 -105
- package/src/browser/tree/tree-container.spec.ts +45 -45
- package/src/browser/tree/tree-container.ts +155 -155
- package/src/browser/tree/tree-decorator.spec.ts +162 -162
- package/src/browser/tree/tree-decorator.ts +238 -238
- package/src/browser/tree/tree-expansion.spec.ts +173 -173
- package/src/browser/tree/tree-expansion.ts +165 -165
- package/src/browser/tree/tree-focus-service.ts +55 -55
- package/src/browser/tree/tree-iterator.spec.ts +170 -170
- package/src/browser/tree/tree-iterator.ts +256 -256
- package/src/browser/tree/tree-label-provider.ts +40 -40
- package/src/browser/tree/tree-model.ts +562 -488
- package/src/browser/tree/tree-navigation.ts +58 -58
- package/src/browser/tree/tree-preference.ts +50 -0
- package/src/browser/tree/tree-search.ts +128 -128
- package/src/browser/tree/tree-selectable.spec.ts +152 -0
- package/src/browser/tree/tree-selection-impl.ts +176 -176
- package/src/browser/tree/tree-selection-state.spec.ts +462 -462
- package/src/browser/tree/tree-selection-state.ts +245 -245
- package/src/browser/tree/tree-selection.ts +159 -159
- package/src/browser/tree/tree-view-welcome-widget.tsx +263 -263
- package/src/browser/tree/tree-widget-selection.ts +45 -45
- package/src/browser/tree/tree-widget.tsx +1585 -1566
- package/src/browser/tree/tree.spec.ts +241 -241
- package/src/browser/tree/tree.ts +425 -424
- package/src/browser/user-working-directory-provider.ts +77 -77
- package/src/browser/view-container.ts +1640 -1640
- package/src/browser/widget-decoration.ts +358 -358
- package/src/browser/widget-manager.spec.ts +102 -102
- package/src/browser/widget-manager.ts +310 -285
- package/src/browser/widget-open-handler.ts +165 -165
- package/src/browser/widgets/alert-message.tsx +56 -56
- package/src/browser/widgets/enhanced-preview-widget.ts +27 -27
- package/src/browser/widgets/extractable-widget.ts +33 -33
- package/src/browser/widgets/index.ts +20 -20
- package/src/browser/widgets/previewable-widget.ts +31 -31
- package/src/browser/widgets/react-renderer.tsx +50 -50
- package/src/browser/widgets/react-widget.tsx +51 -51
- package/src/browser/widgets/select-component.tsx +367 -366
- package/src/browser/widgets/widget.ts +406 -398
- package/src/browser/window/browser-window-module.ts +32 -32
- package/src/browser/window/default-secondary-window-service.ts +187 -187
- package/src/browser/window/default-window-service.spec.ts +78 -78
- package/src/browser/window/default-window-service.ts +167 -167
- package/src/browser/window/secondary-window-service.ts +39 -39
- package/src/browser/window/test/mock-window-service.ts +28 -28
- package/src/browser/window/window-service.ts +68 -68
- package/src/browser/window/window-title-service.ts +107 -107
- package/src/browser/window/window-title-updater.ts +95 -95
- package/src/browser/window-contribution.ts +64 -64
- package/src/browser-only/frontend-only-application-module.ts +115 -0
- package/src/browser-only/i18n/i18n-frontend-only-module.ts +37 -0
- package/src/browser-only/logger-frontend-only-module.ts +63 -0
- package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +39 -0
- package/src/browser-only/messaging/messaging-frontend-only-module.ts +42 -0
- package/src/browser-only/preload/frontend-only-preload-module.ts +49 -0
- package/src/common/accessibility.ts +33 -33
- package/src/common/application-error.spec.ts +27 -27
- package/src/common/application-error.ts +76 -76
- package/src/common/application-protocol.ts +41 -40
- package/src/common/array-utils.ts +129 -129
- package/src/common/buffer.ts +228 -228
- package/src/common/cancellation.ts +163 -163
- package/src/common/char-code.ts +438 -438
- package/src/common/collections.ts +125 -125
- package/src/common/color.ts +103 -103
- package/src/common/command.spec.ts +208 -208
- package/src/common/command.ts +485 -485
- package/src/common/contribution-filter/contribution-filter-registry.ts +79 -79
- package/src/common/contribution-filter/contribution-filter.ts +64 -64
- package/src/common/contribution-filter/filter.ts +23 -23
- package/src/common/contribution-filter/index.ts +19 -19
- package/src/common/contribution-provider.ts +96 -96
- package/src/common/disposable.spec.ts +94 -29
- package/src/common/disposable.ts +188 -135
- package/src/common/encoding-service.ts +380 -380
- package/src/common/encodings.ts +24 -24
- package/src/common/env-variables/env-variables-protocol.ts +38 -38
- package/src/common/env-variables/index.ts +17 -17
- package/src/common/event.spec.ts +32 -32
- package/src/common/event.ts +469 -469
- package/src/{node → common}/file-uri.ts +61 -61
- package/src/common/frontend-application-state.ts +38 -38
- package/src/common/glob.ts +741 -741
- package/src/common/hash.ts +85 -85
- package/src/common/i18n/localization-server.ts +25 -25
- package/src/common/i18n/localization.ts +80 -80
- package/src/common/i18n/nls.metadata.json +31314 -31314
- package/src/common/index.ts +51 -50
- package/src/common/json-schema.ts +106 -106
- package/src/common/key-store.ts +26 -26
- package/src/common/keybinding.ts +152 -152
- package/src/common/keyboard/keyboard-layout-provider.ts +51 -51
- package/src/common/keys.ts +694 -694
- package/src/common/label-protocol.ts +35 -35
- package/src/common/logger-protocol.ts +119 -119
- package/src/common/logger-watcher.ts +48 -48
- package/src/common/logger.spec.ts +46 -46
- package/src/common/logger.ts +389 -389
- package/src/common/lsp-types.ts +34 -34
- package/src/common/markdown-rendering/icon-utilities.ts +30 -30
- package/src/common/markdown-rendering/index.ts +18 -18
- package/src/common/markdown-rendering/markdown-string.ts +152 -149
- package/src/common/menu/action-menu-node.ts +65 -65
- package/src/common/menu/composite-menu-node.ts +114 -114
- package/src/common/menu/index.ts +21 -21
- package/src/common/menu/menu-adapter.ts +103 -103
- package/src/common/menu/menu-model-registry.ts +343 -326
- package/src/common/menu/menu-types.ts +219 -219
- package/src/common/menu/menu.spec.ts +101 -73
- package/src/common/message-rpc/channel.spec.ts +88 -88
- package/src/common/message-rpc/channel.ts +300 -300
- package/src/common/message-rpc/index.ts +22 -22
- package/src/common/message-rpc/message-buffer.ts +105 -105
- package/src/common/message-rpc/msg-pack-extension-manager.ts +70 -70
- package/src/common/message-rpc/rpc-message-encoder.spec.ts +65 -65
- package/src/common/message-rpc/rpc-message-encoder.ts +190 -190
- package/src/common/message-rpc/rpc-protocol.ts +255 -235
- package/src/common/message-rpc/uint8-array-message-buffer.spec.ts +41 -41
- package/src/common/message-rpc/uint8-array-message-buffer.ts +213 -213
- package/src/common/message-service-protocol.ts +148 -148
- package/src/common/message-service.ts +226 -226
- package/src/common/messaging/connection-error-handler.ts +73 -73
- package/src/common/messaging/connection-management.ts +43 -43
- package/src/common/messaging/handler.ts +26 -26
- package/src/common/messaging/index.ts +19 -19
- package/src/common/messaging/proxy-factory.spec.ts +108 -108
- package/src/common/messaging/proxy-factory.ts +336 -343
- package/src/common/messaging/socket-write-buffer.ts +52 -52
- package/src/common/messaging/web-socket-channel.ts +76 -76
- package/src/common/nls.ts +149 -149
- package/src/common/numbers.ts +21 -21
- package/src/common/objects.spec.ts +112 -112
- package/src/common/objects.ts +123 -123
- package/src/common/os.ts +82 -82
- package/src/common/path.spec.ts +415 -415
- package/src/common/path.ts +334 -334
- package/src/common/paths.ts +250 -250
- package/src/common/performance/index.ts +19 -19
- package/src/common/performance/measurement-protocol.ts +104 -104
- package/src/common/performance/measurement.ts +130 -130
- package/src/common/performance/stopwatch.ts +183 -183
- package/src/common/preferences/preference-schema.ts +95 -95
- package/src/common/preferences/preference-scope.spec.ts +48 -48
- package/src/common/preferences/preference-scope.ts +68 -68
- package/src/common/prioritizeable.ts +58 -58
- package/src/common/progress-service-protocol.ts +35 -35
- package/src/common/progress-service.ts +82 -82
- package/src/common/promise-util.spec.ts +72 -72
- package/src/common/promise-util.ts +143 -143
- package/src/common/quick-pick-service.ts +355 -377
- package/src/common/reference.spec.ts +145 -145
- package/src/common/reference.ts +230 -175
- package/src/common/resource.ts +430 -426
- package/src/common/selection-command-handler.ts +101 -101
- package/src/common/selection-service.spec.ts +43 -43
- package/src/common/selection-service.ts +49 -49
- package/src/common/selection.ts +50 -50
- package/src/common/severity.ts +111 -111
- package/src/common/stream.ts +718 -718
- package/src/common/strings.ts +231 -231
- package/src/common/telemetry.ts +45 -45
- package/src/common/ternary-search-tree.ts +417 -417
- package/src/common/test/expect.ts +34 -34
- package/src/common/test/mock-logger.ts +118 -118
- package/src/common/test/mock-menu.ts +35 -35
- package/src/common/test/mock-resource-provider.ts +33 -33
- package/src/common/theme.ts +68 -36
- package/src/common/types.spec.ts +86 -86
- package/src/common/types.ts +140 -140
- package/src/common/uri-command-handler.spec.ts +90 -90
- package/src/common/uri-command-handler.ts +148 -148
- package/src/common/uri.spec.ts +278 -278
- package/src/common/uri.ts +279 -277
- package/src/common/uuid.ts +45 -99
- package/src/common/version.ts +17 -17
- package/src/common/view-column.ts +33 -33
- package/src/common/window.ts +34 -34
- package/src/electron-browser/electron-clipboard-service.ts +32 -32
- package/src/electron-browser/keyboard/electron-keyboard-layout-change-notifier.ts +39 -39
- package/src/electron-browser/keyboard/electron-keyboard-module.ts +28 -28
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +120 -120
- package/src/electron-browser/menu/electron-main-menu-factory.ts +335 -335
- package/src/electron-browser/menu/electron-menu-contribution.ts +506 -498
- package/src/electron-browser/menu/electron-menu-module.ts +40 -40
- package/src/electron-browser/menu/electron-menu-style.css +110 -110
- package/src/electron-browser/messaging/electron-frontend-id-provider.ts +25 -25
- package/src/electron-browser/messaging/electron-ipc-connection-source.ts +65 -65
- package/src/electron-browser/messaging/electron-local-ws-connection-source.ts +45 -45
- package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +78 -78
- package/src/electron-browser/messaging/electron-ws-connection-source.ts +38 -38
- package/src/electron-browser/preload.ts +246 -246
- package/src/electron-browser/request/electron-browser-request-module.ts +26 -26
- package/src/electron-browser/token/electron-token-frontend-module.ts +22 -22
- package/src/electron-browser/window/electron-frontend-application-state.ts +26 -26
- package/src/electron-browser/window/electron-secondary-window-service.ts +39 -39
- package/src/electron-browser/window/electron-window-module.ts +41 -41
- package/src/electron-browser/window/electron-window-preferences.ts +76 -76
- package/src/electron-browser/window/electron-window-service.ts +97 -97
- package/src/electron-common/electron-api.ts +148 -148
- package/src/electron-common/electron-main-window-service.ts +24 -24
- package/src/electron-common/electron-token.ts +27 -27
- package/src/electron-main/electron-api-main.ts +333 -333
- package/src/electron-main/electron-main-application-module.ts +65 -65
- package/src/electron-main/electron-main-application.ts +685 -685
- package/src/electron-main/electron-main-constants.ts +22 -22
- package/src/electron-main/electron-main-window-service-impl.ts +44 -44
- package/src/electron-main/electron-security-token-service.ts +36 -36
- package/src/electron-main/event-utils.ts +36 -36
- package/src/electron-main/messaging/electron-connection-handler.ts +21 -21
- package/src/electron-main/messaging/electron-messaging-contribution.ts +143 -143
- package/src/electron-main/messaging/electron-messaging-service.ts +35 -35
- package/src/electron-main/theia-electron-window.ts +202 -202
- package/src/electron-node/hosting/electron-backend-hosting-module.ts +24 -24
- package/src/electron-node/hosting/electron-ws-origin-validator.ts +37 -37
- package/src/electron-node/keyboard/electron-backend-keyboard-module.ts +30 -30
- package/src/electron-node/keyboard/electron-keyboard-layout-provider.ts +35 -35
- package/src/electron-node/request/electron-backend-request-module.ts +23 -23
- package/src/electron-node/request/electron-backend-request-service.ts +78 -78
- package/src/electron-node/token/electron-token-backend-contribution.ts +48 -48
- package/src/electron-node/token/electron-token-backend-module.ts +28 -28
- package/src/electron-node/token/electron-token-validator.ts +93 -93
- package/src/node/application-server.ts +55 -48
- package/src/node/backend-application-config-provider.spec.ts +29 -29
- package/src/node/backend-application-config-provider.ts +48 -48
- package/src/node/backend-application-module.ts +140 -140
- package/src/node/backend-application.ts +382 -382
- package/src/node/backend-remote-service.ts +25 -25
- package/src/node/cli.spec.ts +94 -94
- package/src/node/cli.ts +63 -63
- package/src/node/console-logger-server.spec.ts +59 -59
- package/src/node/console-logger-server.ts +76 -76
- package/src/node/debug.ts +30 -30
- package/src/node/dynamic-require.ts +56 -56
- package/src/node/env-variables/env-variables-server.ts +120 -120
- package/src/node/env-variables/index.ts +17 -17
- package/src/node/environment-utils.spec.ts +92 -92
- package/src/node/environment-utils.ts +66 -66
- package/src/node/file-uri.spec.ts +76 -76
- package/src/node/filesystem-locking.ts +77 -77
- package/src/node/hosting/backend-application-hosts.ts +60 -60
- package/src/node/hosting/backend-hosting-module.ts +26 -26
- package/src/node/hosting/ws-origin-validator.ts +36 -36
- package/src/node/i18n/i18n-backend-module.ts +42 -42
- package/src/node/i18n/localization-contribution.ts +112 -112
- package/src/node/i18n/localization-provider.ts +125 -125
- package/src/node/i18n/localization-server.ts +52 -52
- package/src/node/i18n/theia-localization-contribution.ts +36 -36
- package/src/node/index.ts +22 -22
- package/src/node/key-store-server.ts +162 -162
- package/src/node/logger-backend-module.ts +88 -88
- package/src/node/logger-cli-contribution.spec.ts +245 -245
- package/src/node/logger-cli-contribution.ts +168 -168
- package/src/node/main.ts +33 -33
- package/src/node/messaging/binary-message-pipe.ts +168 -168
- package/src/node/messaging/connection-container-module.ts +96 -96
- package/src/node/messaging/default-messaging-service.ts +129 -129
- package/src/node/messaging/frontend-connection-service.ts +24 -24
- package/src/node/messaging/index.ts +19 -19
- package/src/node/messaging/ipc-bootstrap.ts +27 -27
- package/src/node/messaging/ipc-channel.ts +77 -77
- package/src/node/messaging/ipc-connection-provider.ts +107 -107
- package/src/node/messaging/ipc-protocol.ts +76 -76
- package/src/node/messaging/messaging-backend-module.ts +52 -52
- package/src/node/messaging/messaging-listeners.ts +52 -52
- package/src/node/messaging/messaging-service.ts +46 -46
- package/src/node/messaging/test/test-web-socket-channel.ts +61 -61
- package/src/node/messaging/websocket-endpoint.ts +79 -79
- package/src/node/messaging/websocket-frontend-connection-service.ts +176 -176
- package/src/node/os-backend-provider.ts +25 -25
- package/src/node/performance/index.ts +18 -18
- package/src/node/performance/measurement-backend-bindings.ts +35 -35
- package/src/node/performance/node-stopwatch.ts +40 -40
- package/src/node/process-utils.spec.ts +48 -48
- package/src/node/process-utils.ts +102 -102
- package/src/node/request/backend-request-facade.ts +39 -39
- package/src/node/request/backend-request-module.ts +25 -25
- package/src/node/request/proxy-cli-contribution.ts +65 -65
- package/src/node/ws-request-validators.ts +56 -56
- package/src/typings/native-keymap.d.ts +108 -108
- package/lib/node/file-uri.d.ts.map +0 -1
- package/lib/node/file-uri.js.map +0 -1
|
@@ -1,793 +1,793 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2018 TypeFox 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-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
|
|
17
|
-
import { injectable, inject } from 'inversify';
|
|
18
|
-
import { find, map, toArray, some } from '@phosphor/algorithm';
|
|
19
|
-
import { TabBar, Widget, DockPanel, Title, Panel, BoxPanel, BoxLayout, SplitPanel, PanelLayout } from '@phosphor/widgets';
|
|
20
|
-
import { MimeData } from '@phosphor/coreutils';
|
|
21
|
-
import { Drag } from '@phosphor/dragdrop';
|
|
22
|
-
import { AttachedProperty } from '@phosphor/properties';
|
|
23
|
-
import { TabBarRendererFactory, TabBarRenderer, SHELL_TABBAR_CONTEXT_MENU, SideTabBar } from './tab-bars';
|
|
24
|
-
import { SidebarMenuWidget, SidebarMenu, SidebarBottomMenuWidgetFactory, SidebarTopMenuWidgetFactory } from './sidebar-menu-widget';
|
|
25
|
-
import { SplitPositionHandler, SplitPositionOptions } from './split-panels';
|
|
26
|
-
import { animationFrame } from '../browser';
|
|
27
|
-
import { FrontendApplicationStateService } from '../frontend-application-state';
|
|
28
|
-
import { TheiaDockPanel } from './theia-dock-panel';
|
|
29
|
-
import { SidePanelToolbar } from './side-panel-toolbar';
|
|
30
|
-
import { TabBarToolbarRegistry, TabBarToolbarFactory, TabBarToolbar } from './tab-bar-toolbar';
|
|
31
|
-
import { DisposableCollection, Disposable } from '../../common/disposable';
|
|
32
|
-
import { ContextMenuRenderer } from '../context-menu-renderer';
|
|
33
|
-
import { MenuPath } from '../../common/menu';
|
|
34
|
-
import { SidebarBottomMenuWidget } from './sidebar-bottom-menu-widget';
|
|
35
|
-
import { SidebarTopMenuWidget } from './sidebar-top-menu-widget';
|
|
36
|
-
import { PINNED_CLASS } from '../widgets';
|
|
37
|
-
import { AdditionalViewsMenuWidget, AdditionalViewsMenuWidgetFactory } from './additional-views-menu-widget';
|
|
38
|
-
|
|
39
|
-
/** The class name added to the left and right area panels. */
|
|
40
|
-
export const LEFT_RIGHT_AREA_CLASS = 'theia-app-sides';
|
|
41
|
-
|
|
42
|
-
/** The class name added to collapsed side panels. */
|
|
43
|
-
const COLLAPSED_CLASS = 'theia-mod-collapsed';
|
|
44
|
-
|
|
45
|
-
export const SidePanelHandlerFactory = Symbol('SidePanelHandlerFactory');
|
|
46
|
-
|
|
47
|
-
export const SIDE_PANEL_TOOLBAR_CONTEXT_MENU: MenuPath = ['SIDE_PANEL_TOOLBAR_CONTEXT_MENU'];
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* A class which manages a dock panel and a related side bar. This is used for the left and right
|
|
51
|
-
* panel of the application shell.
|
|
52
|
-
*/
|
|
53
|
-
@injectable()
|
|
54
|
-
export class SidePanelHandler {
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* A property that can be attached to widgets in order to determine the insertion index
|
|
58
|
-
* of their title in the tab bar.
|
|
59
|
-
*/
|
|
60
|
-
protected static readonly rankProperty = new AttachedProperty<Widget, number | undefined>({
|
|
61
|
-
name: 'sidePanelRank',
|
|
62
|
-
create: () => undefined
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* The tab bar displays the titles of the widgets in the side panel. Visibility of the widgets
|
|
67
|
-
* is controlled entirely through tab selection: a widget is revealed by setting the `currentTitle`
|
|
68
|
-
* accordingly in the tab bar, and the panel is hidden by setting that property to `null`. The
|
|
69
|
-
* tab bar itself remains visible as long as there is at least one widget.
|
|
70
|
-
*/
|
|
71
|
-
tabBar: SideTabBar;
|
|
72
|
-
/**
|
|
73
|
-
* Conditional menu placed below the tabBar. Manages overflowing/hidden tabs.
|
|
74
|
-
* Is only visible if there are overflowing tabs.
|
|
75
|
-
*/
|
|
76
|
-
additionalViewsMenu: AdditionalViewsMenuWidget;
|
|
77
|
-
/**
|
|
78
|
-
* The menu placed on the sidebar top.
|
|
79
|
-
* Displayed as icons.
|
|
80
|
-
* Open menus when on clicks.
|
|
81
|
-
*/
|
|
82
|
-
topMenu: SidebarMenuWidget;
|
|
83
|
-
/**
|
|
84
|
-
* The menu placed on the sidebar bottom.
|
|
85
|
-
* Displayed as icons.
|
|
86
|
-
* Open menus when on clicks.
|
|
87
|
-
*/
|
|
88
|
-
bottomMenu: SidebarMenuWidget;
|
|
89
|
-
/**
|
|
90
|
-
* A tool bar, which displays a title and widget specific command buttons.
|
|
91
|
-
*/
|
|
92
|
-
toolBar: SidePanelToolbar;
|
|
93
|
-
/**
|
|
94
|
-
* The widget container is a dock panel in `single-document` mode, which means that the panel
|
|
95
|
-
* cannot be split.
|
|
96
|
-
*/
|
|
97
|
-
dockPanel: TheiaDockPanel;
|
|
98
|
-
/**
|
|
99
|
-
* The panel that contains the tab bar and the dock panel. This one is hidden whenever the dock
|
|
100
|
-
* panel is empty.
|
|
101
|
-
*/
|
|
102
|
-
container: Panel;
|
|
103
|
-
/**
|
|
104
|
-
* The current state of the side panel.
|
|
105
|
-
*/
|
|
106
|
-
readonly state: SidePanel.State = {
|
|
107
|
-
empty: true,
|
|
108
|
-
expansion: SidePanel.ExpansionState.collapsed,
|
|
109
|
-
pendingUpdate: Promise.resolve()
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* The shell area where the panel is placed. This property should not be modified directly, but
|
|
114
|
-
* only by calling `create`.
|
|
115
|
-
*/
|
|
116
|
-
protected side: 'left' | 'right';
|
|
117
|
-
/**
|
|
118
|
-
* Options that control the behavior of the side panel.
|
|
119
|
-
*/
|
|
120
|
-
protected options: SidePanel.Options;
|
|
121
|
-
|
|
122
|
-
@inject(TabBarToolbarRegistry) protected tabBarToolBarRegistry: TabBarToolbarRegistry;
|
|
123
|
-
@inject(TabBarToolbarFactory) protected tabBarToolBarFactory: () => TabBarToolbar;
|
|
124
|
-
@inject(TabBarRendererFactory) protected tabBarRendererFactory: () => TabBarRenderer;
|
|
125
|
-
@inject(SidebarTopMenuWidgetFactory) protected sidebarTopWidgetFactory: () => SidebarTopMenuWidget;
|
|
126
|
-
@inject(SidebarBottomMenuWidgetFactory) protected sidebarBottomWidgetFactory: () => SidebarBottomMenuWidget;
|
|
127
|
-
@inject(AdditionalViewsMenuWidgetFactory) protected additionalViewsMenuFactory: AdditionalViewsMenuWidgetFactory;
|
|
128
|
-
@inject(SplitPositionHandler) protected splitPositionHandler: SplitPositionHandler;
|
|
129
|
-
@inject(FrontendApplicationStateService) protected readonly applicationStateService: FrontendApplicationStateService;
|
|
130
|
-
@inject(TheiaDockPanel.Factory) protected readonly dockPanelFactory: TheiaDockPanel.Factory;
|
|
131
|
-
|
|
132
|
-
@inject(ContextMenuRenderer)
|
|
133
|
-
protected readonly contextMenuRenderer: ContextMenuRenderer;
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Create the side bar and dock panel widgets.
|
|
137
|
-
*/
|
|
138
|
-
create(side: 'left' | 'right', options: SidePanel.Options): void {
|
|
139
|
-
this.side = side;
|
|
140
|
-
this.options = options;
|
|
141
|
-
this.topMenu = this.createSidebarTopMenu();
|
|
142
|
-
this.tabBar = this.createSideBar();
|
|
143
|
-
this.additionalViewsMenu = this.createAdditionalViewsWidget();
|
|
144
|
-
this.bottomMenu = this.createSidebarBottomMenu();
|
|
145
|
-
this.toolBar = this.createToolbar();
|
|
146
|
-
this.dockPanel = this.createSidePanel();
|
|
147
|
-
this.container = this.createContainer();
|
|
148
|
-
|
|
149
|
-
this.refresh();
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
protected createSideBar(): SideTabBar {
|
|
153
|
-
const side = this.side;
|
|
154
|
-
const tabBarRenderer = this.tabBarRendererFactory();
|
|
155
|
-
const sideBar = new SideTabBar({
|
|
156
|
-
// Tab bar options
|
|
157
|
-
orientation: side === 'left' || side === 'right' ? 'vertical' : 'horizontal',
|
|
158
|
-
insertBehavior: 'none',
|
|
159
|
-
removeBehavior: 'select-previous-tab',
|
|
160
|
-
allowDeselect: false,
|
|
161
|
-
tabsMovable: true,
|
|
162
|
-
renderer: tabBarRenderer,
|
|
163
|
-
// Scroll bar options
|
|
164
|
-
handlers: ['drag-thumb', 'keyboard', 'wheel', 'touch'],
|
|
165
|
-
useBothWheelAxes: true,
|
|
166
|
-
scrollYMarginOffset: 8,
|
|
167
|
-
suppressScrollX: true
|
|
168
|
-
});
|
|
169
|
-
tabBarRenderer.tabBar = sideBar;
|
|
170
|
-
sideBar.disposed.connect(() => tabBarRenderer.dispose());
|
|
171
|
-
tabBarRenderer.contextMenuPath = SHELL_TABBAR_CONTEXT_MENU;
|
|
172
|
-
sideBar.addClass('theia-app-' + side);
|
|
173
|
-
sideBar.addClass(LEFT_RIGHT_AREA_CLASS);
|
|
174
|
-
|
|
175
|
-
sideBar.tabAdded.connect((sender, { title }) => {
|
|
176
|
-
const widget = title.owner;
|
|
177
|
-
if (!some(this.dockPanel.widgets(), w => w === widget)) {
|
|
178
|
-
this.dockPanel.addWidget(widget);
|
|
179
|
-
}
|
|
180
|
-
}, this);
|
|
181
|
-
sideBar.tabActivateRequested.connect((sender, { title }) => title.owner.activate());
|
|
182
|
-
sideBar.tabCloseRequested.connect((sender, { title }) => title.owner.close());
|
|
183
|
-
sideBar.collapseRequested.connect(() => this.collapse(), this);
|
|
184
|
-
sideBar.currentChanged.connect(this.onCurrentTabChanged, this);
|
|
185
|
-
sideBar.tabDetachRequested.connect(this.onTabDetachRequested, this);
|
|
186
|
-
sideBar.tabsOverflowChanged.connect(this.onTabsOverflowChanged, this);
|
|
187
|
-
return sideBar;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
protected createSidePanel(): TheiaDockPanel {
|
|
191
|
-
const sidePanel = this.dockPanelFactory({
|
|
192
|
-
mode: 'single-document'
|
|
193
|
-
});
|
|
194
|
-
sidePanel.id = 'theia-' + this.side + '-side-panel';
|
|
195
|
-
sidePanel.addClass('theia-side-panel');
|
|
196
|
-
|
|
197
|
-
sidePanel.widgetActivated.connect((sender, widget) => {
|
|
198
|
-
this.tabBar.currentTitle = widget.title;
|
|
199
|
-
}, this);
|
|
200
|
-
sidePanel.widgetAdded.connect(this.onWidgetAdded, this);
|
|
201
|
-
sidePanel.widgetRemoved.connect(this.onWidgetRemoved, this);
|
|
202
|
-
return sidePanel;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
protected createToolbar(): SidePanelToolbar {
|
|
206
|
-
const toolbar = new SidePanelToolbar(this.tabBarToolBarRegistry, this.tabBarToolBarFactory, this.side);
|
|
207
|
-
toolbar.onContextMenu(e => this.showContextMenu(e));
|
|
208
|
-
return toolbar;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
protected createAdditionalViewsWidget(): AdditionalViewsMenuWidget {
|
|
212
|
-
const widget = this.additionalViewsMenuFactory(this.side);
|
|
213
|
-
widget.addClass('theia-sidebar-menu');
|
|
214
|
-
return widget;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
protected createSidebarTopMenu(): SidebarTopMenuWidget {
|
|
218
|
-
return this.createSidebarMenu(this.sidebarTopWidgetFactory);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
protected createSidebarBottomMenu(): SidebarBottomMenuWidget {
|
|
222
|
-
return this.createSidebarMenu(this.sidebarBottomWidgetFactory);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
protected createSidebarMenu<T extends SidebarMenuWidget>(factory: () => T): T {
|
|
226
|
-
const menu = factory();
|
|
227
|
-
menu.addClass('theia-sidebar-menu');
|
|
228
|
-
return menu;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
protected showContextMenu(e: MouseEvent): void {
|
|
232
|
-
const title = this.tabBar.currentTitle;
|
|
233
|
-
if (!title) {
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
e.stopPropagation();
|
|
237
|
-
e.preventDefault();
|
|
238
|
-
|
|
239
|
-
this.contextMenuRenderer.render({
|
|
240
|
-
args: [title.owner],
|
|
241
|
-
menuPath: SIDE_PANEL_TOOLBAR_CONTEXT_MENU,
|
|
242
|
-
anchor: e
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
protected createContainer(): Panel {
|
|
247
|
-
const contentBox = new BoxLayout({ direction: 'top-to-bottom', spacing: 0 });
|
|
248
|
-
BoxPanel.setStretch(this.toolBar, 0);
|
|
249
|
-
contentBox.addWidget(this.toolBar);
|
|
250
|
-
BoxPanel.setStretch(this.dockPanel, 1);
|
|
251
|
-
contentBox.addWidget(this.dockPanel);
|
|
252
|
-
const contentPanel = new BoxPanel({ layout: contentBox });
|
|
253
|
-
|
|
254
|
-
const side = this.side;
|
|
255
|
-
let direction: BoxLayout.Direction;
|
|
256
|
-
switch (side) {
|
|
257
|
-
case 'left':
|
|
258
|
-
direction = 'left-to-right';
|
|
259
|
-
break;
|
|
260
|
-
case 'right':
|
|
261
|
-
direction = 'right-to-left';
|
|
262
|
-
break;
|
|
263
|
-
default:
|
|
264
|
-
throw new Error('Illegal argument: ' + side);
|
|
265
|
-
}
|
|
266
|
-
const containerLayout = new BoxLayout({ direction, spacing: 0 });
|
|
267
|
-
const sidebarContainerLayout = new PanelLayout();
|
|
268
|
-
const sidebarContainer = new Panel({ layout: sidebarContainerLayout });
|
|
269
|
-
sidebarContainer.addClass('theia-app-sidebar-container');
|
|
270
|
-
sidebarContainerLayout.addWidget(this.topMenu);
|
|
271
|
-
sidebarContainerLayout.addWidget(this.tabBar);
|
|
272
|
-
sidebarContainerLayout.addWidget(this.additionalViewsMenu);
|
|
273
|
-
sidebarContainerLayout.addWidget(this.bottomMenu);
|
|
274
|
-
|
|
275
|
-
BoxPanel.setStretch(sidebarContainer, 0);
|
|
276
|
-
BoxPanel.setStretch(contentPanel, 1);
|
|
277
|
-
containerLayout.addWidget(sidebarContainer);
|
|
278
|
-
containerLayout.addWidget(contentPanel);
|
|
279
|
-
const boxPanel = new BoxPanel({ layout: containerLayout });
|
|
280
|
-
boxPanel.id = 'theia-' + side + '-content-panel';
|
|
281
|
-
return boxPanel;
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* Create an object that describes the current side panel layout. This object may contain references
|
|
286
|
-
* to widgets; these need to be transformed before the layout can be serialized.
|
|
287
|
-
*/
|
|
288
|
-
getLayoutData(): SidePanel.LayoutData {
|
|
289
|
-
const currentTitle = this.tabBar.currentTitle;
|
|
290
|
-
const items = toArray(map(this.tabBar.titles, title => <SidePanel.WidgetItem>{
|
|
291
|
-
widget: title.owner,
|
|
292
|
-
rank: SidePanelHandler.rankProperty.get(title.owner),
|
|
293
|
-
expanded: title === currentTitle,
|
|
294
|
-
pinned: title.className.includes(PINNED_CLASS)
|
|
295
|
-
}));
|
|
296
|
-
// eslint-disable-next-line no-null/no-null
|
|
297
|
-
const size = currentTitle !== null ? this.getPanelSize() : this.state.lastPanelSize;
|
|
298
|
-
return { type: 'sidepanel', items, size };
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* Apply a side panel layout that has been previously created with `getLayoutData`.
|
|
303
|
-
*/
|
|
304
|
-
setLayoutData(layoutData: SidePanel.LayoutData): void {
|
|
305
|
-
// eslint-disable-next-line no-null/no-null
|
|
306
|
-
this.tabBar.currentTitle = null;
|
|
307
|
-
|
|
308
|
-
let currentTitle: Title<Widget> | undefined;
|
|
309
|
-
if (layoutData.items) {
|
|
310
|
-
for (const { widget, rank, expanded, pinned } of layoutData.items) {
|
|
311
|
-
if (widget) {
|
|
312
|
-
if (rank) {
|
|
313
|
-
SidePanelHandler.rankProperty.set(widget, rank);
|
|
314
|
-
}
|
|
315
|
-
if (expanded) {
|
|
316
|
-
currentTitle = widget.title;
|
|
317
|
-
}
|
|
318
|
-
if (pinned) {
|
|
319
|
-
widget.title.className += ` ${PINNED_CLASS}`;
|
|
320
|
-
widget.title.closable = false;
|
|
321
|
-
}
|
|
322
|
-
// Add the widgets directly to the tab bar in the same order as they are stored
|
|
323
|
-
this.tabBar.addTab(widget.title);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
if (layoutData.size) {
|
|
328
|
-
this.state.lastPanelSize = layoutData.size;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
// If the layout data contains an expanded item, update the currentTitle property
|
|
332
|
-
// This implies a refresh through the `currentChanged` signal
|
|
333
|
-
if (currentTitle) {
|
|
334
|
-
this.tabBar.currentTitle = currentTitle;
|
|
335
|
-
} else {
|
|
336
|
-
this.refresh();
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
/**
|
|
341
|
-
* Activate a widget residing in the side panel by ID.
|
|
342
|
-
*
|
|
343
|
-
* @returns the activated widget if it was found
|
|
344
|
-
*/
|
|
345
|
-
activate(id: string): Widget | undefined {
|
|
346
|
-
const widget = this.expand(id);
|
|
347
|
-
if (widget) {
|
|
348
|
-
widget.activate();
|
|
349
|
-
}
|
|
350
|
-
return widget;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
/**
|
|
354
|
-
* Expand a widget residing in the side panel by ID. If no ID is given and the panel is
|
|
355
|
-
* currently collapsed, the last active tab of this side panel is expanded. If no tab
|
|
356
|
-
* was expanded previously, the first one is taken.
|
|
357
|
-
*
|
|
358
|
-
* @returns the expanded widget if it was found
|
|
359
|
-
*/
|
|
360
|
-
expand(id?: string): Widget | undefined {
|
|
361
|
-
if (id) {
|
|
362
|
-
const widget = find(this.dockPanel.widgets(), w => w.id === id);
|
|
363
|
-
if (widget) {
|
|
364
|
-
this.tabBar.currentTitle = widget.title;
|
|
365
|
-
}
|
|
366
|
-
return widget;
|
|
367
|
-
} else if (this.tabBar.currentTitle) {
|
|
368
|
-
return this.tabBar.currentTitle.owner;
|
|
369
|
-
} else if (this.tabBar.titles.length > 0) {
|
|
370
|
-
let index = this.state.lastActiveTabIndex;
|
|
371
|
-
if (!index) {
|
|
372
|
-
index = 0;
|
|
373
|
-
} else if (index >= this.tabBar.titles.length) {
|
|
374
|
-
index = this.tabBar.titles.length - 1;
|
|
375
|
-
}
|
|
376
|
-
const title = this.tabBar.titles[index];
|
|
377
|
-
this.tabBar.currentTitle = title;
|
|
378
|
-
return title.owner;
|
|
379
|
-
} else {
|
|
380
|
-
// Reveal the tab bar and dock panel even if there is no widget
|
|
381
|
-
// The next call to `refreshVisibility` will collapse them again
|
|
382
|
-
this.state.expansion = SidePanel.ExpansionState.expanding;
|
|
383
|
-
let relativeSizes: number[] | undefined;
|
|
384
|
-
const parent = this.container.parent;
|
|
385
|
-
if (parent instanceof SplitPanel) {
|
|
386
|
-
relativeSizes = parent.relativeSizes();
|
|
387
|
-
}
|
|
388
|
-
this.container.removeClass(COLLAPSED_CLASS);
|
|
389
|
-
this.container.show();
|
|
390
|
-
this.tabBar.show();
|
|
391
|
-
this.dockPanel.node.style.minWidth = '0';
|
|
392
|
-
this.dockPanel.show();
|
|
393
|
-
if (relativeSizes && parent instanceof SplitPanel) {
|
|
394
|
-
// Make sure that the expansion animation starts at zero size
|
|
395
|
-
parent.setRelativeSizes(relativeSizes);
|
|
396
|
-
}
|
|
397
|
-
this.setPanelSize(this.options.emptySize).then(() => {
|
|
398
|
-
if (this.state.expansion === SidePanel.ExpansionState.expanding) {
|
|
399
|
-
this.state.expansion = SidePanel.ExpansionState.expanded;
|
|
400
|
-
}
|
|
401
|
-
});
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
/**
|
|
406
|
-
* Collapse the sidebar so no items are expanded.
|
|
407
|
-
*/
|
|
408
|
-
collapse(): Promise<void> {
|
|
409
|
-
if (this.tabBar.currentTitle) {
|
|
410
|
-
// eslint-disable-next-line no-null/no-null
|
|
411
|
-
this.tabBar.currentTitle = null;
|
|
412
|
-
} else {
|
|
413
|
-
this.refresh();
|
|
414
|
-
}
|
|
415
|
-
return animationFrame();
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
/**
|
|
419
|
-
* Add a widget and its title to the dock panel and side bar.
|
|
420
|
-
*
|
|
421
|
-
* If the widget is already added, it will be moved.
|
|
422
|
-
*/
|
|
423
|
-
addWidget(widget: Widget, options: SidePanel.WidgetOptions): void {
|
|
424
|
-
if (options.rank) {
|
|
425
|
-
SidePanelHandler.rankProperty.set(widget, options.rank);
|
|
426
|
-
}
|
|
427
|
-
this.dockPanel.addWidget(widget);
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
/**
|
|
431
|
-
* Add a menu to the sidebar top.
|
|
432
|
-
*
|
|
433
|
-
* If the menu is already added, it will be ignored.
|
|
434
|
-
*/
|
|
435
|
-
addTopMenu(menu: SidebarMenu): void {
|
|
436
|
-
this.topMenu.addMenu(menu);
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
/**
|
|
440
|
-
* Remove a menu from the sidebar top.
|
|
441
|
-
*
|
|
442
|
-
* @param menuId id of the menu to remove
|
|
443
|
-
*/
|
|
444
|
-
removeTopMenu(menuId: string): void {
|
|
445
|
-
this.topMenu.removeMenu(menuId);
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
/**
|
|
449
|
-
* Add a menu to the sidebar bottom.
|
|
450
|
-
*
|
|
451
|
-
* If the menu is already added, it will be ignored.
|
|
452
|
-
*/
|
|
453
|
-
addBottomMenu(menu: SidebarMenu): void {
|
|
454
|
-
this.bottomMenu.addMenu(menu);
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
/**
|
|
458
|
-
* Remove a menu from the sidebar bottom.
|
|
459
|
-
*
|
|
460
|
-
* @param menuId id of the menu to remove
|
|
461
|
-
*/
|
|
462
|
-
removeBottomMenu(menuId: string): void {
|
|
463
|
-
this.bottomMenu.removeMenu(menuId);
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
// should be a property to preserve fn identity
|
|
467
|
-
protected updateToolbarTitle = (): void => {
|
|
468
|
-
const currentTitle = this.tabBar && this.tabBar.currentTitle;
|
|
469
|
-
this.toolBar.toolbarTitle = currentTitle || undefined;
|
|
470
|
-
};
|
|
471
|
-
|
|
472
|
-
/**
|
|
473
|
-
* Refresh the visibility of the side bar and dock panel.
|
|
474
|
-
*/
|
|
475
|
-
refresh(): void {
|
|
476
|
-
const container = this.container;
|
|
477
|
-
const parent = container.parent;
|
|
478
|
-
const tabBar = this.tabBar;
|
|
479
|
-
const dockPanel = this.dockPanel;
|
|
480
|
-
const isEmpty = tabBar.titles.length === 0;
|
|
481
|
-
const currentTitle = tabBar.currentTitle;
|
|
482
|
-
// eslint-disable-next-line no-null/no-null
|
|
483
|
-
const hideDockPanel = currentTitle === null;
|
|
484
|
-
this.updateSashState(this.container, hideDockPanel);
|
|
485
|
-
let relativeSizes: number[] | undefined;
|
|
486
|
-
|
|
487
|
-
if (hideDockPanel) {
|
|
488
|
-
container.addClass(COLLAPSED_CLASS);
|
|
489
|
-
if (this.state.expansion === SidePanel.ExpansionState.expanded && !this.state.empty) {
|
|
490
|
-
// Update the lastPanelSize property
|
|
491
|
-
const size = this.getPanelSize();
|
|
492
|
-
if (size) {
|
|
493
|
-
this.state.lastPanelSize = size;
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
this.state.expansion = SidePanel.ExpansionState.collapsed;
|
|
497
|
-
} else {
|
|
498
|
-
container.removeClass(COLLAPSED_CLASS);
|
|
499
|
-
let size: number | undefined;
|
|
500
|
-
if (this.state.expansion !== SidePanel.ExpansionState.expanded) {
|
|
501
|
-
if (this.state.lastPanelSize) {
|
|
502
|
-
size = this.state.lastPanelSize;
|
|
503
|
-
} else {
|
|
504
|
-
size = this.getDefaultPanelSize();
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
if (size) {
|
|
508
|
-
// Restore the panel size to the last known size or the default size
|
|
509
|
-
this.state.expansion = SidePanel.ExpansionState.expanding;
|
|
510
|
-
if (parent instanceof SplitPanel) {
|
|
511
|
-
relativeSizes = parent.relativeSizes();
|
|
512
|
-
}
|
|
513
|
-
this.setPanelSize(size).then(() => {
|
|
514
|
-
if (this.state.expansion === SidePanel.ExpansionState.expanding) {
|
|
515
|
-
this.state.expansion = SidePanel.ExpansionState.expanded;
|
|
516
|
-
}
|
|
517
|
-
});
|
|
518
|
-
} else {
|
|
519
|
-
this.state.expansion = SidePanel.ExpansionState.expanded;
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
container.setHidden(isEmpty && hideDockPanel);
|
|
523
|
-
tabBar.setHidden(isEmpty);
|
|
524
|
-
dockPanel.setHidden(hideDockPanel);
|
|
525
|
-
this.state.empty = isEmpty;
|
|
526
|
-
if (currentTitle) {
|
|
527
|
-
dockPanel.selectWidget(currentTitle.owner);
|
|
528
|
-
}
|
|
529
|
-
if (relativeSizes && parent instanceof SplitPanel) {
|
|
530
|
-
// Make sure that the expansion animation starts at the smallest possible size
|
|
531
|
-
parent.setRelativeSizes(relativeSizes);
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
/**
|
|
536
|
-
* Sets the size of the side panel.
|
|
537
|
-
*
|
|
538
|
-
* @param size the desired size (width) of the panel in pixels.
|
|
539
|
-
*/
|
|
540
|
-
resize(size: number): void {
|
|
541
|
-
if (this.dockPanel.isHidden) {
|
|
542
|
-
this.state.lastPanelSize = size;
|
|
543
|
-
} else {
|
|
544
|
-
this.setPanelSize(size);
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
/**
|
|
549
|
-
* Compute the current width of the panel. This implementation assumes that the parent of
|
|
550
|
-
* the panel container is a `SplitPanel`.
|
|
551
|
-
*/
|
|
552
|
-
protected getPanelSize(): number | undefined {
|
|
553
|
-
const parent = this.container.parent;
|
|
554
|
-
if (parent instanceof SplitPanel && parent.isVisible) {
|
|
555
|
-
const index = parent.widgets.indexOf(this.container);
|
|
556
|
-
if (this.side === 'left') {
|
|
557
|
-
const handle = parent.handles[index];
|
|
558
|
-
if (!handle.classList.contains('p-mod-hidden')) {
|
|
559
|
-
return handle.offsetLeft;
|
|
560
|
-
}
|
|
561
|
-
} else if (this.side === 'right') {
|
|
562
|
-
const handle = parent.handles[index - 1];
|
|
563
|
-
if (!handle.classList.contains('p-mod-hidden')) {
|
|
564
|
-
const parentWidth = parent.node.clientWidth;
|
|
565
|
-
return parentWidth - handle.offsetLeft;
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
/**
|
|
572
|
-
* Determine the default size to apply when the panel is expanded for the first time.
|
|
573
|
-
*/
|
|
574
|
-
protected getDefaultPanelSize(): number | undefined {
|
|
575
|
-
const parent = this.container.parent;
|
|
576
|
-
if (parent && parent.isVisible) {
|
|
577
|
-
return parent.node.clientWidth * this.options.initialSizeRatio;
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
/**
|
|
582
|
-
* Modify the width of the panel. This implementation assumes that the parent of the panel
|
|
583
|
-
* container is a `SplitPanel`.
|
|
584
|
-
*/
|
|
585
|
-
protected setPanelSize(size: number): Promise<void> {
|
|
586
|
-
const enableAnimation = this.applicationStateService.state === 'ready';
|
|
587
|
-
const options: SplitPositionOptions = {
|
|
588
|
-
side: this.side,
|
|
589
|
-
duration: enableAnimation ? this.options.expandDuration : 0,
|
|
590
|
-
referenceWidget: this.dockPanel
|
|
591
|
-
};
|
|
592
|
-
const promise = this.splitPositionHandler.setSidePanelSize(this.container, size, options);
|
|
593
|
-
const result = new Promise<void>(resolve => {
|
|
594
|
-
// Resolve the resulting promise in any case, regardless of whether resizing was successful
|
|
595
|
-
promise.then(() => resolve(), () => resolve());
|
|
596
|
-
});
|
|
597
|
-
this.state.pendingUpdate = this.state.pendingUpdate.then(() => result);
|
|
598
|
-
return result;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
protected readonly toDisposeOnCurrentTabChanged = new DisposableCollection();
|
|
602
|
-
|
|
603
|
-
/**
|
|
604
|
-
* Handle a `currentChanged` signal from the sidebar. The side panel is refreshed so it displays
|
|
605
|
-
* the new selected widget.
|
|
606
|
-
*/
|
|
607
|
-
protected onCurrentTabChanged(sender: SideTabBar, { currentTitle, currentIndex }: TabBar.ICurrentChangedArgs<Widget>): void {
|
|
608
|
-
this.toDisposeOnCurrentTabChanged.dispose();
|
|
609
|
-
if (currentTitle) {
|
|
610
|
-
this.updateToolbarTitle();
|
|
611
|
-
currentTitle.changed.connect(this.updateToolbarTitle);
|
|
612
|
-
this.toDisposeOnCurrentTabChanged.push(Disposable.create(() => currentTitle.changed.disconnect(this.updateToolbarTitle)));
|
|
613
|
-
}
|
|
614
|
-
if (currentIndex >= 0) {
|
|
615
|
-
this.state.lastActiveTabIndex = currentIndex;
|
|
616
|
-
sender.revealTab(currentIndex);
|
|
617
|
-
}
|
|
618
|
-
this.refresh();
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
/**
|
|
622
|
-
* Handle a `tabDetachRequested` signal from the sidebar. A drag is started so the widget can be
|
|
623
|
-
* moved to another application shell area.
|
|
624
|
-
*/
|
|
625
|
-
protected onTabDetachRequested(sender: SideTabBar,
|
|
626
|
-
{ title, tab, clientX, clientY }: TabBar.ITabDetachRequestedArgs<Widget>): void {
|
|
627
|
-
// Release the tab bar's hold on the mouse
|
|
628
|
-
sender.releaseMouse();
|
|
629
|
-
|
|
630
|
-
// Clone the selected tab and use that as drag image
|
|
631
|
-
const clonedTab = tab.cloneNode(true) as HTMLElement;
|
|
632
|
-
clonedTab.style.width = '';
|
|
633
|
-
clonedTab.style.height = '';
|
|
634
|
-
const label = clonedTab.getElementsByClassName('p-TabBar-tabLabel')[0] as HTMLElement;
|
|
635
|
-
label.style.width = '';
|
|
636
|
-
label.style.height = '';
|
|
637
|
-
|
|
638
|
-
// Create and start a drag to move the selected tab to another panel
|
|
639
|
-
const mimeData = new MimeData();
|
|
640
|
-
mimeData.setData('application/vnd.phosphor.widget-factory', () => title.owner);
|
|
641
|
-
const drag = new Drag({
|
|
642
|
-
mimeData,
|
|
643
|
-
dragImage: clonedTab,
|
|
644
|
-
proposedAction: 'move',
|
|
645
|
-
supportedActions: 'move',
|
|
646
|
-
});
|
|
647
|
-
|
|
648
|
-
tab.classList.add('p-mod-hidden');
|
|
649
|
-
drag.start(clientX, clientY).then(() => {
|
|
650
|
-
// The promise is resolved when the drag has ended
|
|
651
|
-
tab.classList.remove('p-mod-hidden');
|
|
652
|
-
});
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
protected onTabsOverflowChanged(sender: SideTabBar, event: { titles: Title<Widget>[], startIndex: number }): void {
|
|
656
|
-
if (event.startIndex >= 0 && event.startIndex <= sender.currentIndex) {
|
|
657
|
-
sender.revealTab(sender.currentIndex);
|
|
658
|
-
} else {
|
|
659
|
-
this.additionalViewsMenu.updateAdditionalViews(sender, event);
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
/*
|
|
664
|
-
* Handle the `widgetAdded` signal from the dock panel. The widget's title is inserted into the
|
|
665
|
-
* tab bar according to the `rankProperty` value that may be attached to the widget.
|
|
666
|
-
*/
|
|
667
|
-
protected onWidgetAdded(sender: DockPanel, widget: Widget): void {
|
|
668
|
-
const titles = this.tabBar.titles;
|
|
669
|
-
if (!find(titles, t => t.owner === widget)) {
|
|
670
|
-
const rank = SidePanelHandler.rankProperty.get(widget);
|
|
671
|
-
let index = titles.length;
|
|
672
|
-
if (rank !== undefined) {
|
|
673
|
-
for (let i = index - 1; i >= 0; i--) {
|
|
674
|
-
const r = SidePanelHandler.rankProperty.get(titles[i].owner);
|
|
675
|
-
if (r !== undefined && r > rank) {
|
|
676
|
-
index = i;
|
|
677
|
-
}
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
this.tabBar.insertTab(index, widget.title);
|
|
681
|
-
this.refresh();
|
|
682
|
-
}
|
|
683
|
-
}
|
|
684
|
-
|
|
685
|
-
/*
|
|
686
|
-
* Handle the `widgetRemoved` signal from the dock panel. The widget's title is also removed
|
|
687
|
-
* from the tab bar.
|
|
688
|
-
*/
|
|
689
|
-
protected onWidgetRemoved(sender: DockPanel, widget: Widget): void {
|
|
690
|
-
this.tabBar.removeTab(widget.title);
|
|
691
|
-
this.refresh();
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
protected updateSashState(sidePanelElement: Panel | null, sidePanelCollapsed: boolean): void {
|
|
695
|
-
if (sidePanelElement) {
|
|
696
|
-
// Hide the sash when the left/right side panel is collapsed
|
|
697
|
-
if (sidePanelElement.id === 'theia-left-content-panel' && sidePanelElement.node.nextElementSibling) {
|
|
698
|
-
sidePanelElement.node.nextElementSibling.classList.toggle('sash-hidden', sidePanelCollapsed);
|
|
699
|
-
} else if (sidePanelElement.id === 'theia-right-content-panel' && sidePanelElement.node.previousElementSibling) {
|
|
700
|
-
sidePanelElement.node.previousElementSibling.classList.toggle('sash-hidden', sidePanelCollapsed);
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
}
|
|
704
|
-
|
|
705
|
-
}
|
|
706
|
-
|
|
707
|
-
export namespace SidePanel {
|
|
708
|
-
/**
|
|
709
|
-
* Options that control the behavior of side panels.
|
|
710
|
-
*/
|
|
711
|
-
export interface Options {
|
|
712
|
-
/**
|
|
713
|
-
* When a widget is being dragged and the distance of the mouse cursor to the shell border
|
|
714
|
-
* is below this threshold, the respective side panel is expanded so the widget can be dropped
|
|
715
|
-
* into that panel. Set this to `-1` to disable expanding the side panel while dragging.
|
|
716
|
-
*/
|
|
717
|
-
expandThreshold: number;
|
|
718
|
-
/**
|
|
719
|
-
* The duration in milliseconds of the animation shown when a side panel is expanded.
|
|
720
|
-
* Set this to `0` to disable expansion animation.
|
|
721
|
-
*/
|
|
722
|
-
expandDuration: number;
|
|
723
|
-
/**
|
|
724
|
-
* The ratio of the available shell size to use as initial size for the side panel.
|
|
725
|
-
*/
|
|
726
|
-
initialSizeRatio: number
|
|
727
|
-
/**
|
|
728
|
-
* How large the panel should be when it's expanded and empty.
|
|
729
|
-
*/
|
|
730
|
-
emptySize: number;
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
/**
|
|
734
|
-
* The options for adding a widget to a side panel.
|
|
735
|
-
*/
|
|
736
|
-
export interface WidgetOptions {
|
|
737
|
-
/**
|
|
738
|
-
* The rank order of the widget among its siblings.
|
|
739
|
-
*/
|
|
740
|
-
rank?: number;
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
/**
|
|
744
|
-
* Data to save and load the layout of a side panel.
|
|
745
|
-
*/
|
|
746
|
-
export interface LayoutData {
|
|
747
|
-
type: 'sidepanel',
|
|
748
|
-
items?: WidgetItem[];
|
|
749
|
-
size?: number;
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
/**
|
|
753
|
-
* Data structure used to save and restore the side panel layout.
|
|
754
|
-
*/
|
|
755
|
-
export interface WidgetItem extends WidgetOptions {
|
|
756
|
-
/** Can be undefined in case the widget could not be restored. */
|
|
757
|
-
widget?: Widget;
|
|
758
|
-
expanded?: boolean;
|
|
759
|
-
pinned?: boolean;
|
|
760
|
-
}
|
|
761
|
-
|
|
762
|
-
export interface State {
|
|
763
|
-
/**
|
|
764
|
-
* Indicates whether the panel is empty.
|
|
765
|
-
*/
|
|
766
|
-
empty: boolean;
|
|
767
|
-
/**
|
|
768
|
-
* Indicates whether the panel is expanded, collapsed, or in a transition between the two.
|
|
769
|
-
*/
|
|
770
|
-
expansion: ExpansionState;
|
|
771
|
-
/**
|
|
772
|
-
* A promise that is resolved when the currently pending side panel updates are done.
|
|
773
|
-
*/
|
|
774
|
-
pendingUpdate: Promise<void>;
|
|
775
|
-
/**
|
|
776
|
-
* The index of the last tab that was selected. When the panel is expanded, it tries to restore
|
|
777
|
-
* the tab selection to the previous state.
|
|
778
|
-
*/
|
|
779
|
-
lastActiveTabIndex?: number;
|
|
780
|
-
/**
|
|
781
|
-
* The width or height of the panel before it was collapsed. When the panel is expanded, it tries
|
|
782
|
-
* to restore its size to this value.
|
|
783
|
-
*/
|
|
784
|
-
lastPanelSize?: number;
|
|
785
|
-
}
|
|
786
|
-
|
|
787
|
-
export enum ExpansionState {
|
|
788
|
-
collapsed = 'collapsed',
|
|
789
|
-
expanding = 'expanding',
|
|
790
|
-
expanded = 'expanded',
|
|
791
|
-
collapsing = 'collapsing'
|
|
792
|
-
}
|
|
793
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2018 TypeFox 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-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { injectable, inject } from 'inversify';
|
|
18
|
+
import { find, map, toArray, some } from '@phosphor/algorithm';
|
|
19
|
+
import { TabBar, Widget, DockPanel, Title, Panel, BoxPanel, BoxLayout, SplitPanel, PanelLayout } from '@phosphor/widgets';
|
|
20
|
+
import { MimeData } from '@phosphor/coreutils';
|
|
21
|
+
import { Drag } from '@phosphor/dragdrop';
|
|
22
|
+
import { AttachedProperty } from '@phosphor/properties';
|
|
23
|
+
import { TabBarRendererFactory, TabBarRenderer, SHELL_TABBAR_CONTEXT_MENU, SideTabBar } from './tab-bars';
|
|
24
|
+
import { SidebarMenuWidget, SidebarMenu, SidebarBottomMenuWidgetFactory, SidebarTopMenuWidgetFactory } from './sidebar-menu-widget';
|
|
25
|
+
import { SplitPositionHandler, SplitPositionOptions } from './split-panels';
|
|
26
|
+
import { animationFrame } from '../browser';
|
|
27
|
+
import { FrontendApplicationStateService } from '../frontend-application-state';
|
|
28
|
+
import { TheiaDockPanel } from './theia-dock-panel';
|
|
29
|
+
import { SidePanelToolbar } from './side-panel-toolbar';
|
|
30
|
+
import { TabBarToolbarRegistry, TabBarToolbarFactory, TabBarToolbar } from './tab-bar-toolbar';
|
|
31
|
+
import { DisposableCollection, Disposable } from '../../common/disposable';
|
|
32
|
+
import { ContextMenuRenderer } from '../context-menu-renderer';
|
|
33
|
+
import { MenuPath } from '../../common/menu';
|
|
34
|
+
import { SidebarBottomMenuWidget } from './sidebar-bottom-menu-widget';
|
|
35
|
+
import { SidebarTopMenuWidget } from './sidebar-top-menu-widget';
|
|
36
|
+
import { PINNED_CLASS } from '../widgets';
|
|
37
|
+
import { AdditionalViewsMenuWidget, AdditionalViewsMenuWidgetFactory } from './additional-views-menu-widget';
|
|
38
|
+
|
|
39
|
+
/** The class name added to the left and right area panels. */
|
|
40
|
+
export const LEFT_RIGHT_AREA_CLASS = 'theia-app-sides';
|
|
41
|
+
|
|
42
|
+
/** The class name added to collapsed side panels. */
|
|
43
|
+
const COLLAPSED_CLASS = 'theia-mod-collapsed';
|
|
44
|
+
|
|
45
|
+
export const SidePanelHandlerFactory = Symbol('SidePanelHandlerFactory');
|
|
46
|
+
|
|
47
|
+
export const SIDE_PANEL_TOOLBAR_CONTEXT_MENU: MenuPath = ['SIDE_PANEL_TOOLBAR_CONTEXT_MENU'];
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* A class which manages a dock panel and a related side bar. This is used for the left and right
|
|
51
|
+
* panel of the application shell.
|
|
52
|
+
*/
|
|
53
|
+
@injectable()
|
|
54
|
+
export class SidePanelHandler {
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* A property that can be attached to widgets in order to determine the insertion index
|
|
58
|
+
* of their title in the tab bar.
|
|
59
|
+
*/
|
|
60
|
+
protected static readonly rankProperty = new AttachedProperty<Widget, number | undefined>({
|
|
61
|
+
name: 'sidePanelRank',
|
|
62
|
+
create: () => undefined
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The tab bar displays the titles of the widgets in the side panel. Visibility of the widgets
|
|
67
|
+
* is controlled entirely through tab selection: a widget is revealed by setting the `currentTitle`
|
|
68
|
+
* accordingly in the tab bar, and the panel is hidden by setting that property to `null`. The
|
|
69
|
+
* tab bar itself remains visible as long as there is at least one widget.
|
|
70
|
+
*/
|
|
71
|
+
tabBar: SideTabBar;
|
|
72
|
+
/**
|
|
73
|
+
* Conditional menu placed below the tabBar. Manages overflowing/hidden tabs.
|
|
74
|
+
* Is only visible if there are overflowing tabs.
|
|
75
|
+
*/
|
|
76
|
+
additionalViewsMenu: AdditionalViewsMenuWidget;
|
|
77
|
+
/**
|
|
78
|
+
* The menu placed on the sidebar top.
|
|
79
|
+
* Displayed as icons.
|
|
80
|
+
* Open menus when on clicks.
|
|
81
|
+
*/
|
|
82
|
+
topMenu: SidebarMenuWidget;
|
|
83
|
+
/**
|
|
84
|
+
* The menu placed on the sidebar bottom.
|
|
85
|
+
* Displayed as icons.
|
|
86
|
+
* Open menus when on clicks.
|
|
87
|
+
*/
|
|
88
|
+
bottomMenu: SidebarMenuWidget;
|
|
89
|
+
/**
|
|
90
|
+
* A tool bar, which displays a title and widget specific command buttons.
|
|
91
|
+
*/
|
|
92
|
+
toolBar: SidePanelToolbar;
|
|
93
|
+
/**
|
|
94
|
+
* The widget container is a dock panel in `single-document` mode, which means that the panel
|
|
95
|
+
* cannot be split.
|
|
96
|
+
*/
|
|
97
|
+
dockPanel: TheiaDockPanel;
|
|
98
|
+
/**
|
|
99
|
+
* The panel that contains the tab bar and the dock panel. This one is hidden whenever the dock
|
|
100
|
+
* panel is empty.
|
|
101
|
+
*/
|
|
102
|
+
container: Panel;
|
|
103
|
+
/**
|
|
104
|
+
* The current state of the side panel.
|
|
105
|
+
*/
|
|
106
|
+
readonly state: SidePanel.State = {
|
|
107
|
+
empty: true,
|
|
108
|
+
expansion: SidePanel.ExpansionState.collapsed,
|
|
109
|
+
pendingUpdate: Promise.resolve()
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* The shell area where the panel is placed. This property should not be modified directly, but
|
|
114
|
+
* only by calling `create`.
|
|
115
|
+
*/
|
|
116
|
+
protected side: 'left' | 'right';
|
|
117
|
+
/**
|
|
118
|
+
* Options that control the behavior of the side panel.
|
|
119
|
+
*/
|
|
120
|
+
protected options: SidePanel.Options;
|
|
121
|
+
|
|
122
|
+
@inject(TabBarToolbarRegistry) protected tabBarToolBarRegistry: TabBarToolbarRegistry;
|
|
123
|
+
@inject(TabBarToolbarFactory) protected tabBarToolBarFactory: () => TabBarToolbar;
|
|
124
|
+
@inject(TabBarRendererFactory) protected tabBarRendererFactory: () => TabBarRenderer;
|
|
125
|
+
@inject(SidebarTopMenuWidgetFactory) protected sidebarTopWidgetFactory: () => SidebarTopMenuWidget;
|
|
126
|
+
@inject(SidebarBottomMenuWidgetFactory) protected sidebarBottomWidgetFactory: () => SidebarBottomMenuWidget;
|
|
127
|
+
@inject(AdditionalViewsMenuWidgetFactory) protected additionalViewsMenuFactory: AdditionalViewsMenuWidgetFactory;
|
|
128
|
+
@inject(SplitPositionHandler) protected splitPositionHandler: SplitPositionHandler;
|
|
129
|
+
@inject(FrontendApplicationStateService) protected readonly applicationStateService: FrontendApplicationStateService;
|
|
130
|
+
@inject(TheiaDockPanel.Factory) protected readonly dockPanelFactory: TheiaDockPanel.Factory;
|
|
131
|
+
|
|
132
|
+
@inject(ContextMenuRenderer)
|
|
133
|
+
protected readonly contextMenuRenderer: ContextMenuRenderer;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Create the side bar and dock panel widgets.
|
|
137
|
+
*/
|
|
138
|
+
create(side: 'left' | 'right', options: SidePanel.Options): void {
|
|
139
|
+
this.side = side;
|
|
140
|
+
this.options = options;
|
|
141
|
+
this.topMenu = this.createSidebarTopMenu();
|
|
142
|
+
this.tabBar = this.createSideBar();
|
|
143
|
+
this.additionalViewsMenu = this.createAdditionalViewsWidget();
|
|
144
|
+
this.bottomMenu = this.createSidebarBottomMenu();
|
|
145
|
+
this.toolBar = this.createToolbar();
|
|
146
|
+
this.dockPanel = this.createSidePanel();
|
|
147
|
+
this.container = this.createContainer();
|
|
148
|
+
|
|
149
|
+
this.refresh();
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
protected createSideBar(): SideTabBar {
|
|
153
|
+
const side = this.side;
|
|
154
|
+
const tabBarRenderer = this.tabBarRendererFactory();
|
|
155
|
+
const sideBar = new SideTabBar({
|
|
156
|
+
// Tab bar options
|
|
157
|
+
orientation: side === 'left' || side === 'right' ? 'vertical' : 'horizontal',
|
|
158
|
+
insertBehavior: 'none',
|
|
159
|
+
removeBehavior: 'select-previous-tab',
|
|
160
|
+
allowDeselect: false,
|
|
161
|
+
tabsMovable: true,
|
|
162
|
+
renderer: tabBarRenderer,
|
|
163
|
+
// Scroll bar options
|
|
164
|
+
handlers: ['drag-thumb', 'keyboard', 'wheel', 'touch'],
|
|
165
|
+
useBothWheelAxes: true,
|
|
166
|
+
scrollYMarginOffset: 8,
|
|
167
|
+
suppressScrollX: true
|
|
168
|
+
});
|
|
169
|
+
tabBarRenderer.tabBar = sideBar;
|
|
170
|
+
sideBar.disposed.connect(() => tabBarRenderer.dispose());
|
|
171
|
+
tabBarRenderer.contextMenuPath = SHELL_TABBAR_CONTEXT_MENU;
|
|
172
|
+
sideBar.addClass('theia-app-' + side);
|
|
173
|
+
sideBar.addClass(LEFT_RIGHT_AREA_CLASS);
|
|
174
|
+
|
|
175
|
+
sideBar.tabAdded.connect((sender, { title }) => {
|
|
176
|
+
const widget = title.owner;
|
|
177
|
+
if (!some(this.dockPanel.widgets(), w => w === widget)) {
|
|
178
|
+
this.dockPanel.addWidget(widget);
|
|
179
|
+
}
|
|
180
|
+
}, this);
|
|
181
|
+
sideBar.tabActivateRequested.connect((sender, { title }) => title.owner.activate());
|
|
182
|
+
sideBar.tabCloseRequested.connect((sender, { title }) => title.owner.close());
|
|
183
|
+
sideBar.collapseRequested.connect(() => this.collapse(), this);
|
|
184
|
+
sideBar.currentChanged.connect(this.onCurrentTabChanged, this);
|
|
185
|
+
sideBar.tabDetachRequested.connect(this.onTabDetachRequested, this);
|
|
186
|
+
sideBar.tabsOverflowChanged.connect(this.onTabsOverflowChanged, this);
|
|
187
|
+
return sideBar;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
protected createSidePanel(): TheiaDockPanel {
|
|
191
|
+
const sidePanel = this.dockPanelFactory({
|
|
192
|
+
mode: 'single-document'
|
|
193
|
+
});
|
|
194
|
+
sidePanel.id = 'theia-' + this.side + '-side-panel';
|
|
195
|
+
sidePanel.addClass('theia-side-panel');
|
|
196
|
+
|
|
197
|
+
sidePanel.widgetActivated.connect((sender, widget) => {
|
|
198
|
+
this.tabBar.currentTitle = widget.title;
|
|
199
|
+
}, this);
|
|
200
|
+
sidePanel.widgetAdded.connect(this.onWidgetAdded, this);
|
|
201
|
+
sidePanel.widgetRemoved.connect(this.onWidgetRemoved, this);
|
|
202
|
+
return sidePanel;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
protected createToolbar(): SidePanelToolbar {
|
|
206
|
+
const toolbar = new SidePanelToolbar(this.tabBarToolBarRegistry, this.tabBarToolBarFactory, this.side);
|
|
207
|
+
toolbar.onContextMenu(e => this.showContextMenu(e));
|
|
208
|
+
return toolbar;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
protected createAdditionalViewsWidget(): AdditionalViewsMenuWidget {
|
|
212
|
+
const widget = this.additionalViewsMenuFactory(this.side);
|
|
213
|
+
widget.addClass('theia-sidebar-menu');
|
|
214
|
+
return widget;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
protected createSidebarTopMenu(): SidebarTopMenuWidget {
|
|
218
|
+
return this.createSidebarMenu(this.sidebarTopWidgetFactory);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
protected createSidebarBottomMenu(): SidebarBottomMenuWidget {
|
|
222
|
+
return this.createSidebarMenu(this.sidebarBottomWidgetFactory);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
protected createSidebarMenu<T extends SidebarMenuWidget>(factory: () => T): T {
|
|
226
|
+
const menu = factory();
|
|
227
|
+
menu.addClass('theia-sidebar-menu');
|
|
228
|
+
return menu;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
protected showContextMenu(e: MouseEvent): void {
|
|
232
|
+
const title = this.tabBar.currentTitle;
|
|
233
|
+
if (!title) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
e.stopPropagation();
|
|
237
|
+
e.preventDefault();
|
|
238
|
+
|
|
239
|
+
this.contextMenuRenderer.render({
|
|
240
|
+
args: [title.owner],
|
|
241
|
+
menuPath: SIDE_PANEL_TOOLBAR_CONTEXT_MENU,
|
|
242
|
+
anchor: e
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
protected createContainer(): Panel {
|
|
247
|
+
const contentBox = new BoxLayout({ direction: 'top-to-bottom', spacing: 0 });
|
|
248
|
+
BoxPanel.setStretch(this.toolBar, 0);
|
|
249
|
+
contentBox.addWidget(this.toolBar);
|
|
250
|
+
BoxPanel.setStretch(this.dockPanel, 1);
|
|
251
|
+
contentBox.addWidget(this.dockPanel);
|
|
252
|
+
const contentPanel = new BoxPanel({ layout: contentBox });
|
|
253
|
+
|
|
254
|
+
const side = this.side;
|
|
255
|
+
let direction: BoxLayout.Direction;
|
|
256
|
+
switch (side) {
|
|
257
|
+
case 'left':
|
|
258
|
+
direction = 'left-to-right';
|
|
259
|
+
break;
|
|
260
|
+
case 'right':
|
|
261
|
+
direction = 'right-to-left';
|
|
262
|
+
break;
|
|
263
|
+
default:
|
|
264
|
+
throw new Error('Illegal argument: ' + side);
|
|
265
|
+
}
|
|
266
|
+
const containerLayout = new BoxLayout({ direction, spacing: 0 });
|
|
267
|
+
const sidebarContainerLayout = new PanelLayout();
|
|
268
|
+
const sidebarContainer = new Panel({ layout: sidebarContainerLayout });
|
|
269
|
+
sidebarContainer.addClass('theia-app-sidebar-container');
|
|
270
|
+
sidebarContainerLayout.addWidget(this.topMenu);
|
|
271
|
+
sidebarContainerLayout.addWidget(this.tabBar);
|
|
272
|
+
sidebarContainerLayout.addWidget(this.additionalViewsMenu);
|
|
273
|
+
sidebarContainerLayout.addWidget(this.bottomMenu);
|
|
274
|
+
|
|
275
|
+
BoxPanel.setStretch(sidebarContainer, 0);
|
|
276
|
+
BoxPanel.setStretch(contentPanel, 1);
|
|
277
|
+
containerLayout.addWidget(sidebarContainer);
|
|
278
|
+
containerLayout.addWidget(contentPanel);
|
|
279
|
+
const boxPanel = new BoxPanel({ layout: containerLayout });
|
|
280
|
+
boxPanel.id = 'theia-' + side + '-content-panel';
|
|
281
|
+
return boxPanel;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Create an object that describes the current side panel layout. This object may contain references
|
|
286
|
+
* to widgets; these need to be transformed before the layout can be serialized.
|
|
287
|
+
*/
|
|
288
|
+
getLayoutData(): SidePanel.LayoutData {
|
|
289
|
+
const currentTitle = this.tabBar.currentTitle;
|
|
290
|
+
const items = toArray(map(this.tabBar.titles, title => <SidePanel.WidgetItem>{
|
|
291
|
+
widget: title.owner,
|
|
292
|
+
rank: SidePanelHandler.rankProperty.get(title.owner),
|
|
293
|
+
expanded: title === currentTitle,
|
|
294
|
+
pinned: title.className.includes(PINNED_CLASS)
|
|
295
|
+
}));
|
|
296
|
+
// eslint-disable-next-line no-null/no-null
|
|
297
|
+
const size = currentTitle !== null ? this.getPanelSize() : this.state.lastPanelSize;
|
|
298
|
+
return { type: 'sidepanel', items, size };
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Apply a side panel layout that has been previously created with `getLayoutData`.
|
|
303
|
+
*/
|
|
304
|
+
setLayoutData(layoutData: SidePanel.LayoutData): void {
|
|
305
|
+
// eslint-disable-next-line no-null/no-null
|
|
306
|
+
this.tabBar.currentTitle = null;
|
|
307
|
+
|
|
308
|
+
let currentTitle: Title<Widget> | undefined;
|
|
309
|
+
if (layoutData.items) {
|
|
310
|
+
for (const { widget, rank, expanded, pinned } of layoutData.items) {
|
|
311
|
+
if (widget) {
|
|
312
|
+
if (rank) {
|
|
313
|
+
SidePanelHandler.rankProperty.set(widget, rank);
|
|
314
|
+
}
|
|
315
|
+
if (expanded) {
|
|
316
|
+
currentTitle = widget.title;
|
|
317
|
+
}
|
|
318
|
+
if (pinned) {
|
|
319
|
+
widget.title.className += ` ${PINNED_CLASS}`;
|
|
320
|
+
widget.title.closable = false;
|
|
321
|
+
}
|
|
322
|
+
// Add the widgets directly to the tab bar in the same order as they are stored
|
|
323
|
+
this.tabBar.addTab(widget.title);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (layoutData.size) {
|
|
328
|
+
this.state.lastPanelSize = layoutData.size;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// If the layout data contains an expanded item, update the currentTitle property
|
|
332
|
+
// This implies a refresh through the `currentChanged` signal
|
|
333
|
+
if (currentTitle) {
|
|
334
|
+
this.tabBar.currentTitle = currentTitle;
|
|
335
|
+
} else {
|
|
336
|
+
this.refresh();
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Activate a widget residing in the side panel by ID.
|
|
342
|
+
*
|
|
343
|
+
* @returns the activated widget if it was found
|
|
344
|
+
*/
|
|
345
|
+
activate(id: string): Widget | undefined {
|
|
346
|
+
const widget = this.expand(id);
|
|
347
|
+
if (widget) {
|
|
348
|
+
widget.activate();
|
|
349
|
+
}
|
|
350
|
+
return widget;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Expand a widget residing in the side panel by ID. If no ID is given and the panel is
|
|
355
|
+
* currently collapsed, the last active tab of this side panel is expanded. If no tab
|
|
356
|
+
* was expanded previously, the first one is taken.
|
|
357
|
+
*
|
|
358
|
+
* @returns the expanded widget if it was found
|
|
359
|
+
*/
|
|
360
|
+
expand(id?: string): Widget | undefined {
|
|
361
|
+
if (id) {
|
|
362
|
+
const widget = find(this.dockPanel.widgets(), w => w.id === id);
|
|
363
|
+
if (widget) {
|
|
364
|
+
this.tabBar.currentTitle = widget.title;
|
|
365
|
+
}
|
|
366
|
+
return widget;
|
|
367
|
+
} else if (this.tabBar.currentTitle) {
|
|
368
|
+
return this.tabBar.currentTitle.owner;
|
|
369
|
+
} else if (this.tabBar.titles.length > 0) {
|
|
370
|
+
let index = this.state.lastActiveTabIndex;
|
|
371
|
+
if (!index) {
|
|
372
|
+
index = 0;
|
|
373
|
+
} else if (index >= this.tabBar.titles.length) {
|
|
374
|
+
index = this.tabBar.titles.length - 1;
|
|
375
|
+
}
|
|
376
|
+
const title = this.tabBar.titles[index];
|
|
377
|
+
this.tabBar.currentTitle = title;
|
|
378
|
+
return title.owner;
|
|
379
|
+
} else {
|
|
380
|
+
// Reveal the tab bar and dock panel even if there is no widget
|
|
381
|
+
// The next call to `refreshVisibility` will collapse them again
|
|
382
|
+
this.state.expansion = SidePanel.ExpansionState.expanding;
|
|
383
|
+
let relativeSizes: number[] | undefined;
|
|
384
|
+
const parent = this.container.parent;
|
|
385
|
+
if (parent instanceof SplitPanel) {
|
|
386
|
+
relativeSizes = parent.relativeSizes();
|
|
387
|
+
}
|
|
388
|
+
this.container.removeClass(COLLAPSED_CLASS);
|
|
389
|
+
this.container.show();
|
|
390
|
+
this.tabBar.show();
|
|
391
|
+
this.dockPanel.node.style.minWidth = '0';
|
|
392
|
+
this.dockPanel.show();
|
|
393
|
+
if (relativeSizes && parent instanceof SplitPanel) {
|
|
394
|
+
// Make sure that the expansion animation starts at zero size
|
|
395
|
+
parent.setRelativeSizes(relativeSizes);
|
|
396
|
+
}
|
|
397
|
+
this.setPanelSize(this.options.emptySize).then(() => {
|
|
398
|
+
if (this.state.expansion === SidePanel.ExpansionState.expanding) {
|
|
399
|
+
this.state.expansion = SidePanel.ExpansionState.expanded;
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Collapse the sidebar so no items are expanded.
|
|
407
|
+
*/
|
|
408
|
+
collapse(): Promise<void> {
|
|
409
|
+
if (this.tabBar.currentTitle) {
|
|
410
|
+
// eslint-disable-next-line no-null/no-null
|
|
411
|
+
this.tabBar.currentTitle = null;
|
|
412
|
+
} else {
|
|
413
|
+
this.refresh();
|
|
414
|
+
}
|
|
415
|
+
return animationFrame();
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Add a widget and its title to the dock panel and side bar.
|
|
420
|
+
*
|
|
421
|
+
* If the widget is already added, it will be moved.
|
|
422
|
+
*/
|
|
423
|
+
addWidget(widget: Widget, options: SidePanel.WidgetOptions): void {
|
|
424
|
+
if (options.rank) {
|
|
425
|
+
SidePanelHandler.rankProperty.set(widget, options.rank);
|
|
426
|
+
}
|
|
427
|
+
this.dockPanel.addWidget(widget);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* Add a menu to the sidebar top.
|
|
432
|
+
*
|
|
433
|
+
* If the menu is already added, it will be ignored.
|
|
434
|
+
*/
|
|
435
|
+
addTopMenu(menu: SidebarMenu): void {
|
|
436
|
+
this.topMenu.addMenu(menu);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* Remove a menu from the sidebar top.
|
|
441
|
+
*
|
|
442
|
+
* @param menuId id of the menu to remove
|
|
443
|
+
*/
|
|
444
|
+
removeTopMenu(menuId: string): void {
|
|
445
|
+
this.topMenu.removeMenu(menuId);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Add a menu to the sidebar bottom.
|
|
450
|
+
*
|
|
451
|
+
* If the menu is already added, it will be ignored.
|
|
452
|
+
*/
|
|
453
|
+
addBottomMenu(menu: SidebarMenu): void {
|
|
454
|
+
this.bottomMenu.addMenu(menu);
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
/**
|
|
458
|
+
* Remove a menu from the sidebar bottom.
|
|
459
|
+
*
|
|
460
|
+
* @param menuId id of the menu to remove
|
|
461
|
+
*/
|
|
462
|
+
removeBottomMenu(menuId: string): void {
|
|
463
|
+
this.bottomMenu.removeMenu(menuId);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// should be a property to preserve fn identity
|
|
467
|
+
protected updateToolbarTitle = (): void => {
|
|
468
|
+
const currentTitle = this.tabBar && this.tabBar.currentTitle;
|
|
469
|
+
this.toolBar.toolbarTitle = currentTitle || undefined;
|
|
470
|
+
};
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* Refresh the visibility of the side bar and dock panel.
|
|
474
|
+
*/
|
|
475
|
+
refresh(): void {
|
|
476
|
+
const container = this.container;
|
|
477
|
+
const parent = container.parent;
|
|
478
|
+
const tabBar = this.tabBar;
|
|
479
|
+
const dockPanel = this.dockPanel;
|
|
480
|
+
const isEmpty = tabBar.titles.length === 0;
|
|
481
|
+
const currentTitle = tabBar.currentTitle;
|
|
482
|
+
// eslint-disable-next-line no-null/no-null
|
|
483
|
+
const hideDockPanel = currentTitle === null;
|
|
484
|
+
this.updateSashState(this.container, hideDockPanel);
|
|
485
|
+
let relativeSizes: number[] | undefined;
|
|
486
|
+
|
|
487
|
+
if (hideDockPanel) {
|
|
488
|
+
container.addClass(COLLAPSED_CLASS);
|
|
489
|
+
if (this.state.expansion === SidePanel.ExpansionState.expanded && !this.state.empty) {
|
|
490
|
+
// Update the lastPanelSize property
|
|
491
|
+
const size = this.getPanelSize();
|
|
492
|
+
if (size) {
|
|
493
|
+
this.state.lastPanelSize = size;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
this.state.expansion = SidePanel.ExpansionState.collapsed;
|
|
497
|
+
} else {
|
|
498
|
+
container.removeClass(COLLAPSED_CLASS);
|
|
499
|
+
let size: number | undefined;
|
|
500
|
+
if (this.state.expansion !== SidePanel.ExpansionState.expanded) {
|
|
501
|
+
if (this.state.lastPanelSize) {
|
|
502
|
+
size = this.state.lastPanelSize;
|
|
503
|
+
} else {
|
|
504
|
+
size = this.getDefaultPanelSize();
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
if (size) {
|
|
508
|
+
// Restore the panel size to the last known size or the default size
|
|
509
|
+
this.state.expansion = SidePanel.ExpansionState.expanding;
|
|
510
|
+
if (parent instanceof SplitPanel) {
|
|
511
|
+
relativeSizes = parent.relativeSizes();
|
|
512
|
+
}
|
|
513
|
+
this.setPanelSize(size).then(() => {
|
|
514
|
+
if (this.state.expansion === SidePanel.ExpansionState.expanding) {
|
|
515
|
+
this.state.expansion = SidePanel.ExpansionState.expanded;
|
|
516
|
+
}
|
|
517
|
+
});
|
|
518
|
+
} else {
|
|
519
|
+
this.state.expansion = SidePanel.ExpansionState.expanded;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
container.setHidden(isEmpty && hideDockPanel);
|
|
523
|
+
tabBar.setHidden(isEmpty);
|
|
524
|
+
dockPanel.setHidden(hideDockPanel);
|
|
525
|
+
this.state.empty = isEmpty;
|
|
526
|
+
if (currentTitle) {
|
|
527
|
+
dockPanel.selectWidget(currentTitle.owner);
|
|
528
|
+
}
|
|
529
|
+
if (relativeSizes && parent instanceof SplitPanel) {
|
|
530
|
+
// Make sure that the expansion animation starts at the smallest possible size
|
|
531
|
+
parent.setRelativeSizes(relativeSizes);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Sets the size of the side panel.
|
|
537
|
+
*
|
|
538
|
+
* @param size the desired size (width) of the panel in pixels.
|
|
539
|
+
*/
|
|
540
|
+
resize(size: number): void {
|
|
541
|
+
if (this.dockPanel.isHidden) {
|
|
542
|
+
this.state.lastPanelSize = size;
|
|
543
|
+
} else {
|
|
544
|
+
this.setPanelSize(size);
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Compute the current width of the panel. This implementation assumes that the parent of
|
|
550
|
+
* the panel container is a `SplitPanel`.
|
|
551
|
+
*/
|
|
552
|
+
protected getPanelSize(): number | undefined {
|
|
553
|
+
const parent = this.container.parent;
|
|
554
|
+
if (parent instanceof SplitPanel && parent.isVisible) {
|
|
555
|
+
const index = parent.widgets.indexOf(this.container);
|
|
556
|
+
if (this.side === 'left') {
|
|
557
|
+
const handle = parent.handles[index];
|
|
558
|
+
if (!handle.classList.contains('p-mod-hidden')) {
|
|
559
|
+
return handle.offsetLeft;
|
|
560
|
+
}
|
|
561
|
+
} else if (this.side === 'right') {
|
|
562
|
+
const handle = parent.handles[index - 1];
|
|
563
|
+
if (!handle.classList.contains('p-mod-hidden')) {
|
|
564
|
+
const parentWidth = parent.node.clientWidth;
|
|
565
|
+
return parentWidth - handle.offsetLeft;
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* Determine the default size to apply when the panel is expanded for the first time.
|
|
573
|
+
*/
|
|
574
|
+
protected getDefaultPanelSize(): number | undefined {
|
|
575
|
+
const parent = this.container.parent;
|
|
576
|
+
if (parent && parent.isVisible) {
|
|
577
|
+
return parent.node.clientWidth * this.options.initialSizeRatio;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* Modify the width of the panel. This implementation assumes that the parent of the panel
|
|
583
|
+
* container is a `SplitPanel`.
|
|
584
|
+
*/
|
|
585
|
+
protected setPanelSize(size: number): Promise<void> {
|
|
586
|
+
const enableAnimation = this.applicationStateService.state === 'ready';
|
|
587
|
+
const options: SplitPositionOptions = {
|
|
588
|
+
side: this.side,
|
|
589
|
+
duration: enableAnimation ? this.options.expandDuration : 0,
|
|
590
|
+
referenceWidget: this.dockPanel
|
|
591
|
+
};
|
|
592
|
+
const promise = this.splitPositionHandler.setSidePanelSize(this.container, size, options);
|
|
593
|
+
const result = new Promise<void>(resolve => {
|
|
594
|
+
// Resolve the resulting promise in any case, regardless of whether resizing was successful
|
|
595
|
+
promise.then(() => resolve(), () => resolve());
|
|
596
|
+
});
|
|
597
|
+
this.state.pendingUpdate = this.state.pendingUpdate.then(() => result);
|
|
598
|
+
return result;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
protected readonly toDisposeOnCurrentTabChanged = new DisposableCollection();
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Handle a `currentChanged` signal from the sidebar. The side panel is refreshed so it displays
|
|
605
|
+
* the new selected widget.
|
|
606
|
+
*/
|
|
607
|
+
protected onCurrentTabChanged(sender: SideTabBar, { currentTitle, currentIndex }: TabBar.ICurrentChangedArgs<Widget>): void {
|
|
608
|
+
this.toDisposeOnCurrentTabChanged.dispose();
|
|
609
|
+
if (currentTitle) {
|
|
610
|
+
this.updateToolbarTitle();
|
|
611
|
+
currentTitle.changed.connect(this.updateToolbarTitle);
|
|
612
|
+
this.toDisposeOnCurrentTabChanged.push(Disposable.create(() => currentTitle.changed.disconnect(this.updateToolbarTitle)));
|
|
613
|
+
}
|
|
614
|
+
if (currentIndex >= 0) {
|
|
615
|
+
this.state.lastActiveTabIndex = currentIndex;
|
|
616
|
+
sender.revealTab(currentIndex);
|
|
617
|
+
}
|
|
618
|
+
this.refresh();
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
/**
|
|
622
|
+
* Handle a `tabDetachRequested` signal from the sidebar. A drag is started so the widget can be
|
|
623
|
+
* moved to another application shell area.
|
|
624
|
+
*/
|
|
625
|
+
protected onTabDetachRequested(sender: SideTabBar,
|
|
626
|
+
{ title, tab, clientX, clientY }: TabBar.ITabDetachRequestedArgs<Widget>): void {
|
|
627
|
+
// Release the tab bar's hold on the mouse
|
|
628
|
+
sender.releaseMouse();
|
|
629
|
+
|
|
630
|
+
// Clone the selected tab and use that as drag image
|
|
631
|
+
const clonedTab = tab.cloneNode(true) as HTMLElement;
|
|
632
|
+
clonedTab.style.width = '';
|
|
633
|
+
clonedTab.style.height = '';
|
|
634
|
+
const label = clonedTab.getElementsByClassName('p-TabBar-tabLabel')[0] as HTMLElement;
|
|
635
|
+
label.style.width = '';
|
|
636
|
+
label.style.height = '';
|
|
637
|
+
|
|
638
|
+
// Create and start a drag to move the selected tab to another panel
|
|
639
|
+
const mimeData = new MimeData();
|
|
640
|
+
mimeData.setData('application/vnd.phosphor.widget-factory', () => title.owner);
|
|
641
|
+
const drag = new Drag({
|
|
642
|
+
mimeData,
|
|
643
|
+
dragImage: clonedTab,
|
|
644
|
+
proposedAction: 'move',
|
|
645
|
+
supportedActions: 'move',
|
|
646
|
+
});
|
|
647
|
+
|
|
648
|
+
tab.classList.add('p-mod-hidden');
|
|
649
|
+
drag.start(clientX, clientY).then(() => {
|
|
650
|
+
// The promise is resolved when the drag has ended
|
|
651
|
+
tab.classList.remove('p-mod-hidden');
|
|
652
|
+
});
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
protected onTabsOverflowChanged(sender: SideTabBar, event: { titles: Title<Widget>[], startIndex: number }): void {
|
|
656
|
+
if (event.startIndex >= 0 && event.startIndex <= sender.currentIndex) {
|
|
657
|
+
sender.revealTab(sender.currentIndex);
|
|
658
|
+
} else {
|
|
659
|
+
this.additionalViewsMenu.updateAdditionalViews(sender, event);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
/*
|
|
664
|
+
* Handle the `widgetAdded` signal from the dock panel. The widget's title is inserted into the
|
|
665
|
+
* tab bar according to the `rankProperty` value that may be attached to the widget.
|
|
666
|
+
*/
|
|
667
|
+
protected onWidgetAdded(sender: DockPanel, widget: Widget): void {
|
|
668
|
+
const titles = this.tabBar.titles;
|
|
669
|
+
if (!find(titles, t => t.owner === widget)) {
|
|
670
|
+
const rank = SidePanelHandler.rankProperty.get(widget);
|
|
671
|
+
let index = titles.length;
|
|
672
|
+
if (rank !== undefined) {
|
|
673
|
+
for (let i = index - 1; i >= 0; i--) {
|
|
674
|
+
const r = SidePanelHandler.rankProperty.get(titles[i].owner);
|
|
675
|
+
if (r !== undefined && r > rank) {
|
|
676
|
+
index = i;
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
this.tabBar.insertTab(index, widget.title);
|
|
681
|
+
this.refresh();
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
/*
|
|
686
|
+
* Handle the `widgetRemoved` signal from the dock panel. The widget's title is also removed
|
|
687
|
+
* from the tab bar.
|
|
688
|
+
*/
|
|
689
|
+
protected onWidgetRemoved(sender: DockPanel, widget: Widget): void {
|
|
690
|
+
this.tabBar.removeTab(widget.title);
|
|
691
|
+
this.refresh();
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
protected updateSashState(sidePanelElement: Panel | null, sidePanelCollapsed: boolean): void {
|
|
695
|
+
if (sidePanelElement) {
|
|
696
|
+
// Hide the sash when the left/right side panel is collapsed
|
|
697
|
+
if (sidePanelElement.id === 'theia-left-content-panel' && sidePanelElement.node.nextElementSibling) {
|
|
698
|
+
sidePanelElement.node.nextElementSibling.classList.toggle('sash-hidden', sidePanelCollapsed);
|
|
699
|
+
} else if (sidePanelElement.id === 'theia-right-content-panel' && sidePanelElement.node.previousElementSibling) {
|
|
700
|
+
sidePanelElement.node.previousElementSibling.classList.toggle('sash-hidden', sidePanelCollapsed);
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
export namespace SidePanel {
|
|
708
|
+
/**
|
|
709
|
+
* Options that control the behavior of side panels.
|
|
710
|
+
*/
|
|
711
|
+
export interface Options {
|
|
712
|
+
/**
|
|
713
|
+
* When a widget is being dragged and the distance of the mouse cursor to the shell border
|
|
714
|
+
* is below this threshold, the respective side panel is expanded so the widget can be dropped
|
|
715
|
+
* into that panel. Set this to `-1` to disable expanding the side panel while dragging.
|
|
716
|
+
*/
|
|
717
|
+
expandThreshold: number;
|
|
718
|
+
/**
|
|
719
|
+
* The duration in milliseconds of the animation shown when a side panel is expanded.
|
|
720
|
+
* Set this to `0` to disable expansion animation.
|
|
721
|
+
*/
|
|
722
|
+
expandDuration: number;
|
|
723
|
+
/**
|
|
724
|
+
* The ratio of the available shell size to use as initial size for the side panel.
|
|
725
|
+
*/
|
|
726
|
+
initialSizeRatio: number
|
|
727
|
+
/**
|
|
728
|
+
* How large the panel should be when it's expanded and empty.
|
|
729
|
+
*/
|
|
730
|
+
emptySize: number;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
/**
|
|
734
|
+
* The options for adding a widget to a side panel.
|
|
735
|
+
*/
|
|
736
|
+
export interface WidgetOptions {
|
|
737
|
+
/**
|
|
738
|
+
* The rank order of the widget among its siblings.
|
|
739
|
+
*/
|
|
740
|
+
rank?: number;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
/**
|
|
744
|
+
* Data to save and load the layout of a side panel.
|
|
745
|
+
*/
|
|
746
|
+
export interface LayoutData {
|
|
747
|
+
type: 'sidepanel',
|
|
748
|
+
items?: WidgetItem[];
|
|
749
|
+
size?: number;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
/**
|
|
753
|
+
* Data structure used to save and restore the side panel layout.
|
|
754
|
+
*/
|
|
755
|
+
export interface WidgetItem extends WidgetOptions {
|
|
756
|
+
/** Can be undefined in case the widget could not be restored. */
|
|
757
|
+
widget?: Widget;
|
|
758
|
+
expanded?: boolean;
|
|
759
|
+
pinned?: boolean;
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
export interface State {
|
|
763
|
+
/**
|
|
764
|
+
* Indicates whether the panel is empty.
|
|
765
|
+
*/
|
|
766
|
+
empty: boolean;
|
|
767
|
+
/**
|
|
768
|
+
* Indicates whether the panel is expanded, collapsed, or in a transition between the two.
|
|
769
|
+
*/
|
|
770
|
+
expansion: ExpansionState;
|
|
771
|
+
/**
|
|
772
|
+
* A promise that is resolved when the currently pending side panel updates are done.
|
|
773
|
+
*/
|
|
774
|
+
pendingUpdate: Promise<void>;
|
|
775
|
+
/**
|
|
776
|
+
* The index of the last tab that was selected. When the panel is expanded, it tries to restore
|
|
777
|
+
* the tab selection to the previous state.
|
|
778
|
+
*/
|
|
779
|
+
lastActiveTabIndex?: number;
|
|
780
|
+
/**
|
|
781
|
+
* The width or height of the panel before it was collapsed. When the panel is expanded, it tries
|
|
782
|
+
* to restore its size to this value.
|
|
783
|
+
*/
|
|
784
|
+
lastPanelSize?: number;
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
export enum ExpansionState {
|
|
788
|
+
collapsed = 'collapsed',
|
|
789
|
+
expanding = 'expanding',
|
|
790
|
+
expanded = 'expanded',
|
|
791
|
+
collapsing = 'collapsing'
|
|
792
|
+
}
|
|
793
|
+
}
|