@theia/core 1.53.0-next.4 → 1.53.0-next.55
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 +7 -7
- package/i18n/nls.cs.json +582 -552
- package/i18n/nls.de.json +582 -552
- package/i18n/nls.es.json +582 -552
- package/i18n/nls.fr.json +582 -552
- package/i18n/nls.hu.json +582 -552
- package/i18n/nls.it.json +582 -552
- package/i18n/nls.ja.json +582 -552
- package/i18n/nls.json +582 -552
- package/i18n/nls.ko.json +582 -0
- package/i18n/nls.pl.json +582 -552
- package/i18n/nls.pt-br.json +582 -552
- package/i18n/nls.ru.json +582 -552
- package/i18n/nls.tr.json +582 -0
- package/i18n/nls.zh-cn.json +582 -552
- package/i18n/nls.zh-tw.json +582 -0
- package/lib/browser/authentication-service.d.ts +15 -14
- package/lib/browser/authentication-service.d.ts.map +1 -1
- package/lib/browser/authentication-service.js +5 -5
- package/lib/browser/authentication-service.js.map +1 -1
- package/lib/browser/catalog.json +6889 -0
- package/lib/browser/common-frontend-contribution.js +3 -3
- package/lib/browser/common-styling-participants.js +166 -166
- package/lib/browser/context-key-service.d.ts +3 -2
- package/lib/browser/context-key-service.d.ts.map +1 -1
- package/lib/browser/context-key-service.js.map +1 -1
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +9 -0
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/json-schema-store.d.ts +0 -3
- package/lib/browser/json-schema-store.d.ts.map +1 -1
- package/lib/browser/json-schema-store.js +2 -12
- package/lib/browser/json-schema-store.js.map +1 -1
- package/lib/browser/open-with-service.d.ts +13 -1
- package/lib/browser/open-with-service.d.ts.map +1 -1
- package/lib/browser/open-with-service.js +48 -9
- package/lib/browser/open-with-service.js.map +1 -1
- package/lib/browser/opener-service.d.ts +8 -0
- package/lib/browser/opener-service.d.ts.map +1 -1
- package/lib/browser/opener-service.js +18 -3
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/progress-location-service.spec.js +7 -7
- package/lib/browser/saveable-service.d.ts.map +1 -1
- package/lib/browser/saveable-service.js +6 -2
- package/lib/browser/saveable-service.js.map +1 -1
- package/lib/browser/saveable.d.ts +17 -1
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js +62 -1
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +5 -4
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +2 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +6 -16
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +12 -29
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts +43 -78
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js +8 -39
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +10 -10
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +43 -32
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/storage-service.js +3 -3
- package/lib/browser/tree/tree.spec.js +75 -75
- package/lib/browser/view-container.d.ts +2 -2
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widget-open-handler.d.ts +4 -1
- package/lib/browser/widget-open-handler.d.ts.map +1 -1
- package/lib/browser/widget-open-handler.js.map +1 -1
- package/lib/browser/widgets/extractable-widget.js +1 -1
- package/lib/browser/widgets/extractable-widget.js.map +1 -1
- package/lib/browser/widgets/index.d.ts +1 -0
- package/lib/browser/widgets/index.d.ts.map +1 -1
- package/lib/browser/widgets/index.js +1 -0
- package/lib/browser/widgets/index.js.map +1 -1
- package/lib/browser/widgets/split-widget.d.ts +45 -0
- package/lib/browser/widgets/split-widget.d.ts.map +1 -0
- package/lib/browser/widgets/split-widget.js +126 -0
- package/lib/browser/widgets/split-widget.js.map +1 -0
- package/lib/common/event.d.ts +2 -0
- package/lib/common/event.d.ts.map +1 -1
- package/lib/common/event.js +4 -0
- package/lib/common/event.js.map +1 -1
- package/lib/common/glob.d.ts +4 -4
- package/lib/common/json-schema.d.ts +2 -0
- package/lib/common/json-schema.d.ts.map +1 -1
- package/lib/common/menu/menu-types.d.ts.map +1 -1
- package/lib/common/menu/menu-types.js.map +1 -1
- package/lib/electron-browser/electron-uri-handler.d.ts +6 -0
- package/lib/electron-browser/electron-uri-handler.d.ts.map +1 -0
- package/lib/electron-browser/electron-uri-handler.js +49 -0
- package/lib/electron-browser/electron-uri-handler.js.map +1 -0
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +6 -6
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +12 -0
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +3 -0
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-browser/window/external-app-open-handler.js +1 -1
- package/lib/electron-browser/window/external-app-open-handler.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +2 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +2 -1
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-main/electron-api-main.d.ts +2 -0
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +27 -3
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +5 -3
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +57 -14
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/theia-electron-window.d.ts +1 -0
- package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
- package/lib/electron-main/theia-electron-window.js +3 -0
- package/lib/electron-main/theia-electron-window.js.map +1 -1
- package/lib/node/i18n/theia-localization-contribution.d.ts.map +1 -1
- package/lib/node/i18n/theia-localization-contribution.js +12 -8
- package/lib/node/i18n/theia-localization-contribution.js.map +1 -1
- package/lib/node/process-utils.spec.js +8 -8
- package/package.json +10 -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 +467 -468
- 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 +239 -239
- package/src/browser/clipboard-service.ts +23 -23
- package/src/browser/color-application-contribution.ts +110 -110
- package/src/browser/color-registry.ts +60 -60
- package/src/browser/command-open-handler.ts +54 -54
- package/src/browser/common-frontend-contribution.ts +2680 -2680
- 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 -142
- package/src/browser/context-menu-renderer.ts +124 -124
- package/src/browser/core-preferences.ts +343 -334
- 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 +474 -475
- 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 +49 -49
- 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 -87
- 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 +50 -50
- package/src/browser/json-schema-store.ts +118 -127
- package/src/browser/keybinding.spec.ts +554 -554
- package/src/browser/keybinding.ts +759 -759
- 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 +48 -48
- package/src/browser/menu/browser-menu-module.ts +28 -28
- package/src/browser/menu/browser-menu-plugin.ts +491 -491
- 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 +18 -18
- package/src/browser/messaging/messaging-frontend-module.ts +41 -41
- package/src/browser/messaging/service-connection-provider.ts +140 -140
- package/src/browser/messaging/ws-connection-provider.ts +49 -49
- 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/open-with-service.ts +140 -93
- package/src/browser/opener-service.spec.ts +49 -49
- package/src/browser/opener-service.ts +169 -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/saveable-service.ts +332 -328
- package/src/browser/saveable.ts +395 -327
- package/src/browser/secondary-window-handler.ts +211 -211
- 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 +2271 -2271
- 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 +794 -794
- 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 +183 -183
- package/src/browser/shell/sidebar-top-menu-widget.tsx +26 -26
- package/src/browser/shell/split-panels.ts +191 -191
- package/src/browser/shell/tab-bar-decorator.ts +106 -106
- 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 +242 -256
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts +149 -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 +443 -428
- package/src/browser/shell/tab-bars.spec.ts +63 -63
- package/src/browser/shell/tab-bars.ts +1468 -1468
- package/src/browser/shell/theia-dock-panel.ts +265 -265
- package/src/browser/shell/view-column-service.ts +125 -125
- package/src/browser/shell/view-contribution.ts +178 -178
- 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 +353 -351
- 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 -107
- package/src/browser/style/sidepanel.css +367 -367
- package/src/browser/style/split-widget.css +38 -0
- package/src/browser/style/status-bar.css +127 -127
- package/src/browser/style/tabs.css +647 -658
- 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 +187 -194
- package/src/browser/style/widget.css +19 -19
- package/src/browser/styling-service.ts +96 -96
- 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 -29
- 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 -109
- 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 -562
- package/src/browser/tree/tree-navigation.ts +58 -58
- package/src/browser/tree/tree-preference.ts +50 -50
- package/src/browser/tree/tree-search.ts +128 -128
- package/src/browser/tree/tree-selectable.spec.ts +152 -152
- 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 +1591 -1591
- package/src/browser/tree/tree.spec.ts +241 -241
- package/src/browser/tree/tree.ts +425 -425
- package/src/browser/undo-redo-handler.ts +85 -85
- 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 +318 -318
- package/src/browser/widget-open-handler.ts +168 -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 +21 -20
- package/src/browser/widgets/previewable-widget.ts +31 -31
- package/src/browser/widgets/react-renderer.tsx +53 -53
- package/src/browser/widgets/react-widget.tsx +51 -51
- package/src/browser/widgets/select-component.tsx +367 -367
- package/src/browser/widgets/split-widget.ts +163 -0
- package/src/browser/widgets/widget.ts +406 -406
- package/src/browser/window/browser-window-module.ts +32 -32
- package/src/browser/window/default-secondary-window-service.ts +189 -189
- package/src/browser/window/default-window-service.spec.ts +78 -78
- package/src/browser/window/default-window-service.ts +171 -171
- package/src/browser/window/secondary-window-service.ts +39 -39
- package/src/browser/window/test/mock-window-service.ts +29 -29
- package/src/browser/window/window-service.ts +78 -78
- 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 +116 -116
- package/src/browser-only/i18n/i18n-frontend-only-module.ts +37 -37
- package/src/browser-only/logger-frontend-only-module.ts +63 -63
- package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +39 -39
- package/src/browser-only/messaging/messaging-frontend-only-module.ts +42 -42
- package/src/browser-only/preload/frontend-only-preload-module.ts +49 -49
- 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 +42 -42
- 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 +489 -489
- 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 -94
- package/src/common/disposable.ts +188 -188
- 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 +493 -487
- package/src/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 +34112 -34112
- package/src/common/index.ts +51 -51
- package/src/common/json-schema.ts +108 -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 -152
- package/src/common/menu/action-menu-node.ts +65 -65
- package/src/common/menu/composite-menu-node.spec.ts +67 -67
- 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 +374 -374
- package/src/common/menu/menu-types.ts +220 -219
- package/src/common/menu/menu.spec.ts +101 -101
- 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 -255
- 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 -336
- 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 +151 -151
- 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 +101 -101
- 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 +102 -102
- package/src/common/promise-util.ts +143 -143
- package/src/common/quick-pick-service.ts +353 -353
- package/src/common/reference.spec.ts +145 -145
- package/src/common/reference.ts +230 -230
- package/src/common/resource.ts +430 -430
- 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 -68
- 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 -279
- package/src/common/uuid.ts +45 -45
- 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/electron-uri-handler.ts +42 -0
- 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 +122 -122
- package/src/electron-browser/menu/electron-main-menu-factory.ts +339 -338
- package/src/electron-browser/menu/electron-menu-contribution.ts +506 -506
- 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 +264 -249
- 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 +35 -35
- package/src/electron-browser/window/electron-window-module.ts +48 -45
- package/src/electron-browser/window/electron-window-preferences.ts +76 -76
- package/src/electron-browser/window/electron-window-service.ts +109 -109
- package/src/electron-browser/window/external-app-open-handler.ts +42 -42
- package/src/electron-common/electron-api.ts +157 -154
- 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 +373 -347
- package/src/electron-main/electron-main-application-module.ts +65 -65
- package/src/electron-main/electron-main-application.ts +860 -818
- package/src/electron-main/electron-main-constants.ts +23 -23
- 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 +219 -214
- package/src/electron-node/cli/electron-backend-cli-module.ts +24 -24
- package/src/electron-node/cli/electron-cli-contribution.ts +35 -35
- 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 +59 -59
- 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 +139 -139
- package/src/node/backend-application.ts +374 -374
- 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 +123 -123
- 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 +40 -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 +186 -186
- 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/remote/backend-remote-service.ts +25 -25
- package/src/node/remote/remote-cli-contribution.ts +34 -34
- package/src/node/remote/remote-copy-contribution.ts +45 -45
- 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/i18n/nls.pt-pt.json +0 -552
|
@@ -1,185 +1,185 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2019 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 * as React from 'react';
|
|
18
|
-
import { injectable, inject, postConstruct } from 'inversify';
|
|
19
|
-
import { ReactRenderer } from '../widgets';
|
|
20
|
-
import { BreadcrumbsService } from './breadcrumbs-service';
|
|
21
|
-
import { BreadcrumbRenderer } from './breadcrumb-renderer';
|
|
22
|
-
import PerfectScrollbar from 'perfect-scrollbar';
|
|
23
|
-
import URI from '../../common/uri';
|
|
24
|
-
import { Emitter, Event } from '../../common';
|
|
25
|
-
import { BreadcrumbPopupContainer } from './breadcrumb-popup-container';
|
|
26
|
-
import { CorePreferences } from '../core-preferences';
|
|
27
|
-
import { Breadcrumb, Styles } from './breadcrumbs-constants';
|
|
28
|
-
import { LabelProvider } from '../label-provider';
|
|
29
|
-
|
|
30
|
-
interface Cancelable {
|
|
31
|
-
canceled: boolean;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
@injectable()
|
|
35
|
-
export class BreadcrumbsRenderer extends ReactRenderer {
|
|
36
|
-
|
|
37
|
-
@inject(BreadcrumbsService)
|
|
38
|
-
protected readonly breadcrumbsService: BreadcrumbsService;
|
|
39
|
-
|
|
40
|
-
@inject(BreadcrumbRenderer)
|
|
41
|
-
protected readonly breadcrumbRenderer: BreadcrumbRenderer;
|
|
42
|
-
|
|
43
|
-
@inject(CorePreferences)
|
|
44
|
-
protected readonly corePreferences: CorePreferences;
|
|
45
|
-
|
|
46
|
-
@inject(LabelProvider)
|
|
47
|
-
protected readonly labelProvider: LabelProvider;
|
|
48
|
-
|
|
49
|
-
protected readonly onDidChangeActiveStateEmitter = new Emitter<boolean>();
|
|
50
|
-
get onDidChangeActiveState(): Event<boolean> {
|
|
51
|
-
return this.onDidChangeActiveStateEmitter.event;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
protected uri: URI | undefined;
|
|
55
|
-
protected breadcrumbs: Breadcrumb[] = [];
|
|
56
|
-
protected popup: BreadcrumbPopupContainer | undefined;
|
|
57
|
-
protected scrollbar: PerfectScrollbar | undefined;
|
|
58
|
-
|
|
59
|
-
get active(): boolean {
|
|
60
|
-
return !!this.breadcrumbs.length;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
protected get breadCrumbsContainer(): Element | undefined {
|
|
64
|
-
return this.host.firstElementChild ?? undefined;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
protected refreshCancellationMarker: Cancelable = { canceled: true };
|
|
68
|
-
|
|
69
|
-
@postConstruct()
|
|
70
|
-
protected init(): void {
|
|
71
|
-
this.toDispose.push(this.onDidChangeActiveStateEmitter);
|
|
72
|
-
this.toDispose.push(this.breadcrumbsService.onDidChangeBreadcrumbs(uri => {
|
|
73
|
-
if (this.uri?.isEqual(uri)) {
|
|
74
|
-
this.refresh(this.uri);
|
|
75
|
-
}
|
|
76
|
-
}));
|
|
77
|
-
this.toDispose.push(this.corePreferences.onPreferenceChanged(change => {
|
|
78
|
-
if (change.preferenceName === 'breadcrumbs.enabled') {
|
|
79
|
-
this.refresh(this.uri);
|
|
80
|
-
}
|
|
81
|
-
}));
|
|
82
|
-
this.toDispose.push(this.labelProvider.onDidChange(() => this.refresh(this.uri)));
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
override dispose(): void {
|
|
86
|
-
super.dispose();
|
|
87
|
-
this.toDispose.dispose();
|
|
88
|
-
if (this.popup) { this.popup.dispose(); }
|
|
89
|
-
if (this.scrollbar) {
|
|
90
|
-
this.scrollbar.destroy();
|
|
91
|
-
this.scrollbar = undefined;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
async refresh(uri?: URI): Promise<void> {
|
|
96
|
-
this.uri = uri;
|
|
97
|
-
this.refreshCancellationMarker.canceled = true;
|
|
98
|
-
const currentCallCanceled = { canceled: false };
|
|
99
|
-
this.refreshCancellationMarker = currentCallCanceled;
|
|
100
|
-
let breadcrumbs: Breadcrumb[];
|
|
101
|
-
if (uri && this.corePreferences['breadcrumbs.enabled']) {
|
|
102
|
-
breadcrumbs = await this.breadcrumbsService.getBreadcrumbs(uri);
|
|
103
|
-
} else {
|
|
104
|
-
breadcrumbs = [];
|
|
105
|
-
}
|
|
106
|
-
if (currentCallCanceled.canceled) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const wasActive = this.active;
|
|
111
|
-
this.breadcrumbs = breadcrumbs;
|
|
112
|
-
const isActive = this.active;
|
|
113
|
-
if (wasActive !== isActive) {
|
|
114
|
-
this.onDidChangeActiveStateEmitter.fire(isActive);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
this.update();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
protected update(): void {
|
|
121
|
-
this.render();
|
|
122
|
-
|
|
123
|
-
if (!this.scrollbar) {
|
|
124
|
-
this.createScrollbar();
|
|
125
|
-
} else {
|
|
126
|
-
this.scrollbar.update();
|
|
127
|
-
}
|
|
128
|
-
this.scrollToEnd();
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
protected createScrollbar(): void {
|
|
132
|
-
const { breadCrumbsContainer } = this;
|
|
133
|
-
if (breadCrumbsContainer) {
|
|
134
|
-
this.scrollbar = new PerfectScrollbar(breadCrumbsContainer, {
|
|
135
|
-
handlers: ['drag-thumb', 'keyboard', 'wheel', 'touch'],
|
|
136
|
-
useBothWheelAxes: true,
|
|
137
|
-
scrollXMarginOffset: 4,
|
|
138
|
-
suppressScrollY: true
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
protected scrollToEnd(): void {
|
|
144
|
-
const { breadCrumbsContainer } = this;
|
|
145
|
-
if (breadCrumbsContainer) {
|
|
146
|
-
breadCrumbsContainer.scrollLeft = breadCrumbsContainer.scrollWidth;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
protected override doRender(): React.ReactNode {
|
|
151
|
-
return <ul className={Styles.BREADCRUMBS}>{this.renderBreadcrumbs()}</ul>;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
protected renderBreadcrumbs(): React.ReactNode {
|
|
155
|
-
return this.breadcrumbs.map(breadcrumb => this.breadcrumbRenderer.render(breadcrumb, this.togglePopup));
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
protected togglePopup = (breadcrumb: Breadcrumb, event: React.MouseEvent) => {
|
|
159
|
-
event.stopPropagation();
|
|
160
|
-
event.preventDefault();
|
|
161
|
-
let openPopup = true;
|
|
162
|
-
if (this.popup?.isOpen) {
|
|
163
|
-
this.popup.dispose();
|
|
164
|
-
|
|
165
|
-
// There is a popup open. If the popup is the popup that belongs to the currently clicked breadcrumb
|
|
166
|
-
// just close the popup. If another breadcrumb was clicked, open the new popup immediately.
|
|
167
|
-
openPopup = this.popup.breadcrumbId !== breadcrumb.id;
|
|
168
|
-
} else {
|
|
169
|
-
this.popup = undefined;
|
|
170
|
-
}
|
|
171
|
-
if (openPopup) {
|
|
172
|
-
const { currentTarget } = event;
|
|
173
|
-
const breadcrumbElement = currentTarget.closest(`.${Styles.BREADCRUMB_ITEM}`);
|
|
174
|
-
if (breadcrumbElement) {
|
|
175
|
-
const { left: x, bottom: y } = breadcrumbElement.getBoundingClientRect();
|
|
176
|
-
this.breadcrumbsService.openPopup(breadcrumb, { x, y }).then(popup => { this.popup = popup; });
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
export const BreadcrumbsRendererFactory = Symbol('BreadcrumbsRendererFactory');
|
|
183
|
-
export interface BreadcrumbsRendererFactory {
|
|
184
|
-
(): BreadcrumbsRenderer;
|
|
185
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2019 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 * as React from 'react';
|
|
18
|
+
import { injectable, inject, postConstruct } from 'inversify';
|
|
19
|
+
import { ReactRenderer } from '../widgets';
|
|
20
|
+
import { BreadcrumbsService } from './breadcrumbs-service';
|
|
21
|
+
import { BreadcrumbRenderer } from './breadcrumb-renderer';
|
|
22
|
+
import PerfectScrollbar from 'perfect-scrollbar';
|
|
23
|
+
import URI from '../../common/uri';
|
|
24
|
+
import { Emitter, Event } from '../../common';
|
|
25
|
+
import { BreadcrumbPopupContainer } from './breadcrumb-popup-container';
|
|
26
|
+
import { CorePreferences } from '../core-preferences';
|
|
27
|
+
import { Breadcrumb, Styles } from './breadcrumbs-constants';
|
|
28
|
+
import { LabelProvider } from '../label-provider';
|
|
29
|
+
|
|
30
|
+
interface Cancelable {
|
|
31
|
+
canceled: boolean;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@injectable()
|
|
35
|
+
export class BreadcrumbsRenderer extends ReactRenderer {
|
|
36
|
+
|
|
37
|
+
@inject(BreadcrumbsService)
|
|
38
|
+
protected readonly breadcrumbsService: BreadcrumbsService;
|
|
39
|
+
|
|
40
|
+
@inject(BreadcrumbRenderer)
|
|
41
|
+
protected readonly breadcrumbRenderer: BreadcrumbRenderer;
|
|
42
|
+
|
|
43
|
+
@inject(CorePreferences)
|
|
44
|
+
protected readonly corePreferences: CorePreferences;
|
|
45
|
+
|
|
46
|
+
@inject(LabelProvider)
|
|
47
|
+
protected readonly labelProvider: LabelProvider;
|
|
48
|
+
|
|
49
|
+
protected readonly onDidChangeActiveStateEmitter = new Emitter<boolean>();
|
|
50
|
+
get onDidChangeActiveState(): Event<boolean> {
|
|
51
|
+
return this.onDidChangeActiveStateEmitter.event;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
protected uri: URI | undefined;
|
|
55
|
+
protected breadcrumbs: Breadcrumb[] = [];
|
|
56
|
+
protected popup: BreadcrumbPopupContainer | undefined;
|
|
57
|
+
protected scrollbar: PerfectScrollbar | undefined;
|
|
58
|
+
|
|
59
|
+
get active(): boolean {
|
|
60
|
+
return !!this.breadcrumbs.length;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
protected get breadCrumbsContainer(): Element | undefined {
|
|
64
|
+
return this.host.firstElementChild ?? undefined;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
protected refreshCancellationMarker: Cancelable = { canceled: true };
|
|
68
|
+
|
|
69
|
+
@postConstruct()
|
|
70
|
+
protected init(): void {
|
|
71
|
+
this.toDispose.push(this.onDidChangeActiveStateEmitter);
|
|
72
|
+
this.toDispose.push(this.breadcrumbsService.onDidChangeBreadcrumbs(uri => {
|
|
73
|
+
if (this.uri?.isEqual(uri)) {
|
|
74
|
+
this.refresh(this.uri);
|
|
75
|
+
}
|
|
76
|
+
}));
|
|
77
|
+
this.toDispose.push(this.corePreferences.onPreferenceChanged(change => {
|
|
78
|
+
if (change.preferenceName === 'breadcrumbs.enabled') {
|
|
79
|
+
this.refresh(this.uri);
|
|
80
|
+
}
|
|
81
|
+
}));
|
|
82
|
+
this.toDispose.push(this.labelProvider.onDidChange(() => this.refresh(this.uri)));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
override dispose(): void {
|
|
86
|
+
super.dispose();
|
|
87
|
+
this.toDispose.dispose();
|
|
88
|
+
if (this.popup) { this.popup.dispose(); }
|
|
89
|
+
if (this.scrollbar) {
|
|
90
|
+
this.scrollbar.destroy();
|
|
91
|
+
this.scrollbar = undefined;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
async refresh(uri?: URI): Promise<void> {
|
|
96
|
+
this.uri = uri;
|
|
97
|
+
this.refreshCancellationMarker.canceled = true;
|
|
98
|
+
const currentCallCanceled = { canceled: false };
|
|
99
|
+
this.refreshCancellationMarker = currentCallCanceled;
|
|
100
|
+
let breadcrumbs: Breadcrumb[];
|
|
101
|
+
if (uri && this.corePreferences['breadcrumbs.enabled']) {
|
|
102
|
+
breadcrumbs = await this.breadcrumbsService.getBreadcrumbs(uri);
|
|
103
|
+
} else {
|
|
104
|
+
breadcrumbs = [];
|
|
105
|
+
}
|
|
106
|
+
if (currentCallCanceled.canceled) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const wasActive = this.active;
|
|
111
|
+
this.breadcrumbs = breadcrumbs;
|
|
112
|
+
const isActive = this.active;
|
|
113
|
+
if (wasActive !== isActive) {
|
|
114
|
+
this.onDidChangeActiveStateEmitter.fire(isActive);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
this.update();
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
protected update(): void {
|
|
121
|
+
this.render();
|
|
122
|
+
|
|
123
|
+
if (!this.scrollbar) {
|
|
124
|
+
this.createScrollbar();
|
|
125
|
+
} else {
|
|
126
|
+
this.scrollbar.update();
|
|
127
|
+
}
|
|
128
|
+
this.scrollToEnd();
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
protected createScrollbar(): void {
|
|
132
|
+
const { breadCrumbsContainer } = this;
|
|
133
|
+
if (breadCrumbsContainer) {
|
|
134
|
+
this.scrollbar = new PerfectScrollbar(breadCrumbsContainer, {
|
|
135
|
+
handlers: ['drag-thumb', 'keyboard', 'wheel', 'touch'],
|
|
136
|
+
useBothWheelAxes: true,
|
|
137
|
+
scrollXMarginOffset: 4,
|
|
138
|
+
suppressScrollY: true
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
protected scrollToEnd(): void {
|
|
144
|
+
const { breadCrumbsContainer } = this;
|
|
145
|
+
if (breadCrumbsContainer) {
|
|
146
|
+
breadCrumbsContainer.scrollLeft = breadCrumbsContainer.scrollWidth;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
protected override doRender(): React.ReactNode {
|
|
151
|
+
return <ul className={Styles.BREADCRUMBS}>{this.renderBreadcrumbs()}</ul>;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
protected renderBreadcrumbs(): React.ReactNode {
|
|
155
|
+
return this.breadcrumbs.map(breadcrumb => this.breadcrumbRenderer.render(breadcrumb, this.togglePopup));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
protected togglePopup = (breadcrumb: Breadcrumb, event: React.MouseEvent) => {
|
|
159
|
+
event.stopPropagation();
|
|
160
|
+
event.preventDefault();
|
|
161
|
+
let openPopup = true;
|
|
162
|
+
if (this.popup?.isOpen) {
|
|
163
|
+
this.popup.dispose();
|
|
164
|
+
|
|
165
|
+
// There is a popup open. If the popup is the popup that belongs to the currently clicked breadcrumb
|
|
166
|
+
// just close the popup. If another breadcrumb was clicked, open the new popup immediately.
|
|
167
|
+
openPopup = this.popup.breadcrumbId !== breadcrumb.id;
|
|
168
|
+
} else {
|
|
169
|
+
this.popup = undefined;
|
|
170
|
+
}
|
|
171
|
+
if (openPopup) {
|
|
172
|
+
const { currentTarget } = event;
|
|
173
|
+
const breadcrumbElement = currentTarget.closest(`.${Styles.BREADCRUMB_ITEM}`);
|
|
174
|
+
if (breadcrumbElement) {
|
|
175
|
+
const { left: x, bottom: y } = breadcrumbElement.getBoundingClientRect();
|
|
176
|
+
this.breadcrumbsService.openPopup(breadcrumb, { x, y }).then(popup => { this.popup = popup; });
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export const BreadcrumbsRendererFactory = Symbol('BreadcrumbsRendererFactory');
|
|
183
|
+
export interface BreadcrumbsRendererFactory {
|
|
184
|
+
(): BreadcrumbsRenderer;
|
|
185
|
+
}
|
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2019 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 { inject, injectable, named, postConstruct } from 'inversify';
|
|
18
|
-
import { ContributionProvider, Prioritizeable, Emitter, Event } from '../../common';
|
|
19
|
-
import URI from '../../common/uri';
|
|
20
|
-
import { Coordinate } from '../context-menu-renderer';
|
|
21
|
-
import { BreadcrumbPopupContainer, BreadcrumbPopupContainerFactory } from './breadcrumb-popup-container';
|
|
22
|
-
import { BreadcrumbsContribution, Styles, Breadcrumb } from './breadcrumbs-constants';
|
|
23
|
-
|
|
24
|
-
@injectable()
|
|
25
|
-
export class BreadcrumbsService {
|
|
26
|
-
|
|
27
|
-
@inject(ContributionProvider) @named(BreadcrumbsContribution)
|
|
28
|
-
protected readonly contributions: ContributionProvider<BreadcrumbsContribution>;
|
|
29
|
-
|
|
30
|
-
@inject(BreadcrumbPopupContainerFactory) protected readonly breadcrumbPopupContainerFactory: BreadcrumbPopupContainerFactory;
|
|
31
|
-
|
|
32
|
-
protected hasSubscribed = false;
|
|
33
|
-
|
|
34
|
-
protected popupsOverlayContainer: HTMLDivElement;
|
|
35
|
-
|
|
36
|
-
protected readonly onDidChangeBreadcrumbsEmitter = new Emitter<URI>();
|
|
37
|
-
|
|
38
|
-
@postConstruct()
|
|
39
|
-
init(): void {
|
|
40
|
-
this.createOverlayContainer();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
protected createOverlayContainer(): void {
|
|
44
|
-
this.popupsOverlayContainer = window.document.createElement('div');
|
|
45
|
-
this.popupsOverlayContainer.id = Styles.BREADCRUMB_POPUP_OVERLAY_CONTAINER;
|
|
46
|
-
if (window.document.body) {
|
|
47
|
-
window.document.body.appendChild(this.popupsOverlayContainer);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Subscribe to this event emitter to be notified when the breadcrumbs have changed.
|
|
53
|
-
* The URI is the URI of the editor the breadcrumbs have changed for.
|
|
54
|
-
*/
|
|
55
|
-
get onDidChangeBreadcrumbs(): Event<URI> {
|
|
56
|
-
// This lazy subscription is to address problems in inversify's instantiation routine
|
|
57
|
-
// related to use of the IconThemeService by different components instantiated by the
|
|
58
|
-
// ContributionProvider.
|
|
59
|
-
if (!this.hasSubscribed) {
|
|
60
|
-
this.subscribeToContributions();
|
|
61
|
-
}
|
|
62
|
-
return this.onDidChangeBreadcrumbsEmitter.event;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Subscribes to the onDidChangeBreadcrumbs events for all contributions.
|
|
67
|
-
*/
|
|
68
|
-
protected subscribeToContributions(): void {
|
|
69
|
-
this.hasSubscribed = true;
|
|
70
|
-
for (const contribution of this.contributions.getContributions()) {
|
|
71
|
-
contribution.onDidChangeBreadcrumbs(uri => this.onDidChangeBreadcrumbsEmitter.fire(uri));
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Returns the breadcrumbs for a given URI, possibly an empty list.
|
|
77
|
-
*/
|
|
78
|
-
async getBreadcrumbs(uri: URI): Promise<Breadcrumb[]> {
|
|
79
|
-
const result: Breadcrumb[] = [];
|
|
80
|
-
for (const contribution of await this.prioritizedContributions()) {
|
|
81
|
-
result.push(...await contribution.computeBreadcrumbs(uri));
|
|
82
|
-
}
|
|
83
|
-
return result;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
protected async prioritizedContributions(): Promise<BreadcrumbsContribution[]> {
|
|
87
|
-
const prioritized = await Prioritizeable.prioritizeAll(
|
|
88
|
-
this.contributions.getContributions(), contribution => contribution.priority);
|
|
89
|
-
return prioritized.map(p => p.value).reverse();
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Opens a popup for the given breadcrumb at the given position.
|
|
94
|
-
*/
|
|
95
|
-
async openPopup(breadcrumb: Breadcrumb, position: Coordinate): Promise<BreadcrumbPopupContainer | undefined> {
|
|
96
|
-
const contribution = this.contributions.getContributions().find(c => c.type === breadcrumb.type);
|
|
97
|
-
if (contribution) {
|
|
98
|
-
const popup = this.breadcrumbPopupContainerFactory(this.popupsOverlayContainer, breadcrumb.id, position);
|
|
99
|
-
const popupContent = await contribution.attachPopupContent(breadcrumb, popup.container);
|
|
100
|
-
if (popupContent && popup.isOpen) {
|
|
101
|
-
popup.onDidDispose(() => popupContent.dispose());
|
|
102
|
-
} else {
|
|
103
|
-
popupContent?.dispose();
|
|
104
|
-
}
|
|
105
|
-
return popup;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2019 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 { inject, injectable, named, postConstruct } from 'inversify';
|
|
18
|
+
import { ContributionProvider, Prioritizeable, Emitter, Event } from '../../common';
|
|
19
|
+
import URI from '../../common/uri';
|
|
20
|
+
import { Coordinate } from '../context-menu-renderer';
|
|
21
|
+
import { BreadcrumbPopupContainer, BreadcrumbPopupContainerFactory } from './breadcrumb-popup-container';
|
|
22
|
+
import { BreadcrumbsContribution, Styles, Breadcrumb } from './breadcrumbs-constants';
|
|
23
|
+
|
|
24
|
+
@injectable()
|
|
25
|
+
export class BreadcrumbsService {
|
|
26
|
+
|
|
27
|
+
@inject(ContributionProvider) @named(BreadcrumbsContribution)
|
|
28
|
+
protected readonly contributions: ContributionProvider<BreadcrumbsContribution>;
|
|
29
|
+
|
|
30
|
+
@inject(BreadcrumbPopupContainerFactory) protected readonly breadcrumbPopupContainerFactory: BreadcrumbPopupContainerFactory;
|
|
31
|
+
|
|
32
|
+
protected hasSubscribed = false;
|
|
33
|
+
|
|
34
|
+
protected popupsOverlayContainer: HTMLDivElement;
|
|
35
|
+
|
|
36
|
+
protected readonly onDidChangeBreadcrumbsEmitter = new Emitter<URI>();
|
|
37
|
+
|
|
38
|
+
@postConstruct()
|
|
39
|
+
init(): void {
|
|
40
|
+
this.createOverlayContainer();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
protected createOverlayContainer(): void {
|
|
44
|
+
this.popupsOverlayContainer = window.document.createElement('div');
|
|
45
|
+
this.popupsOverlayContainer.id = Styles.BREADCRUMB_POPUP_OVERLAY_CONTAINER;
|
|
46
|
+
if (window.document.body) {
|
|
47
|
+
window.document.body.appendChild(this.popupsOverlayContainer);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Subscribe to this event emitter to be notified when the breadcrumbs have changed.
|
|
53
|
+
* The URI is the URI of the editor the breadcrumbs have changed for.
|
|
54
|
+
*/
|
|
55
|
+
get onDidChangeBreadcrumbs(): Event<URI> {
|
|
56
|
+
// This lazy subscription is to address problems in inversify's instantiation routine
|
|
57
|
+
// related to use of the IconThemeService by different components instantiated by the
|
|
58
|
+
// ContributionProvider.
|
|
59
|
+
if (!this.hasSubscribed) {
|
|
60
|
+
this.subscribeToContributions();
|
|
61
|
+
}
|
|
62
|
+
return this.onDidChangeBreadcrumbsEmitter.event;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Subscribes to the onDidChangeBreadcrumbs events for all contributions.
|
|
67
|
+
*/
|
|
68
|
+
protected subscribeToContributions(): void {
|
|
69
|
+
this.hasSubscribed = true;
|
|
70
|
+
for (const contribution of this.contributions.getContributions()) {
|
|
71
|
+
contribution.onDidChangeBreadcrumbs(uri => this.onDidChangeBreadcrumbsEmitter.fire(uri));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Returns the breadcrumbs for a given URI, possibly an empty list.
|
|
77
|
+
*/
|
|
78
|
+
async getBreadcrumbs(uri: URI): Promise<Breadcrumb[]> {
|
|
79
|
+
const result: Breadcrumb[] = [];
|
|
80
|
+
for (const contribution of await this.prioritizedContributions()) {
|
|
81
|
+
result.push(...await contribution.computeBreadcrumbs(uri));
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
protected async prioritizedContributions(): Promise<BreadcrumbsContribution[]> {
|
|
87
|
+
const prioritized = await Prioritizeable.prioritizeAll(
|
|
88
|
+
this.contributions.getContributions(), contribution => contribution.priority);
|
|
89
|
+
return prioritized.map(p => p.value).reverse();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Opens a popup for the given breadcrumb at the given position.
|
|
94
|
+
*/
|
|
95
|
+
async openPopup(breadcrumb: Breadcrumb, position: Coordinate): Promise<BreadcrumbPopupContainer | undefined> {
|
|
96
|
+
const contribution = this.contributions.getContributions().find(c => c.type === breadcrumb.type);
|
|
97
|
+
if (contribution) {
|
|
98
|
+
const popup = this.breadcrumbPopupContainerFactory(this.popupsOverlayContainer, breadcrumb.id, position);
|
|
99
|
+
const popupContent = await contribution.attachPopupContent(breadcrumb, popup.container);
|
|
100
|
+
if (popupContent && popup.isOpen) {
|
|
101
|
+
popup.onDidDispose(() => popupContent.dispose());
|
|
102
|
+
} else {
|
|
103
|
+
popupContent?.dispose();
|
|
104
|
+
}
|
|
105
|
+
return popup;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2019 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
|
-
export * from './breadcrumb-popup-container';
|
|
18
|
-
export * from './breadcrumb-renderer';
|
|
19
|
-
export * from './breadcrumbs-renderer';
|
|
20
|
-
export * from './breadcrumbs-service';
|
|
21
|
-
export * from './breadcrumbs-constants';
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2019 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
|
+
export * from './breadcrumb-popup-container';
|
|
18
|
+
export * from './breadcrumb-renderer';
|
|
19
|
+
export * from './breadcrumbs-renderer';
|
|
20
|
+
export * from './breadcrumbs-service';
|
|
21
|
+
export * from './breadcrumbs-constants';
|