@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
|
@@ -1,353 +1,353 @@
|
|
|
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 fuzzy from 'fuzzy';
|
|
18
|
-
import { Event } from './event';
|
|
19
|
-
import { KeySequence } from './keys';
|
|
20
|
-
import { CancellationToken } from './cancellation';
|
|
21
|
-
|
|
22
|
-
export const quickPickServicePath = '/services/quickPick';
|
|
23
|
-
export const QuickPickService = Symbol('QuickPickService');
|
|
24
|
-
export interface QuickPickService {
|
|
25
|
-
show<T extends QuickPickItem>(items: Array<T | QuickPickSeparator>, options?: QuickPickOptions<T>): Promise<T | undefined>;
|
|
26
|
-
setItems<T extends QuickPickItem>(items: Array<T>): void;
|
|
27
|
-
hide(): void
|
|
28
|
-
readonly onDidHide: Event<void>;
|
|
29
|
-
readonly onDidAccept: Event<void>;
|
|
30
|
-
readonly onDidChangeValue: Event<{ quickPick: QuickPick<QuickPickItem>, filter: string }>;
|
|
31
|
-
readonly onDidChangeActive: Event<{ quickPick: QuickPick<QuickPickItem>, activeItems: Array<QuickPickItem> }>;
|
|
32
|
-
readonly onDidChangeSelection: Event<{ quickPick: QuickPick<QuickPickItem>, selectedItems: Array<QuickPickItem> }>;
|
|
33
|
-
readonly onDidTriggerButton: Event<QuickInputButtonHandle>;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface Match {
|
|
37
|
-
start: number;
|
|
38
|
-
end: number;
|
|
39
|
-
}
|
|
40
|
-
export interface QuickPickItemHighlights {
|
|
41
|
-
label?: Match[];
|
|
42
|
-
description?: Match[];
|
|
43
|
-
detail?: Match[];
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export interface QuickPickItem {
|
|
47
|
-
type?: 'item';
|
|
48
|
-
id?: string;
|
|
49
|
-
label: string;
|
|
50
|
-
meta?: string;
|
|
51
|
-
ariaLabel?: string;
|
|
52
|
-
description?: string;
|
|
53
|
-
detail?: string;
|
|
54
|
-
keySequence?: KeySequence;
|
|
55
|
-
iconClasses?: string[];
|
|
56
|
-
alwaysShow?: boolean;
|
|
57
|
-
highlights?: QuickPickItemHighlights;
|
|
58
|
-
buttons?: QuickInputButton[];
|
|
59
|
-
execute?: () => void;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export interface QuickPickSeparator {
|
|
63
|
-
type: 'separator';
|
|
64
|
-
label?: string;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export type QuickPickItemOrSeparator = QuickPickItem | QuickPickSeparator;
|
|
68
|
-
export type QuickPickInput<T = QuickPickItem> = T | QuickPickSeparator;
|
|
69
|
-
|
|
70
|
-
export namespace QuickPickItem {
|
|
71
|
-
export function is(item: QuickPickSeparator | QuickPickItem): item is QuickPickItem {
|
|
72
|
-
// if it's not a separator, it's an item
|
|
73
|
-
return item.type !== 'separator';
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export interface QuickPickSeparator {
|
|
78
|
-
type: 'separator';
|
|
79
|
-
label?: string;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export namespace QuickPickSeparator {
|
|
83
|
-
export function is(item: QuickPickItemOrSeparator): item is QuickPickSeparator {
|
|
84
|
-
return item.type === 'separator';
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export type QuickPicks = (QuickPickSeparator | QuickPickItem)[];
|
|
89
|
-
|
|
90
|
-
export interface QuickPickValue<V> extends QuickPickItem {
|
|
91
|
-
value: V
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export interface QuickInputButton {
|
|
95
|
-
iconClass?: string;
|
|
96
|
-
tooltip?: string;
|
|
97
|
-
/**
|
|
98
|
-
* Whether the button should be visible even when the user is not hovering.
|
|
99
|
-
*/
|
|
100
|
-
alwaysVisible?: boolean;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export interface QuickInputButtonHandle extends QuickInputButton {
|
|
104
|
-
handle: number; // index of where the button is in buttons array if QuickInputButton or -1 if QuickInputButtons.Back
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export enum QuickInputHideReason {
|
|
108
|
-
/**
|
|
109
|
-
* Focus was moved away from the input, but the user may not have explicitly closed it.
|
|
110
|
-
*/
|
|
111
|
-
Blur = 1,
|
|
112
|
-
/**
|
|
113
|
-
* An explicit close gesture, like striking the Escape key
|
|
114
|
-
*/
|
|
115
|
-
Gesture = 2,
|
|
116
|
-
/**
|
|
117
|
-
* Any other reason
|
|
118
|
-
*/
|
|
119
|
-
Other = 3,
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export interface QuickInput {
|
|
123
|
-
readonly onDidHide: Event<{ reason: QuickInputHideReason }>;
|
|
124
|
-
readonly onDispose: Event<void>;
|
|
125
|
-
title: string | undefined;
|
|
126
|
-
description: string | undefined;
|
|
127
|
-
step: number | undefined;
|
|
128
|
-
totalSteps: number | undefined;
|
|
129
|
-
enabled: boolean;
|
|
130
|
-
contextKey: string | undefined;
|
|
131
|
-
busy: boolean;
|
|
132
|
-
ignoreFocusOut: boolean;
|
|
133
|
-
show(): void;
|
|
134
|
-
hide(): void;
|
|
135
|
-
dispose(): void;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export interface InputBox extends QuickInput {
|
|
139
|
-
value: string | undefined;
|
|
140
|
-
valueSelection: Readonly<[number, number]> | undefined;
|
|
141
|
-
placeholder: string | undefined;
|
|
142
|
-
password: boolean;
|
|
143
|
-
readonly onDidChangeValue: Event<string>;
|
|
144
|
-
readonly onDidAccept: Event<void>;
|
|
145
|
-
buttons: ReadonlyArray<QuickInputButton>;
|
|
146
|
-
readonly onDidTriggerButton: Event<QuickInputButton>;
|
|
147
|
-
prompt: string | undefined;
|
|
148
|
-
validationMessage: string | undefined;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export interface QuickPick<T extends QuickPickItemOrSeparator> extends QuickInput {
|
|
152
|
-
value: string;
|
|
153
|
-
placeholder: string | undefined;
|
|
154
|
-
items: ReadonlyArray<T | QuickPickSeparator>;
|
|
155
|
-
activeItems: ReadonlyArray<T>;
|
|
156
|
-
selectedItems: ReadonlyArray<T>;
|
|
157
|
-
canSelectMany: boolean;
|
|
158
|
-
matchOnDescription: boolean;
|
|
159
|
-
matchOnDetail: boolean;
|
|
160
|
-
keepScrollPosition: boolean;
|
|
161
|
-
buttons: ReadonlyArray<QuickInputButton>;
|
|
162
|
-
readonly onDidAccept: Event<{ inBackground: boolean } | undefined>;
|
|
163
|
-
readonly onDidChangeValue: Event<string>;
|
|
164
|
-
readonly onDidTriggerButton: Event<QuickInputButton>;
|
|
165
|
-
readonly onDidTriggerItemButton: Event<QuickPickItemButtonEvent<QuickPickItem>>;
|
|
166
|
-
readonly onDidChangeActive: Event<T[]>;
|
|
167
|
-
readonly onDidChangeSelection: Event<T[]>;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
export interface PickOptions<T extends QuickPickItem> {
|
|
171
|
-
title?: string;
|
|
172
|
-
placeHolder?: string;
|
|
173
|
-
matchOnDescription?: boolean;
|
|
174
|
-
matchOnDetail?: boolean;
|
|
175
|
-
matchOnLabel?: boolean;
|
|
176
|
-
autoFocusOnList?: boolean;
|
|
177
|
-
ignoreFocusLost?: boolean;
|
|
178
|
-
canPickMany?: boolean;
|
|
179
|
-
contextKey?: string;
|
|
180
|
-
activeItem?: Promise<T> | T;
|
|
181
|
-
onDidFocus?: (entry: T) => void;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
export interface InputOptions {
|
|
185
|
-
title?: string;
|
|
186
|
-
value?: string;
|
|
187
|
-
valueSelection?: [number, number];
|
|
188
|
-
prompt?: string;
|
|
189
|
-
placeHolder?: string;
|
|
190
|
-
password?: boolean;
|
|
191
|
-
ignoreFocusLost?: boolean;
|
|
192
|
-
validateInput?(input: string): Promise<string | { content: string; severity: number; } | null | undefined> | undefined;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
export interface QuickPickItemButtonEvent<T extends QuickPickItemOrSeparator> {
|
|
196
|
-
button: QuickInputButton;
|
|
197
|
-
item: T;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
export interface QuickPickItemButtonContext<T extends QuickPickItemOrSeparator> extends QuickPickItemButtonEvent<T> {
|
|
201
|
-
removeItem(): void;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
export interface QuickPickOptions<T extends QuickPickItemOrSeparator> {
|
|
205
|
-
busy?: boolean;
|
|
206
|
-
enabled?: boolean;
|
|
207
|
-
title?: string;
|
|
208
|
-
description?: string;
|
|
209
|
-
value?: string;
|
|
210
|
-
filterValue?: (value: string) => string;
|
|
211
|
-
ariaLabel?: string;
|
|
212
|
-
buttons?: Array<QuickInputButton>;
|
|
213
|
-
placeholder?: string;
|
|
214
|
-
canAcceptInBackground?: boolean;
|
|
215
|
-
customButton?: boolean;
|
|
216
|
-
customLabel?: string;
|
|
217
|
-
customHover?: string;
|
|
218
|
-
canSelectMany?: boolean;
|
|
219
|
-
matchOnDescription?: boolean;
|
|
220
|
-
matchOnDetail?: boolean;
|
|
221
|
-
matchOnLabel?: boolean;
|
|
222
|
-
sortByLabel?: boolean;
|
|
223
|
-
keepScrollPosition?: boolean;
|
|
224
|
-
autoFocusOnList?: boolean;
|
|
225
|
-
ignoreFocusOut?: boolean;
|
|
226
|
-
valueSelection?: Readonly<[number, number]>;
|
|
227
|
-
validationMessage?: string;
|
|
228
|
-
hideInput?: boolean;
|
|
229
|
-
hideCheckAll?: boolean;
|
|
230
|
-
runIfSingle?: boolean
|
|
231
|
-
contextKey?: string;
|
|
232
|
-
activeItem?: T,
|
|
233
|
-
step?: number;
|
|
234
|
-
totalSteps?: number;
|
|
235
|
-
|
|
236
|
-
onDidAccept?: () => void,
|
|
237
|
-
onDidChangeActive?: (quickPick: QuickPick<T>, activeItems: Array<T>) => void,
|
|
238
|
-
onDidChangeSelection?: (quickPick: QuickPick<T>, selectedItems: Array<T>) => void,
|
|
239
|
-
onDidChangeValue?: (quickPick: QuickPick<T>, filter: string) => void,
|
|
240
|
-
onDidCustom?: () => void,
|
|
241
|
-
onDidHide?: () => void;
|
|
242
|
-
onDidTriggerButton?: (button: QuickInputButton) => void,
|
|
243
|
-
onDidTriggerItemButton?: (ItemButtonEvent: QuickPickItemButtonContext<T>) => void
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
export const quickInputServicePath = '/services/quickInput';
|
|
247
|
-
export const QuickInputService = Symbol('QuickInputService');
|
|
248
|
-
export interface QuickInputService {
|
|
249
|
-
readonly backButton: QuickInputButton;
|
|
250
|
-
readonly onShow: Event<void>;
|
|
251
|
-
readonly onHide: Event<void>;
|
|
252
|
-
open(filter: string): void;
|
|
253
|
-
createInputBox(): InputBox;
|
|
254
|
-
input(options?: InputOptions, token?: CancellationToken): Promise<string | undefined>;
|
|
255
|
-
pick<T extends QuickPickItem>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[],
|
|
256
|
-
options?: PickOptions<T> & { canPickMany: true }, token?: CancellationToken): Promise<T[] | undefined>;
|
|
257
|
-
pick<T extends QuickPickItem>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[],
|
|
258
|
-
options?: PickOptions<T> & { canPickMany: false }, token?: CancellationToken): Promise<T | undefined>;
|
|
259
|
-
pick<T extends QuickPickItem>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[],
|
|
260
|
-
options?: Omit<PickOptions<T>, 'canPickMany'>, token?: CancellationToken): Promise<T | undefined>;
|
|
261
|
-
|
|
262
|
-
showQuickPick<T extends QuickPickItem>(items: Array<T | QuickPickSeparator>, options?: QuickPickOptions<T>): Promise<T | undefined>;
|
|
263
|
-
hide(): void;
|
|
264
|
-
/**
|
|
265
|
-
* Provides raw access to the quick pick controller.
|
|
266
|
-
*/
|
|
267
|
-
createQuickPick<T extends QuickPickItem>(): QuickPick<T>;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Filter the list of quick pick items based on the provided filter.
|
|
272
|
-
* Items are filtered based on if:
|
|
273
|
-
* - their `label` satisfies the filter using `fuzzy`.
|
|
274
|
-
* - their `description` satisfies the filter using `fuzzy`.
|
|
275
|
-
* - their `detail` satisfies the filter using `fuzzy`.
|
|
276
|
-
* Filtered items are also updated to display proper highlights based on how they were filtered.
|
|
277
|
-
* @param items the list of quick pick items.
|
|
278
|
-
* @param filter the filter to search for.
|
|
279
|
-
* @returns the list of quick pick items that satisfy the filter.
|
|
280
|
-
*/
|
|
281
|
-
export function filterItems(items: QuickPickItemOrSeparator[], filter: string): QuickPickItemOrSeparator[] {
|
|
282
|
-
filter = filter.trim().toLowerCase();
|
|
283
|
-
|
|
284
|
-
if (filter.length === 0) {
|
|
285
|
-
for (const item of items) {
|
|
286
|
-
if (item.type !== 'separator') {
|
|
287
|
-
item.highlights = undefined; // reset highlights from previous filtering.
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
return items;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
const filteredItems: QuickPickItemOrSeparator[] = [];
|
|
294
|
-
for (const item of items) {
|
|
295
|
-
if (item.type === 'separator') {
|
|
296
|
-
filteredItems.push(item);
|
|
297
|
-
} else if (
|
|
298
|
-
fuzzy.test(filter, item.label) ||
|
|
299
|
-
(item.description && fuzzy.test(filter, item.description)) ||
|
|
300
|
-
(item.detail && fuzzy.test(filter, item.detail))
|
|
301
|
-
) {
|
|
302
|
-
item.highlights = {
|
|
303
|
-
label: findMatches(item.label, filter),
|
|
304
|
-
description: item.description ? findMatches(item.description, filter) : undefined,
|
|
305
|
-
detail: item.detail ? findMatches(item.detail, filter) : undefined
|
|
306
|
-
};
|
|
307
|
-
filteredItems.push(item);
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
return filteredItems;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Find match highlights when testing a word against a pattern.
|
|
315
|
-
* @param word the word to test.
|
|
316
|
-
* @param pattern the word to match against.
|
|
317
|
-
* @returns the list of highlights if present.
|
|
318
|
-
*/
|
|
319
|
-
export function findMatches(word: string, pattern: string): Array<{ start: number, end: number }> | undefined {
|
|
320
|
-
word = word.toLocaleLowerCase();
|
|
321
|
-
pattern = pattern.toLocaleLowerCase();
|
|
322
|
-
|
|
323
|
-
if (pattern.trim().length === 0) {
|
|
324
|
-
return undefined;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
const delimiter = '\u0000'; // null byte that shouldn't appear in the input and is used to denote matches.
|
|
328
|
-
const matchResult = fuzzy.match(pattern.replace(/\u0000/gu, ''), word, { pre: delimiter, post: delimiter });
|
|
329
|
-
if (!matchResult) {
|
|
330
|
-
return undefined;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
const match = matchResult.rendered;
|
|
334
|
-
const highlights: { start: number, end: number }[] = [];
|
|
335
|
-
|
|
336
|
-
let lastIndex = 0;
|
|
337
|
-
/** We need to account for the extra markers by removing them from the range */
|
|
338
|
-
let offset = 0;
|
|
339
|
-
|
|
340
|
-
while (true) {
|
|
341
|
-
const start = match.indexOf(delimiter, lastIndex);
|
|
342
|
-
if (start === -1) { break; }
|
|
343
|
-
const end = match.indexOf(delimiter, start + 1);
|
|
344
|
-
if (end === -1) { break; }
|
|
345
|
-
highlights.push({
|
|
346
|
-
start: start - offset++,
|
|
347
|
-
end: end - offset++
|
|
348
|
-
});
|
|
349
|
-
lastIndex = end + 1;
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
return highlights.length > 0 ? highlights : undefined;
|
|
353
|
-
}
|
|
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 fuzzy from 'fuzzy';
|
|
18
|
+
import { Event } from './event';
|
|
19
|
+
import { KeySequence } from './keys';
|
|
20
|
+
import { CancellationToken } from './cancellation';
|
|
21
|
+
|
|
22
|
+
export const quickPickServicePath = '/services/quickPick';
|
|
23
|
+
export const QuickPickService = Symbol('QuickPickService');
|
|
24
|
+
export interface QuickPickService {
|
|
25
|
+
show<T extends QuickPickItem>(items: Array<T | QuickPickSeparator>, options?: QuickPickOptions<T>): Promise<T | undefined>;
|
|
26
|
+
setItems<T extends QuickPickItem>(items: Array<T>): void;
|
|
27
|
+
hide(): void
|
|
28
|
+
readonly onDidHide: Event<void>;
|
|
29
|
+
readonly onDidAccept: Event<void>;
|
|
30
|
+
readonly onDidChangeValue: Event<{ quickPick: QuickPick<QuickPickItem>, filter: string }>;
|
|
31
|
+
readonly onDidChangeActive: Event<{ quickPick: QuickPick<QuickPickItem>, activeItems: Array<QuickPickItem> }>;
|
|
32
|
+
readonly onDidChangeSelection: Event<{ quickPick: QuickPick<QuickPickItem>, selectedItems: Array<QuickPickItem> }>;
|
|
33
|
+
readonly onDidTriggerButton: Event<QuickInputButtonHandle>;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface Match {
|
|
37
|
+
start: number;
|
|
38
|
+
end: number;
|
|
39
|
+
}
|
|
40
|
+
export interface QuickPickItemHighlights {
|
|
41
|
+
label?: Match[];
|
|
42
|
+
description?: Match[];
|
|
43
|
+
detail?: Match[];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface QuickPickItem {
|
|
47
|
+
type?: 'item';
|
|
48
|
+
id?: string;
|
|
49
|
+
label: string;
|
|
50
|
+
meta?: string;
|
|
51
|
+
ariaLabel?: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
detail?: string;
|
|
54
|
+
keySequence?: KeySequence;
|
|
55
|
+
iconClasses?: string[];
|
|
56
|
+
alwaysShow?: boolean;
|
|
57
|
+
highlights?: QuickPickItemHighlights;
|
|
58
|
+
buttons?: QuickInputButton[];
|
|
59
|
+
execute?: () => void;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface QuickPickSeparator {
|
|
63
|
+
type: 'separator';
|
|
64
|
+
label?: string;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export type QuickPickItemOrSeparator = QuickPickItem | QuickPickSeparator;
|
|
68
|
+
export type QuickPickInput<T = QuickPickItem> = T | QuickPickSeparator;
|
|
69
|
+
|
|
70
|
+
export namespace QuickPickItem {
|
|
71
|
+
export function is(item: QuickPickSeparator | QuickPickItem): item is QuickPickItem {
|
|
72
|
+
// if it's not a separator, it's an item
|
|
73
|
+
return item.type !== 'separator';
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface QuickPickSeparator {
|
|
78
|
+
type: 'separator';
|
|
79
|
+
label?: string;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export namespace QuickPickSeparator {
|
|
83
|
+
export function is(item: QuickPickItemOrSeparator): item is QuickPickSeparator {
|
|
84
|
+
return item.type === 'separator';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export type QuickPicks = (QuickPickSeparator | QuickPickItem)[];
|
|
89
|
+
|
|
90
|
+
export interface QuickPickValue<V> extends QuickPickItem {
|
|
91
|
+
value: V
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export interface QuickInputButton {
|
|
95
|
+
iconClass?: string;
|
|
96
|
+
tooltip?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Whether the button should be visible even when the user is not hovering.
|
|
99
|
+
*/
|
|
100
|
+
alwaysVisible?: boolean;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface QuickInputButtonHandle extends QuickInputButton {
|
|
104
|
+
handle: number; // index of where the button is in buttons array if QuickInputButton or -1 if QuickInputButtons.Back
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export enum QuickInputHideReason {
|
|
108
|
+
/**
|
|
109
|
+
* Focus was moved away from the input, but the user may not have explicitly closed it.
|
|
110
|
+
*/
|
|
111
|
+
Blur = 1,
|
|
112
|
+
/**
|
|
113
|
+
* An explicit close gesture, like striking the Escape key
|
|
114
|
+
*/
|
|
115
|
+
Gesture = 2,
|
|
116
|
+
/**
|
|
117
|
+
* Any other reason
|
|
118
|
+
*/
|
|
119
|
+
Other = 3,
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface QuickInput {
|
|
123
|
+
readonly onDidHide: Event<{ reason: QuickInputHideReason }>;
|
|
124
|
+
readonly onDispose: Event<void>;
|
|
125
|
+
title: string | undefined;
|
|
126
|
+
description: string | undefined;
|
|
127
|
+
step: number | undefined;
|
|
128
|
+
totalSteps: number | undefined;
|
|
129
|
+
enabled: boolean;
|
|
130
|
+
contextKey: string | undefined;
|
|
131
|
+
busy: boolean;
|
|
132
|
+
ignoreFocusOut: boolean;
|
|
133
|
+
show(): void;
|
|
134
|
+
hide(): void;
|
|
135
|
+
dispose(): void;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface InputBox extends QuickInput {
|
|
139
|
+
value: string | undefined;
|
|
140
|
+
valueSelection: Readonly<[number, number]> | undefined;
|
|
141
|
+
placeholder: string | undefined;
|
|
142
|
+
password: boolean;
|
|
143
|
+
readonly onDidChangeValue: Event<string>;
|
|
144
|
+
readonly onDidAccept: Event<void>;
|
|
145
|
+
buttons: ReadonlyArray<QuickInputButton>;
|
|
146
|
+
readonly onDidTriggerButton: Event<QuickInputButton>;
|
|
147
|
+
prompt: string | undefined;
|
|
148
|
+
validationMessage: string | undefined;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export interface QuickPick<T extends QuickPickItemOrSeparator> extends QuickInput {
|
|
152
|
+
value: string;
|
|
153
|
+
placeholder: string | undefined;
|
|
154
|
+
items: ReadonlyArray<T | QuickPickSeparator>;
|
|
155
|
+
activeItems: ReadonlyArray<T>;
|
|
156
|
+
selectedItems: ReadonlyArray<T>;
|
|
157
|
+
canSelectMany: boolean;
|
|
158
|
+
matchOnDescription: boolean;
|
|
159
|
+
matchOnDetail: boolean;
|
|
160
|
+
keepScrollPosition: boolean;
|
|
161
|
+
buttons: ReadonlyArray<QuickInputButton>;
|
|
162
|
+
readonly onDidAccept: Event<{ inBackground: boolean } | undefined>;
|
|
163
|
+
readonly onDidChangeValue: Event<string>;
|
|
164
|
+
readonly onDidTriggerButton: Event<QuickInputButton>;
|
|
165
|
+
readonly onDidTriggerItemButton: Event<QuickPickItemButtonEvent<QuickPickItem>>;
|
|
166
|
+
readonly onDidChangeActive: Event<T[]>;
|
|
167
|
+
readonly onDidChangeSelection: Event<T[]>;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export interface PickOptions<T extends QuickPickItem> {
|
|
171
|
+
title?: string;
|
|
172
|
+
placeHolder?: string;
|
|
173
|
+
matchOnDescription?: boolean;
|
|
174
|
+
matchOnDetail?: boolean;
|
|
175
|
+
matchOnLabel?: boolean;
|
|
176
|
+
autoFocusOnList?: boolean;
|
|
177
|
+
ignoreFocusLost?: boolean;
|
|
178
|
+
canPickMany?: boolean;
|
|
179
|
+
contextKey?: string;
|
|
180
|
+
activeItem?: Promise<T> | T;
|
|
181
|
+
onDidFocus?: (entry: T) => void;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export interface InputOptions {
|
|
185
|
+
title?: string;
|
|
186
|
+
value?: string;
|
|
187
|
+
valueSelection?: [number, number];
|
|
188
|
+
prompt?: string;
|
|
189
|
+
placeHolder?: string;
|
|
190
|
+
password?: boolean;
|
|
191
|
+
ignoreFocusLost?: boolean;
|
|
192
|
+
validateInput?(input: string): Promise<string | { content: string; severity: number; } | null | undefined> | undefined;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export interface QuickPickItemButtonEvent<T extends QuickPickItemOrSeparator> {
|
|
196
|
+
button: QuickInputButton;
|
|
197
|
+
item: T;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export interface QuickPickItemButtonContext<T extends QuickPickItemOrSeparator> extends QuickPickItemButtonEvent<T> {
|
|
201
|
+
removeItem(): void;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export interface QuickPickOptions<T extends QuickPickItemOrSeparator> {
|
|
205
|
+
busy?: boolean;
|
|
206
|
+
enabled?: boolean;
|
|
207
|
+
title?: string;
|
|
208
|
+
description?: string;
|
|
209
|
+
value?: string;
|
|
210
|
+
filterValue?: (value: string) => string;
|
|
211
|
+
ariaLabel?: string;
|
|
212
|
+
buttons?: Array<QuickInputButton>;
|
|
213
|
+
placeholder?: string;
|
|
214
|
+
canAcceptInBackground?: boolean;
|
|
215
|
+
customButton?: boolean;
|
|
216
|
+
customLabel?: string;
|
|
217
|
+
customHover?: string;
|
|
218
|
+
canSelectMany?: boolean;
|
|
219
|
+
matchOnDescription?: boolean;
|
|
220
|
+
matchOnDetail?: boolean;
|
|
221
|
+
matchOnLabel?: boolean;
|
|
222
|
+
sortByLabel?: boolean;
|
|
223
|
+
keepScrollPosition?: boolean;
|
|
224
|
+
autoFocusOnList?: boolean;
|
|
225
|
+
ignoreFocusOut?: boolean;
|
|
226
|
+
valueSelection?: Readonly<[number, number]>;
|
|
227
|
+
validationMessage?: string;
|
|
228
|
+
hideInput?: boolean;
|
|
229
|
+
hideCheckAll?: boolean;
|
|
230
|
+
runIfSingle?: boolean
|
|
231
|
+
contextKey?: string;
|
|
232
|
+
activeItem?: T,
|
|
233
|
+
step?: number;
|
|
234
|
+
totalSteps?: number;
|
|
235
|
+
|
|
236
|
+
onDidAccept?: () => void,
|
|
237
|
+
onDidChangeActive?: (quickPick: QuickPick<T>, activeItems: Array<T>) => void,
|
|
238
|
+
onDidChangeSelection?: (quickPick: QuickPick<T>, selectedItems: Array<T>) => void,
|
|
239
|
+
onDidChangeValue?: (quickPick: QuickPick<T>, filter: string) => void,
|
|
240
|
+
onDidCustom?: () => void,
|
|
241
|
+
onDidHide?: () => void;
|
|
242
|
+
onDidTriggerButton?: (button: QuickInputButton) => void,
|
|
243
|
+
onDidTriggerItemButton?: (ItemButtonEvent: QuickPickItemButtonContext<T>) => void
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export const quickInputServicePath = '/services/quickInput';
|
|
247
|
+
export const QuickInputService = Symbol('QuickInputService');
|
|
248
|
+
export interface QuickInputService {
|
|
249
|
+
readonly backButton: QuickInputButton;
|
|
250
|
+
readonly onShow: Event<void>;
|
|
251
|
+
readonly onHide: Event<void>;
|
|
252
|
+
open(filter: string): void;
|
|
253
|
+
createInputBox(): InputBox;
|
|
254
|
+
input(options?: InputOptions, token?: CancellationToken): Promise<string | undefined>;
|
|
255
|
+
pick<T extends QuickPickItem>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[],
|
|
256
|
+
options?: PickOptions<T> & { canPickMany: true }, token?: CancellationToken): Promise<T[] | undefined>;
|
|
257
|
+
pick<T extends QuickPickItem>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[],
|
|
258
|
+
options?: PickOptions<T> & { canPickMany: false }, token?: CancellationToken): Promise<T | undefined>;
|
|
259
|
+
pick<T extends QuickPickItem>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[],
|
|
260
|
+
options?: Omit<PickOptions<T>, 'canPickMany'>, token?: CancellationToken): Promise<T | undefined>;
|
|
261
|
+
|
|
262
|
+
showQuickPick<T extends QuickPickItem>(items: Array<T | QuickPickSeparator>, options?: QuickPickOptions<T>): Promise<T | undefined>;
|
|
263
|
+
hide(): void;
|
|
264
|
+
/**
|
|
265
|
+
* Provides raw access to the quick pick controller.
|
|
266
|
+
*/
|
|
267
|
+
createQuickPick<T extends QuickPickItem>(): QuickPick<T>;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Filter the list of quick pick items based on the provided filter.
|
|
272
|
+
* Items are filtered based on if:
|
|
273
|
+
* - their `label` satisfies the filter using `fuzzy`.
|
|
274
|
+
* - their `description` satisfies the filter using `fuzzy`.
|
|
275
|
+
* - their `detail` satisfies the filter using `fuzzy`.
|
|
276
|
+
* Filtered items are also updated to display proper highlights based on how they were filtered.
|
|
277
|
+
* @param items the list of quick pick items.
|
|
278
|
+
* @param filter the filter to search for.
|
|
279
|
+
* @returns the list of quick pick items that satisfy the filter.
|
|
280
|
+
*/
|
|
281
|
+
export function filterItems(items: QuickPickItemOrSeparator[], filter: string): QuickPickItemOrSeparator[] {
|
|
282
|
+
filter = filter.trim().toLowerCase();
|
|
283
|
+
|
|
284
|
+
if (filter.length === 0) {
|
|
285
|
+
for (const item of items) {
|
|
286
|
+
if (item.type !== 'separator') {
|
|
287
|
+
item.highlights = undefined; // reset highlights from previous filtering.
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return items;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
const filteredItems: QuickPickItemOrSeparator[] = [];
|
|
294
|
+
for (const item of items) {
|
|
295
|
+
if (item.type === 'separator') {
|
|
296
|
+
filteredItems.push(item);
|
|
297
|
+
} else if (
|
|
298
|
+
fuzzy.test(filter, item.label) ||
|
|
299
|
+
(item.description && fuzzy.test(filter, item.description)) ||
|
|
300
|
+
(item.detail && fuzzy.test(filter, item.detail))
|
|
301
|
+
) {
|
|
302
|
+
item.highlights = {
|
|
303
|
+
label: findMatches(item.label, filter),
|
|
304
|
+
description: item.description ? findMatches(item.description, filter) : undefined,
|
|
305
|
+
detail: item.detail ? findMatches(item.detail, filter) : undefined
|
|
306
|
+
};
|
|
307
|
+
filteredItems.push(item);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return filteredItems;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Find match highlights when testing a word against a pattern.
|
|
315
|
+
* @param word the word to test.
|
|
316
|
+
* @param pattern the word to match against.
|
|
317
|
+
* @returns the list of highlights if present.
|
|
318
|
+
*/
|
|
319
|
+
export function findMatches(word: string, pattern: string): Array<{ start: number, end: number }> | undefined {
|
|
320
|
+
word = word.toLocaleLowerCase();
|
|
321
|
+
pattern = pattern.toLocaleLowerCase();
|
|
322
|
+
|
|
323
|
+
if (pattern.trim().length === 0) {
|
|
324
|
+
return undefined;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
const delimiter = '\u0000'; // null byte that shouldn't appear in the input and is used to denote matches.
|
|
328
|
+
const matchResult = fuzzy.match(pattern.replace(/\u0000/gu, ''), word, { pre: delimiter, post: delimiter });
|
|
329
|
+
if (!matchResult) {
|
|
330
|
+
return undefined;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
const match = matchResult.rendered;
|
|
334
|
+
const highlights: { start: number, end: number }[] = [];
|
|
335
|
+
|
|
336
|
+
let lastIndex = 0;
|
|
337
|
+
/** We need to account for the extra markers by removing them from the range */
|
|
338
|
+
let offset = 0;
|
|
339
|
+
|
|
340
|
+
while (true) {
|
|
341
|
+
const start = match.indexOf(delimiter, lastIndex);
|
|
342
|
+
if (start === -1) { break; }
|
|
343
|
+
const end = match.indexOf(delimiter, start + 1);
|
|
344
|
+
if (end === -1) { break; }
|
|
345
|
+
highlights.push({
|
|
346
|
+
start: start - offset++,
|
|
347
|
+
end: end - offset++
|
|
348
|
+
});
|
|
349
|
+
lastIndex = end + 1;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
return highlights.length > 0 ? highlights : undefined;
|
|
353
|
+
}
|