@theia/core 1.53.0-next.55 → 1.53.0-next.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/i18n/nls.cs.json +582 -582
- package/i18n/nls.de.json +582 -582
- package/i18n/nls.es.json +582 -582
- package/i18n/nls.fr.json +582 -582
- package/i18n/nls.hu.json +582 -582
- package/i18n/nls.it.json +582 -582
- package/i18n/nls.ja.json +582 -582
- package/i18n/nls.json +582 -582
- package/i18n/nls.ko.json +582 -582
- package/i18n/nls.pl.json +582 -582
- package/i18n/nls.pt-br.json +582 -582
- package/i18n/nls.ru.json +582 -582
- package/i18n/nls.tr.json +582 -582
- package/i18n/nls.zh-cn.json +582 -582
- package/i18n/nls.zh-tw.json +582 -582
- package/lib/browser/catalog.json +54 -6
- package/lib/browser/common-frontend-contribution.js +3 -3
- package/lib/browser/common-styling-participants.js +166 -166
- package/lib/browser/progress-location-service.spec.js +7 -7
- package/lib/browser/storage-service.js +3 -3
- package/lib/browser/tree/tree.spec.js +75 -75
- package/lib/node/process-utils.spec.js +8 -8
- package/package.json +4 -4
- 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 -467
- 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 -343
- 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 -474
- 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 -118
- 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 -140
- package/src/browser/opener-service.spec.ts +49 -49
- package/src/browser/opener-service.ts +169 -169
- 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 -332
- package/src/browser/saveable.ts +395 -395
- 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 -242
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-types.ts +149 -149
- 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 -443
- 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 -353
- 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 -38
- package/src/browser/style/status-bar.css +127 -127
- package/src/browser/style/tabs.css +647 -647
- 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 -187
- 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 -168
- 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 -21
- 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 -163
- 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 -493
- 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 -108
- 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 -220
- 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 -42
- 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 -339
- 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 -264
- 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 -48
- 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 -157
- 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 -373
- package/src/electron-main/electron-main-application-module.ts +65 -65
- package/src/electron-main/electron-main-application.ts +860 -860
- 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 -219
- 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 -40
- 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/src/browser/theming.ts
CHANGED
|
@@ -1,206 +1,206 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2017 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 { Emitter, Event } from '../common/event';
|
|
18
|
-
import { Disposable } from '../common/disposable';
|
|
19
|
-
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
20
|
-
import { ApplicationProps, DefaultTheme } from '@theia/application-package/lib/application-props';
|
|
21
|
-
import { Theme, ThemeChangeEvent } from '../common/theme';
|
|
22
|
-
import { inject, injectable, postConstruct } from 'inversify';
|
|
23
|
-
import { Deferred } from '../common/promise-util';
|
|
24
|
-
import { PreferenceSchemaProvider, PreferenceService } from './preferences';
|
|
25
|
-
import debounce = require('lodash.debounce');
|
|
26
|
-
|
|
27
|
-
const COLOR_THEME_PREFERENCE_KEY = 'workbench.colorTheme';
|
|
28
|
-
const NO_THEME = { id: 'no-theme', label: 'Not a real theme.', type: 'dark' } as const;
|
|
29
|
-
|
|
30
|
-
@injectable()
|
|
31
|
-
export class ThemeService {
|
|
32
|
-
static readonly STORAGE_KEY = 'theme';
|
|
33
|
-
|
|
34
|
-
@inject(PreferenceService) protected readonly preferences: PreferenceService;
|
|
35
|
-
@inject(PreferenceSchemaProvider) protected readonly schemaProvider: PreferenceSchemaProvider;
|
|
36
|
-
|
|
37
|
-
protected themes: { [id: string]: Theme } = {};
|
|
38
|
-
protected activeTheme: Theme = NO_THEME;
|
|
39
|
-
protected readonly themeChange = new Emitter<ThemeChangeEvent>();
|
|
40
|
-
protected readonly deferredInitializer = new Deferred();
|
|
41
|
-
get initialized(): Promise<void> {
|
|
42
|
-
return this.deferredInitializer.promise;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
readonly onDidColorThemeChange: Event<ThemeChangeEvent> = this.themeChange.event;
|
|
46
|
-
|
|
47
|
-
@postConstruct()
|
|
48
|
-
protected init(): void {
|
|
49
|
-
this.register(...BuiltinThemeProvider.themes);
|
|
50
|
-
this.loadUserTheme();
|
|
51
|
-
this.preferences.ready.then(() => {
|
|
52
|
-
this.validateActiveTheme();
|
|
53
|
-
this.updateColorThemePreference();
|
|
54
|
-
this.preferences.onPreferencesChanged(changes => {
|
|
55
|
-
if (COLOR_THEME_PREFERENCE_KEY in changes) {
|
|
56
|
-
this.validateActiveTheme();
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
register(...themes: Theme[]): Disposable {
|
|
63
|
-
for (const theme of themes) {
|
|
64
|
-
this.themes[theme.id] = theme;
|
|
65
|
-
}
|
|
66
|
-
this.validateActiveTheme();
|
|
67
|
-
this.updateColorThemePreference();
|
|
68
|
-
return Disposable.create(() => {
|
|
69
|
-
for (const theme of themes) {
|
|
70
|
-
delete this.themes[theme.id];
|
|
71
|
-
if (this.activeTheme === theme) {
|
|
72
|
-
this.setCurrentTheme(this.defaultTheme.id, false);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
this.updateColorThemePreference();
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
protected validateActiveTheme(): void {
|
|
80
|
-
if (this.preferences.isReady) {
|
|
81
|
-
const configuredTheme = this.getConfiguredTheme();
|
|
82
|
-
if (configuredTheme && configuredTheme !== this.activeTheme) {
|
|
83
|
-
this.setCurrentTheme(configuredTheme.id, false);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
protected updateColorThemePreference = debounce(() => this.doUpdateColorThemePreference(), 500);
|
|
89
|
-
|
|
90
|
-
protected doUpdateColorThemePreference(): void {
|
|
91
|
-
const preference = this.schemaProvider.getSchemaProperty(COLOR_THEME_PREFERENCE_KEY);
|
|
92
|
-
if (preference) {
|
|
93
|
-
const sortedThemes = this.getThemes().sort((a, b) => a.label.localeCompare(b.label));
|
|
94
|
-
this.schemaProvider.updateSchemaProperty(COLOR_THEME_PREFERENCE_KEY, {
|
|
95
|
-
...preference,
|
|
96
|
-
enum: sortedThemes.map(e => e.id),
|
|
97
|
-
enumItemLabels: sortedThemes.map(e => e.label)
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
getThemes(): Theme[] {
|
|
103
|
-
const result = [];
|
|
104
|
-
for (const o in this.themes) {
|
|
105
|
-
if (this.themes.hasOwnProperty(o)) {
|
|
106
|
-
result.push(this.themes[o]);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return result;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
getTheme(themeId: string): Theme {
|
|
113
|
-
return this.themes[themeId] || this.defaultTheme;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
protected tryGetTheme(themeId: string): Theme | undefined {
|
|
117
|
-
return this.themes[themeId];
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/** Should only be called at startup. */
|
|
121
|
-
loadUserTheme(): void {
|
|
122
|
-
const storedThemeId = window.localStorage.getItem(ThemeService.STORAGE_KEY) ?? this.defaultTheme.id;
|
|
123
|
-
const theme = this.getTheme(storedThemeId);
|
|
124
|
-
this.setCurrentTheme(theme.id, false);
|
|
125
|
-
this.deferredInitializer.resolve();
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* @param persist If `true`, the value of the `workbench.colorTheme` preference will be set to the provided ID.
|
|
130
|
-
*/
|
|
131
|
-
setCurrentTheme(themeId: string, persist = true): void {
|
|
132
|
-
const newTheme = this.tryGetTheme(themeId);
|
|
133
|
-
const oldTheme = this.activeTheme;
|
|
134
|
-
if (newTheme && newTheme !== oldTheme) {
|
|
135
|
-
oldTheme?.deactivate?.();
|
|
136
|
-
newTheme.activate?.();
|
|
137
|
-
this.activeTheme = newTheme;
|
|
138
|
-
this.themeChange.fire({ newTheme, oldTheme });
|
|
139
|
-
}
|
|
140
|
-
if (persist) {
|
|
141
|
-
this.preferences.updateValue(COLOR_THEME_PREFERENCE_KEY, themeId);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
getCurrentTheme(): Theme {
|
|
146
|
-
return this.activeTheme;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
protected getConfiguredTheme(): Theme | undefined {
|
|
150
|
-
const configuredId = this.preferences.get<string>(COLOR_THEME_PREFERENCE_KEY);
|
|
151
|
-
return configuredId ? this.themes[configuredId.toString()] : undefined;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* The default theme. If that is not applicable, returns with the fallback theme.
|
|
156
|
-
*/
|
|
157
|
-
get defaultTheme(): Theme {
|
|
158
|
-
return this.tryGetTheme(DefaultTheme.defaultForOSTheme(FrontendApplicationConfigProvider.get().defaultTheme))
|
|
159
|
-
?? this.getTheme(DefaultTheme.defaultForOSTheme(ApplicationProps.DEFAULT.frontend.config.defaultTheme));
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Resets the state to the user's default, or to the fallback theme. Also discards any persisted state in the local storage.
|
|
164
|
-
*/
|
|
165
|
-
reset(): void {
|
|
166
|
-
this.setCurrentTheme(this.defaultTheme.id);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
export class BuiltinThemeProvider {
|
|
171
|
-
|
|
172
|
-
static readonly darkTheme: Theme = {
|
|
173
|
-
id: 'dark',
|
|
174
|
-
type: 'dark',
|
|
175
|
-
label: 'Dark (Theia)',
|
|
176
|
-
editorTheme: 'dark-theia' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
static readonly lightTheme: Theme = {
|
|
180
|
-
id: 'light',
|
|
181
|
-
type: 'light',
|
|
182
|
-
label: 'Light (Theia)',
|
|
183
|
-
editorTheme: 'light-theia' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
static readonly hcTheme: Theme = {
|
|
187
|
-
id: 'hc-theia',
|
|
188
|
-
type: 'hc',
|
|
189
|
-
label: 'High Contrast (Theia)',
|
|
190
|
-
editorTheme: 'hc-theia' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
static readonly hcLightTheme: Theme = {
|
|
194
|
-
id: 'hc-theia-light',
|
|
195
|
-
type: 'hcLight',
|
|
196
|
-
label: 'High Contrast Light (Theia)',
|
|
197
|
-
editorTheme: 'hc-theia-light' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
static readonly themes = [
|
|
201
|
-
BuiltinThemeProvider.darkTheme,
|
|
202
|
-
BuiltinThemeProvider.lightTheme,
|
|
203
|
-
BuiltinThemeProvider.hcTheme,
|
|
204
|
-
BuiltinThemeProvider.hcLightTheme
|
|
205
|
-
];
|
|
206
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2017 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 { Emitter, Event } from '../common/event';
|
|
18
|
+
import { Disposable } from '../common/disposable';
|
|
19
|
+
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
20
|
+
import { ApplicationProps, DefaultTheme } from '@theia/application-package/lib/application-props';
|
|
21
|
+
import { Theme, ThemeChangeEvent } from '../common/theme';
|
|
22
|
+
import { inject, injectable, postConstruct } from 'inversify';
|
|
23
|
+
import { Deferred } from '../common/promise-util';
|
|
24
|
+
import { PreferenceSchemaProvider, PreferenceService } from './preferences';
|
|
25
|
+
import debounce = require('lodash.debounce');
|
|
26
|
+
|
|
27
|
+
const COLOR_THEME_PREFERENCE_KEY = 'workbench.colorTheme';
|
|
28
|
+
const NO_THEME = { id: 'no-theme', label: 'Not a real theme.', type: 'dark' } as const;
|
|
29
|
+
|
|
30
|
+
@injectable()
|
|
31
|
+
export class ThemeService {
|
|
32
|
+
static readonly STORAGE_KEY = 'theme';
|
|
33
|
+
|
|
34
|
+
@inject(PreferenceService) protected readonly preferences: PreferenceService;
|
|
35
|
+
@inject(PreferenceSchemaProvider) protected readonly schemaProvider: PreferenceSchemaProvider;
|
|
36
|
+
|
|
37
|
+
protected themes: { [id: string]: Theme } = {};
|
|
38
|
+
protected activeTheme: Theme = NO_THEME;
|
|
39
|
+
protected readonly themeChange = new Emitter<ThemeChangeEvent>();
|
|
40
|
+
protected readonly deferredInitializer = new Deferred();
|
|
41
|
+
get initialized(): Promise<void> {
|
|
42
|
+
return this.deferredInitializer.promise;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
readonly onDidColorThemeChange: Event<ThemeChangeEvent> = this.themeChange.event;
|
|
46
|
+
|
|
47
|
+
@postConstruct()
|
|
48
|
+
protected init(): void {
|
|
49
|
+
this.register(...BuiltinThemeProvider.themes);
|
|
50
|
+
this.loadUserTheme();
|
|
51
|
+
this.preferences.ready.then(() => {
|
|
52
|
+
this.validateActiveTheme();
|
|
53
|
+
this.updateColorThemePreference();
|
|
54
|
+
this.preferences.onPreferencesChanged(changes => {
|
|
55
|
+
if (COLOR_THEME_PREFERENCE_KEY in changes) {
|
|
56
|
+
this.validateActiveTheme();
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
register(...themes: Theme[]): Disposable {
|
|
63
|
+
for (const theme of themes) {
|
|
64
|
+
this.themes[theme.id] = theme;
|
|
65
|
+
}
|
|
66
|
+
this.validateActiveTheme();
|
|
67
|
+
this.updateColorThemePreference();
|
|
68
|
+
return Disposable.create(() => {
|
|
69
|
+
for (const theme of themes) {
|
|
70
|
+
delete this.themes[theme.id];
|
|
71
|
+
if (this.activeTheme === theme) {
|
|
72
|
+
this.setCurrentTheme(this.defaultTheme.id, false);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
this.updateColorThemePreference();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
protected validateActiveTheme(): void {
|
|
80
|
+
if (this.preferences.isReady) {
|
|
81
|
+
const configuredTheme = this.getConfiguredTheme();
|
|
82
|
+
if (configuredTheme && configuredTheme !== this.activeTheme) {
|
|
83
|
+
this.setCurrentTheme(configuredTheme.id, false);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
protected updateColorThemePreference = debounce(() => this.doUpdateColorThemePreference(), 500);
|
|
89
|
+
|
|
90
|
+
protected doUpdateColorThemePreference(): void {
|
|
91
|
+
const preference = this.schemaProvider.getSchemaProperty(COLOR_THEME_PREFERENCE_KEY);
|
|
92
|
+
if (preference) {
|
|
93
|
+
const sortedThemes = this.getThemes().sort((a, b) => a.label.localeCompare(b.label));
|
|
94
|
+
this.schemaProvider.updateSchemaProperty(COLOR_THEME_PREFERENCE_KEY, {
|
|
95
|
+
...preference,
|
|
96
|
+
enum: sortedThemes.map(e => e.id),
|
|
97
|
+
enumItemLabels: sortedThemes.map(e => e.label)
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
getThemes(): Theme[] {
|
|
103
|
+
const result = [];
|
|
104
|
+
for (const o in this.themes) {
|
|
105
|
+
if (this.themes.hasOwnProperty(o)) {
|
|
106
|
+
result.push(this.themes[o]);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
getTheme(themeId: string): Theme {
|
|
113
|
+
return this.themes[themeId] || this.defaultTheme;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
protected tryGetTheme(themeId: string): Theme | undefined {
|
|
117
|
+
return this.themes[themeId];
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** Should only be called at startup. */
|
|
121
|
+
loadUserTheme(): void {
|
|
122
|
+
const storedThemeId = window.localStorage.getItem(ThemeService.STORAGE_KEY) ?? this.defaultTheme.id;
|
|
123
|
+
const theme = this.getTheme(storedThemeId);
|
|
124
|
+
this.setCurrentTheme(theme.id, false);
|
|
125
|
+
this.deferredInitializer.resolve();
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @param persist If `true`, the value of the `workbench.colorTheme` preference will be set to the provided ID.
|
|
130
|
+
*/
|
|
131
|
+
setCurrentTheme(themeId: string, persist = true): void {
|
|
132
|
+
const newTheme = this.tryGetTheme(themeId);
|
|
133
|
+
const oldTheme = this.activeTheme;
|
|
134
|
+
if (newTheme && newTheme !== oldTheme) {
|
|
135
|
+
oldTheme?.deactivate?.();
|
|
136
|
+
newTheme.activate?.();
|
|
137
|
+
this.activeTheme = newTheme;
|
|
138
|
+
this.themeChange.fire({ newTheme, oldTheme });
|
|
139
|
+
}
|
|
140
|
+
if (persist) {
|
|
141
|
+
this.preferences.updateValue(COLOR_THEME_PREFERENCE_KEY, themeId);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
getCurrentTheme(): Theme {
|
|
146
|
+
return this.activeTheme;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
protected getConfiguredTheme(): Theme | undefined {
|
|
150
|
+
const configuredId = this.preferences.get<string>(COLOR_THEME_PREFERENCE_KEY);
|
|
151
|
+
return configuredId ? this.themes[configuredId.toString()] : undefined;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* The default theme. If that is not applicable, returns with the fallback theme.
|
|
156
|
+
*/
|
|
157
|
+
get defaultTheme(): Theme {
|
|
158
|
+
return this.tryGetTheme(DefaultTheme.defaultForOSTheme(FrontendApplicationConfigProvider.get().defaultTheme))
|
|
159
|
+
?? this.getTheme(DefaultTheme.defaultForOSTheme(ApplicationProps.DEFAULT.frontend.config.defaultTheme));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Resets the state to the user's default, or to the fallback theme. Also discards any persisted state in the local storage.
|
|
164
|
+
*/
|
|
165
|
+
reset(): void {
|
|
166
|
+
this.setCurrentTheme(this.defaultTheme.id);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export class BuiltinThemeProvider {
|
|
171
|
+
|
|
172
|
+
static readonly darkTheme: Theme = {
|
|
173
|
+
id: 'dark',
|
|
174
|
+
type: 'dark',
|
|
175
|
+
label: 'Dark (Theia)',
|
|
176
|
+
editorTheme: 'dark-theia' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
static readonly lightTheme: Theme = {
|
|
180
|
+
id: 'light',
|
|
181
|
+
type: 'light',
|
|
182
|
+
label: 'Light (Theia)',
|
|
183
|
+
editorTheme: 'light-theia' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
static readonly hcTheme: Theme = {
|
|
187
|
+
id: 'hc-theia',
|
|
188
|
+
type: 'hc',
|
|
189
|
+
label: 'High Contrast (Theia)',
|
|
190
|
+
editorTheme: 'hc-theia' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
static readonly hcLightTheme: Theme = {
|
|
194
|
+
id: 'hc-theia-light',
|
|
195
|
+
type: 'hcLight',
|
|
196
|
+
label: 'High Contrast Light (Theia)',
|
|
197
|
+
editorTheme: 'hc-theia-light' // loaded in /packages/monaco/src/browser/textmate/monaco-theme-registry.ts
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
static readonly themes = [
|
|
201
|
+
BuiltinThemeProvider.darkTheme,
|
|
202
|
+
BuiltinThemeProvider.lightTheme,
|
|
203
|
+
BuiltinThemeProvider.hcTheme,
|
|
204
|
+
BuiltinThemeProvider.hcLightTheme
|
|
205
|
+
];
|
|
206
|
+
}
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
// *****************************************************************************
|
|
2
|
-
// Copyright (C) 2021 Arm and others.
|
|
3
|
-
//
|
|
4
|
-
// This program and the accompanying materials are made available under the
|
|
5
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
//
|
|
8
|
-
// This Source Code may also be made available under the following Secondary
|
|
9
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
-
// with the GNU Classpath Exception which is available at
|
|
12
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
-
//
|
|
14
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
-
// *****************************************************************************
|
|
16
|
-
|
|
17
|
-
import { injectable, inject, optional, postConstruct } from 'inversify';
|
|
18
|
-
import * as React from 'react';
|
|
19
|
-
import ReactTooltip from 'react-tooltip';
|
|
20
|
-
import { ReactRenderer, RendererHost } from './widgets/react-renderer';
|
|
21
|
-
import { CorePreferences } from './core-preferences';
|
|
22
|
-
import { generateUuid } from '../common/uuid';
|
|
23
|
-
|
|
24
|
-
export const TooltipService = Symbol('TooltipService');
|
|
25
|
-
|
|
26
|
-
export interface TooltipService {
|
|
27
|
-
tooltipId: string;
|
|
28
|
-
attachTo(host: HTMLElement): void;
|
|
29
|
-
update(fullRender?: boolean): void;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Attributes to be added to an HTML element to enable
|
|
34
|
-
* rich HTML tooltip rendering
|
|
35
|
-
*/
|
|
36
|
-
export interface TooltipAttributes {
|
|
37
|
-
/**
|
|
38
|
-
* HTML to render in the tooltip.
|
|
39
|
-
*/
|
|
40
|
-
'data-tip': string;
|
|
41
|
-
/**
|
|
42
|
-
* The ID of the tooltip renderer. Should be TOOLTIP_ID.
|
|
43
|
-
*/
|
|
44
|
-
'data-for': string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const DELAY_PREFERENCE = 'workbench.hover.delay';
|
|
48
|
-
|
|
49
|
-
@injectable()
|
|
50
|
-
export class TooltipServiceImpl extends ReactRenderer implements TooltipService {
|
|
51
|
-
|
|
52
|
-
@inject(CorePreferences)
|
|
53
|
-
protected readonly corePreferences: CorePreferences;
|
|
54
|
-
|
|
55
|
-
public readonly tooltipId: string;
|
|
56
|
-
protected rendered = false;
|
|
57
|
-
|
|
58
|
-
constructor(
|
|
59
|
-
@inject(RendererHost) @optional() host?: RendererHost
|
|
60
|
-
) {
|
|
61
|
-
super(host);
|
|
62
|
-
this.tooltipId = generateUuid();
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
@postConstruct()
|
|
66
|
-
protected init(): void {
|
|
67
|
-
this.toDispose.push(this.corePreferences.onPreferenceChanged(preference => {
|
|
68
|
-
if (preference.preferenceName === DELAY_PREFERENCE) {
|
|
69
|
-
this.update(true);
|
|
70
|
-
}
|
|
71
|
-
}));
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
public attachTo(host: HTMLElement): void {
|
|
75
|
-
host.appendChild(this.host);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
public update(fullRender = false): void {
|
|
79
|
-
if (fullRender || !this.rendered) {
|
|
80
|
-
this.render();
|
|
81
|
-
this.rendered = true;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
ReactTooltip.rebuild();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
protected override doRender(): React.ReactNode {
|
|
88
|
-
const hoverDelay = this.corePreferences.get(DELAY_PREFERENCE);
|
|
89
|
-
return <ReactTooltip id={this.tooltipId} className='theia-tooltip' html={true} delayShow={hoverDelay} />;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
public override dispose(): void {
|
|
93
|
-
this.toDispose.dispose();
|
|
94
|
-
super.dispose();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2021 Arm and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { injectable, inject, optional, postConstruct } from 'inversify';
|
|
18
|
+
import * as React from 'react';
|
|
19
|
+
import ReactTooltip from 'react-tooltip';
|
|
20
|
+
import { ReactRenderer, RendererHost } from './widgets/react-renderer';
|
|
21
|
+
import { CorePreferences } from './core-preferences';
|
|
22
|
+
import { generateUuid } from '../common/uuid';
|
|
23
|
+
|
|
24
|
+
export const TooltipService = Symbol('TooltipService');
|
|
25
|
+
|
|
26
|
+
export interface TooltipService {
|
|
27
|
+
tooltipId: string;
|
|
28
|
+
attachTo(host: HTMLElement): void;
|
|
29
|
+
update(fullRender?: boolean): void;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Attributes to be added to an HTML element to enable
|
|
34
|
+
* rich HTML tooltip rendering
|
|
35
|
+
*/
|
|
36
|
+
export interface TooltipAttributes {
|
|
37
|
+
/**
|
|
38
|
+
* HTML to render in the tooltip.
|
|
39
|
+
*/
|
|
40
|
+
'data-tip': string;
|
|
41
|
+
/**
|
|
42
|
+
* The ID of the tooltip renderer. Should be TOOLTIP_ID.
|
|
43
|
+
*/
|
|
44
|
+
'data-for': string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const DELAY_PREFERENCE = 'workbench.hover.delay';
|
|
48
|
+
|
|
49
|
+
@injectable()
|
|
50
|
+
export class TooltipServiceImpl extends ReactRenderer implements TooltipService {
|
|
51
|
+
|
|
52
|
+
@inject(CorePreferences)
|
|
53
|
+
protected readonly corePreferences: CorePreferences;
|
|
54
|
+
|
|
55
|
+
public readonly tooltipId: string;
|
|
56
|
+
protected rendered = false;
|
|
57
|
+
|
|
58
|
+
constructor(
|
|
59
|
+
@inject(RendererHost) @optional() host?: RendererHost
|
|
60
|
+
) {
|
|
61
|
+
super(host);
|
|
62
|
+
this.tooltipId = generateUuid();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@postConstruct()
|
|
66
|
+
protected init(): void {
|
|
67
|
+
this.toDispose.push(this.corePreferences.onPreferenceChanged(preference => {
|
|
68
|
+
if (preference.preferenceName === DELAY_PREFERENCE) {
|
|
69
|
+
this.update(true);
|
|
70
|
+
}
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public attachTo(host: HTMLElement): void {
|
|
75
|
+
host.appendChild(this.host);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
public update(fullRender = false): void {
|
|
79
|
+
if (fullRender || !this.rendered) {
|
|
80
|
+
this.render();
|
|
81
|
+
this.rendered = true;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
ReactTooltip.rebuild();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
protected override doRender(): React.ReactNode {
|
|
88
|
+
const hoverDelay = this.corePreferences.get(DELAY_PREFERENCE);
|
|
89
|
+
return <ReactTooltip id={this.tooltipId} className='theia-tooltip' html={true} delayShow={hoverDelay} />;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
public override dispose(): void {
|
|
93
|
+
this.toDispose.dispose();
|
|
94
|
+
super.dispose();
|
|
95
|
+
}
|
|
96
|
+
}
|