@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,107 +1,107 @@
|
|
|
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 * as React from 'react';
|
|
18
|
-
import { injectable, postConstruct, interfaces, Container } from 'inversify';
|
|
19
|
-
import { DisposableCollection } from '../../common/disposable';
|
|
20
|
-
import { TreeWidget, TreeNode, createTreeContainer, TreeProps, TreeModel, TREE_NODE_SEGMENT_GROW_CLASS } from '../tree';
|
|
21
|
-
import { TreeSource, TreeElement } from './tree-source';
|
|
22
|
-
import { SourceTree, TreeElementNode, TreeSourceNode } from './source-tree';
|
|
23
|
-
|
|
24
|
-
@injectable()
|
|
25
|
-
export class SourceTreeWidget extends TreeWidget {
|
|
26
|
-
|
|
27
|
-
static createContainer(parent: interfaces.Container, props?: Partial<TreeProps>): Container {
|
|
28
|
-
const child = createTreeContainer(parent, {
|
|
29
|
-
props,
|
|
30
|
-
tree: SourceTree,
|
|
31
|
-
widget: SourceTreeWidget,
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
return child;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
@postConstruct()
|
|
38
|
-
protected override init(): void {
|
|
39
|
-
super.init();
|
|
40
|
-
this.addClass('theia-source-tree');
|
|
41
|
-
this.toDispose.push(this.model.onOpenNode(node => {
|
|
42
|
-
if (TreeElementNode.is(node) && node.element.open) {
|
|
43
|
-
node.element.open();
|
|
44
|
-
}
|
|
45
|
-
}));
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
protected readonly toDisposeOnSource = new DisposableCollection();
|
|
49
|
-
get source(): TreeSource | undefined {
|
|
50
|
-
const root = this.model.root;
|
|
51
|
-
return TreeSourceNode.is(root) ? root.source : undefined;
|
|
52
|
-
}
|
|
53
|
-
set source(source: TreeSource | undefined) {
|
|
54
|
-
if (this.source === source) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
this.toDisposeOnSource.dispose();
|
|
58
|
-
this.toDispose.push(this.toDisposeOnSource);
|
|
59
|
-
this.model.root = TreeSourceNode.to(source);
|
|
60
|
-
if (source) {
|
|
61
|
-
this.toDisposeOnSource.push(source.onDidChange(() => this.model.refresh()));
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
get selectedElement(): TreeElement | undefined {
|
|
66
|
-
const node = this.model.selectedNodes[0];
|
|
67
|
-
return TreeElementNode.is(node) && node.element || undefined;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
protected override renderTree(model: TreeModel): React.ReactNode {
|
|
71
|
-
if (TreeSourceNode.is(model.root) && model.root.children.length === 0) {
|
|
72
|
-
const { placeholder } = model.root.source;
|
|
73
|
-
if (placeholder) {
|
|
74
|
-
return <div className='theia-tree-source-node-placeholder noselect'>{placeholder}</div>;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return super.renderTree(model);
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
protected override renderCaption(node: TreeNode): React.ReactNode {
|
|
82
|
-
if (TreeElementNode.is(node)) {
|
|
83
|
-
const classNames = this.createTreeElementNodeClassNames(node);
|
|
84
|
-
return <div className={classNames.join(' ')}>{node.element.render(this)}</div>;
|
|
85
|
-
}
|
|
86
|
-
return undefined;
|
|
87
|
-
}
|
|
88
|
-
protected createTreeElementNodeClassNames(node: TreeElementNode): string[] {
|
|
89
|
-
return [TREE_NODE_SEGMENT_GROW_CLASS];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
override storeState(): object {
|
|
93
|
-
// no-op
|
|
94
|
-
return {};
|
|
95
|
-
}
|
|
96
|
-
protected superStoreState(): object {
|
|
97
|
-
return super.storeState();
|
|
98
|
-
}
|
|
99
|
-
override restoreState(state: object): void {
|
|
100
|
-
// no-op
|
|
101
|
-
}
|
|
102
|
-
protected superRestoreState(state: object): void {
|
|
103
|
-
super.restoreState(state);
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
}
|
|
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 * as React from 'react';
|
|
18
|
+
import { injectable, postConstruct, interfaces, Container } from 'inversify';
|
|
19
|
+
import { DisposableCollection } from '../../common/disposable';
|
|
20
|
+
import { TreeWidget, TreeNode, createTreeContainer, TreeProps, TreeModel, TREE_NODE_SEGMENT_GROW_CLASS } from '../tree';
|
|
21
|
+
import { TreeSource, TreeElement } from './tree-source';
|
|
22
|
+
import { SourceTree, TreeElementNode, TreeSourceNode } from './source-tree';
|
|
23
|
+
|
|
24
|
+
@injectable()
|
|
25
|
+
export class SourceTreeWidget extends TreeWidget {
|
|
26
|
+
|
|
27
|
+
static createContainer(parent: interfaces.Container, props?: Partial<TreeProps>): Container {
|
|
28
|
+
const child = createTreeContainer(parent, {
|
|
29
|
+
props,
|
|
30
|
+
tree: SourceTree,
|
|
31
|
+
widget: SourceTreeWidget,
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
return child;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@postConstruct()
|
|
38
|
+
protected override init(): void {
|
|
39
|
+
super.init();
|
|
40
|
+
this.addClass('theia-source-tree');
|
|
41
|
+
this.toDispose.push(this.model.onOpenNode(node => {
|
|
42
|
+
if (TreeElementNode.is(node) && node.element.open) {
|
|
43
|
+
node.element.open();
|
|
44
|
+
}
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
protected readonly toDisposeOnSource = new DisposableCollection();
|
|
49
|
+
get source(): TreeSource | undefined {
|
|
50
|
+
const root = this.model.root;
|
|
51
|
+
return TreeSourceNode.is(root) ? root.source : undefined;
|
|
52
|
+
}
|
|
53
|
+
set source(source: TreeSource | undefined) {
|
|
54
|
+
if (this.source === source) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.toDisposeOnSource.dispose();
|
|
58
|
+
this.toDispose.push(this.toDisposeOnSource);
|
|
59
|
+
this.model.root = TreeSourceNode.to(source);
|
|
60
|
+
if (source) {
|
|
61
|
+
this.toDisposeOnSource.push(source.onDidChange(() => this.model.refresh()));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
get selectedElement(): TreeElement | undefined {
|
|
66
|
+
const node = this.model.selectedNodes[0];
|
|
67
|
+
return TreeElementNode.is(node) && node.element || undefined;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
protected override renderTree(model: TreeModel): React.ReactNode {
|
|
71
|
+
if (TreeSourceNode.is(model.root) && model.root.children.length === 0) {
|
|
72
|
+
const { placeholder } = model.root.source;
|
|
73
|
+
if (placeholder) {
|
|
74
|
+
return <div className='theia-tree-source-node-placeholder noselect'>{placeholder}</div>;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return super.renderTree(model);
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
protected override renderCaption(node: TreeNode): React.ReactNode {
|
|
82
|
+
if (TreeElementNode.is(node)) {
|
|
83
|
+
const classNames = this.createTreeElementNodeClassNames(node);
|
|
84
|
+
return <div className={classNames.join(' ')}>{node.element.render(this)}</div>;
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
protected createTreeElementNodeClassNames(node: TreeElementNode): string[] {
|
|
89
|
+
return [TREE_NODE_SEGMENT_GROW_CLASS];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
override storeState(): object {
|
|
93
|
+
// no-op
|
|
94
|
+
return {};
|
|
95
|
+
}
|
|
96
|
+
protected superStoreState(): object {
|
|
97
|
+
return super.storeState();
|
|
98
|
+
}
|
|
99
|
+
override restoreState(state: object): void {
|
|
100
|
+
// no-op
|
|
101
|
+
}
|
|
102
|
+
protected superRestoreState(state: object): void {
|
|
103
|
+
super.restoreState(state);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
}
|
|
@@ -1,146 +1,146 @@
|
|
|
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
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
-
|
|
19
|
-
import { injectable } from 'inversify';
|
|
20
|
-
import { MaybePromise } from '../../common/types';
|
|
21
|
-
import { TreeImpl, CompositeTreeNode, TreeNode, SelectableTreeNode, ExpandableTreeNode } from '../tree';
|
|
22
|
-
import { TreeElement, CompositeTreeElement, TreeSource } from './tree-source';
|
|
23
|
-
|
|
24
|
-
@injectable()
|
|
25
|
-
export class SourceTree extends TreeImpl {
|
|
26
|
-
|
|
27
|
-
override async resolveChildren(parent: TreeElementNodeParent): Promise<TreeNode[]> {
|
|
28
|
-
const elements = await this.resolveElements(parent);
|
|
29
|
-
const nodes: TreeNode[] = [];
|
|
30
|
-
let index = 0;
|
|
31
|
-
for (const element of elements) {
|
|
32
|
-
if (element.visible !== false) {
|
|
33
|
-
nodes.push(this.toNode(element, index++, parent));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return nodes;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
protected resolveElements(parent: TreeElementNodeParent): MaybePromise<IterableIterator<TreeElement>> {
|
|
40
|
-
if (TreeSourceNode.is(parent)) {
|
|
41
|
-
return parent.source.getElements();
|
|
42
|
-
}
|
|
43
|
-
return parent.element.getElements();
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
protected toNode(element: TreeElement, index: number, parent: TreeElementNodeParent): TreeElementNode {
|
|
47
|
-
const id = element.id ? String(element.id) : (parent.id + ':' + index);
|
|
48
|
-
const name = id;
|
|
49
|
-
const existing = this.getNode(id);
|
|
50
|
-
const updated = existing && <TreeElementNode>Object.assign(existing, { element, parent });
|
|
51
|
-
if (CompositeTreeElement.hasElements(element)) {
|
|
52
|
-
if (updated) {
|
|
53
|
-
if (!ExpandableTreeNode.is(updated)) {
|
|
54
|
-
Object.assign(updated, { expanded: false });
|
|
55
|
-
}
|
|
56
|
-
if (!CompositeTreeNode.is(updated)) {
|
|
57
|
-
Object.assign(updated, { children: [] });
|
|
58
|
-
}
|
|
59
|
-
return updated;
|
|
60
|
-
}
|
|
61
|
-
return {
|
|
62
|
-
element,
|
|
63
|
-
parent,
|
|
64
|
-
id,
|
|
65
|
-
name,
|
|
66
|
-
selected: false,
|
|
67
|
-
expanded: false,
|
|
68
|
-
children: []
|
|
69
|
-
} as TreeElementNode;
|
|
70
|
-
}
|
|
71
|
-
if (CompositeTreeElementNode.is(updated)) {
|
|
72
|
-
delete (updated as any).expanded;
|
|
73
|
-
delete (updated as any).children;
|
|
74
|
-
}
|
|
75
|
-
if (updated) {
|
|
76
|
-
if (ExpandableTreeNode.is(updated)) {
|
|
77
|
-
delete (updated as any).expanded;
|
|
78
|
-
}
|
|
79
|
-
if (CompositeTreeNode.is(updated)) {
|
|
80
|
-
delete (updated as any).children;
|
|
81
|
-
}
|
|
82
|
-
return updated;
|
|
83
|
-
}
|
|
84
|
-
return {
|
|
85
|
-
element,
|
|
86
|
-
parent,
|
|
87
|
-
id,
|
|
88
|
-
name,
|
|
89
|
-
selected: false
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export type TreeElementNodeParent = CompositeTreeElementNode | TreeSourceNode;
|
|
96
|
-
|
|
97
|
-
export interface TreeElementNode extends TreeNode, SelectableTreeNode {
|
|
98
|
-
element: TreeElement
|
|
99
|
-
parent: TreeElementNodeParent
|
|
100
|
-
}
|
|
101
|
-
export namespace TreeElementNode {
|
|
102
|
-
export function is(node: TreeNode | undefined): node is TreeElementNode {
|
|
103
|
-
return SelectableTreeNode.is(node) && 'element' in node;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export interface CompositeTreeElementNode extends TreeElementNode, CompositeTreeNode, ExpandableTreeNode {
|
|
108
|
-
element: CompositeTreeElement
|
|
109
|
-
children: TreeElementNode[]
|
|
110
|
-
parent: TreeElementNodeParent
|
|
111
|
-
}
|
|
112
|
-
export namespace CompositeTreeElementNode {
|
|
113
|
-
export function is(node: TreeNode | undefined): node is CompositeTreeElementNode {
|
|
114
|
-
return TreeElementNode.is(node) && CompositeTreeNode.is(node) && ExpandableTreeNode.is(node) && !!node.visible;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export interface TreeSourceNode extends CompositeTreeNode, SelectableTreeNode {
|
|
119
|
-
visible: false
|
|
120
|
-
children: TreeElementNode[]
|
|
121
|
-
parent: undefined
|
|
122
|
-
source: TreeSource
|
|
123
|
-
}
|
|
124
|
-
export namespace TreeSourceNode {
|
|
125
|
-
export function is(node: TreeNode | undefined): node is TreeSourceNode {
|
|
126
|
-
return CompositeTreeNode.is(node) && !node.visible && 'source' in node;
|
|
127
|
-
}
|
|
128
|
-
export function to(source: undefined): undefined;
|
|
129
|
-
export function to(source: TreeSource): TreeSourceNode;
|
|
130
|
-
export function to(source: TreeSource | undefined): TreeSourceNode | undefined;
|
|
131
|
-
export function to(source: TreeSource | undefined): TreeSourceNode | undefined {
|
|
132
|
-
if (!source) {
|
|
133
|
-
return source;
|
|
134
|
-
}
|
|
135
|
-
const id = source.id || '__source__';
|
|
136
|
-
return {
|
|
137
|
-
id,
|
|
138
|
-
name: id,
|
|
139
|
-
visible: false,
|
|
140
|
-
children: [],
|
|
141
|
-
source,
|
|
142
|
-
parent: undefined,
|
|
143
|
-
selected: false
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
}
|
|
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
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
+
|
|
19
|
+
import { injectable } from 'inversify';
|
|
20
|
+
import { MaybePromise } from '../../common/types';
|
|
21
|
+
import { TreeImpl, CompositeTreeNode, TreeNode, SelectableTreeNode, ExpandableTreeNode } from '../tree';
|
|
22
|
+
import { TreeElement, CompositeTreeElement, TreeSource } from './tree-source';
|
|
23
|
+
|
|
24
|
+
@injectable()
|
|
25
|
+
export class SourceTree extends TreeImpl {
|
|
26
|
+
|
|
27
|
+
override async resolveChildren(parent: TreeElementNodeParent): Promise<TreeNode[]> {
|
|
28
|
+
const elements = await this.resolveElements(parent);
|
|
29
|
+
const nodes: TreeNode[] = [];
|
|
30
|
+
let index = 0;
|
|
31
|
+
for (const element of elements) {
|
|
32
|
+
if (element.visible !== false) {
|
|
33
|
+
nodes.push(this.toNode(element, index++, parent));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return nodes;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
protected resolveElements(parent: TreeElementNodeParent): MaybePromise<IterableIterator<TreeElement>> {
|
|
40
|
+
if (TreeSourceNode.is(parent)) {
|
|
41
|
+
return parent.source.getElements();
|
|
42
|
+
}
|
|
43
|
+
return parent.element.getElements();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
protected toNode(element: TreeElement, index: number, parent: TreeElementNodeParent): TreeElementNode {
|
|
47
|
+
const id = element.id ? String(element.id) : (parent.id + ':' + index);
|
|
48
|
+
const name = id;
|
|
49
|
+
const existing = this.getNode(id);
|
|
50
|
+
const updated = existing && <TreeElementNode>Object.assign(existing, { element, parent });
|
|
51
|
+
if (CompositeTreeElement.hasElements(element)) {
|
|
52
|
+
if (updated) {
|
|
53
|
+
if (!ExpandableTreeNode.is(updated)) {
|
|
54
|
+
Object.assign(updated, { expanded: false });
|
|
55
|
+
}
|
|
56
|
+
if (!CompositeTreeNode.is(updated)) {
|
|
57
|
+
Object.assign(updated, { children: [] });
|
|
58
|
+
}
|
|
59
|
+
return updated;
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
element,
|
|
63
|
+
parent,
|
|
64
|
+
id,
|
|
65
|
+
name,
|
|
66
|
+
selected: false,
|
|
67
|
+
expanded: false,
|
|
68
|
+
children: []
|
|
69
|
+
} as TreeElementNode;
|
|
70
|
+
}
|
|
71
|
+
if (CompositeTreeElementNode.is(updated)) {
|
|
72
|
+
delete (updated as any).expanded;
|
|
73
|
+
delete (updated as any).children;
|
|
74
|
+
}
|
|
75
|
+
if (updated) {
|
|
76
|
+
if (ExpandableTreeNode.is(updated)) {
|
|
77
|
+
delete (updated as any).expanded;
|
|
78
|
+
}
|
|
79
|
+
if (CompositeTreeNode.is(updated)) {
|
|
80
|
+
delete (updated as any).children;
|
|
81
|
+
}
|
|
82
|
+
return updated;
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
element,
|
|
86
|
+
parent,
|
|
87
|
+
id,
|
|
88
|
+
name,
|
|
89
|
+
selected: false
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export type TreeElementNodeParent = CompositeTreeElementNode | TreeSourceNode;
|
|
96
|
+
|
|
97
|
+
export interface TreeElementNode extends TreeNode, SelectableTreeNode {
|
|
98
|
+
element: TreeElement
|
|
99
|
+
parent: TreeElementNodeParent
|
|
100
|
+
}
|
|
101
|
+
export namespace TreeElementNode {
|
|
102
|
+
export function is(node: TreeNode | undefined): node is TreeElementNode {
|
|
103
|
+
return SelectableTreeNode.is(node) && 'element' in node;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface CompositeTreeElementNode extends TreeElementNode, CompositeTreeNode, ExpandableTreeNode {
|
|
108
|
+
element: CompositeTreeElement
|
|
109
|
+
children: TreeElementNode[]
|
|
110
|
+
parent: TreeElementNodeParent
|
|
111
|
+
}
|
|
112
|
+
export namespace CompositeTreeElementNode {
|
|
113
|
+
export function is(node: TreeNode | undefined): node is CompositeTreeElementNode {
|
|
114
|
+
return TreeElementNode.is(node) && CompositeTreeNode.is(node) && ExpandableTreeNode.is(node) && !!node.visible;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface TreeSourceNode extends CompositeTreeNode, SelectableTreeNode {
|
|
119
|
+
visible: false
|
|
120
|
+
children: TreeElementNode[]
|
|
121
|
+
parent: undefined
|
|
122
|
+
source: TreeSource
|
|
123
|
+
}
|
|
124
|
+
export namespace TreeSourceNode {
|
|
125
|
+
export function is(node: TreeNode | undefined): node is TreeSourceNode {
|
|
126
|
+
return CompositeTreeNode.is(node) && !node.visible && 'source' in node;
|
|
127
|
+
}
|
|
128
|
+
export function to(source: undefined): undefined;
|
|
129
|
+
export function to(source: TreeSource): TreeSourceNode;
|
|
130
|
+
export function to(source: TreeSource | undefined): TreeSourceNode | undefined;
|
|
131
|
+
export function to(source: TreeSource | undefined): TreeSourceNode | undefined {
|
|
132
|
+
if (!source) {
|
|
133
|
+
return source;
|
|
134
|
+
}
|
|
135
|
+
const id = source.id || '__source__';
|
|
136
|
+
return {
|
|
137
|
+
id,
|
|
138
|
+
name: id,
|
|
139
|
+
visible: false,
|
|
140
|
+
children: [],
|
|
141
|
+
source,
|
|
142
|
+
parent: undefined,
|
|
143
|
+
selected: false
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -1,73 +1,73 @@
|
|
|
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
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
-
|
|
19
|
-
import { ReactNode } from 'react';
|
|
20
|
-
import { injectable, unmanaged } from 'inversify';
|
|
21
|
-
import { Disposable, DisposableCollection, Emitter, Event, isObject, MaybePromise } from '../../common';
|
|
22
|
-
import { TreeWidget } from '../tree';
|
|
23
|
-
|
|
24
|
-
export interface TreeElement {
|
|
25
|
-
/** default: parent id + position among siblings */
|
|
26
|
-
readonly id?: number | string | undefined
|
|
27
|
-
/** default: true */
|
|
28
|
-
readonly visible?: boolean
|
|
29
|
-
render(host: TreeWidget): ReactNode
|
|
30
|
-
open?(): MaybePromise<any>
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export interface CompositeTreeElement extends TreeElement {
|
|
34
|
-
/** default: true */
|
|
35
|
-
readonly hasElements?: boolean
|
|
36
|
-
getElements(): MaybePromise<IterableIterator<TreeElement>>
|
|
37
|
-
}
|
|
38
|
-
export namespace CompositeTreeElement {
|
|
39
|
-
export function is(element: unknown): element is CompositeTreeElement {
|
|
40
|
-
return isObject(element) && 'getElements' in element;
|
|
41
|
-
}
|
|
42
|
-
export function hasElements(element: unknown): element is CompositeTreeElement {
|
|
43
|
-
return is(element) && element.hasElements !== false;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
@injectable()
|
|
48
|
-
export abstract class TreeSource implements Disposable {
|
|
49
|
-
protected readonly onDidChangeEmitter = new Emitter<void>();
|
|
50
|
-
readonly onDidChange: Event<void> = this.onDidChangeEmitter.event;
|
|
51
|
-
protected fireDidChange(): void {
|
|
52
|
-
this.onDidChangeEmitter.fire(undefined);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
readonly id: string | undefined;
|
|
56
|
-
readonly placeholder: string | undefined;
|
|
57
|
-
|
|
58
|
-
constructor(@unmanaged() options: TreeSourceOptions = {}) {
|
|
59
|
-
this.id = options.id;
|
|
60
|
-
this.placeholder = options.placeholder;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
protected readonly toDispose = new DisposableCollection(this.onDidChangeEmitter);
|
|
64
|
-
dispose(): void {
|
|
65
|
-
this.toDispose.dispose();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
abstract getElements(): MaybePromise<IterableIterator<TreeElement>>;
|
|
69
|
-
}
|
|
70
|
-
export interface TreeSourceOptions {
|
|
71
|
-
id?: string
|
|
72
|
-
placeholder?: string
|
|
73
|
-
}
|
|
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
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
+
|
|
19
|
+
import { ReactNode } from 'react';
|
|
20
|
+
import { injectable, unmanaged } from 'inversify';
|
|
21
|
+
import { Disposable, DisposableCollection, Emitter, Event, isObject, MaybePromise } from '../../common';
|
|
22
|
+
import { TreeWidget } from '../tree';
|
|
23
|
+
|
|
24
|
+
export interface TreeElement {
|
|
25
|
+
/** default: parent id + position among siblings */
|
|
26
|
+
readonly id?: number | string | undefined
|
|
27
|
+
/** default: true */
|
|
28
|
+
readonly visible?: boolean
|
|
29
|
+
render(host: TreeWidget): ReactNode
|
|
30
|
+
open?(): MaybePromise<any>
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface CompositeTreeElement extends TreeElement {
|
|
34
|
+
/** default: true */
|
|
35
|
+
readonly hasElements?: boolean
|
|
36
|
+
getElements(): MaybePromise<IterableIterator<TreeElement>>
|
|
37
|
+
}
|
|
38
|
+
export namespace CompositeTreeElement {
|
|
39
|
+
export function is(element: unknown): element is CompositeTreeElement {
|
|
40
|
+
return isObject(element) && 'getElements' in element;
|
|
41
|
+
}
|
|
42
|
+
export function hasElements(element: unknown): element is CompositeTreeElement {
|
|
43
|
+
return is(element) && element.hasElements !== false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@injectable()
|
|
48
|
+
export abstract class TreeSource implements Disposable {
|
|
49
|
+
protected readonly onDidChangeEmitter = new Emitter<void>();
|
|
50
|
+
readonly onDidChange: Event<void> = this.onDidChangeEmitter.event;
|
|
51
|
+
protected fireDidChange(): void {
|
|
52
|
+
this.onDidChangeEmitter.fire(undefined);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
readonly id: string | undefined;
|
|
56
|
+
readonly placeholder: string | undefined;
|
|
57
|
+
|
|
58
|
+
constructor(@unmanaged() options: TreeSourceOptions = {}) {
|
|
59
|
+
this.id = options.id;
|
|
60
|
+
this.placeholder = options.placeholder;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
protected readonly toDispose = new DisposableCollection(this.onDidChangeEmitter);
|
|
64
|
+
dispose(): void {
|
|
65
|
+
this.toDispose.dispose();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
abstract getElements(): MaybePromise<IterableIterator<TreeElement>>;
|
|
69
|
+
}
|
|
70
|
+
export interface TreeSourceOptions {
|
|
71
|
+
id?: string
|
|
72
|
+
placeholder?: string
|
|
73
|
+
}
|