{"version":3,"file":"static/js/3742_24044aba7a1fde5ef65a.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/opener/browser/link.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/opener/common/opener.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/progress/common/progress.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/pickerQuickAccess.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/commandsQuickAccess.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/helpQuickAccess.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickAccess.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInputUtils.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInput.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInputBox.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInputTree.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInputActions.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInputController.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInputService.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/common/quickAccess.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/quickinput/common/quickInput.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/registry/common/platform.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/platform/severityIcon/browser/severityIcon.js"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { $, append, EventHelper } from '../../../base/browser/dom.js';\nimport { DomEmitter } from '../../../base/browser/event.js';\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\nimport { EventType as TouchEventType, Gesture } from '../../../base/browser/touch.js';\nimport { Event } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { IOpenerService } from '../common/opener.js';\nimport './link.css';\nimport { getDefaultHoverDelegate } from '../../../base/browser/ui/hover/hoverDelegateFactory.js';\nimport { IHoverService } from '../../hover/browser/hover.js';\nlet Link = class Link extends Disposable {\n get enabled() {\n return this._enabled;\n }\n set enabled(enabled) {\n if (enabled) {\n this.el.setAttribute('aria-disabled', 'false');\n this.el.tabIndex = 0;\n this.el.style.pointerEvents = 'auto';\n this.el.style.opacity = '1';\n this.el.style.cursor = 'pointer';\n this._enabled = false;\n }\n else {\n this.el.setAttribute('aria-disabled', 'true');\n this.el.tabIndex = -1;\n this.el.style.pointerEvents = 'none';\n this.el.style.opacity = '0.4';\n this.el.style.cursor = 'default';\n this._enabled = true;\n }\n this._enabled = enabled;\n }\n constructor(container, _link, options = {}, _hoverService, openerService) {\n var _a, _b;\n super();\n this._link = _link;\n this._hoverService = _hoverService;\n this._enabled = true;\n this.el = append(container, $('a.monaco-link', {\n tabIndex: (_a = _link.tabIndex) !== null && _a !== void 0 ? _a : 0,\n href: _link.href,\n }, _link.label));\n this.hoverDelegate = (_b = options.hoverDelegate) !== null && _b !== void 0 ? _b : getDefaultHoverDelegate('mouse');\n this.setTooltip(_link.title);\n this.el.setAttribute('role', 'button');\n const onClickEmitter = this._register(new DomEmitter(this.el, 'click'));\n const onKeyPress = this._register(new DomEmitter(this.el, 'keypress'));\n const onEnterPress = Event.chain(onKeyPress.event, $ => $.map(e => new StandardKeyboardEvent(e))\n .filter(e => e.keyCode === 3 /* KeyCode.Enter */));\n const onTap = this._register(new DomEmitter(this.el, TouchEventType.Tap)).event;\n this._register(Gesture.addTarget(this.el));\n const onOpen = Event.any(onClickEmitter.event, onEnterPress, onTap);\n this._register(onOpen(e => {\n if (!this.enabled) {\n return;\n }\n EventHelper.stop(e, true);\n if (options === null || options === void 0 ? void 0 : options.opener) {\n options.opener(this._link.href);\n }\n else {\n openerService.open(this._link.href, { allowCommands: true });\n }\n }));\n this.enabled = true;\n }\n setTooltip(title) {\n if (this.hoverDelegate.showNativeHover) {\n this.el.title = title !== null && title !== void 0 ? title : '';\n }\n else if (!this.hover && title) {\n this.hover = this._register(this._hoverService.setupUpdatableHover(this.hoverDelegate, this.el, title));\n }\n else if (this.hover) {\n this.hover.update(title);\n }\n }\n};\nLink = __decorate([\n __param(3, IHoverService),\n __param(4, IOpenerService)\n], Link);\nexport { Link };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IOpenerService = createDecorator('openerService');\n/**\n * file:///some/file.js#73\n * file:///some/file.js#L73\n * file:///some/file.js#73,84\n * file:///some/file.js#L73,84\n * file:///some/file.js#73-83\n * file:///some/file.js#L73-L83\n * file:///some/file.js#73,84-83,52\n * file:///some/file.js#L73,84-L83,52\n */\nexport function extractSelection(uri) {\n let selection = undefined;\n const match = /^L?(\\d+)(?:,(\\d+))?(-L?(\\d+)(?:,(\\d+))?)?/.exec(uri.fragment);\n if (match) {\n selection = {\n startLineNumber: parseInt(match[1]),\n startColumn: match[2] ? parseInt(match[2]) : 1,\n endLineNumber: match[4] ? parseInt(match[4]) : undefined,\n endColumn: match[4] ? (match[5] ? parseInt(match[5]) : 1) : undefined\n };\n uri = uri.with({ fragment: '' });\n }\n return { selection, uri };\n}\n","import { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IProgressService = createDecorator('progressService');\nexport const emptyProgressRunner = Object.freeze({\n total() { },\n worked() { },\n done() { }\n});\nexport class Progress {\n constructor(callback) {\n this.callback = callback;\n }\n report(item) {\n this._value = item;\n this.callback(this._value);\n }\n}\nProgress.None = Object.freeze({ report() { } });\nexport const IEditorProgressService = createDecorator('editorProgressService');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { timeout } from '../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\nimport { Disposable, DisposableStore, MutableDisposable } from '../../../base/common/lifecycle.js';\nimport { isFunction } from '../../../base/common/types.js';\nexport var TriggerAction;\n(function (TriggerAction) {\n /**\n * Do nothing after the button was clicked.\n */\n TriggerAction[TriggerAction[\"NO_ACTION\"] = 0] = \"NO_ACTION\";\n /**\n * Close the picker.\n */\n TriggerAction[TriggerAction[\"CLOSE_PICKER\"] = 1] = \"CLOSE_PICKER\";\n /**\n * Update the results of the picker.\n */\n TriggerAction[TriggerAction[\"REFRESH_PICKER\"] = 2] = \"REFRESH_PICKER\";\n /**\n * Remove the item from the picker.\n */\n TriggerAction[TriggerAction[\"REMOVE_ITEM\"] = 3] = \"REMOVE_ITEM\";\n})(TriggerAction || (TriggerAction = {}));\nfunction isPicksWithActive(obj) {\n const candidate = obj;\n return Array.isArray(candidate.items);\n}\nfunction isFastAndSlowPicks(obj) {\n const candidate = obj;\n return !!candidate.picks && candidate.additionalPicks instanceof Promise;\n}\nexport class PickerQuickAccessProvider extends Disposable {\n constructor(prefix, options) {\n super();\n this.prefix = prefix;\n this.options = options;\n }\n provide(picker, token, runOptions) {\n var _a;\n const disposables = new DisposableStore();\n // Apply options if any\n picker.canAcceptInBackground = !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.canAcceptInBackground);\n // Disable filtering & sorting, we control the results\n picker.matchOnLabel = picker.matchOnDescription = picker.matchOnDetail = picker.sortByLabel = false;\n // Set initial picks and update on type\n let picksCts = undefined;\n const picksDisposable = disposables.add(new MutableDisposable());\n const updatePickerItems = async () => {\n var _a;\n const picksDisposables = picksDisposable.value = new DisposableStore();\n // Cancel any previous ask for picks and busy\n picksCts === null || picksCts === void 0 ? void 0 : picksCts.dispose(true);\n picker.busy = false;\n // Create new cancellation source for this run\n picksCts = new CancellationTokenSource(token);\n // Collect picks and support both long running and short or combined\n const picksToken = picksCts.token;\n let picksFilter = picker.value.substring(this.prefix.length);\n if (!((_a = this.options) === null || _a === void 0 ? void 0 : _a.shouldSkipTrimPickFilter)) {\n picksFilter = picksFilter.trim();\n }\n const providedPicks = this._getPicks(picksFilter, picksDisposables, picksToken, runOptions);\n const applyPicks = (picks, skipEmpty) => {\n var _a;\n let items;\n let activeItem = undefined;\n if (isPicksWithActive(picks)) {\n items = picks.items;\n activeItem = picks.active;\n }\n else {\n items = picks;\n }\n if (items.length === 0) {\n if (skipEmpty) {\n return false;\n }\n // We show the no results pick if we have no input to prevent completely empty pickers #172613\n if ((picksFilter.length > 0 || picker.hideInput) && ((_a = this.options) === null || _a === void 0 ? void 0 : _a.noResultsPick)) {\n if (isFunction(this.options.noResultsPick)) {\n items = [this.options.noResultsPick(picksFilter)];\n }\n else {\n items = [this.options.noResultsPick];\n }\n }\n }\n picker.items = items;\n if (activeItem) {\n picker.activeItems = [activeItem];\n }\n return true;\n };\n const applyFastAndSlowPicks = async (fastAndSlowPicks) => {\n let fastPicksApplied = false;\n let slowPicksApplied = false;\n await Promise.all([\n // Fast Picks: if `mergeDelay` is configured, in order to reduce\n // amount of flicker, we race against the slow picks over some delay\n // and then set the fast picks.\n // If the slow picks are faster, we reduce the flicker by only\n // setting the items once.\n (async () => {\n if (typeof fastAndSlowPicks.mergeDelay === 'number') {\n await timeout(fastAndSlowPicks.mergeDelay);\n if (picksToken.isCancellationRequested) {\n return;\n }\n }\n if (!slowPicksApplied) {\n fastPicksApplied = applyPicks(fastAndSlowPicks.picks, true /* skip over empty to reduce flicker */);\n }\n })(),\n // Slow Picks: we await the slow picks and then set them at\n // once together with the fast picks, but only if we actually\n // have additional results.\n (async () => {\n picker.busy = true;\n try {\n const awaitedAdditionalPicks = await fastAndSlowPicks.additionalPicks;\n if (picksToken.isCancellationRequested) {\n return;\n }\n let picks;\n let activePick = undefined;\n if (isPicksWithActive(fastAndSlowPicks.picks)) {\n picks = fastAndSlowPicks.picks.items;\n activePick = fastAndSlowPicks.picks.active;\n }\n else {\n picks = fastAndSlowPicks.picks;\n }\n let additionalPicks;\n let additionalActivePick = undefined;\n if (isPicksWithActive(awaitedAdditionalPicks)) {\n additionalPicks = awaitedAdditionalPicks.items;\n additionalActivePick = awaitedAdditionalPicks.active;\n }\n else {\n additionalPicks = awaitedAdditionalPicks;\n }\n if (additionalPicks.length > 0 || !fastPicksApplied) {\n // If we do not have any activePick or additionalActivePick\n // we try to preserve the currently active pick from the\n // fast results. This fixes an issue where the user might\n // have made a pick active before the additional results\n // kick in.\n // See https://github.com/microsoft/vscode/issues/102480\n let fallbackActivePick = undefined;\n if (!activePick && !additionalActivePick) {\n const fallbackActivePickCandidate = picker.activeItems[0];\n if (fallbackActivePickCandidate && picks.indexOf(fallbackActivePickCandidate) !== -1) {\n fallbackActivePick = fallbackActivePickCandidate;\n }\n }\n applyPicks({\n items: [...picks, ...additionalPicks],\n active: activePick || additionalActivePick || fallbackActivePick\n });\n }\n }\n finally {\n if (!picksToken.isCancellationRequested) {\n picker.busy = false;\n }\n slowPicksApplied = true;\n }\n })()\n ]);\n };\n // No Picks\n if (providedPicks === null) {\n // Ignore\n }\n // Fast and Slow Picks\n else if (isFastAndSlowPicks(providedPicks)) {\n await applyFastAndSlowPicks(providedPicks);\n }\n // Fast Picks\n else if (!(providedPicks instanceof Promise)) {\n applyPicks(providedPicks);\n }\n // Slow Picks\n else {\n picker.busy = true;\n try {\n const awaitedPicks = await providedPicks;\n if (picksToken.isCancellationRequested) {\n return;\n }\n if (isFastAndSlowPicks(awaitedPicks)) {\n await applyFastAndSlowPicks(awaitedPicks);\n }\n else {\n applyPicks(awaitedPicks);\n }\n }\n finally {\n if (!picksToken.isCancellationRequested) {\n picker.busy = false;\n }\n }\n }\n };\n disposables.add(picker.onDidChangeValue(() => updatePickerItems()));\n updatePickerItems();\n // Accept the pick on accept and hide picker\n disposables.add(picker.onDidAccept(event => {\n var _a;\n if (runOptions === null || runOptions === void 0 ? void 0 : runOptions.handleAccept) {\n if (!event.inBackground) {\n picker.hide(); // hide picker unless we accept in background\n }\n (_a = runOptions.handleAccept) === null || _a === void 0 ? void 0 : _a.call(runOptions, picker.activeItems[0]);\n return;\n }\n const [item] = picker.selectedItems;\n if (typeof (item === null || item === void 0 ? void 0 : item.accept) === 'function') {\n if (!event.inBackground) {\n picker.hide(); // hide picker unless we accept in background\n }\n item.accept(picker.keyMods, event);\n }\n }));\n const buttonTrigger = async (button, item) => {\n var _a, _b;\n if (typeof item.trigger !== 'function') {\n return;\n }\n const buttonIndex = (_b = (_a = item.buttons) === null || _a === void 0 ? void 0 : _a.indexOf(button)) !== null && _b !== void 0 ? _b : -1;\n if (buttonIndex >= 0) {\n const result = item.trigger(buttonIndex, picker.keyMods);\n const action = (typeof result === 'number') ? result : await result;\n if (token.isCancellationRequested) {\n return;\n }\n switch (action) {\n case TriggerAction.NO_ACTION:\n break;\n case TriggerAction.CLOSE_PICKER:\n picker.hide();\n break;\n case TriggerAction.REFRESH_PICKER:\n updatePickerItems();\n break;\n case TriggerAction.REMOVE_ITEM: {\n const index = picker.items.indexOf(item);\n if (index !== -1) {\n const items = picker.items.slice();\n const removed = items.splice(index, 1);\n const activeItems = picker.activeItems.filter(activeItem => activeItem !== removed[0]);\n const keepScrollPositionBefore = picker.keepScrollPosition;\n picker.keepScrollPosition = true;\n picker.items = items;\n if (activeItems) {\n picker.activeItems = activeItems;\n }\n picker.keepScrollPosition = keepScrollPositionBefore;\n }\n break;\n }\n }\n }\n };\n // Trigger the pick with button index if button triggered\n disposables.add(picker.onDidTriggerItemButton(({ button, item }) => buttonTrigger(button, item)));\n disposables.add(picker.onDidTriggerSeparatorButton(({ button, separator }) => buttonTrigger(button, separator)));\n return disposables;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar AbstractCommandsQuickAccessProvider_1, CommandsHistory_1;\nimport { toErrorMessage } from '../../../base/common/errorMessage.js';\nimport { isCancellationError } from '../../../base/common/errors.js';\nimport { matchesContiguousSubString, matchesPrefix, matchesWords, or } from '../../../base/common/filters.js';\nimport { createSingleCallFunction } from '../../../base/common/functional.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { LRUCache } from '../../../base/common/map.js';\nimport { TfIdfCalculator, normalizeTfIdfScores } from '../../../base/common/tfIdf.js';\nimport { localize } from '../../../nls.js';\nimport { ICommandService } from '../../commands/common/commands.js';\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\nimport { IDialogService } from '../../dialogs/common/dialogs.js';\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { ILogService } from '../../log/common/log.js';\nimport { PickerQuickAccessProvider } from './pickerQuickAccess.js';\nimport { IStorageService, WillSaveStateReason } from '../../storage/common/storage.js';\nimport { ITelemetryService } from '../../telemetry/common/telemetry.js';\nlet AbstractCommandsQuickAccessProvider = AbstractCommandsQuickAccessProvider_1 = class AbstractCommandsQuickAccessProvider extends PickerQuickAccessProvider {\n constructor(options, instantiationService, keybindingService, commandService, telemetryService, dialogService) {\n super(AbstractCommandsQuickAccessProvider_1.PREFIX, options);\n this.instantiationService = instantiationService;\n this.keybindingService = keybindingService;\n this.commandService = commandService;\n this.telemetryService = telemetryService;\n this.dialogService = dialogService;\n this.commandsHistory = this._register(this.instantiationService.createInstance(CommandsHistory));\n this.options = options;\n }\n async _getPicks(filter, _disposables, token, runOptions) {\n var _a, _b, _c, _d;\n // Ask subclass for all command picks\n const allCommandPicks = await this.getCommandPicks(token);\n if (token.isCancellationRequested) {\n return [];\n }\n const runTfidf = createSingleCallFunction(() => {\n const tfidf = new TfIdfCalculator();\n tfidf.updateDocuments(allCommandPicks.map(commandPick => ({\n key: commandPick.commandId,\n textChunks: [this.getTfIdfChunk(commandPick)]\n })));\n const result = tfidf.calculateScores(filter, token);\n return normalizeTfIdfScores(result)\n .filter(score => score.score > AbstractCommandsQuickAccessProvider_1.TFIDF_THRESHOLD)\n .slice(0, AbstractCommandsQuickAccessProvider_1.TFIDF_MAX_RESULTS);\n });\n // Filter\n const filteredCommandPicks = [];\n for (const commandPick of allCommandPicks) {\n const labelHighlights = (_a = AbstractCommandsQuickAccessProvider_1.WORD_FILTER(filter, commandPick.label)) !== null && _a !== void 0 ? _a : undefined;\n const aliasHighlights = commandPick.commandAlias ? (_b = AbstractCommandsQuickAccessProvider_1.WORD_FILTER(filter, commandPick.commandAlias)) !== null && _b !== void 0 ? _b : undefined : undefined;\n // Add if matching in label or alias\n if (labelHighlights || aliasHighlights) {\n commandPick.highlights = {\n label: labelHighlights,\n detail: this.options.showAlias ? aliasHighlights : undefined\n };\n filteredCommandPicks.push(commandPick);\n }\n // Also add if we have a 100% command ID match\n else if (filter === commandPick.commandId) {\n filteredCommandPicks.push(commandPick);\n }\n // Handle tf-idf scoring for the rest if there's a filter\n else if (filter.length >= 3) {\n const tfidf = runTfidf();\n if (token.isCancellationRequested) {\n return [];\n }\n // Add if we have a tf-idf score\n const tfidfScore = tfidf.find(score => score.key === commandPick.commandId);\n if (tfidfScore) {\n commandPick.tfIdfScore = tfidfScore.score;\n filteredCommandPicks.push(commandPick);\n }\n }\n }\n // Add description to commands that have duplicate labels\n const mapLabelToCommand = new Map();\n for (const commandPick of filteredCommandPicks) {\n const existingCommandForLabel = mapLabelToCommand.get(commandPick.label);\n if (existingCommandForLabel) {\n commandPick.description = commandPick.commandId;\n existingCommandForLabel.description = existingCommandForLabel.commandId;\n }\n else {\n mapLabelToCommand.set(commandPick.label, commandPick);\n }\n }\n // Sort by MRU order and fallback to name otherwise\n filteredCommandPicks.sort((commandPickA, commandPickB) => {\n // If a result came from tf-idf, we want to put that towards the bottom\n if (commandPickA.tfIdfScore && commandPickB.tfIdfScore) {\n if (commandPickA.tfIdfScore === commandPickB.tfIdfScore) {\n return commandPickA.label.localeCompare(commandPickB.label); // prefer lexicographically smaller command\n }\n return commandPickB.tfIdfScore - commandPickA.tfIdfScore; // prefer higher tf-idf score\n }\n else if (commandPickA.tfIdfScore) {\n return 1; // first command has a score but other doesn't so other wins\n }\n else if (commandPickB.tfIdfScore) {\n return -1; // other command has a score but first doesn't so first wins\n }\n const commandACounter = this.commandsHistory.peek(commandPickA.commandId);\n const commandBCounter = this.commandsHistory.peek(commandPickB.commandId);\n if (commandACounter && commandBCounter) {\n return commandACounter > commandBCounter ? -1 : 1; // use more recently used command before older\n }\n if (commandACounter) {\n return -1; // first command was used, so it wins over the non used one\n }\n if (commandBCounter) {\n return 1; // other command was used so it wins over the command\n }\n if (this.options.suggestedCommandIds) {\n const commandASuggestion = this.options.suggestedCommandIds.has(commandPickA.commandId);\n const commandBSuggestion = this.options.suggestedCommandIds.has(commandPickB.commandId);\n if (commandASuggestion && commandBSuggestion) {\n return 0; // honor the order of the array\n }\n if (commandASuggestion) {\n return -1; // first command was suggested, so it wins over the non suggested one\n }\n if (commandBSuggestion) {\n return 1; // other command was suggested so it wins over the command\n }\n }\n // both commands were never used, so we sort by name\n return commandPickA.label.localeCompare(commandPickB.label);\n });\n const commandPicks = [];\n let addOtherSeparator = false;\n let addSuggestedSeparator = true;\n let addCommonlyUsedSeparator = !!this.options.suggestedCommandIds;\n for (let i = 0; i < filteredCommandPicks.length; i++) {\n const commandPick = filteredCommandPicks[i];\n // Separator: recently used\n if (i === 0 && this.commandsHistory.peek(commandPick.commandId)) {\n commandPicks.push({ type: 'separator', label: localize('recentlyUsed', \"recently used\") });\n addOtherSeparator = true;\n }\n if (addSuggestedSeparator && commandPick.tfIdfScore !== undefined) {\n commandPicks.push({ type: 'separator', label: localize('suggested', \"similar commands\") });\n addSuggestedSeparator = false;\n }\n // Separator: commonly used\n if (addCommonlyUsedSeparator && commandPick.tfIdfScore === undefined && !this.commandsHistory.peek(commandPick.commandId) && ((_c = this.options.suggestedCommandIds) === null || _c === void 0 ? void 0 : _c.has(commandPick.commandId))) {\n commandPicks.push({ type: 'separator', label: localize('commonlyUsed', \"commonly used\") });\n addOtherSeparator = true;\n addCommonlyUsedSeparator = false;\n }\n // Separator: other commands\n if (addOtherSeparator && commandPick.tfIdfScore === undefined && !this.commandsHistory.peek(commandPick.commandId) && !((_d = this.options.suggestedCommandIds) === null || _d === void 0 ? void 0 : _d.has(commandPick.commandId))) {\n commandPicks.push({ type: 'separator', label: localize('morecCommands', \"other commands\") });\n addOtherSeparator = false;\n }\n // Command\n commandPicks.push(this.toCommandPick(commandPick, runOptions));\n }\n if (!this.hasAdditionalCommandPicks(filter, token)) {\n return commandPicks;\n }\n return {\n picks: commandPicks,\n additionalPicks: (async () => {\n var _a;\n const additionalCommandPicks = await this.getAdditionalCommandPicks(allCommandPicks, filteredCommandPicks, filter, token);\n if (token.isCancellationRequested) {\n return [];\n }\n const commandPicks = additionalCommandPicks.map(commandPick => this.toCommandPick(commandPick, runOptions));\n // Basically, if we haven't already added a separator, we add one before the additional picks so long\n // as one hasn't been added to the start of the array.\n if (addSuggestedSeparator && ((_a = commandPicks[0]) === null || _a === void 0 ? void 0 : _a.type) !== 'separator') {\n commandPicks.unshift({ type: 'separator', label: localize('suggested', \"similar commands\") });\n }\n return commandPicks;\n })()\n };\n }\n toCommandPick(commandPick, runOptions) {\n if (commandPick.type === 'separator') {\n return commandPick;\n }\n const keybinding = this.keybindingService.lookupKeybinding(commandPick.commandId);\n const ariaLabel = keybinding ?\n localize('commandPickAriaLabelWithKeybinding', \"{0}, {1}\", commandPick.label, keybinding.getAriaLabel()) :\n commandPick.label;\n return {\n ...commandPick,\n ariaLabel,\n detail: this.options.showAlias && commandPick.commandAlias !== commandPick.label ? commandPick.commandAlias : undefined,\n keybinding,\n accept: async () => {\n var _a, _b;\n // Add to history\n this.commandsHistory.push(commandPick.commandId);\n // Telementry\n this.telemetryService.publicLog2('workbenchActionExecuted', {\n id: commandPick.commandId,\n from: (_a = runOptions === null || runOptions === void 0 ? void 0 : runOptions.from) !== null && _a !== void 0 ? _a : 'quick open'\n });\n // Run\n try {\n ((_b = commandPick.args) === null || _b === void 0 ? void 0 : _b.length)\n ? await this.commandService.executeCommand(commandPick.commandId, ...commandPick.args)\n : await this.commandService.executeCommand(commandPick.commandId);\n }\n catch (error) {\n if (!isCancellationError(error)) {\n this.dialogService.error(localize('canNotRun', \"Command '{0}' resulted in an error\", commandPick.label), toErrorMessage(error));\n }\n }\n }\n };\n }\n // TF-IDF string to be indexed\n getTfIdfChunk({ label, commandAlias, commandDescription }) {\n let chunk = label;\n if (commandAlias && commandAlias !== label) {\n chunk += ` - ${commandAlias}`;\n }\n if (commandDescription && commandDescription.value !== label) {\n // If the original is the same as the value, don't add it\n chunk += ` - ${commandDescription.value === commandDescription.original ? commandDescription.value : `${commandDescription.value} (${commandDescription.original})`}`;\n }\n return chunk;\n }\n};\nAbstractCommandsQuickAccessProvider.PREFIX = '>';\nAbstractCommandsQuickAccessProvider.TFIDF_THRESHOLD = 0.5;\nAbstractCommandsQuickAccessProvider.TFIDF_MAX_RESULTS = 5;\nAbstractCommandsQuickAccessProvider.WORD_FILTER = or(matchesPrefix, matchesWords, matchesContiguousSubString);\nAbstractCommandsQuickAccessProvider = AbstractCommandsQuickAccessProvider_1 = __decorate([\n __param(1, IInstantiationService),\n __param(2, IKeybindingService),\n __param(3, ICommandService),\n __param(4, ITelemetryService),\n __param(5, IDialogService)\n], AbstractCommandsQuickAccessProvider);\nexport { AbstractCommandsQuickAccessProvider };\nlet CommandsHistory = CommandsHistory_1 = class CommandsHistory extends Disposable {\n constructor(storageService, configurationService, logService) {\n super();\n this.storageService = storageService;\n this.configurationService = configurationService;\n this.logService = logService;\n this.configuredCommandsHistoryLength = 0;\n this.updateConfiguration();\n this.load();\n this.registerListeners();\n }\n registerListeners() {\n this._register(this.configurationService.onDidChangeConfiguration(e => this.updateConfiguration(e)));\n this._register(this.storageService.onWillSaveState(e => {\n if (e.reason === WillSaveStateReason.SHUTDOWN) {\n // Commands history is very dynamic and so we limit impact\n // on storage to only save on shutdown. This helps reduce\n // the overhead of syncing this data across machines.\n this.saveState();\n }\n }));\n }\n updateConfiguration(e) {\n if (e && !e.affectsConfiguration('workbench.commandPalette.history')) {\n return;\n }\n this.configuredCommandsHistoryLength = CommandsHistory_1.getConfiguredCommandHistoryLength(this.configurationService);\n if (CommandsHistory_1.cache && CommandsHistory_1.cache.limit !== this.configuredCommandsHistoryLength) {\n CommandsHistory_1.cache.limit = this.configuredCommandsHistoryLength;\n CommandsHistory_1.hasChanges = true;\n }\n }\n load() {\n const raw = this.storageService.get(CommandsHistory_1.PREF_KEY_CACHE, 0 /* StorageScope.PROFILE */);\n let serializedCache;\n if (raw) {\n try {\n serializedCache = JSON.parse(raw);\n }\n catch (error) {\n this.logService.error(`[CommandsHistory] invalid data: ${error}`);\n }\n }\n const cache = CommandsHistory_1.cache = new LRUCache(this.configuredCommandsHistoryLength, 1);\n if (serializedCache) {\n let entries;\n if (serializedCache.usesLRU) {\n entries = serializedCache.entries;\n }\n else {\n entries = serializedCache.entries.sort((a, b) => a.value - b.value);\n }\n entries.forEach(entry => cache.set(entry.key, entry.value));\n }\n CommandsHistory_1.counter = this.storageService.getNumber(CommandsHistory_1.PREF_KEY_COUNTER, 0 /* StorageScope.PROFILE */, CommandsHistory_1.counter);\n }\n push(commandId) {\n if (!CommandsHistory_1.cache) {\n return;\n }\n CommandsHistory_1.cache.set(commandId, CommandsHistory_1.counter++); // set counter to command\n CommandsHistory_1.hasChanges = true;\n }\n peek(commandId) {\n var _a;\n return (_a = CommandsHistory_1.cache) === null || _a === void 0 ? void 0 : _a.peek(commandId);\n }\n saveState() {\n if (!CommandsHistory_1.cache) {\n return;\n }\n if (!CommandsHistory_1.hasChanges) {\n return;\n }\n const serializedCache = { usesLRU: true, entries: [] };\n CommandsHistory_1.cache.forEach((value, key) => serializedCache.entries.push({ key, value }));\n this.storageService.store(CommandsHistory_1.PREF_KEY_CACHE, JSON.stringify(serializedCache), 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n this.storageService.store(CommandsHistory_1.PREF_KEY_COUNTER, CommandsHistory_1.counter, 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n CommandsHistory_1.hasChanges = false;\n }\n static getConfiguredCommandHistoryLength(configurationService) {\n var _a, _b;\n const config = configurationService.getValue();\n const configuredCommandHistoryLength = (_b = (_a = config.workbench) === null || _a === void 0 ? void 0 : _a.commandPalette) === null || _b === void 0 ? void 0 : _b.history;\n if (typeof configuredCommandHistoryLength === 'number') {\n return configuredCommandHistoryLength;\n }\n return CommandsHistory_1.DEFAULT_COMMANDS_HISTORY_LENGTH;\n }\n};\nCommandsHistory.DEFAULT_COMMANDS_HISTORY_LENGTH = 50;\nCommandsHistory.PREF_KEY_CACHE = 'commandPalette.mru.cache';\nCommandsHistory.PREF_KEY_COUNTER = 'commandPalette.mru.counter';\nCommandsHistory.counter = 1;\nCommandsHistory.hasChanges = false;\nCommandsHistory = CommandsHistory_1 = __decorate([\n __param(0, IStorageService),\n __param(1, IConfigurationService),\n __param(2, ILogService)\n], CommandsHistory);\nexport { CommandsHistory };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar HelpQuickAccessProvider_1;\nimport { localize } from '../../../nls.js';\nimport { Registry } from '../../registry/common/platform.js';\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { Extensions } from '../common/quickAccess.js';\nimport { IQuickInputService } from '../common/quickInput.js';\nlet HelpQuickAccessProvider = HelpQuickAccessProvider_1 = class HelpQuickAccessProvider {\n constructor(quickInputService, keybindingService) {\n this.quickInputService = quickInputService;\n this.keybindingService = keybindingService;\n this.registry = Registry.as(Extensions.Quickaccess);\n }\n provide(picker) {\n const disposables = new DisposableStore();\n // Open a picker with the selected value if picked\n disposables.add(picker.onDidAccept(() => {\n const [item] = picker.selectedItems;\n if (item) {\n this.quickInputService.quickAccess.show(item.prefix, { preserveValue: true });\n }\n }));\n // Also open a picker when we detect the user typed the exact\n // name of a provider (e.g. `?term` for terminals)\n disposables.add(picker.onDidChangeValue(value => {\n const providerDescriptor = this.registry.getQuickAccessProvider(value.substr(HelpQuickAccessProvider_1.PREFIX.length));\n if (providerDescriptor && providerDescriptor.prefix && providerDescriptor.prefix !== HelpQuickAccessProvider_1.PREFIX) {\n this.quickInputService.quickAccess.show(providerDescriptor.prefix, { preserveValue: true });\n }\n }));\n // Fill in all providers\n picker.items = this.getQuickAccessProviders().filter(p => p.prefix !== HelpQuickAccessProvider_1.PREFIX);\n return disposables;\n }\n getQuickAccessProviders() {\n const providers = this.registry\n .getQuickAccessProviders()\n .sort((providerA, providerB) => providerA.prefix.localeCompare(providerB.prefix))\n .flatMap(provider => this.createPicks(provider));\n return providers;\n }\n createPicks(provider) {\n return provider.helpEntries.map(helpEntry => {\n const prefix = helpEntry.prefix || provider.prefix;\n const label = prefix || '\\u2026' /* ... */;\n return {\n prefix,\n label,\n keybinding: helpEntry.commandId ? this.keybindingService.lookupKeybinding(helpEntry.commandId) : undefined,\n ariaLabel: localize('helpPickAriaLabel', \"{0}, {1}\", label, helpEntry.description),\n description: helpEntry.description\n };\n });\n }\n};\nHelpQuickAccessProvider.PREFIX = '?';\nHelpQuickAccessProvider = HelpQuickAccessProvider_1 = __decorate([\n __param(0, IQuickInputService),\n __param(1, IKeybindingService)\n], HelpQuickAccessProvider);\nexport { HelpQuickAccessProvider };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { DeferredPromise } from '../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\nimport { Event } from '../../../base/common/event.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { DefaultQuickAccessFilterValue, Extensions } from '../common/quickAccess.js';\nimport { IQuickInputService, ItemActivation } from '../common/quickInput.js';\nimport { Registry } from '../../registry/common/platform.js';\nlet QuickAccessController = class QuickAccessController extends Disposable {\n constructor(quickInputService, instantiationService) {\n super();\n this.quickInputService = quickInputService;\n this.instantiationService = instantiationService;\n this.registry = Registry.as(Extensions.Quickaccess);\n this.mapProviderToDescriptor = new Map();\n this.lastAcceptedPickerValues = new Map();\n this.visibleQuickAccess = undefined;\n }\n show(value = '', options) {\n this.doShowOrPick(value, false, options);\n }\n doShowOrPick(value, pick, options) {\n var _a, _b, _c, _d;\n // Find provider for the value to show\n const [provider, descriptor] = this.getOrInstantiateProvider(value, options === null || options === void 0 ? void 0 : options.enabledProviderPrefixes);\n // Return early if quick access is already showing on that same prefix\n const visibleQuickAccess = this.visibleQuickAccess;\n const visibleDescriptor = visibleQuickAccess === null || visibleQuickAccess === void 0 ? void 0 : visibleQuickAccess.descriptor;\n if (visibleQuickAccess && descriptor && visibleDescriptor === descriptor) {\n // Apply value only if it is more specific than the prefix\n // from the provider and we are not instructed to preserve\n if (value !== descriptor.prefix && !(options === null || options === void 0 ? void 0 : options.preserveValue)) {\n visibleQuickAccess.picker.value = value;\n }\n // Always adjust selection\n this.adjustValueSelection(visibleQuickAccess.picker, descriptor, options);\n return;\n }\n // Rewrite the filter value based on certain rules unless disabled\n if (descriptor && !(options === null || options === void 0 ? void 0 : options.preserveValue)) {\n let newValue = undefined;\n // If we have a visible provider with a value, take it's filter value but\n // rewrite to new provider prefix in case they differ\n if (visibleQuickAccess && visibleDescriptor && visibleDescriptor !== descriptor) {\n const newValueCandidateWithoutPrefix = visibleQuickAccess.value.substr(visibleDescriptor.prefix.length);\n if (newValueCandidateWithoutPrefix) {\n newValue = `${descriptor.prefix}${newValueCandidateWithoutPrefix}`;\n }\n }\n // Otherwise, take a default value as instructed\n if (!newValue) {\n const defaultFilterValue = provider === null || provider === void 0 ? void 0 : provider.defaultFilterValue;\n if (defaultFilterValue === DefaultQuickAccessFilterValue.LAST) {\n newValue = this.lastAcceptedPickerValues.get(descriptor);\n }\n else if (typeof defaultFilterValue === 'string') {\n newValue = `${descriptor.prefix}${defaultFilterValue}`;\n }\n }\n if (typeof newValue === 'string') {\n value = newValue;\n }\n }\n // Store the existing selection if there was one.\n const visibleSelection = (_a = visibleQuickAccess === null || visibleQuickAccess === void 0 ? void 0 : visibleQuickAccess.picker) === null || _a === void 0 ? void 0 : _a.valueSelection;\n const visibleValue = (_b = visibleQuickAccess === null || visibleQuickAccess === void 0 ? void 0 : visibleQuickAccess.picker) === null || _b === void 0 ? void 0 : _b.value;\n // Create a picker for the provider to use with the initial value\n // and adjust the filtering to exclude the prefix from filtering\n const disposables = new DisposableStore();\n const picker = disposables.add(this.quickInputService.createQuickPick());\n picker.value = value;\n this.adjustValueSelection(picker, descriptor, options);\n picker.placeholder = (_c = options === null || options === void 0 ? void 0 : options.placeholder) !== null && _c !== void 0 ? _c : descriptor === null || descriptor === void 0 ? void 0 : descriptor.placeholder;\n picker.quickNavigate = options === null || options === void 0 ? void 0 : options.quickNavigateConfiguration;\n picker.hideInput = !!picker.quickNavigate && !visibleQuickAccess; // only hide input if there was no picker opened already\n if (typeof (options === null || options === void 0 ? void 0 : options.itemActivation) === 'number' || (options === null || options === void 0 ? void 0 : options.quickNavigateConfiguration)) {\n picker.itemActivation = (_d = options === null || options === void 0 ? void 0 : options.itemActivation) !== null && _d !== void 0 ? _d : ItemActivation.SECOND /* quick nav is always second */;\n }\n picker.contextKey = descriptor === null || descriptor === void 0 ? void 0 : descriptor.contextKey;\n picker.filterValue = (value) => value.substring(descriptor ? descriptor.prefix.length : 0);\n // Pick mode: setup a promise that can be resolved\n // with the selected items and prevent execution\n let pickPromise = undefined;\n if (pick) {\n pickPromise = new DeferredPromise();\n disposables.add(Event.once(picker.onWillAccept)(e => {\n e.veto();\n picker.hide();\n }));\n }\n // Register listeners\n disposables.add(this.registerPickerListeners(picker, provider, descriptor, value, options));\n // Ask provider to fill the picker as needed if we have one\n // and pass over a cancellation token that will indicate when\n // the picker is hiding without a pick being made.\n const cts = disposables.add(new CancellationTokenSource());\n if (provider) {\n disposables.add(provider.provide(picker, cts.token, options === null || options === void 0 ? void 0 : options.providerOptions));\n }\n // Finally, trigger disposal and cancellation when the picker\n // hides depending on items selected or not.\n Event.once(picker.onDidHide)(() => {\n if (picker.selectedItems.length === 0) {\n cts.cancel();\n }\n // Start to dispose once picker hides\n disposables.dispose();\n // Resolve pick promise with selected items\n pickPromise === null || pickPromise === void 0 ? void 0 : pickPromise.complete(picker.selectedItems.slice(0));\n });\n // Finally, show the picker. This is important because a provider\n // may not call this and then our disposables would leak that rely\n // on the onDidHide event.\n picker.show();\n // If the previous picker had a selection and the value is unchanged, we should set that in the new picker.\n if (visibleSelection && visibleValue === value) {\n picker.valueSelection = visibleSelection;\n }\n // Pick mode: return with promise\n if (pick) {\n return pickPromise === null || pickPromise === void 0 ? void 0 : pickPromise.p;\n }\n }\n adjustValueSelection(picker, descriptor, options) {\n var _a;\n let valueSelection;\n // Preserve: just always put the cursor at the end\n if (options === null || options === void 0 ? void 0 : options.preserveValue) {\n valueSelection = [picker.value.length, picker.value.length];\n }\n // Otherwise: select the value up until the prefix\n else {\n valueSelection = [(_a = descriptor === null || descriptor === void 0 ? void 0 : descriptor.prefix.length) !== null && _a !== void 0 ? _a : 0, picker.value.length];\n }\n picker.valueSelection = valueSelection;\n }\n registerPickerListeners(picker, provider, descriptor, value, options) {\n const disposables = new DisposableStore();\n // Remember as last visible picker and clean up once picker get's disposed\n const visibleQuickAccess = this.visibleQuickAccess = { picker, descriptor, value };\n disposables.add(toDisposable(() => {\n if (visibleQuickAccess === this.visibleQuickAccess) {\n this.visibleQuickAccess = undefined;\n }\n }));\n // Whenever the value changes, check if the provider has\n // changed and if so - re-create the picker from the beginning\n disposables.add(picker.onDidChangeValue(value => {\n const [providerForValue] = this.getOrInstantiateProvider(value, options === null || options === void 0 ? void 0 : options.enabledProviderPrefixes);\n if (providerForValue !== provider) {\n this.show(value, {\n enabledProviderPrefixes: options === null || options === void 0 ? void 0 : options.enabledProviderPrefixes,\n // do not rewrite value from user typing!\n preserveValue: true,\n // persist the value of the providerOptions from the original showing\n providerOptions: options === null || options === void 0 ? void 0 : options.providerOptions\n });\n }\n else {\n visibleQuickAccess.value = value; // remember the value in our visible one\n }\n }));\n // Remember picker input for future use when accepting\n if (descriptor) {\n disposables.add(picker.onDidAccept(() => {\n this.lastAcceptedPickerValues.set(descriptor, picker.value);\n }));\n }\n return disposables;\n }\n getOrInstantiateProvider(value, enabledProviderPrefixes) {\n const providerDescriptor = this.registry.getQuickAccessProvider(value);\n if (!providerDescriptor || enabledProviderPrefixes && !(enabledProviderPrefixes === null || enabledProviderPrefixes === void 0 ? void 0 : enabledProviderPrefixes.includes(providerDescriptor.prefix))) {\n return [undefined, undefined];\n }\n let provider = this.mapProviderToDescriptor.get(providerDescriptor);\n if (!provider) {\n provider = this.instantiationService.createInstance(providerDescriptor.ctor);\n this.mapProviderToDescriptor.set(providerDescriptor, provider);\n }\n return [provider, providerDescriptor];\n }\n};\nQuickAccessController = __decorate([\n __param(0, IQuickInputService),\n __param(1, IInstantiationService)\n], QuickAccessController);\nexport { QuickAccessController };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../base/browser/dom.js';\nimport { DomEmitter } from '../../../base/browser/event.js';\nimport { Event } from '../../../base/common/event.js';\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\nimport { Gesture, EventType as GestureEventType } from '../../../base/browser/touch.js';\nimport { renderLabelWithIcons } from '../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { IdGenerator } from '../../../base/common/idGenerator.js';\nimport { parseLinkedText } from '../../../base/common/linkedText.js';\nimport './media/quickInput.css';\nimport { localize } from '../../../nls.js';\nconst iconPathToClass = {};\nconst iconClassGenerator = new IdGenerator('quick-input-button-icon-');\nfunction getIconClass(iconPath) {\n if (!iconPath) {\n return undefined;\n }\n let iconClass;\n const key = iconPath.dark.toString();\n if (iconPathToClass[key]) {\n iconClass = iconPathToClass[key];\n }\n else {\n iconClass = iconClassGenerator.nextId();\n dom.createCSSRule(`.${iconClass}, .hc-light .${iconClass}`, `background-image: ${dom.asCSSUrl(iconPath.light || iconPath.dark)}`);\n dom.createCSSRule(`.vs-dark .${iconClass}, .hc-black .${iconClass}`, `background-image: ${dom.asCSSUrl(iconPath.dark)}`);\n iconPathToClass[key] = iconClass;\n }\n return iconClass;\n}\nexport function quickInputButtonToAction(button, id, run) {\n let cssClasses = button.iconClass || getIconClass(button.iconPath);\n if (button.alwaysVisible) {\n cssClasses = cssClasses ? `${cssClasses} always-visible` : 'always-visible';\n }\n return {\n id,\n label: '',\n tooltip: button.tooltip || '',\n class: cssClasses,\n enabled: true,\n run\n };\n}\nexport function renderQuickInputDescription(description, container, actionHandler) {\n dom.reset(container);\n const parsed = parseLinkedText(description);\n let tabIndex = 0;\n for (const node of parsed.nodes) {\n if (typeof node === 'string') {\n container.append(...renderLabelWithIcons(node));\n }\n else {\n let title = node.title;\n if (!title && node.href.startsWith('command:')) {\n title = localize('executeCommand', \"Click to execute command '{0}'\", node.href.substring('command:'.length));\n }\n else if (!title) {\n title = node.href;\n }\n const anchor = dom.$('a', { href: node.href, title, tabIndex: tabIndex++ }, node.label);\n anchor.style.textDecoration = 'underline';\n const handleOpen = (e) => {\n if (dom.isEventLike(e)) {\n dom.EventHelper.stop(e, true);\n }\n actionHandler.callback(node.href);\n };\n const onClick = actionHandler.disposables.add(new DomEmitter(anchor, dom.EventType.CLICK)).event;\n const onKeydown = actionHandler.disposables.add(new DomEmitter(anchor, dom.EventType.KEY_DOWN)).event;\n const onSpaceOrEnter = Event.chain(onKeydown, $ => $.filter(e => {\n const event = new StandardKeyboardEvent(e);\n return event.equals(10 /* KeyCode.Space */) || event.equals(3 /* KeyCode.Enter */);\n }));\n actionHandler.disposables.add(Gesture.addTarget(anchor));\n const onTap = actionHandler.disposables.add(new DomEmitter(anchor, GestureEventType.Tap)).event;\n Event.any(onClick, onTap, onSpaceOrEnter)(handleOpen, null, actionHandler.disposables);\n container.appendChild(anchor);\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../base/browser/dom.js';\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\nimport { Toggle } from '../../../base/browser/ui/toggle/toggle.js';\nimport { equals } from '../../../base/common/arrays.js';\nimport { TimeoutTimer } from '../../../base/common/async.js';\nimport { Codicon } from '../../../base/common/codicons.js';\nimport { Emitter, EventBufferer } from '../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\nimport { isIOS } from '../../../base/common/platform.js';\nimport Severity from '../../../base/common/severity.js';\nimport { ThemeIcon } from '../../../base/common/themables.js';\nimport './media/quickInput.css';\nimport { localize } from '../../../nls.js';\nimport { ItemActivation, NO_KEY_MODS, QuickInputHideReason } from '../common/quickInput.js';\nimport { quickInputButtonToAction, renderQuickInputDescription } from './quickInputUtils.js';\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\nimport { IHoverService, WorkbenchHoverDelegate } from '../../hover/browser/hover.js';\nimport { QuickPickFocus } from '../common/quickInput.js';\nimport { ContextKeyExpr, RawContextKey } from '../../contextkey/common/contextkey.js';\nexport const inQuickInputContextKeyValue = 'inQuickInput';\nexport const InQuickInputContextKey = new RawContextKey(inQuickInputContextKeyValue, false, localize('inQuickInput', \"Whether keyboard focus is inside the quick input control\"));\nexport const inQuickInputContext = ContextKeyExpr.has(inQuickInputContextKeyValue);\nexport const quickInputTypeContextKeyValue = 'quickInputType';\nexport const QuickInputTypeContextKey = new RawContextKey(quickInputTypeContextKeyValue, undefined, localize('quickInputType', \"The type of the currently visible quick input\"));\nexport const endOfQuickInputBoxContextKeyValue = 'cursorAtEndOfQuickInputBox';\nexport const EndOfQuickInputBoxContextKey = new RawContextKey(endOfQuickInputBoxContextKeyValue, false, localize('cursorAtEndOfQuickInputBox', \"Whether the cursor in the quick input is at the end of the input box\"));\nexport const endOfQuickInputBoxContext = ContextKeyExpr.has(endOfQuickInputBoxContextKeyValue);\nexport const backButton = {\n iconClass: ThemeIcon.asClassName(Codicon.quickInputBack),\n tooltip: localize('quickInput.back', \"Back\"),\n handle: -1 // TODO\n};\nclass QuickInput extends Disposable {\n constructor(ui) {\n super();\n this.ui = ui;\n this._widgetUpdated = false;\n this.visible = false;\n this._enabled = true;\n this._busy = false;\n this._ignoreFocusOut = false;\n this._buttons = [];\n this.buttonsUpdated = false;\n this._toggles = [];\n this.togglesUpdated = false;\n this.noValidationMessage = QuickInput.noPromptMessage;\n this._severity = Severity.Ignore;\n this.onDidTriggerButtonEmitter = this._register(new Emitter());\n this.onDidHideEmitter = this._register(new Emitter());\n this.onWillHideEmitter = this._register(new Emitter());\n this.onDisposeEmitter = this._register(new Emitter());\n this.visibleDisposables = this._register(new DisposableStore());\n this.onDidHide = this.onDidHideEmitter.event;\n }\n get title() {\n return this._title;\n }\n set title(title) {\n this._title = title;\n this.update();\n }\n get description() {\n return this._description;\n }\n set description(description) {\n this._description = description;\n this.update();\n }\n get step() {\n return this._steps;\n }\n set step(step) {\n this._steps = step;\n this.update();\n }\n get totalSteps() {\n return this._totalSteps;\n }\n set totalSteps(totalSteps) {\n this._totalSteps = totalSteps;\n this.update();\n }\n get enabled() {\n return this._enabled;\n }\n set enabled(enabled) {\n this._enabled = enabled;\n this.update();\n }\n get contextKey() {\n return this._contextKey;\n }\n set contextKey(contextKey) {\n this._contextKey = contextKey;\n this.update();\n }\n get busy() {\n return this._busy;\n }\n set busy(busy) {\n this._busy = busy;\n this.update();\n }\n get ignoreFocusOut() {\n return this._ignoreFocusOut;\n }\n set ignoreFocusOut(ignoreFocusOut) {\n const shouldUpdate = this._ignoreFocusOut !== ignoreFocusOut && !isIOS;\n this._ignoreFocusOut = ignoreFocusOut && !isIOS;\n if (shouldUpdate) {\n this.update();\n }\n }\n get buttons() {\n return this._buttons;\n }\n set buttons(buttons) {\n this._buttons = buttons;\n this.buttonsUpdated = true;\n this.update();\n }\n get toggles() {\n return this._toggles;\n }\n set toggles(toggles) {\n this._toggles = toggles !== null && toggles !== void 0 ? toggles : [];\n this.togglesUpdated = true;\n this.update();\n }\n get validationMessage() {\n return this._validationMessage;\n }\n set validationMessage(validationMessage) {\n this._validationMessage = validationMessage;\n this.update();\n }\n get severity() {\n return this._severity;\n }\n set severity(severity) {\n this._severity = severity;\n this.update();\n }\n show() {\n if (this.visible) {\n return;\n }\n this.visibleDisposables.add(this.ui.onDidTriggerButton(button => {\n if (this.buttons.indexOf(button) !== -1) {\n this.onDidTriggerButtonEmitter.fire(button);\n }\n }));\n this.ui.show(this);\n // update properties in the controller that get reset in the ui.show() call\n this.visible = true;\n // This ensures the message/prompt gets rendered\n this._lastValidationMessage = undefined;\n // This ensures the input box has the right severity applied\n this._lastSeverity = undefined;\n if (this.buttons.length) {\n // if there are buttons, the ui.show() clears them out of the UI so we should\n // rerender them.\n this.buttonsUpdated = true;\n }\n if (this.toggles.length) {\n // if there are toggles, the ui.show() clears them out of the UI so we should\n // rerender them.\n this.togglesUpdated = true;\n }\n this.update();\n }\n hide() {\n if (!this.visible) {\n return;\n }\n this.ui.hide();\n }\n didHide(reason = QuickInputHideReason.Other) {\n this.visible = false;\n this.visibleDisposables.clear();\n this.onDidHideEmitter.fire({ reason });\n }\n willHide(reason = QuickInputHideReason.Other) {\n this.onWillHideEmitter.fire({ reason });\n }\n update() {\n var _a, _b;\n if (!this.visible) {\n return;\n }\n const title = this.getTitle();\n if (title && this.ui.title.textContent !== title) {\n this.ui.title.textContent = title;\n }\n else if (!title && this.ui.title.innerHTML !== ' ') {\n this.ui.title.innerText = '\\u00a0';\n }\n const description = this.getDescription();\n if (this.ui.description1.textContent !== description) {\n this.ui.description1.textContent = description;\n }\n if (this.ui.description2.textContent !== description) {\n this.ui.description2.textContent = description;\n }\n if (this._widgetUpdated) {\n this._widgetUpdated = false;\n if (this._widget) {\n dom.reset(this.ui.widget, this._widget);\n }\n else {\n dom.reset(this.ui.widget);\n }\n }\n if (this.busy && !this.busyDelay) {\n this.busyDelay = new TimeoutTimer();\n this.busyDelay.setIfNotSet(() => {\n if (this.visible) {\n this.ui.progressBar.infinite();\n }\n }, 800);\n }\n if (!this.busy && this.busyDelay) {\n this.ui.progressBar.stop();\n this.busyDelay.cancel();\n this.busyDelay = undefined;\n }\n if (this.buttonsUpdated) {\n this.buttonsUpdated = false;\n this.ui.leftActionBar.clear();\n const leftButtons = this.buttons\n .filter(button => button === backButton)\n .map((button, index) => quickInputButtonToAction(button, `id-${index}`, async () => this.onDidTriggerButtonEmitter.fire(button)));\n this.ui.leftActionBar.push(leftButtons, { icon: true, label: false });\n this.ui.rightActionBar.clear();\n const rightButtons = this.buttons\n .filter(button => button !== backButton)\n .map((button, index) => quickInputButtonToAction(button, `id-${index}`, async () => this.onDidTriggerButtonEmitter.fire(button)));\n this.ui.rightActionBar.push(rightButtons, { icon: true, label: false });\n }\n if (this.togglesUpdated) {\n this.togglesUpdated = false;\n // HACK: Filter out toggles here that are not concrete Toggle objects. This is to workaround\n // a layering issue as quick input's interface is in common but Toggle is in browser and\n // it requires a HTMLElement on its interface\n const concreteToggles = (_b = (_a = this.toggles) === null || _a === void 0 ? void 0 : _a.filter(opts => opts instanceof Toggle)) !== null && _b !== void 0 ? _b : [];\n this.ui.inputBox.toggles = concreteToggles;\n }\n this.ui.ignoreFocusOut = this.ignoreFocusOut;\n this.ui.setEnabled(this.enabled);\n this.ui.setContextKey(this.contextKey);\n const validationMessage = this.validationMessage || this.noValidationMessage;\n if (this._lastValidationMessage !== validationMessage) {\n this._lastValidationMessage = validationMessage;\n dom.reset(this.ui.message);\n renderQuickInputDescription(validationMessage, this.ui.message, {\n callback: (content) => {\n this.ui.linkOpenerDelegate(content);\n },\n disposables: this.visibleDisposables,\n });\n }\n if (this._lastSeverity !== this.severity) {\n this._lastSeverity = this.severity;\n this.showMessageDecoration(this.severity);\n }\n }\n getTitle() {\n if (this.title && this.step) {\n return `${this.title} (${this.getSteps()})`;\n }\n if (this.title) {\n return this.title;\n }\n if (this.step) {\n return this.getSteps();\n }\n return '';\n }\n getDescription() {\n return this.description || '';\n }\n getSteps() {\n if (this.step && this.totalSteps) {\n return localize('quickInput.steps', \"{0}/{1}\", this.step, this.totalSteps);\n }\n if (this.step) {\n return String(this.step);\n }\n return '';\n }\n showMessageDecoration(severity) {\n this.ui.inputBox.showDecoration(severity);\n if (severity !== Severity.Ignore) {\n const styles = this.ui.inputBox.stylesForType(severity);\n this.ui.message.style.color = styles.foreground ? `${styles.foreground}` : '';\n this.ui.message.style.backgroundColor = styles.background ? `${styles.background}` : '';\n this.ui.message.style.border = styles.border ? `1px solid ${styles.border}` : '';\n this.ui.message.style.marginBottom = '-2px';\n }\n else {\n this.ui.message.style.color = '';\n this.ui.message.style.backgroundColor = '';\n this.ui.message.style.border = '';\n this.ui.message.style.marginBottom = '';\n }\n }\n dispose() {\n this.hide();\n this.onDisposeEmitter.fire();\n super.dispose();\n }\n}\nQuickInput.noPromptMessage = localize('inputModeEntry', \"Press 'Enter' to confirm your input or 'Escape' to cancel\");\nexport class QuickPick extends QuickInput {\n constructor() {\n super(...arguments);\n this._value = '';\n this.onDidChangeValueEmitter = this._register(new Emitter());\n this.onWillAcceptEmitter = this._register(new Emitter());\n this.onDidAcceptEmitter = this._register(new Emitter());\n this.onDidCustomEmitter = this._register(new Emitter());\n this._items = [];\n this.itemsUpdated = false;\n this._canSelectMany = false;\n this._canAcceptInBackground = false;\n this._matchOnDescription = false;\n this._matchOnDetail = false;\n this._matchOnLabel = true;\n this._matchOnLabelMode = 'fuzzy';\n this._sortByLabel = true;\n this._keepScrollPosition = false;\n this._itemActivation = ItemActivation.FIRST;\n this._activeItems = [];\n this.activeItemsUpdated = false;\n this.activeItemsToConfirm = [];\n this.onDidChangeActiveEmitter = this._register(new Emitter());\n this._selectedItems = [];\n this.selectedItemsUpdated = false;\n this.selectedItemsToConfirm = [];\n this.onDidChangeSelectionEmitter = this._register(new Emitter());\n this.onDidTriggerItemButtonEmitter = this._register(new Emitter());\n this.onDidTriggerSeparatorButtonEmitter = this._register(new Emitter());\n this.valueSelectionUpdated = true;\n this._ok = 'default';\n this._customButton = false;\n this._focusEventBufferer = new EventBufferer();\n this.type = \"quickPick\" /* QuickInputType.QuickPick */;\n this.filterValue = (value) => value;\n this.onDidChangeValue = this.onDidChangeValueEmitter.event;\n this.onWillAccept = this.onWillAcceptEmitter.event;\n this.onDidAccept = this.onDidAcceptEmitter.event;\n this.onDidChangeActive = this.onDidChangeActiveEmitter.event;\n this.onDidChangeSelection = this.onDidChangeSelectionEmitter.event;\n this.onDidTriggerItemButton = this.onDidTriggerItemButtonEmitter.event;\n this.onDidTriggerSeparatorButton = this.onDidTriggerSeparatorButtonEmitter.event;\n }\n get quickNavigate() {\n return this._quickNavigate;\n }\n set quickNavigate(quickNavigate) {\n this._quickNavigate = quickNavigate;\n this.update();\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.doSetValue(value);\n }\n doSetValue(value, skipUpdate) {\n if (this._value !== value) {\n this._value = value;\n if (!skipUpdate) {\n this.update();\n }\n if (this.visible) {\n const didFilter = this.ui.list.filter(this.filterValue(this._value));\n if (didFilter) {\n this.trySelectFirst();\n }\n }\n this.onDidChangeValueEmitter.fire(this._value);\n }\n }\n set ariaLabel(ariaLabel) {\n this._ariaLabel = ariaLabel;\n this.update();\n }\n get ariaLabel() {\n return this._ariaLabel;\n }\n get placeholder() {\n return this._placeholder;\n }\n set placeholder(placeholder) {\n this._placeholder = placeholder;\n this.update();\n }\n get items() {\n return this._items;\n }\n get scrollTop() {\n return this.ui.list.scrollTop;\n }\n set scrollTop(scrollTop) {\n this.ui.list.scrollTop = scrollTop;\n }\n set items(items) {\n this._items = items;\n this.itemsUpdated = true;\n this.update();\n }\n get canSelectMany() {\n return this._canSelectMany;\n }\n set canSelectMany(canSelectMany) {\n this._canSelectMany = canSelectMany;\n this.update();\n }\n get canAcceptInBackground() {\n return this._canAcceptInBackground;\n }\n set canAcceptInBackground(canAcceptInBackground) {\n this._canAcceptInBackground = canAcceptInBackground;\n }\n get matchOnDescription() {\n return this._matchOnDescription;\n }\n set matchOnDescription(matchOnDescription) {\n this._matchOnDescription = matchOnDescription;\n this.update();\n }\n get matchOnDetail() {\n return this._matchOnDetail;\n }\n set matchOnDetail(matchOnDetail) {\n this._matchOnDetail = matchOnDetail;\n this.update();\n }\n get matchOnLabel() {\n return this._matchOnLabel;\n }\n set matchOnLabel(matchOnLabel) {\n this._matchOnLabel = matchOnLabel;\n this.update();\n }\n get matchOnLabelMode() {\n return this._matchOnLabelMode;\n }\n set matchOnLabelMode(matchOnLabelMode) {\n this._matchOnLabelMode = matchOnLabelMode;\n this.update();\n }\n get sortByLabel() {\n return this._sortByLabel;\n }\n set sortByLabel(sortByLabel) {\n this._sortByLabel = sortByLabel;\n this.update();\n }\n get keepScrollPosition() {\n return this._keepScrollPosition;\n }\n set keepScrollPosition(keepScrollPosition) {\n this._keepScrollPosition = keepScrollPosition;\n }\n get itemActivation() {\n return this._itemActivation;\n }\n set itemActivation(itemActivation) {\n this._itemActivation = itemActivation;\n }\n get activeItems() {\n return this._activeItems;\n }\n set activeItems(activeItems) {\n this._activeItems = activeItems;\n this.activeItemsUpdated = true;\n this.update();\n }\n get selectedItems() {\n return this._selectedItems;\n }\n set selectedItems(selectedItems) {\n this._selectedItems = selectedItems;\n this.selectedItemsUpdated = true;\n this.update();\n }\n get keyMods() {\n if (this._quickNavigate) {\n // Disable keyMods when quick navigate is enabled\n // because in this model the interaction is purely\n // keyboard driven and Ctrl/Alt are typically\n // pressed and hold during this interaction.\n return NO_KEY_MODS;\n }\n return this.ui.keyMods;\n }\n get valueSelection() {\n const selection = this.ui.inputBox.getSelection();\n if (!selection) {\n return undefined;\n }\n return [selection.start, selection.end];\n }\n set valueSelection(valueSelection) {\n this._valueSelection = valueSelection;\n this.valueSelectionUpdated = true;\n this.update();\n }\n get customButton() {\n return this._customButton;\n }\n set customButton(showCustomButton) {\n this._customButton = showCustomButton;\n this.update();\n }\n get customLabel() {\n return this._customButtonLabel;\n }\n set customLabel(label) {\n this._customButtonLabel = label;\n this.update();\n }\n get customHover() {\n return this._customButtonHover;\n }\n set customHover(hover) {\n this._customButtonHover = hover;\n this.update();\n }\n get ok() {\n return this._ok;\n }\n set ok(showOkButton) {\n this._ok = showOkButton;\n this.update();\n }\n get hideInput() {\n return !!this._hideInput;\n }\n set hideInput(hideInput) {\n this._hideInput = hideInput;\n this.update();\n }\n trySelectFirst() {\n if (!this.canSelectMany) {\n this.ui.list.focus(QuickPickFocus.First);\n }\n }\n show() {\n if (!this.visible) {\n this.visibleDisposables.add(this.ui.inputBox.onDidChange(value => {\n this.doSetValue(value, true /* skip update since this originates from the UI */);\n }));\n this.visibleDisposables.add(this.ui.onDidAccept(() => {\n if (this.canSelectMany) {\n // if there are no checked elements, it means that an onDidChangeSelection never fired to overwrite\n // `_selectedItems`. In that case, we should emit one with an empty array to ensure that\n // `.selectedItems` is up to date.\n if (!this.ui.list.getCheckedElements().length) {\n this._selectedItems = [];\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\n }\n }\n else if (this.activeItems[0]) {\n // For single-select, we set `selectedItems` to the item that was accepted.\n this._selectedItems = [this.activeItems[0]];\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\n }\n this.handleAccept(false);\n }));\n this.visibleDisposables.add(this.ui.onDidCustom(() => {\n this.onDidCustomEmitter.fire();\n }));\n this.visibleDisposables.add(this._focusEventBufferer.wrapEvent(this.ui.list.onDidChangeFocus, \n // Only fire the last event\n (_, e) => e)(focusedItems => {\n if (this.activeItemsUpdated) {\n return; // Expect another event.\n }\n if (this.activeItemsToConfirm !== this._activeItems && equals(focusedItems, this._activeItems, (a, b) => a === b)) {\n return;\n }\n this._activeItems = focusedItems;\n this.onDidChangeActiveEmitter.fire(focusedItems);\n }));\n this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({ items: selectedItems, event }) => {\n if (this.canSelectMany) {\n if (selectedItems.length) {\n this.ui.list.setSelectedElements([]);\n }\n return;\n }\n if (this.selectedItemsToConfirm !== this._selectedItems && equals(selectedItems, this._selectedItems, (a, b) => a === b)) {\n return;\n }\n this._selectedItems = selectedItems;\n this.onDidChangeSelectionEmitter.fire(selectedItems);\n if (selectedItems.length) {\n this.handleAccept(dom.isMouseEvent(event) && event.button === 1 /* mouse middle click */);\n }\n }));\n this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(checkedItems => {\n if (!this.canSelectMany) {\n return;\n }\n if (this.selectedItemsToConfirm !== this._selectedItems && equals(checkedItems, this._selectedItems, (a, b) => a === b)) {\n return;\n }\n this._selectedItems = checkedItems;\n this.onDidChangeSelectionEmitter.fire(checkedItems);\n }));\n this.visibleDisposables.add(this.ui.list.onButtonTriggered(event => this.onDidTriggerItemButtonEmitter.fire(event)));\n this.visibleDisposables.add(this.ui.list.onSeparatorButtonTriggered(event => this.onDidTriggerSeparatorButtonEmitter.fire(event)));\n this.visibleDisposables.add(this.registerQuickNavigation());\n this.valueSelectionUpdated = true;\n }\n super.show(); // TODO: Why have show() bubble up while update() trickles down?\n }\n handleAccept(inBackground) {\n // Figure out veto via `onWillAccept` event\n let veto = false;\n this.onWillAcceptEmitter.fire({ veto: () => veto = true });\n // Continue with `onDidAccept` if no veto\n if (!veto) {\n this.onDidAcceptEmitter.fire({ inBackground });\n }\n }\n registerQuickNavigation() {\n return dom.addDisposableListener(this.ui.container, dom.EventType.KEY_UP, e => {\n if (this.canSelectMany || !this._quickNavigate) {\n return;\n }\n const keyboardEvent = new StandardKeyboardEvent(e);\n const keyCode = keyboardEvent.keyCode;\n // Select element when keys are pressed that signal it\n const quickNavKeys = this._quickNavigate.keybindings;\n const wasTriggerKeyPressed = quickNavKeys.some(k => {\n const chords = k.getChords();\n if (chords.length > 1) {\n return false;\n }\n if (chords[0].shiftKey && keyCode === 4 /* KeyCode.Shift */) {\n if (keyboardEvent.ctrlKey || keyboardEvent.altKey || keyboardEvent.metaKey) {\n return false; // this is an optimistic check for the shift key being used to navigate back in quick input\n }\n return true;\n }\n if (chords[0].altKey && keyCode === 6 /* KeyCode.Alt */) {\n return true;\n }\n if (chords[0].ctrlKey && keyCode === 5 /* KeyCode.Ctrl */) {\n return true;\n }\n if (chords[0].metaKey && keyCode === 57 /* KeyCode.Meta */) {\n return true;\n }\n return false;\n });\n if (wasTriggerKeyPressed) {\n if (this.activeItems[0]) {\n this._selectedItems = [this.activeItems[0]];\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\n this.handleAccept(false);\n }\n // Unset quick navigate after press. It is only valid once\n // and should not result in any behaviour change afterwards\n // if the picker remains open because there was no active item\n this._quickNavigate = undefined;\n }\n });\n }\n update() {\n if (!this.visible) {\n return;\n }\n // store the scrollTop before it is reset\n const scrollTopBefore = this.keepScrollPosition ? this.scrollTop : 0;\n const hasDescription = !!this.description;\n const visibilities = {\n title: !!this.title || !!this.step || !!this.buttons.length,\n description: hasDescription,\n checkAll: this.canSelectMany && !this._hideCheckAll,\n checkBox: this.canSelectMany,\n inputBox: !this._hideInput,\n progressBar: !this._hideInput || hasDescription,\n visibleCount: true,\n count: this.canSelectMany && !this._hideCountBadge,\n ok: this.ok === 'default' ? this.canSelectMany : this.ok,\n list: true,\n message: !!this.validationMessage,\n customButton: this.customButton\n };\n this.ui.setVisibilities(visibilities);\n super.update();\n if (this.ui.inputBox.value !== this.value) {\n this.ui.inputBox.value = this.value;\n }\n if (this.valueSelectionUpdated) {\n this.valueSelectionUpdated = false;\n this.ui.inputBox.select(this._valueSelection && { start: this._valueSelection[0], end: this._valueSelection[1] });\n }\n if (this.ui.inputBox.placeholder !== (this.placeholder || '')) {\n this.ui.inputBox.placeholder = (this.placeholder || '');\n }\n let ariaLabel = this.ariaLabel;\n // Only set aria label to the input box placeholder if we actually have an input box.\n if (!ariaLabel && visibilities.inputBox) {\n ariaLabel = this.placeholder || QuickPick.DEFAULT_ARIA_LABEL;\n // If we have a title, include it in the aria label.\n if (this.title) {\n ariaLabel += ` - ${this.title}`;\n }\n }\n if (this.ui.list.ariaLabel !== ariaLabel) {\n this.ui.list.ariaLabel = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : null;\n }\n this.ui.list.matchOnDescription = this.matchOnDescription;\n this.ui.list.matchOnDetail = this.matchOnDetail;\n this.ui.list.matchOnLabel = this.matchOnLabel;\n this.ui.list.matchOnLabelMode = this.matchOnLabelMode;\n this.ui.list.sortByLabel = this.sortByLabel;\n if (this.itemsUpdated) {\n this.itemsUpdated = false;\n this._focusEventBufferer.bufferEvents(() => {\n this.ui.list.setElements(this.items);\n // We want focus to exist in the list if there are items so that space can be used to toggle\n this.ui.list.shouldLoop = !this.canSelectMany;\n this.ui.list.filter(this.filterValue(this.ui.inputBox.value));\n this.ui.checkAll.checked = this.ui.list.getAllVisibleChecked();\n this.ui.visibleCount.setCount(this.ui.list.getVisibleCount());\n this.ui.count.setCount(this.ui.list.getCheckedCount());\n switch (this._itemActivation) {\n case ItemActivation.NONE:\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\n break;\n case ItemActivation.SECOND:\n this.ui.list.focus(QuickPickFocus.Second);\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\n break;\n case ItemActivation.LAST:\n this.ui.list.focus(QuickPickFocus.Last);\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\n break;\n default:\n this.trySelectFirst();\n break;\n }\n });\n }\n if (this.ui.container.classList.contains('show-checkboxes') !== !!this.canSelectMany) {\n if (this.canSelectMany) {\n this.ui.list.clearFocus();\n }\n else {\n this.trySelectFirst();\n }\n }\n if (this.activeItemsUpdated) {\n this.activeItemsUpdated = false;\n this.activeItemsToConfirm = this._activeItems;\n this.ui.list.setFocusedElements(this.activeItems);\n if (this.activeItemsToConfirm === this._activeItems) {\n this.activeItemsToConfirm = null;\n }\n }\n if (this.selectedItemsUpdated) {\n this.selectedItemsUpdated = false;\n this.selectedItemsToConfirm = this._selectedItems;\n if (this.canSelectMany) {\n this.ui.list.setCheckedElements(this.selectedItems);\n }\n else {\n this.ui.list.setSelectedElements(this.selectedItems);\n }\n if (this.selectedItemsToConfirm === this._selectedItems) {\n this.selectedItemsToConfirm = null;\n }\n }\n this.ui.customButton.label = this.customLabel || '';\n this.ui.customButton.element.title = this.customHover || '';\n if (!visibilities.inputBox) {\n // we need to move focus into the tree to detect keybindings\n // properly when the input box is not visible (quick nav)\n this.ui.list.domFocus();\n // Focus the first element in the list if multiselect is enabled\n if (this.canSelectMany) {\n this.ui.list.focus(QuickPickFocus.First);\n }\n }\n // Set the scroll position to what it was before updating the items\n if (this.keepScrollPosition) {\n this.scrollTop = scrollTopBefore;\n }\n }\n focus(focus) {\n this.ui.list.focus(focus);\n // To allow things like space to check/uncheck items\n if (this.canSelectMany) {\n this.ui.list.domFocus();\n }\n }\n accept(inBackground) {\n if (inBackground && !this._canAcceptInBackground) {\n return; // needs to be enabled\n }\n if (this.activeItems[0]) {\n this._selectedItems = [this.activeItems[0]];\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\n this.handleAccept(inBackground !== null && inBackground !== void 0 ? inBackground : false);\n }\n }\n}\nQuickPick.DEFAULT_ARIA_LABEL = localize('quickInputBox.ariaLabel', \"Type to narrow down results.\");\nexport class InputBox extends QuickInput {\n constructor() {\n super(...arguments);\n this._value = '';\n this.valueSelectionUpdated = true;\n this._password = false;\n this.onDidValueChangeEmitter = this._register(new Emitter());\n this.onDidAcceptEmitter = this._register(new Emitter());\n this.type = \"inputBox\" /* QuickInputType.InputBox */;\n this.onDidChangeValue = this.onDidValueChangeEmitter.event;\n this.onDidAccept = this.onDidAcceptEmitter.event;\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this._value = value || '';\n this.update();\n }\n get placeholder() {\n return this._placeholder;\n }\n set placeholder(placeholder) {\n this._placeholder = placeholder;\n this.update();\n }\n get password() {\n return this._password;\n }\n set password(password) {\n this._password = password;\n this.update();\n }\n show() {\n if (!this.visible) {\n this.visibleDisposables.add(this.ui.inputBox.onDidChange(value => {\n if (value === this.value) {\n return;\n }\n this._value = value;\n this.onDidValueChangeEmitter.fire(value);\n }));\n this.visibleDisposables.add(this.ui.onDidAccept(() => this.onDidAcceptEmitter.fire()));\n this.valueSelectionUpdated = true;\n }\n super.show();\n }\n update() {\n if (!this.visible) {\n return;\n }\n this.ui.container.classList.remove('hidden-input');\n const visibilities = {\n title: !!this.title || !!this.step || !!this.buttons.length,\n description: !!this.description || !!this.step,\n inputBox: true,\n message: true,\n progressBar: true\n };\n this.ui.setVisibilities(visibilities);\n super.update();\n if (this.ui.inputBox.value !== this.value) {\n this.ui.inputBox.value = this.value;\n }\n if (this.valueSelectionUpdated) {\n this.valueSelectionUpdated = false;\n this.ui.inputBox.select(this._valueSelection && { start: this._valueSelection[0], end: this._valueSelection[1] });\n }\n if (this.ui.inputBox.placeholder !== (this.placeholder || '')) {\n this.ui.inputBox.placeholder = (this.placeholder || '');\n }\n if (this.ui.inputBox.password !== this.password) {\n this.ui.inputBox.password = this.password;\n }\n }\n}\nlet QuickInputHoverDelegate = class QuickInputHoverDelegate extends WorkbenchHoverDelegate {\n constructor(configurationService, hoverService) {\n super('element', false, (options) => this.getOverrideOptions(options), configurationService, hoverService);\n }\n getOverrideOptions(options) {\n var _a;\n // Only show the hover hint if the content is of a decent size\n const showHoverHint = (dom.isHTMLElement(options.content)\n ? (_a = options.content.textContent) !== null && _a !== void 0 ? _a : ''\n : typeof options.content === 'string'\n ? options.content\n : options.content.value).includes('\\n');\n return {\n persistence: {\n hideOnKeyDown: false,\n },\n appearance: {\n showHoverHint,\n skipFadeInAnimation: true,\n },\n };\n }\n};\nQuickInputHoverDelegate = __decorate([\n __param(0, IConfigurationService),\n __param(1, IHoverService)\n], QuickInputHoverDelegate);\nexport { QuickInputHoverDelegate };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../base/browser/dom.js';\nimport { FindInput } from '../../../base/browser/ui/findinput/findInput.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport Severity from '../../../base/common/severity.js';\nimport './media/quickInput.css';\nconst $ = dom.$;\nexport class QuickInputBox extends Disposable {\n constructor(parent, inputBoxStyles, toggleStyles) {\n super();\n this.parent = parent;\n this.onKeyDown = (handler) => {\n return dom.addStandardDisposableListener(this.findInput.inputBox.inputElement, dom.EventType.KEY_DOWN, handler);\n };\n this.onDidChange = (handler) => {\n return this.findInput.onDidChange(handler);\n };\n this.container = dom.append(this.parent, $('.quick-input-box'));\n this.findInput = this._register(new FindInput(this.container, undefined, { label: '', inputBoxStyles, toggleStyles }));\n const input = this.findInput.inputBox.inputElement;\n input.role = 'combobox';\n input.ariaHasPopup = 'menu';\n input.ariaAutoComplete = 'list';\n input.ariaExpanded = 'true';\n }\n get value() {\n return this.findInput.getValue();\n }\n set value(value) {\n this.findInput.setValue(value);\n }\n select(range = null) {\n this.findInput.inputBox.select(range);\n }\n getSelection() {\n return this.findInput.inputBox.getSelection();\n }\n isSelectionAtEnd() {\n return this.findInput.inputBox.isSelectionAtEnd();\n }\n get placeholder() {\n return this.findInput.inputBox.inputElement.getAttribute('placeholder') || '';\n }\n set placeholder(placeholder) {\n this.findInput.inputBox.setPlaceHolder(placeholder);\n }\n get password() {\n return this.findInput.inputBox.inputElement.type === 'password';\n }\n set password(password) {\n this.findInput.inputBox.inputElement.type = password ? 'password' : 'text';\n }\n set enabled(enabled) {\n // We can't disable the input box because it is still used for\n // navigating the list. Instead, we disable the list and the OK\n // so that nothing can be selected.\n // TODO: should this be what we do for all find inputs? Or maybe some _other_ API\n // on findInput to change it to readonly?\n this.findInput.inputBox.inputElement.toggleAttribute('readonly', !enabled);\n // TODO: styles of the quick pick need to be moved to the CSS instead of being in line\n // so things like this can be done in CSS\n // this.findInput.inputBox.inputElement.classList.toggle('disabled', !enabled);\n }\n set toggles(toggles) {\n this.findInput.setAdditionalToggles(toggles);\n }\n setAttribute(name, value) {\n this.findInput.inputBox.inputElement.setAttribute(name, value);\n }\n showDecoration(decoration) {\n if (decoration === Severity.Ignore) {\n this.findInput.clearMessage();\n }\n else {\n this.findInput.showMessage({ type: decoration === Severity.Info ? 1 /* MessageType.INFO */ : decoration === Severity.Warning ? 2 /* MessageType.WARNING */ : 3 /* MessageType.ERROR */, content: '' });\n }\n }\n stylesForType(decoration) {\n return this.findInput.inputBox.stylesForType(decoration === Severity.Info ? 1 /* MessageType.INFO */ : decoration === Severity.Warning ? 2 /* MessageType.WARNING */ : 3 /* MessageType.ERROR */);\n }\n setFocus() {\n this.findInput.focus();\n }\n layout() {\n this.findInput.inputBox.layout();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar QuickPickItemElementRenderer_1;\nimport * as dom from '../../../base/browser/dom.js';\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { localize } from '../../../nls.js';\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { WorkbenchObjectTree } from '../../list/browser/listService.js';\nimport { IThemeService } from '../../theme/common/themeService.js';\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\nimport { OS } from '../../../base/common/platform.js';\nimport { memoize } from '../../../base/common/decorators.js';\nimport { IconLabel } from '../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { KeybindingLabel } from '../../../base/browser/ui/keybindingLabel/keybindingLabel.js';\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\nimport { isDark } from '../../theme/common/theme.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { quickInputButtonToAction } from './quickInputUtils.js';\nimport { Lazy } from '../../../base/common/lazy.js';\nimport { getCodiconAriaLabel, matchesFuzzyIconAware, parseLabelWithIcons } from '../../../base/common/iconLabels.js';\nimport { compareAnything } from '../../../base/common/comparers.js';\nimport { ltrim } from '../../../base/common/strings.js';\nimport { RenderIndentGuides } from '../../../base/browser/ui/tree/abstractTree.js';\nimport { ThrottledDelayer } from '../../../base/common/async.js';\nimport { isCancellationError } from '../../../base/common/errors.js';\nimport { QuickPickFocus } from '../common/quickInput.js';\nimport { IAccessibilityService } from '../../accessibility/common/accessibility.js';\nconst $ = dom.$;\nclass BaseQuickPickItemElement {\n constructor(index, hasCheckbox, mainItem) {\n this.index = index;\n this.hasCheckbox = hasCheckbox;\n this._hidden = false;\n this._init = new Lazy(() => {\n var _a;\n const saneLabel = (_a = mainItem.label) !== null && _a !== void 0 ? _a : '';\n const saneSortLabel = parseLabelWithIcons(saneLabel).text.trim();\n const saneAriaLabel = mainItem.ariaLabel || [saneLabel, this.saneDescription, this.saneDetail]\n .map(s => getCodiconAriaLabel(s))\n .filter(s => !!s)\n .join(', ');\n return {\n saneLabel,\n saneSortLabel,\n saneAriaLabel\n };\n });\n this._saneDescription = mainItem.description;\n this._saneTooltip = mainItem.tooltip;\n }\n // #region Lazy Getters\n get saneLabel() {\n return this._init.value.saneLabel;\n }\n get saneSortLabel() {\n return this._init.value.saneSortLabel;\n }\n get saneAriaLabel() {\n return this._init.value.saneAriaLabel;\n }\n get element() {\n return this._element;\n }\n set element(value) {\n this._element = value;\n }\n get hidden() {\n return this._hidden;\n }\n set hidden(value) {\n this._hidden = value;\n }\n get saneDescription() {\n return this._saneDescription;\n }\n set saneDescription(value) {\n this._saneDescription = value;\n }\n get saneDetail() {\n return this._saneDetail;\n }\n set saneDetail(value) {\n this._saneDetail = value;\n }\n get saneTooltip() {\n return this._saneTooltip;\n }\n set saneTooltip(value) {\n this._saneTooltip = value;\n }\n get labelHighlights() {\n return this._labelHighlights;\n }\n set labelHighlights(value) {\n this._labelHighlights = value;\n }\n get descriptionHighlights() {\n return this._descriptionHighlights;\n }\n set descriptionHighlights(value) {\n this._descriptionHighlights = value;\n }\n get detailHighlights() {\n return this._detailHighlights;\n }\n set detailHighlights(value) {\n this._detailHighlights = value;\n }\n}\nclass QuickPickItemElement extends BaseQuickPickItemElement {\n constructor(index, hasCheckbox, fireButtonTriggered, _onChecked, item, _separator) {\n var _a, _b, _c;\n super(index, hasCheckbox, item);\n this.fireButtonTriggered = fireButtonTriggered;\n this._onChecked = _onChecked;\n this.item = item;\n this._separator = _separator;\n this._checked = false;\n this.onChecked = hasCheckbox\n ? Event.map(Event.filter(this._onChecked.event, e => e.element === this), e => e.checked)\n : Event.None;\n this._saneDetail = item.detail;\n this._labelHighlights = (_a = item.highlights) === null || _a === void 0 ? void 0 : _a.label;\n this._descriptionHighlights = (_b = item.highlights) === null || _b === void 0 ? void 0 : _b.description;\n this._detailHighlights = (_c = item.highlights) === null || _c === void 0 ? void 0 : _c.detail;\n }\n get separator() {\n return this._separator;\n }\n set separator(value) {\n this._separator = value;\n }\n get checked() {\n return this._checked;\n }\n set checked(value) {\n if (value !== this._checked) {\n this._checked = value;\n this._onChecked.fire({ element: this, checked: value });\n }\n }\n get checkboxDisabled() {\n return !!this.item.disabled;\n }\n}\nvar QuickPickSeparatorFocusReason;\n(function (QuickPickSeparatorFocusReason) {\n /**\n * No item is hovered or active\n */\n QuickPickSeparatorFocusReason[QuickPickSeparatorFocusReason[\"NONE\"] = 0] = \"NONE\";\n /**\n * Some item within this section is hovered\n */\n QuickPickSeparatorFocusReason[QuickPickSeparatorFocusReason[\"MOUSE_HOVER\"] = 1] = \"MOUSE_HOVER\";\n /**\n * Some item within this section is active\n */\n QuickPickSeparatorFocusReason[QuickPickSeparatorFocusReason[\"ACTIVE_ITEM\"] = 2] = \"ACTIVE_ITEM\";\n})(QuickPickSeparatorFocusReason || (QuickPickSeparatorFocusReason = {}));\nclass QuickPickSeparatorElement extends BaseQuickPickItemElement {\n constructor(index, fireSeparatorButtonTriggered, separator) {\n super(index, false, separator);\n this.fireSeparatorButtonTriggered = fireSeparatorButtonTriggered;\n this.separator = separator;\n this.children = new Array();\n /**\n * If this item is >0, it means that there is some item in the list that is either:\n * * hovered over\n * * active\n */\n this.focusInsideSeparator = QuickPickSeparatorFocusReason.NONE;\n }\n}\nclass QuickInputItemDelegate {\n getHeight(element) {\n if (element instanceof QuickPickSeparatorElement) {\n return 30;\n }\n return element.saneDetail ? 44 : 22;\n }\n getTemplateId(element) {\n if (element instanceof QuickPickItemElement) {\n return QuickPickItemElementRenderer.ID;\n }\n else {\n return QuickPickSeparatorElementRenderer.ID;\n }\n }\n}\nclass QuickInputAccessibilityProvider {\n getWidgetAriaLabel() {\n return localize('quickInput', \"Quick Input\");\n }\n getAriaLabel(element) {\n var _a;\n return ((_a = element.separator) === null || _a === void 0 ? void 0 : _a.label)\n ? `${element.saneAriaLabel}, ${element.separator.label}`\n : element.saneAriaLabel;\n }\n getWidgetRole() {\n return 'listbox';\n }\n getRole(element) {\n return element.hasCheckbox ? 'checkbox' : 'option';\n }\n isChecked(element) {\n if (!element.hasCheckbox || !(element instanceof QuickPickItemElement)) {\n return undefined;\n }\n return {\n get value() { return element.checked; },\n onDidChange: e => element.onChecked(() => e()),\n };\n }\n}\nclass BaseQuickInputListRenderer {\n constructor(hoverDelegate) {\n this.hoverDelegate = hoverDelegate;\n }\n // TODO: only do the common stuff here and have a subclass handle their specific stuff\n renderTemplate(container) {\n const data = Object.create(null);\n data.toDisposeElement = new DisposableStore();\n data.toDisposeTemplate = new DisposableStore();\n data.entry = dom.append(container, $('.quick-input-list-entry'));\n // Checkbox\n const label = dom.append(data.entry, $('label.quick-input-list-label'));\n data.toDisposeTemplate.add(dom.addStandardDisposableListener(label, dom.EventType.CLICK, e => {\n if (!data.checkbox.offsetParent) { // If checkbox not visible:\n e.preventDefault(); // Prevent toggle of checkbox when it is immediately shown afterwards. #91740\n }\n }));\n data.checkbox = dom.append(label, $('input.quick-input-list-checkbox'));\n data.checkbox.type = 'checkbox';\n // Rows\n const rows = dom.append(label, $('.quick-input-list-rows'));\n const row1 = dom.append(rows, $('.quick-input-list-row'));\n const row2 = dom.append(rows, $('.quick-input-list-row'));\n // Label\n data.label = new IconLabel(row1, { supportHighlights: true, supportDescriptionHighlights: true, supportIcons: true, hoverDelegate: this.hoverDelegate });\n data.toDisposeTemplate.add(data.label);\n data.icon = dom.prepend(data.label.element, $('.quick-input-list-icon'));\n // Keybinding\n const keybindingContainer = dom.append(row1, $('.quick-input-list-entry-keybinding'));\n data.keybinding = new KeybindingLabel(keybindingContainer, OS);\n data.toDisposeTemplate.add(data.keybinding);\n // Detail\n const detailContainer = dom.append(row2, $('.quick-input-list-label-meta'));\n data.detail = new IconLabel(detailContainer, { supportHighlights: true, supportIcons: true, hoverDelegate: this.hoverDelegate });\n data.toDisposeTemplate.add(data.detail);\n // Separator\n data.separator = dom.append(data.entry, $('.quick-input-list-separator'));\n // Actions\n data.actionBar = new ActionBar(data.entry, this.hoverDelegate ? { hoverDelegate: this.hoverDelegate } : undefined);\n data.actionBar.domNode.classList.add('quick-input-list-entry-action-bar');\n data.toDisposeTemplate.add(data.actionBar);\n return data;\n }\n disposeTemplate(data) {\n data.toDisposeElement.dispose();\n data.toDisposeTemplate.dispose();\n }\n disposeElement(_element, _index, data) {\n data.toDisposeElement.clear();\n data.actionBar.clear();\n }\n}\nlet QuickPickItemElementRenderer = QuickPickItemElementRenderer_1 = class QuickPickItemElementRenderer extends BaseQuickInputListRenderer {\n constructor(hoverDelegate, themeService) {\n super(hoverDelegate);\n this.themeService = themeService;\n // Follow what we do in the separator renderer\n this._itemsWithSeparatorsFrequency = new Map();\n }\n get templateId() {\n return QuickPickItemElementRenderer_1.ID;\n }\n renderTemplate(container) {\n const data = super.renderTemplate(container);\n data.toDisposeTemplate.add(dom.addStandardDisposableListener(data.checkbox, dom.EventType.CHANGE, e => {\n data.element.checked = data.checkbox.checked;\n }));\n return data;\n }\n renderElement(node, index, data) {\n var _a, _b, _c;\n const element = node.element;\n data.element = element;\n element.element = (_a = data.entry) !== null && _a !== void 0 ? _a : undefined;\n const mainItem = element.item;\n data.checkbox.checked = element.checked;\n data.toDisposeElement.add(element.onChecked(checked => data.checkbox.checked = checked));\n data.checkbox.disabled = element.checkboxDisabled;\n const { labelHighlights, descriptionHighlights, detailHighlights } = element;\n // Icon\n if (mainItem.iconPath) {\n const icon = isDark(this.themeService.getColorTheme().type) ? mainItem.iconPath.dark : ((_b = mainItem.iconPath.light) !== null && _b !== void 0 ? _b : mainItem.iconPath.dark);\n const iconUrl = URI.revive(icon);\n data.icon.className = 'quick-input-list-icon';\n data.icon.style.backgroundImage = dom.asCSSUrl(iconUrl);\n }\n else {\n data.icon.style.backgroundImage = '';\n data.icon.className = mainItem.iconClass ? `quick-input-list-icon ${mainItem.iconClass}` : '';\n }\n // Label\n let descriptionTitle;\n // if we have a tooltip, that will be the hover,\n // with the saneDescription as fallback if it\n // is defined\n if (!element.saneTooltip && element.saneDescription) {\n descriptionTitle = {\n markdown: {\n value: element.saneDescription,\n supportThemeIcons: true\n },\n markdownNotSupportedFallback: element.saneDescription\n };\n }\n const options = {\n matches: labelHighlights || [],\n // If we have a tooltip, we want that to be shown and not any other hover\n descriptionTitle,\n descriptionMatches: descriptionHighlights || [],\n labelEscapeNewLines: true\n };\n options.extraClasses = mainItem.iconClasses;\n options.italic = mainItem.italic;\n options.strikethrough = mainItem.strikethrough;\n data.entry.classList.remove('quick-input-list-separator-as-item');\n data.label.setLabel(element.saneLabel, element.saneDescription, options);\n // Keybinding\n data.keybinding.set(mainItem.keybinding);\n // Detail\n if (element.saneDetail) {\n let title;\n // If we have a tooltip, we want that to be shown and not any other hover\n if (!element.saneTooltip) {\n title = {\n markdown: {\n value: element.saneDetail,\n supportThemeIcons: true\n },\n markdownNotSupportedFallback: element.saneDetail\n };\n }\n data.detail.element.style.display = '';\n data.detail.setLabel(element.saneDetail, undefined, {\n matches: detailHighlights,\n title,\n labelEscapeNewLines: true\n });\n }\n else {\n data.detail.element.style.display = 'none';\n }\n // Separator\n if ((_c = element.separator) === null || _c === void 0 ? void 0 : _c.label) {\n data.separator.textContent = element.separator.label;\n data.separator.style.display = '';\n this.addItemWithSeparator(element);\n }\n else {\n data.separator.style.display = 'none';\n }\n data.entry.classList.toggle('quick-input-list-separator-border', !!element.separator);\n // Actions\n const buttons = mainItem.buttons;\n if (buttons && buttons.length) {\n data.actionBar.push(buttons.map((button, index) => quickInputButtonToAction(button, `id-${index}`, () => element.fireButtonTriggered({ button, item: element.item }))), { icon: true, label: false });\n data.entry.classList.add('has-actions');\n }\n else {\n data.entry.classList.remove('has-actions');\n }\n }\n disposeElement(element, _index, data) {\n this.removeItemWithSeparator(element.element);\n super.disposeElement(element, _index, data);\n }\n isItemWithSeparatorVisible(item) {\n return this._itemsWithSeparatorsFrequency.has(item);\n }\n addItemWithSeparator(item) {\n this._itemsWithSeparatorsFrequency.set(item, (this._itemsWithSeparatorsFrequency.get(item) || 0) + 1);\n }\n removeItemWithSeparator(item) {\n const frequency = this._itemsWithSeparatorsFrequency.get(item) || 0;\n if (frequency > 1) {\n this._itemsWithSeparatorsFrequency.set(item, frequency - 1);\n }\n else {\n this._itemsWithSeparatorsFrequency.delete(item);\n }\n }\n};\nQuickPickItemElementRenderer.ID = 'quickpickitem';\nQuickPickItemElementRenderer = QuickPickItemElementRenderer_1 = __decorate([\n __param(1, IThemeService)\n], QuickPickItemElementRenderer);\nclass QuickPickSeparatorElementRenderer extends BaseQuickInputListRenderer {\n constructor() {\n super(...arguments);\n // This is a frequency map because sticky scroll re-uses the same renderer to render a second\n // instance of the same separator.\n this._visibleSeparatorsFrequency = new Map();\n }\n get templateId() {\n return QuickPickSeparatorElementRenderer.ID;\n }\n get visibleSeparators() {\n return [...this._visibleSeparatorsFrequency.keys()];\n }\n isSeparatorVisible(separator) {\n return this._visibleSeparatorsFrequency.has(separator);\n }\n renderElement(node, index, data) {\n var _a;\n const element = node.element;\n data.element = element;\n element.element = (_a = data.entry) !== null && _a !== void 0 ? _a : undefined;\n element.element.classList.toggle('focus-inside', !!element.focusInsideSeparator);\n const mainItem = element.separator;\n const { labelHighlights, descriptionHighlights, detailHighlights } = element;\n // Icon\n data.icon.style.backgroundImage = '';\n data.icon.className = '';\n // Label\n let descriptionTitle;\n // if we have a tooltip, that will be the hover,\n // with the saneDescription as fallback if it\n // is defined\n if (!element.saneTooltip && element.saneDescription) {\n descriptionTitle = {\n markdown: {\n value: element.saneDescription,\n supportThemeIcons: true\n },\n markdownNotSupportedFallback: element.saneDescription\n };\n }\n const options = {\n matches: labelHighlights || [],\n // If we have a tooltip, we want that to be shown and not any other hover\n descriptionTitle,\n descriptionMatches: descriptionHighlights || [],\n labelEscapeNewLines: true\n };\n data.entry.classList.add('quick-input-list-separator-as-item');\n data.label.setLabel(element.saneLabel, element.saneDescription, options);\n // Detail\n if (element.saneDetail) {\n let title;\n // If we have a tooltip, we want that to be shown and not any other hover\n if (!element.saneTooltip) {\n title = {\n markdown: {\n value: element.saneDetail,\n supportThemeIcons: true\n },\n markdownNotSupportedFallback: element.saneDetail\n };\n }\n data.detail.element.style.display = '';\n data.detail.setLabel(element.saneDetail, undefined, {\n matches: detailHighlights,\n title,\n labelEscapeNewLines: true\n });\n }\n else {\n data.detail.element.style.display = 'none';\n }\n // Separator\n data.separator.style.display = 'none';\n data.entry.classList.add('quick-input-list-separator-border');\n // Actions\n const buttons = mainItem.buttons;\n if (buttons && buttons.length) {\n data.actionBar.push(buttons.map((button, index) => quickInputButtonToAction(button, `id-${index}`, () => element.fireSeparatorButtonTriggered({ button, separator: element.separator }))), { icon: true, label: false });\n data.entry.classList.add('has-actions');\n }\n else {\n data.entry.classList.remove('has-actions');\n }\n this.addSeparator(element);\n }\n disposeElement(element, _index, data) {\n var _a;\n this.removeSeparator(element.element);\n if (!this.isSeparatorVisible(element.element)) {\n (_a = element.element.element) === null || _a === void 0 ? void 0 : _a.classList.remove('focus-inside');\n }\n super.disposeElement(element, _index, data);\n }\n addSeparator(separator) {\n this._visibleSeparatorsFrequency.set(separator, (this._visibleSeparatorsFrequency.get(separator) || 0) + 1);\n }\n removeSeparator(separator) {\n const frequency = this._visibleSeparatorsFrequency.get(separator) || 0;\n if (frequency > 1) {\n this._visibleSeparatorsFrequency.set(separator, frequency - 1);\n }\n else {\n this._visibleSeparatorsFrequency.delete(separator);\n }\n }\n}\nQuickPickSeparatorElementRenderer.ID = 'quickpickseparator';\nlet QuickInputTree = class QuickInputTree extends Disposable {\n constructor(parent, hoverDelegate, linkOpenerDelegate, id, instantiationService, accessibilityService) {\n super();\n this.parent = parent;\n this.hoverDelegate = hoverDelegate;\n this.linkOpenerDelegate = linkOpenerDelegate;\n this.accessibilityService = accessibilityService;\n this._onKeyDown = new Emitter();\n this._onLeave = new Emitter();\n /**\n * Event that is fired when the tree would no longer have focus.\n */\n this.onLeave = this._onLeave.event;\n this._onChangedAllVisibleChecked = new Emitter();\n this.onChangedAllVisibleChecked = this._onChangedAllVisibleChecked.event;\n this._onChangedCheckedCount = new Emitter();\n this.onChangedCheckedCount = this._onChangedCheckedCount.event;\n this._onChangedVisibleCount = new Emitter();\n this.onChangedVisibleCount = this._onChangedVisibleCount.event;\n this._onChangedCheckedElements = new Emitter();\n this.onChangedCheckedElements = this._onChangedCheckedElements.event;\n this._onButtonTriggered = new Emitter();\n this.onButtonTriggered = this._onButtonTriggered.event;\n this._onSeparatorButtonTriggered = new Emitter();\n this.onSeparatorButtonTriggered = this._onSeparatorButtonTriggered.event;\n this._elementChecked = new Emitter();\n this._inputElements = new Array();\n this._elementTree = new Array();\n this._itemElements = new Array();\n // Elements that apply to the current set of elements\n this._elementDisposable = this._register(new DisposableStore());\n // This is used to prevent setting the checked state of a single element from firing the checked events\n // so that we can batch them together. This can probably be improved by handling events differently,\n // but this works for now. An observable would probably be ideal for this.\n this._shouldFireCheckedEvents = true;\n this._matchOnDescription = false;\n this._matchOnDetail = false;\n this._matchOnLabel = true;\n this._matchOnLabelMode = 'fuzzy';\n this._sortByLabel = true;\n this._shouldLoop = true;\n this._container = dom.append(this.parent, $('.quick-input-list'));\n this._separatorRenderer = new QuickPickSeparatorElementRenderer(hoverDelegate);\n this._itemRenderer = instantiationService.createInstance(QuickPickItemElementRenderer, hoverDelegate);\n this._tree = this._register(instantiationService.createInstance((WorkbenchObjectTree), 'QuickInput', this._container, new QuickInputItemDelegate(), [this._itemRenderer, this._separatorRenderer], {\n accessibilityProvider: new QuickInputAccessibilityProvider(),\n setRowLineHeight: false,\n multipleSelectionSupport: false,\n hideTwistiesOfChildlessElements: true,\n renderIndentGuides: RenderIndentGuides.None,\n findWidgetEnabled: false,\n indent: 0,\n horizontalScrolling: false,\n allowNonCollapsibleParents: true,\n alwaysConsumeMouseWheel: true\n }));\n this._tree.getHTMLElement().id = id;\n this._registerListeners();\n }\n //#region public getters/setters\n get onDidChangeFocus() {\n return Event.map(this._tree.onDidChangeFocus, e => e.elements.filter((e) => e instanceof QuickPickItemElement).map(e => e.item));\n }\n get onDidChangeSelection() {\n return Event.map(this._tree.onDidChangeSelection, e => ({\n items: e.elements.filter((e) => e instanceof QuickPickItemElement).map(e => e.item),\n event: e.browserEvent\n }));\n }\n get scrollTop() {\n return this._tree.scrollTop;\n }\n set scrollTop(scrollTop) {\n this._tree.scrollTop = scrollTop;\n }\n get ariaLabel() {\n return this._tree.ariaLabel;\n }\n set ariaLabel(label) {\n this._tree.ariaLabel = label !== null && label !== void 0 ? label : '';\n }\n set enabled(value) {\n this._tree.getHTMLElement().style.pointerEvents = value ? '' : 'none';\n }\n get matchOnDescription() {\n return this._matchOnDescription;\n }\n set matchOnDescription(value) {\n this._matchOnDescription = value;\n }\n get matchOnDetail() {\n return this._matchOnDetail;\n }\n set matchOnDetail(value) {\n this._matchOnDetail = value;\n }\n get matchOnLabel() {\n return this._matchOnLabel;\n }\n set matchOnLabel(value) {\n this._matchOnLabel = value;\n }\n get matchOnLabelMode() {\n return this._matchOnLabelMode;\n }\n set matchOnLabelMode(value) {\n this._matchOnLabelMode = value;\n }\n get sortByLabel() {\n return this._sortByLabel;\n }\n set sortByLabel(value) {\n this._sortByLabel = value;\n }\n get shouldLoop() {\n return this._shouldLoop;\n }\n set shouldLoop(value) {\n this._shouldLoop = value;\n }\n //#endregion\n //#region register listeners\n _registerListeners() {\n this._registerOnKeyDown();\n this._registerOnContainerClick();\n this._registerOnMouseMiddleClick();\n this._registerOnElementChecked();\n this._registerOnContextMenu();\n this._registerHoverListeners();\n this._registerSelectionChangeListener();\n this._registerSeparatorActionShowingListeners();\n }\n _registerOnKeyDown() {\n // TODO: Should this be added at a higher level?\n this._register(this._tree.onKeyDown(e => {\n const event = new StandardKeyboardEvent(e);\n switch (event.keyCode) {\n case 10 /* KeyCode.Space */:\n this.toggleCheckbox();\n break;\n }\n this._onKeyDown.fire(event);\n }));\n }\n _registerOnContainerClick() {\n this._register(dom.addDisposableListener(this._container, dom.EventType.CLICK, e => {\n if (e.x || e.y) { // Avoid 'click' triggered by 'space' on checkbox.\n this._onLeave.fire();\n }\n }));\n }\n _registerOnMouseMiddleClick() {\n this._register(dom.addDisposableListener(this._container, dom.EventType.AUXCLICK, e => {\n if (e.button === 1) {\n this._onLeave.fire();\n }\n }));\n }\n _registerOnElementChecked() {\n this._register(this._elementChecked.event(_ => this._fireCheckedEvents()));\n }\n _registerOnContextMenu() {\n this._register(this._tree.onContextMenu(e => {\n if (e.element) {\n e.browserEvent.preventDefault();\n // we want to treat a context menu event as\n // a gesture to open the item at the index\n // since we do not have any context menu\n // this enables for example macOS to Ctrl-\n // click on an item to open it.\n this._tree.setSelection([e.element]);\n }\n }));\n }\n _registerHoverListeners() {\n const delayer = this._register(new ThrottledDelayer(this.hoverDelegate.delay));\n this._register(this._tree.onMouseOver(async (e) => {\n var _a;\n // If we hover over an anchor element, we don't want to show the hover because\n // the anchor may have a tooltip that we want to show instead.\n if (dom.isHTMLAnchorElement(e.browserEvent.target)) {\n delayer.cancel();\n return;\n }\n if (\n // anchors are an exception as called out above so we skip them here\n !(dom.isHTMLAnchorElement(e.browserEvent.relatedTarget)) &&\n // check if the mouse is still over the same element\n dom.isAncestor(e.browserEvent.relatedTarget, (_a = e.element) === null || _a === void 0 ? void 0 : _a.element)) {\n return;\n }\n try {\n await delayer.trigger(async () => {\n if (e.element instanceof QuickPickItemElement) {\n this.showHover(e.element);\n }\n });\n }\n catch (e) {\n // Ignore cancellation errors due to mouse out\n if (!isCancellationError(e)) {\n throw e;\n }\n }\n }));\n this._register(this._tree.onMouseOut(e => {\n var _a;\n // onMouseOut triggers every time a new element has been moused over\n // even if it's on the same list item. We only want one event, so we\n // check if the mouse is still over the same element.\n if (dom.isAncestor(e.browserEvent.relatedTarget, (_a = e.element) === null || _a === void 0 ? void 0 : _a.element)) {\n return;\n }\n delayer.cancel();\n }));\n }\n /**\n * Register's focus change and mouse events so that we can track when items inside of a\n * separator's section are focused or hovered so that we can display the separator's actions\n */\n _registerSeparatorActionShowingListeners() {\n this._register(this._tree.onDidChangeFocus(e => {\n const parent = e.elements[0]\n ? this._tree.getParentElement(e.elements[0])\n // treat null as focus lost and when we have no separators\n : null;\n for (const separator of this._separatorRenderer.visibleSeparators) {\n const value = separator === parent;\n // get bitness of ACTIVE_ITEM and check if it changed\n const currentActive = !!(separator.focusInsideSeparator & QuickPickSeparatorFocusReason.ACTIVE_ITEM);\n if (currentActive !== value) {\n if (value) {\n separator.focusInsideSeparator |= QuickPickSeparatorFocusReason.ACTIVE_ITEM;\n }\n else {\n separator.focusInsideSeparator &= ~QuickPickSeparatorFocusReason.ACTIVE_ITEM;\n }\n this._tree.rerender(separator);\n }\n }\n }));\n this._register(this._tree.onMouseOver(e => {\n const parent = e.element\n ? this._tree.getParentElement(e.element)\n : null;\n for (const separator of this._separatorRenderer.visibleSeparators) {\n if (separator !== parent) {\n continue;\n }\n const currentMouse = !!(separator.focusInsideSeparator & QuickPickSeparatorFocusReason.MOUSE_HOVER);\n if (!currentMouse) {\n separator.focusInsideSeparator |= QuickPickSeparatorFocusReason.MOUSE_HOVER;\n this._tree.rerender(separator);\n }\n }\n }));\n this._register(this._tree.onMouseOut(e => {\n const parent = e.element\n ? this._tree.getParentElement(e.element)\n : null;\n for (const separator of this._separatorRenderer.visibleSeparators) {\n if (separator !== parent) {\n continue;\n }\n const currentMouse = !!(separator.focusInsideSeparator & QuickPickSeparatorFocusReason.MOUSE_HOVER);\n if (currentMouse) {\n separator.focusInsideSeparator &= ~QuickPickSeparatorFocusReason.MOUSE_HOVER;\n this._tree.rerender(separator);\n }\n }\n }));\n }\n _registerSelectionChangeListener() {\n // When the user selects a separator, the separator will move to the top and focus will be\n // set to the first element after the separator.\n this._register(this._tree.onDidChangeSelection(e => {\n const elementsWithoutSeparators = e.elements.filter((e) => e instanceof QuickPickItemElement);\n if (elementsWithoutSeparators.length !== e.elements.length) {\n if (e.elements.length === 1 && e.elements[0] instanceof QuickPickSeparatorElement) {\n this._tree.setFocus([e.elements[0].children[0]]);\n this._tree.reveal(e.elements[0], 0);\n }\n this._tree.setSelection(elementsWithoutSeparators);\n }\n }));\n }\n //#endregion\n //#region public methods\n getAllVisibleChecked() {\n return this._allVisibleChecked(this._itemElements, false);\n }\n getCheckedCount() {\n return this._itemElements.filter(element => element.checked).length;\n }\n getVisibleCount() {\n return this._itemElements.filter(e => !e.hidden).length;\n }\n setAllVisibleChecked(checked) {\n try {\n this._shouldFireCheckedEvents = false;\n this._itemElements.forEach(element => {\n if (!element.hidden && !element.checkboxDisabled) {\n // Would fire an event if we didn't have the flag set\n element.checked = checked;\n }\n });\n }\n finally {\n this._shouldFireCheckedEvents = true;\n this._fireCheckedEvents();\n }\n }\n setElements(inputElements) {\n this._elementDisposable.clear();\n this._inputElements = inputElements;\n const hasCheckbox = this.parent.classList.contains('show-checkboxes');\n let currentSeparatorElement;\n this._itemElements = new Array();\n this._elementTree = inputElements.reduce((result, item, index) => {\n let element;\n if (item.type === 'separator') {\n if (!item.buttons) {\n // This separator will be rendered as a part of the list item\n return result;\n }\n currentSeparatorElement = new QuickPickSeparatorElement(index, (event) => this.fireSeparatorButtonTriggered(event), item);\n element = currentSeparatorElement;\n }\n else {\n const previous = index > 0 ? inputElements[index - 1] : undefined;\n let separator;\n if (previous && previous.type === 'separator' && !previous.buttons) {\n // Found an inline separator so we clear out the current separator element\n currentSeparatorElement = undefined;\n separator = previous;\n }\n const qpi = new QuickPickItemElement(index, hasCheckbox, (event) => this.fireButtonTriggered(event), this._elementChecked, item, separator);\n this._itemElements.push(qpi);\n if (currentSeparatorElement) {\n currentSeparatorElement.children.push(qpi);\n return result;\n }\n element = qpi;\n }\n result.push(element);\n return result;\n }, new Array());\n const elements = new Array();\n let visibleCount = 0;\n for (const element of this._elementTree) {\n if (element instanceof QuickPickSeparatorElement) {\n elements.push({\n element,\n collapsible: false,\n collapsed: false,\n children: element.children.map(e => ({\n element: e,\n collapsible: false,\n collapsed: false,\n })),\n });\n visibleCount += element.children.length + 1; // +1 for the separator itself;\n }\n else {\n elements.push({\n element,\n collapsible: false,\n collapsed: false,\n });\n visibleCount++;\n }\n }\n this._tree.setChildren(null, elements);\n this._onChangedVisibleCount.fire(visibleCount);\n // Accessibility hack, unfortunately on next tick\n // https://github.com/microsoft/vscode/issues/211976\n if (this.accessibilityService.isScreenReaderOptimized()) {\n setTimeout(() => {\n const focusedElement = this._tree.getHTMLElement().querySelector(`.monaco-list-row.focused`);\n const parent = focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.parentNode;\n if (focusedElement && parent) {\n const nextSibling = focusedElement.nextSibling;\n parent.removeChild(focusedElement);\n parent.insertBefore(focusedElement, nextSibling);\n }\n }, 0);\n }\n }\n setFocusedElements(items) {\n const elements = items.map(item => this._itemElements.find(e => e.item === item))\n .filter((e) => !!e);\n this._tree.setFocus(elements);\n if (items.length > 0) {\n const focused = this._tree.getFocus()[0];\n if (focused) {\n this._tree.reveal(focused);\n }\n }\n }\n getActiveDescendant() {\n return this._tree.getHTMLElement().getAttribute('aria-activedescendant');\n }\n setSelectedElements(items) {\n const elements = items.map(item => this._itemElements.find(e => e.item === item))\n .filter((e) => !!e);\n this._tree.setSelection(elements);\n }\n getCheckedElements() {\n return this._itemElements.filter(e => e.checked)\n .map(e => e.item);\n }\n setCheckedElements(items) {\n try {\n this._shouldFireCheckedEvents = false;\n const checked = new Set();\n for (const item of items) {\n checked.add(item);\n }\n for (const element of this._itemElements) {\n // Would fire an event if we didn't have the flag set\n element.checked = checked.has(element.item);\n }\n }\n finally {\n this._shouldFireCheckedEvents = true;\n this._fireCheckedEvents();\n }\n }\n focus(what) {\n var _a;\n if (!this._itemElements.length) {\n return;\n }\n if (what === QuickPickFocus.Second && this._itemElements.length < 2) {\n what = QuickPickFocus.First;\n }\n switch (what) {\n case QuickPickFocus.First:\n this._tree.scrollTop = 0;\n this._tree.focusFirst(undefined, (e) => e.element instanceof QuickPickItemElement);\n break;\n case QuickPickFocus.Second:\n this._tree.scrollTop = 0;\n this._tree.setFocus([this._itemElements[1]]);\n break;\n case QuickPickFocus.Last:\n this._tree.scrollTop = this._tree.scrollHeight;\n this._tree.setFocus([this._itemElements[this._itemElements.length - 1]]);\n break;\n case QuickPickFocus.Next: {\n const prevFocus = this._tree.getFocus();\n this._tree.focusNext(undefined, this._shouldLoop, undefined, (e) => {\n if (!(e.element instanceof QuickPickItemElement)) {\n return false;\n }\n this._tree.reveal(e.element);\n return true;\n });\n const currentFocus = this._tree.getFocus();\n if (prevFocus.length && prevFocus[0] === currentFocus[0] && prevFocus[0] === this._itemElements[this._itemElements.length - 1]) {\n this._onLeave.fire();\n }\n break;\n }\n case QuickPickFocus.Previous: {\n const prevFocus = this._tree.getFocus();\n this._tree.focusPrevious(undefined, this._shouldLoop, undefined, (e) => {\n if (!(e.element instanceof QuickPickItemElement)) {\n return false;\n }\n const parent = this._tree.getParentElement(e.element);\n if (parent === null || parent.children[0] !== e.element) {\n this._tree.reveal(e.element);\n }\n else {\n // Only if we are the first child of a separator do we reveal the separator\n this._tree.reveal(parent);\n }\n return true;\n });\n const currentFocus = this._tree.getFocus();\n if (prevFocus.length && prevFocus[0] === currentFocus[0] && prevFocus[0] === this._itemElements[0]) {\n this._onLeave.fire();\n }\n break;\n }\n case QuickPickFocus.NextPage:\n this._tree.focusNextPage(undefined, (e) => {\n if (!(e.element instanceof QuickPickItemElement)) {\n return false;\n }\n this._tree.reveal(e.element);\n return true;\n });\n break;\n case QuickPickFocus.PreviousPage:\n this._tree.focusPreviousPage(undefined, (e) => {\n if (!(e.element instanceof QuickPickItemElement)) {\n return false;\n }\n const parent = this._tree.getParentElement(e.element);\n if (parent === null || parent.children[0] !== e.element) {\n this._tree.reveal(e.element);\n }\n else {\n this._tree.reveal(parent);\n }\n return true;\n });\n break;\n case QuickPickFocus.NextSeparator: {\n let foundSeparatorAsItem = false;\n const before = this._tree.getFocus()[0];\n this._tree.focusNext(undefined, true, undefined, (e) => {\n if (foundSeparatorAsItem) {\n // This should be the index right after the separator so it\n // is the item we want to focus.\n return true;\n }\n if (e.element instanceof QuickPickSeparatorElement) {\n foundSeparatorAsItem = true;\n // If the separator is visible, then we should just reveal its first child so it's not as jarring.\n if (this._separatorRenderer.isSeparatorVisible(e.element)) {\n this._tree.reveal(e.element.children[0]);\n }\n else {\n // If the separator is not visible, then we should\n // push it up to the top of the list.\n this._tree.reveal(e.element, 0);\n }\n }\n else if (e.element instanceof QuickPickItemElement) {\n if (e.element.separator) {\n if (this._itemRenderer.isItemWithSeparatorVisible(e.element)) {\n this._tree.reveal(e.element);\n }\n else {\n this._tree.reveal(e.element, 0);\n }\n return true;\n }\n else if (e.element === this._elementTree[0]) {\n // We should stop at the first item in the list if it's a regular item.\n this._tree.reveal(e.element, 0);\n return true;\n }\n }\n return false;\n });\n const after = this._tree.getFocus()[0];\n if (before === after) {\n // If we didn't move, then we should just move to the end\n // of the list.\n this._tree.scrollTop = this._tree.scrollHeight;\n this._tree.setFocus([this._itemElements[this._itemElements.length - 1]]);\n }\n break;\n }\n case QuickPickFocus.PreviousSeparator: {\n let focusElement;\n // If we are already sitting on an inline separator, then we\n // have already found the _current_ separator and need to\n // move to the previous one.\n let foundSeparator = !!((_a = this._tree.getFocus()[0]) === null || _a === void 0 ? void 0 : _a.separator);\n this._tree.focusPrevious(undefined, true, undefined, (e) => {\n if (e.element instanceof QuickPickSeparatorElement) {\n if (foundSeparator) {\n if (!focusElement) {\n if (this._separatorRenderer.isSeparatorVisible(e.element)) {\n this._tree.reveal(e.element);\n }\n else {\n this._tree.reveal(e.element, 0);\n }\n focusElement = e.element.children[0];\n }\n }\n else {\n foundSeparator = true;\n }\n }\n else if (e.element instanceof QuickPickItemElement) {\n if (!focusElement) {\n if (e.element.separator) {\n if (this._itemRenderer.isItemWithSeparatorVisible(e.element)) {\n this._tree.reveal(e.element);\n }\n else {\n this._tree.reveal(e.element, 0);\n }\n focusElement = e.element;\n }\n else if (e.element === this._elementTree[0]) {\n // We should stop at the first item in the list if it's a regular item.\n this._tree.reveal(e.element, 0);\n return true;\n }\n }\n }\n return false;\n });\n if (focusElement) {\n this._tree.setFocus([focusElement]);\n }\n break;\n }\n }\n }\n clearFocus() {\n this._tree.setFocus([]);\n }\n domFocus() {\n this._tree.domFocus();\n }\n layout(maxHeight) {\n this._tree.getHTMLElement().style.maxHeight = maxHeight ? `${\n // Make sure height aligns with list item heights\n Math.floor(maxHeight / 44) * 44\n // Add some extra height so that it's clear there's more to scroll\n + 6}px` : '';\n this._tree.layout();\n }\n filter(query) {\n if (!(this._sortByLabel || this._matchOnLabel || this._matchOnDescription || this._matchOnDetail)) {\n this._tree.layout();\n return false;\n }\n const queryWithWhitespace = query;\n query = query.trim();\n // Reset filtering\n if (!query || !(this.matchOnLabel || this.matchOnDescription || this.matchOnDetail)) {\n this._itemElements.forEach(element => {\n element.labelHighlights = undefined;\n element.descriptionHighlights = undefined;\n element.detailHighlights = undefined;\n element.hidden = false;\n const previous = element.index && this._inputElements[element.index - 1];\n if (element.item) {\n element.separator = previous && previous.type === 'separator' && !previous.buttons ? previous : undefined;\n }\n });\n }\n // Filter by value (since we support icons in labels, use $(..) aware fuzzy matching)\n else {\n let currentSeparator;\n this._elementTree.forEach(element => {\n var _a, _b, _c, _d;\n let labelHighlights;\n if (this.matchOnLabelMode === 'fuzzy') {\n labelHighlights = this.matchOnLabel ? (_a = matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneLabel))) !== null && _a !== void 0 ? _a : undefined : undefined;\n }\n else {\n labelHighlights = this.matchOnLabel ? (_b = matchesContiguousIconAware(queryWithWhitespace, parseLabelWithIcons(element.saneLabel))) !== null && _b !== void 0 ? _b : undefined : undefined;\n }\n const descriptionHighlights = this.matchOnDescription ? (_c = matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneDescription || ''))) !== null && _c !== void 0 ? _c : undefined : undefined;\n const detailHighlights = this.matchOnDetail ? (_d = matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneDetail || ''))) !== null && _d !== void 0 ? _d : undefined : undefined;\n if (labelHighlights || descriptionHighlights || detailHighlights) {\n element.labelHighlights = labelHighlights;\n element.descriptionHighlights = descriptionHighlights;\n element.detailHighlights = detailHighlights;\n element.hidden = false;\n }\n else {\n element.labelHighlights = undefined;\n element.descriptionHighlights = undefined;\n element.detailHighlights = undefined;\n element.hidden = element.item ? !element.item.alwaysShow : true;\n }\n // Ensure separators are filtered out first before deciding if we need to bring them back\n if (element.item) {\n element.separator = undefined;\n }\n else if (element.separator) {\n element.hidden = true;\n }\n // we can show the separator unless the list gets sorted by match\n if (!this.sortByLabel) {\n const previous = element.index && this._inputElements[element.index - 1];\n currentSeparator = previous && previous.type === 'separator' ? previous : currentSeparator;\n if (currentSeparator && !element.hidden) {\n element.separator = currentSeparator;\n currentSeparator = undefined;\n }\n }\n });\n }\n const shownElements = this._elementTree.filter(element => !element.hidden);\n // Sort by value\n if (this.sortByLabel && query) {\n const normalizedSearchValue = query.toLowerCase();\n shownElements.sort((a, b) => {\n return compareEntries(a, b, normalizedSearchValue);\n });\n }\n let currentSeparator;\n const finalElements = shownElements.reduce((result, element, index) => {\n if (element instanceof QuickPickItemElement) {\n if (currentSeparator) {\n currentSeparator.children.push(element);\n }\n else {\n result.push(element);\n }\n }\n else if (element instanceof QuickPickSeparatorElement) {\n element.children = [];\n currentSeparator = element;\n result.push(element);\n }\n return result;\n }, new Array());\n const elements = new Array();\n for (const element of finalElements) {\n if (element instanceof QuickPickSeparatorElement) {\n elements.push({\n element,\n collapsible: false,\n collapsed: false,\n children: element.children.map(e => ({\n element: e,\n collapsible: false,\n collapsed: false,\n })),\n });\n }\n else {\n elements.push({\n element,\n collapsible: false,\n collapsed: false,\n });\n }\n }\n this._tree.setChildren(null, elements);\n this._tree.layout();\n this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked());\n this._onChangedVisibleCount.fire(shownElements.length);\n return true;\n }\n toggleCheckbox() {\n try {\n this._shouldFireCheckedEvents = false;\n const elements = this._tree.getFocus().filter((e) => e instanceof QuickPickItemElement);\n const allChecked = this._allVisibleChecked(elements);\n for (const element of elements) {\n if (!element.checkboxDisabled) {\n // Would fire an event if we didn't have the flag set\n element.checked = !allChecked;\n }\n }\n }\n finally {\n this._shouldFireCheckedEvents = true;\n this._fireCheckedEvents();\n }\n }\n display(display) {\n this._container.style.display = display ? '' : 'none';\n }\n isDisplayed() {\n return this._container.style.display !== 'none';\n }\n style(styles) {\n this._tree.style(styles);\n }\n toggleHover() {\n const focused = this._tree.getFocus()[0];\n if (!(focused === null || focused === void 0 ? void 0 : focused.saneTooltip) || !(focused instanceof QuickPickItemElement)) {\n return;\n }\n // if there's a hover already, hide it (toggle off)\n if (this._lastHover && !this._lastHover.isDisposed) {\n this._lastHover.dispose();\n return;\n }\n // If there is no hover, show it (toggle on)\n this.showHover(focused);\n const store = new DisposableStore();\n store.add(this._tree.onDidChangeFocus(e => {\n if (e.elements[0] instanceof QuickPickItemElement) {\n this.showHover(e.elements[0]);\n }\n }));\n if (this._lastHover) {\n store.add(this._lastHover);\n }\n this._elementDisposable.add(store);\n }\n //#endregion\n //#region private methods\n _allVisibleChecked(elements, whenNoneVisible = true) {\n for (let i = 0, n = elements.length; i < n; i++) {\n const element = elements[i];\n if (!element.hidden) {\n if (!element.checked) {\n return false;\n }\n else {\n whenNoneVisible = true;\n }\n }\n }\n return whenNoneVisible;\n }\n _fireCheckedEvents() {\n if (!this._shouldFireCheckedEvents) {\n return;\n }\n this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked());\n this._onChangedCheckedCount.fire(this.getCheckedCount());\n this._onChangedCheckedElements.fire(this.getCheckedElements());\n }\n fireButtonTriggered(event) {\n this._onButtonTriggered.fire(event);\n }\n fireSeparatorButtonTriggered(event) {\n this._onSeparatorButtonTriggered.fire(event);\n }\n /**\n * Disposes of the hover and shows a new one for the given index if it has a tooltip.\n * @param element The element to show the hover for\n */\n showHover(element) {\n var _a, _b, _c;\n if (this._lastHover && !this._lastHover.isDisposed) {\n (_b = (_a = this.hoverDelegate).onDidHideHover) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_c = this._lastHover) === null || _c === void 0 ? void 0 : _c.dispose();\n }\n if (!element.element || !element.saneTooltip) {\n return;\n }\n this._lastHover = this.hoverDelegate.showHover({\n content: element.saneTooltip,\n target: element.element,\n linkHandler: (url) => {\n this.linkOpenerDelegate(url);\n },\n appearance: {\n showPointer: true,\n },\n container: this._container,\n position: {\n hoverPosition: 1 /* HoverPosition.RIGHT */\n }\n }, false);\n }\n};\n__decorate([\n memoize\n], QuickInputTree.prototype, \"onDidChangeFocus\", null);\n__decorate([\n memoize\n], QuickInputTree.prototype, \"onDidChangeSelection\", null);\nQuickInputTree = __decorate([\n __param(4, IInstantiationService),\n __param(5, IAccessibilityService)\n], QuickInputTree);\nexport { QuickInputTree };\nfunction matchesContiguousIconAware(query, target) {\n const { text, iconOffsets } = target;\n // Return early if there are no icon markers in the word to match against\n if (!iconOffsets || iconOffsets.length === 0) {\n return matchesContiguous(query, text);\n }\n // Trim the word to match against because it could have leading\n // whitespace now if the word started with an icon\n const wordToMatchAgainstWithoutIconsTrimmed = ltrim(text, ' ');\n const leadingWhitespaceOffset = text.length - wordToMatchAgainstWithoutIconsTrimmed.length;\n // match on value without icon\n const matches = matchesContiguous(query, wordToMatchAgainstWithoutIconsTrimmed);\n // Map matches back to offsets with icon and trimming\n if (matches) {\n for (const match of matches) {\n const iconOffset = iconOffsets[match.start + leadingWhitespaceOffset] /* icon offsets at index */ + leadingWhitespaceOffset /* overall leading whitespace offset */;\n match.start += iconOffset;\n match.end += iconOffset;\n }\n }\n return matches;\n}\nfunction matchesContiguous(word, wordToMatchAgainst) {\n const matchIndex = wordToMatchAgainst.toLowerCase().indexOf(word.toLowerCase());\n if (matchIndex !== -1) {\n return [{ start: matchIndex, end: matchIndex + word.length }];\n }\n return null;\n}\nfunction compareEntries(elementA, elementB, lookFor) {\n const labelHighlightsA = elementA.labelHighlights || [];\n const labelHighlightsB = elementB.labelHighlights || [];\n if (labelHighlightsA.length && !labelHighlightsB.length) {\n return -1;\n }\n if (!labelHighlightsA.length && labelHighlightsB.length) {\n return 1;\n }\n if (labelHighlightsA.length === 0 && labelHighlightsB.length === 0) {\n return 0;\n }\n return compareAnything(elementA.saneSortLabel, elementB.saneSortLabel, lookFor);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { isMacintosh } from '../../../base/common/platform.js';\nimport { localize } from '../../../nls.js';\nimport { ContextKeyExpr } from '../../contextkey/common/contextkey.js';\nimport { InputFocusedContext } from '../../contextkey/common/contextkeys.js';\nimport { KeybindingsRegistry } from '../../keybinding/common/keybindingsRegistry.js';\nimport { endOfQuickInputBoxContext, inQuickInputContext, quickInputTypeContextKeyValue } from './quickInput.js';\nimport { IQuickInputService, QuickPickFocus } from '../common/quickInput.js';\nconst defaultCommandAndKeybindingRule = {\n weight: 200 /* KeybindingWeight.WorkbenchContrib */,\n when: ContextKeyExpr.and(ContextKeyExpr.equals(quickInputTypeContextKeyValue, \"quickPick\" /* QuickInputType.QuickPick */), inQuickInputContext),\n metadata: { description: localize('quickPick', \"Used while in the context of the quick pick. If you change one keybinding for this command, you should change all of the other keybindings (modifier variants) of this command as well.\") }\n};\nfunction registerQuickPickCommandAndKeybindingRule(rule, options = {}) {\n var _a;\n KeybindingsRegistry.registerCommandAndKeybindingRule({\n ...defaultCommandAndKeybindingRule,\n ...rule,\n secondary: getSecondary(rule.primary, (_a = rule.secondary) !== null && _a !== void 0 ? _a : [], options)\n });\n}\nconst ctrlKeyMod = isMacintosh ? 256 /* KeyMod.WinCtrl */ : 2048 /* KeyMod.CtrlCmd */;\n// This function will generate all the combinations of keybindings for the given primary keybinding\nfunction getSecondary(primary, secondary, options = {}) {\n if (options.withAltMod) {\n secondary.push(512 /* KeyMod.Alt */ + primary);\n }\n if (options.withCtrlMod) {\n secondary.push(ctrlKeyMod + primary);\n if (options.withAltMod) {\n secondary.push(512 /* KeyMod.Alt */ + ctrlKeyMod + primary);\n }\n }\n if (options.withCmdMod && isMacintosh) {\n secondary.push(2048 /* KeyMod.CtrlCmd */ + primary);\n if (options.withCtrlMod) {\n secondary.push(2048 /* KeyMod.CtrlCmd */ + 256 /* KeyMod.WinCtrl */ + primary);\n }\n if (options.withAltMod) {\n secondary.push(2048 /* KeyMod.CtrlCmd */ + 512 /* KeyMod.Alt */ + primary);\n if (options.withCtrlMod) {\n secondary.push(2048 /* KeyMod.CtrlCmd */ + 512 /* KeyMod.Alt */ + 256 /* KeyMod.WinCtrl */ + primary);\n }\n }\n }\n return secondary;\n}\n//#region Navigation\nfunction focusHandler(focus, focusOnQuickNatigate) {\n return accessor => {\n // Assuming this is a quick pick due to above when clause\n const currentQuickPick = accessor.get(IQuickInputService).currentQuickInput;\n if (!currentQuickPick) {\n return;\n }\n if (focusOnQuickNatigate && currentQuickPick.quickNavigate) {\n return currentQuickPick.focus(focusOnQuickNatigate);\n }\n return currentQuickPick.focus(focus);\n };\n}\nregisterQuickPickCommandAndKeybindingRule({ id: 'quickInput.pageNext', primary: 12 /* KeyCode.PageDown */, handler: focusHandler(QuickPickFocus.NextPage) }, { withAltMod: true, withCtrlMod: true, withCmdMod: true });\nregisterQuickPickCommandAndKeybindingRule({ id: 'quickInput.pagePrevious', primary: 11 /* KeyCode.PageUp */, handler: focusHandler(QuickPickFocus.PreviousPage) }, { withAltMod: true, withCtrlMod: true, withCmdMod: true });\nregisterQuickPickCommandAndKeybindingRule({ id: 'quickInput.first', primary: ctrlKeyMod + 14 /* KeyCode.Home */, handler: focusHandler(QuickPickFocus.First) }, { withAltMod: true, withCmdMod: true });\nregisterQuickPickCommandAndKeybindingRule({ id: 'quickInput.last', primary: ctrlKeyMod + 13 /* KeyCode.End */, handler: focusHandler(QuickPickFocus.Last) }, { withAltMod: true, withCmdMod: true });\nregisterQuickPickCommandAndKeybindingRule({ id: 'quickInput.next', primary: 18 /* KeyCode.DownArrow */, handler: focusHandler(QuickPickFocus.Next) }, { withCtrlMod: true });\nregisterQuickPickCommandAndKeybindingRule({ id: 'quickInput.previous', primary: 16 /* KeyCode.UpArrow */, handler: focusHandler(QuickPickFocus.Previous) }, { withCtrlMod: true });\n// The next & previous separator commands are interesting because if we are in quick access mode, we are already holding a modifier key down.\n// In this case, we want that modifier key+up/down to navigate to the next/previous item, not the next/previous separator.\n// To handle this, we have a separate command for navigating to the next/previous separator when we are not in quick access mode.\n// If, however, we are in quick access mode, and you hold down an additional modifier key, we will navigate to the next/previous separator.\nconst nextSeparatorFallbackDesc = localize('quickInput.nextSeparatorWithQuickAccessFallback', \"If we're in quick access mode, this will navigate to the next item. If we are not in quick access mode, this will navigate to the next separator.\");\nconst prevSeparatorFallbackDesc = localize('quickInput.previousSeparatorWithQuickAccessFallback', \"If we're in quick access mode, this will navigate to the previous item. If we are not in quick access mode, this will navigate to the previous separator.\");\nif (isMacintosh) {\n registerQuickPickCommandAndKeybindingRule({\n id: 'quickInput.nextSeparatorWithQuickAccessFallback',\n primary: 2048 /* KeyMod.CtrlCmd */ + 18 /* KeyCode.DownArrow */,\n handler: focusHandler(QuickPickFocus.NextSeparator, QuickPickFocus.Next),\n metadata: { description: nextSeparatorFallbackDesc }\n });\n registerQuickPickCommandAndKeybindingRule({\n id: 'quickInput.nextSeparator',\n primary: 2048 /* KeyMod.CtrlCmd */ + 512 /* KeyMod.Alt */ + 18 /* KeyCode.DownArrow */,\n // Since macOS has the cmd key as the primary modifier, we need to add this additional\n // keybinding to capture cmd+ctrl+upArrow\n secondary: [2048 /* KeyMod.CtrlCmd */ + 256 /* KeyMod.WinCtrl */ + 18 /* KeyCode.DownArrow */],\n handler: focusHandler(QuickPickFocus.NextSeparator)\n }, { withCtrlMod: true });\n registerQuickPickCommandAndKeybindingRule({\n id: 'quickInput.previousSeparatorWithQuickAccessFallback',\n primary: 2048 /* KeyMod.CtrlCmd */ + 16 /* KeyCode.UpArrow */,\n handler: focusHandler(QuickPickFocus.PreviousSeparator, QuickPickFocus.Previous),\n metadata: { description: prevSeparatorFallbackDesc }\n });\n registerQuickPickCommandAndKeybindingRule({\n id: 'quickInput.previousSeparator',\n primary: 2048 /* KeyMod.CtrlCmd */ + 512 /* KeyMod.Alt */ + 16 /* KeyCode.UpArrow */,\n // Since macOS has the cmd key as the primary modifier, we need to add this additional\n // keybinding to capture cmd+ctrl+upArrow\n secondary: [2048 /* KeyMod.CtrlCmd */ + 256 /* KeyMod.WinCtrl */ + 16 /* KeyCode.UpArrow */],\n handler: focusHandler(QuickPickFocus.PreviousSeparator)\n }, { withCtrlMod: true });\n}\nelse {\n registerQuickPickCommandAndKeybindingRule({\n id: 'quickInput.nextSeparatorWithQuickAccessFallback',\n primary: 512 /* KeyMod.Alt */ + 18 /* KeyCode.DownArrow */,\n handler: focusHandler(QuickPickFocus.NextSeparator, QuickPickFocus.Next),\n metadata: { description: nextSeparatorFallbackDesc }\n });\n registerQuickPickCommandAndKeybindingRule({\n id: 'quickInput.nextSeparator',\n primary: 2048 /* KeyMod.CtrlCmd */ + 512 /* KeyMod.Alt */ + 18 /* KeyCode.DownArrow */,\n handler: focusHandler(QuickPickFocus.NextSeparator)\n });\n registerQuickPickCommandAndKeybindingRule({\n id: 'quickInput.previousSeparatorWithQuickAccessFallback',\n primary: 512 /* KeyMod.Alt */ + 16 /* KeyCode.UpArrow */,\n handler: focusHandler(QuickPickFocus.PreviousSeparator, QuickPickFocus.Previous),\n metadata: { description: prevSeparatorFallbackDesc }\n });\n registerQuickPickCommandAndKeybindingRule({\n id: 'quickInput.previousSeparator',\n primary: 2048 /* KeyMod.CtrlCmd */ + 512 /* KeyMod.Alt */ + 16 /* KeyCode.UpArrow */,\n handler: focusHandler(QuickPickFocus.PreviousSeparator)\n });\n}\n//#endregion\n//#region Accept\nregisterQuickPickCommandAndKeybindingRule({\n id: 'quickInput.acceptInBackground',\n // If we are in the quick pick but the input box is not focused or our cursor is at the end of the input box\n when: ContextKeyExpr.and(defaultCommandAndKeybindingRule.when, ContextKeyExpr.or(InputFocusedContext.negate(), endOfQuickInputBoxContext)),\n primary: 17 /* KeyCode.RightArrow */,\n // Need a little extra weight to ensure this keybinding is preferred over the default cmd+alt+right arrow keybinding\n // https://github.com/microsoft/vscode/blob/1451e4fbbbf074a4355cc537c35b547b80ce1c52/src/vs/workbench/browser/parts/editor/editorActions.ts#L1178-L1195\n weight: 200 /* KeybindingWeight.WorkbenchContrib */ + 50,\n handler: (accessor) => {\n const currentQuickPick = accessor.get(IQuickInputService).currentQuickInput;\n currentQuickPick === null || currentQuickPick === void 0 ? void 0 : currentQuickPick.accept(true);\n },\n}, { withAltMod: true, withCtrlMod: true, withCmdMod: true });\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar QuickInputController_1;\nimport * as dom from '../../../base/browser/dom.js';\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\nimport { Button } from '../../../base/browser/ui/button/button.js';\nimport { CountBadge } from '../../../base/browser/ui/countBadge/countBadge.js';\nimport { ProgressBar } from '../../../base/browser/ui/progressbar/progressbar.js';\nimport { CancellationToken } from '../../../base/common/cancellation.js';\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { Disposable, dispose } from '../../../base/common/lifecycle.js';\nimport Severity from '../../../base/common/severity.js';\nimport { localize } from '../../../nls.js';\nimport { QuickInputHideReason } from '../common/quickInput.js';\nimport { QuickInputBox } from './quickInputBox.js';\nimport { QuickPick, backButton, InputBox, InQuickInputContextKey, QuickInputTypeContextKey, EndOfQuickInputBoxContextKey } from './quickInput.js';\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\nimport { mainWindow } from '../../../base/browser/window.js';\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { QuickInputTree } from './quickInputTree.js';\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\nimport './quickInputActions.js';\nconst $ = dom.$;\nlet QuickInputController = QuickInputController_1 = class QuickInputController extends Disposable {\n get currentQuickInput() { var _a; return (_a = this.controller) !== null && _a !== void 0 ? _a : undefined; }\n get container() { return this._container; }\n constructor(options, layoutService, instantiationService, contextKeyService) {\n super();\n this.options = options;\n this.layoutService = layoutService;\n this.instantiationService = instantiationService;\n this.contextKeyService = contextKeyService;\n this.enabled = true;\n this.onDidAcceptEmitter = this._register(new Emitter());\n this.onDidCustomEmitter = this._register(new Emitter());\n this.onDidTriggerButtonEmitter = this._register(new Emitter());\n this.keyMods = { ctrlCmd: false, alt: false };\n this.controller = null;\n this.onShowEmitter = this._register(new Emitter());\n this.onShow = this.onShowEmitter.event;\n this.onHideEmitter = this._register(new Emitter());\n this.onHide = this.onHideEmitter.event;\n this.inQuickInputContext = InQuickInputContextKey.bindTo(this.contextKeyService);\n this.quickInputTypeContext = QuickInputTypeContextKey.bindTo(this.contextKeyService);\n this.endOfQuickInputBoxContext = EndOfQuickInputBoxContextKey.bindTo(this.contextKeyService);\n this.idPrefix = options.idPrefix;\n this._container = options.container;\n this.styles = options.styles;\n this._register(Event.runAndSubscribe(dom.onDidRegisterWindow, ({ window, disposables }) => this.registerKeyModsListeners(window, disposables), { window: mainWindow, disposables: this._store }));\n this._register(dom.onWillUnregisterWindow(window => {\n if (this.ui && dom.getWindow(this.ui.container) === window) {\n // The window this quick input is contained in is about to\n // close, so we have to make sure to reparent it back to an\n // existing parent to not loose functionality.\n // (https://github.com/microsoft/vscode/issues/195870)\n this.reparentUI(this.layoutService.mainContainer);\n this.layout(this.layoutService.mainContainerDimension, this.layoutService.mainContainerOffset.quickPickTop);\n }\n }));\n }\n registerKeyModsListeners(window, disposables) {\n const listener = (e) => {\n this.keyMods.ctrlCmd = e.ctrlKey || e.metaKey;\n this.keyMods.alt = e.altKey;\n };\n for (const event of [dom.EventType.KEY_DOWN, dom.EventType.KEY_UP, dom.EventType.MOUSE_DOWN]) {\n disposables.add(dom.addDisposableListener(window, event, listener, true));\n }\n }\n getUI(showInActiveContainer) {\n if (this.ui) {\n // In order to support aux windows, re-parent the controller\n // if the original event is from a different document\n if (showInActiveContainer) {\n if (dom.getWindow(this._container) !== dom.getWindow(this.layoutService.activeContainer)) {\n this.reparentUI(this.layoutService.activeContainer);\n this.layout(this.layoutService.activeContainerDimension, this.layoutService.activeContainerOffset.quickPickTop);\n }\n }\n return this.ui;\n }\n const container = dom.append(this._container, $('.quick-input-widget.show-file-icons'));\n container.tabIndex = -1;\n container.style.display = 'none';\n const styleSheet = dom.createStyleSheet(container);\n const titleBar = dom.append(container, $('.quick-input-titlebar'));\n const leftActionBar = this._register(new ActionBar(titleBar, { hoverDelegate: this.options.hoverDelegate }));\n leftActionBar.domNode.classList.add('quick-input-left-action-bar');\n const title = dom.append(titleBar, $('.quick-input-title'));\n const rightActionBar = this._register(new ActionBar(titleBar, { hoverDelegate: this.options.hoverDelegate }));\n rightActionBar.domNode.classList.add('quick-input-right-action-bar');\n const headerContainer = dom.append(container, $('.quick-input-header'));\n const checkAll = dom.append(headerContainer, $('input.quick-input-check-all'));\n checkAll.type = 'checkbox';\n checkAll.setAttribute('aria-label', localize('quickInput.checkAll', \"Toggle all checkboxes\"));\n this._register(dom.addStandardDisposableListener(checkAll, dom.EventType.CHANGE, e => {\n const checked = checkAll.checked;\n list.setAllVisibleChecked(checked);\n }));\n this._register(dom.addDisposableListener(checkAll, dom.EventType.CLICK, e => {\n if (e.x || e.y) { // Avoid 'click' triggered by 'space'...\n inputBox.setFocus();\n }\n }));\n const description2 = dom.append(headerContainer, $('.quick-input-description'));\n const inputContainer = dom.append(headerContainer, $('.quick-input-and-message'));\n const filterContainer = dom.append(inputContainer, $('.quick-input-filter'));\n const inputBox = this._register(new QuickInputBox(filterContainer, this.styles.inputBox, this.styles.toggle));\n inputBox.setAttribute('aria-describedby', `${this.idPrefix}message`);\n const visibleCountContainer = dom.append(filterContainer, $('.quick-input-visible-count'));\n visibleCountContainer.setAttribute('aria-live', 'polite');\n visibleCountContainer.setAttribute('aria-atomic', 'true');\n const visibleCount = new CountBadge(visibleCountContainer, { countFormat: localize({ key: 'quickInput.visibleCount', comment: ['This tells the user how many items are shown in a list of items to select from. The items can be anything. Currently not visible, but read by screen readers.'] }, \"{0} Results\") }, this.styles.countBadge);\n const countContainer = dom.append(filterContainer, $('.quick-input-count'));\n countContainer.setAttribute('aria-live', 'polite');\n const count = new CountBadge(countContainer, { countFormat: localize({ key: 'quickInput.countSelected', comment: ['This tells the user how many items are selected in a list of items to select from. The items can be anything.'] }, \"{0} Selected\") }, this.styles.countBadge);\n const okContainer = dom.append(headerContainer, $('.quick-input-action'));\n const ok = this._register(new Button(okContainer, this.styles.button));\n ok.label = localize('ok', \"OK\");\n this._register(ok.onDidClick(e => {\n this.onDidAcceptEmitter.fire();\n }));\n const customButtonContainer = dom.append(headerContainer, $('.quick-input-action'));\n const customButton = this._register(new Button(customButtonContainer, { ...this.styles.button, supportIcons: true }));\n customButton.label = localize('custom', \"Custom\");\n this._register(customButton.onDidClick(e => {\n this.onDidCustomEmitter.fire();\n }));\n const message = dom.append(inputContainer, $(`#${this.idPrefix}message.quick-input-message`));\n const progressBar = this._register(new ProgressBar(container, this.styles.progressBar));\n progressBar.getContainer().classList.add('quick-input-progress');\n const widget = dom.append(container, $('.quick-input-html-widget'));\n widget.tabIndex = -1;\n const description1 = dom.append(container, $('.quick-input-description'));\n const listId = this.idPrefix + 'list';\n const list = this._register(this.instantiationService.createInstance(QuickInputTree, container, this.options.hoverDelegate, this.options.linkOpenerDelegate, listId));\n inputBox.setAttribute('aria-controls', listId);\n this._register(list.onDidChangeFocus(() => {\n var _a;\n inputBox.setAttribute('aria-activedescendant', (_a = list.getActiveDescendant()) !== null && _a !== void 0 ? _a : '');\n }));\n this._register(list.onChangedAllVisibleChecked(checked => {\n checkAll.checked = checked;\n }));\n this._register(list.onChangedVisibleCount(c => {\n visibleCount.setCount(c);\n }));\n this._register(list.onChangedCheckedCount(c => {\n count.setCount(c);\n }));\n this._register(list.onLeave(() => {\n // Defer to avoid the input field reacting to the triggering key.\n // TODO@TylerLeonhardt https://github.com/microsoft/vscode/issues/203675\n setTimeout(() => {\n if (!this.controller) {\n return;\n }\n inputBox.setFocus();\n if (this.controller instanceof QuickPick && this.controller.canSelectMany) {\n list.clearFocus();\n }\n }, 0);\n }));\n const focusTracker = dom.trackFocus(container);\n this._register(focusTracker);\n this._register(dom.addDisposableListener(container, dom.EventType.FOCUS, e => {\n const ui = this.getUI();\n if (dom.isAncestor(e.relatedTarget, ui.inputContainer)) {\n const value = ui.inputBox.isSelectionAtEnd();\n if (this.endOfQuickInputBoxContext.get() !== value) {\n this.endOfQuickInputBoxContext.set(value);\n }\n }\n // Ignore focus events within container\n if (dom.isAncestor(e.relatedTarget, ui.container)) {\n return;\n }\n this.inQuickInputContext.set(true);\n this.previousFocusElement = dom.isHTMLElement(e.relatedTarget) ? e.relatedTarget : undefined;\n }, true));\n this._register(focusTracker.onDidBlur(() => {\n if (!this.getUI().ignoreFocusOut && !this.options.ignoreFocusOut()) {\n this.hide(QuickInputHideReason.Blur);\n }\n this.inQuickInputContext.set(false);\n this.endOfQuickInputBoxContext.set(false);\n this.previousFocusElement = undefined;\n }));\n this._register(inputBox.onKeyDown(_ => {\n const value = this.getUI().inputBox.isSelectionAtEnd();\n if (this.endOfQuickInputBoxContext.get() !== value) {\n this.endOfQuickInputBoxContext.set(value);\n }\n }));\n this._register(dom.addDisposableListener(container, dom.EventType.FOCUS, (e) => {\n inputBox.setFocus();\n }));\n // TODO: Turn into commands instead of handling KEY_DOWN\n // Keybindings for the quickinput widget as a whole\n this._register(dom.addStandardDisposableListener(container, dom.EventType.KEY_DOWN, (event) => {\n if (dom.isAncestor(event.target, widget)) {\n return; // Ignore event if target is inside widget to allow the widget to handle the event.\n }\n switch (event.keyCode) {\n case 3 /* KeyCode.Enter */:\n dom.EventHelper.stop(event, true);\n if (this.enabled) {\n this.onDidAcceptEmitter.fire();\n }\n break;\n case 9 /* KeyCode.Escape */:\n dom.EventHelper.stop(event, true);\n this.hide(QuickInputHideReason.Gesture);\n break;\n case 2 /* KeyCode.Tab */:\n if (!event.altKey && !event.ctrlKey && !event.metaKey) {\n // detect only visible actions\n const selectors = [\n '.quick-input-list .monaco-action-bar .always-visible',\n '.quick-input-list-entry:hover .monaco-action-bar',\n '.monaco-list-row.focused .monaco-action-bar'\n ];\n if (container.classList.contains('show-checkboxes')) {\n selectors.push('input');\n }\n else {\n selectors.push('input[type=text]');\n }\n if (this.getUI().list.isDisplayed()) {\n selectors.push('.monaco-list');\n }\n // focus links if there are any\n if (this.getUI().message) {\n selectors.push('.quick-input-message a');\n }\n if (this.getUI().widget) {\n if (dom.isAncestor(event.target, this.getUI().widget)) {\n // let the widget control tab\n break;\n }\n selectors.push('.quick-input-html-widget');\n }\n const stops = container.querySelectorAll(selectors.join(', '));\n if (event.shiftKey && event.target === stops[0]) {\n // Clear the focus from the list in order to allow\n // screen readers to read operations in the input box.\n dom.EventHelper.stop(event, true);\n list.clearFocus();\n }\n else if (!event.shiftKey && dom.isAncestor(event.target, stops[stops.length - 1])) {\n dom.EventHelper.stop(event, true);\n stops[0].focus();\n }\n }\n break;\n case 10 /* KeyCode.Space */:\n if (event.ctrlKey) {\n dom.EventHelper.stop(event, true);\n this.getUI().list.toggleHover();\n }\n break;\n }\n }));\n this.ui = {\n container,\n styleSheet,\n leftActionBar,\n titleBar,\n title,\n description1,\n description2,\n widget,\n rightActionBar,\n checkAll,\n inputContainer,\n filterContainer,\n inputBox,\n visibleCountContainer,\n visibleCount,\n countContainer,\n count,\n okContainer,\n ok,\n message,\n customButtonContainer,\n customButton,\n list,\n progressBar,\n onDidAccept: this.onDidAcceptEmitter.event,\n onDidCustom: this.onDidCustomEmitter.event,\n onDidTriggerButton: this.onDidTriggerButtonEmitter.event,\n ignoreFocusOut: false,\n keyMods: this.keyMods,\n show: controller => this.show(controller),\n hide: () => this.hide(),\n setVisibilities: visibilities => this.setVisibilities(visibilities),\n setEnabled: enabled => this.setEnabled(enabled),\n setContextKey: contextKey => this.options.setContextKey(contextKey),\n linkOpenerDelegate: content => this.options.linkOpenerDelegate(content)\n };\n this.updateStyles();\n return this.ui;\n }\n reparentUI(container) {\n if (this.ui) {\n this._container = container;\n dom.append(this._container, this.ui.container);\n }\n }\n pick(picks, options = {}, token = CancellationToken.None) {\n return new Promise((doResolve, reject) => {\n let resolve = (result) => {\n var _a;\n resolve = doResolve;\n (_a = options.onKeyMods) === null || _a === void 0 ? void 0 : _a.call(options, input.keyMods);\n doResolve(result);\n };\n if (token.isCancellationRequested) {\n resolve(undefined);\n return;\n }\n const input = this.createQuickPick();\n let activeItem;\n const disposables = [\n input,\n input.onDidAccept(() => {\n if (input.canSelectMany) {\n resolve(input.selectedItems.slice());\n input.hide();\n }\n else {\n const result = input.activeItems[0];\n if (result) {\n resolve(result);\n input.hide();\n }\n }\n }),\n input.onDidChangeActive(items => {\n const focused = items[0];\n if (focused && options.onDidFocus) {\n options.onDidFocus(focused);\n }\n }),\n input.onDidChangeSelection(items => {\n if (!input.canSelectMany) {\n const result = items[0];\n if (result) {\n resolve(result);\n input.hide();\n }\n }\n }),\n input.onDidTriggerItemButton(event => options.onDidTriggerItemButton && options.onDidTriggerItemButton({\n ...event,\n removeItem: () => {\n const index = input.items.indexOf(event.item);\n if (index !== -1) {\n const items = input.items.slice();\n const removed = items.splice(index, 1);\n const activeItems = input.activeItems.filter(activeItem => activeItem !== removed[0]);\n const keepScrollPositionBefore = input.keepScrollPosition;\n input.keepScrollPosition = true;\n input.items = items;\n if (activeItems) {\n input.activeItems = activeItems;\n }\n input.keepScrollPosition = keepScrollPositionBefore;\n }\n }\n })),\n input.onDidTriggerSeparatorButton(event => { var _a; return (_a = options.onDidTriggerSeparatorButton) === null || _a === void 0 ? void 0 : _a.call(options, event); }),\n input.onDidChangeValue(value => {\n if (activeItem && !value && (input.activeItems.length !== 1 || input.activeItems[0] !== activeItem)) {\n input.activeItems = [activeItem];\n }\n }),\n token.onCancellationRequested(() => {\n input.hide();\n }),\n input.onDidHide(() => {\n dispose(disposables);\n resolve(undefined);\n }),\n ];\n input.title = options.title;\n input.canSelectMany = !!options.canPickMany;\n input.placeholder = options.placeHolder;\n input.ignoreFocusOut = !!options.ignoreFocusLost;\n input.matchOnDescription = !!options.matchOnDescription;\n input.matchOnDetail = !!options.matchOnDetail;\n input.matchOnLabel = (options.matchOnLabel === undefined) || options.matchOnLabel; // default to true\n input.quickNavigate = options.quickNavigate;\n input.hideInput = !!options.hideInput;\n input.contextKey = options.contextKey;\n input.busy = true;\n Promise.all([picks, options.activeItem])\n .then(([items, _activeItem]) => {\n activeItem = _activeItem;\n input.busy = false;\n input.items = items;\n if (input.canSelectMany) {\n input.selectedItems = items.filter(item => item.type !== 'separator' && item.picked);\n }\n if (activeItem) {\n input.activeItems = [activeItem];\n }\n });\n input.show();\n Promise.resolve(picks).then(undefined, err => {\n reject(err);\n input.hide();\n });\n });\n }\n createQuickPick() {\n const ui = this.getUI(true);\n return new QuickPick(ui);\n }\n createInputBox() {\n const ui = this.getUI(true);\n return new InputBox(ui);\n }\n show(controller) {\n const ui = this.getUI(true);\n this.onShowEmitter.fire();\n const oldController = this.controller;\n this.controller = controller;\n oldController === null || oldController === void 0 ? void 0 : oldController.didHide();\n this.setEnabled(true);\n ui.leftActionBar.clear();\n ui.title.textContent = '';\n ui.description1.textContent = '';\n ui.description2.textContent = '';\n dom.reset(ui.widget);\n ui.rightActionBar.clear();\n ui.checkAll.checked = false;\n // ui.inputBox.value = ''; Avoid triggering an event.\n ui.inputBox.placeholder = '';\n ui.inputBox.password = false;\n ui.inputBox.showDecoration(Severity.Ignore);\n ui.visibleCount.setCount(0);\n ui.count.setCount(0);\n dom.reset(ui.message);\n ui.progressBar.stop();\n ui.list.setElements([]);\n ui.list.matchOnDescription = false;\n ui.list.matchOnDetail = false;\n ui.list.matchOnLabel = true;\n ui.list.sortByLabel = true;\n ui.ignoreFocusOut = false;\n ui.inputBox.toggles = undefined;\n const backKeybindingLabel = this.options.backKeybindingLabel();\n backButton.tooltip = backKeybindingLabel ? localize('quickInput.backWithKeybinding', \"Back ({0})\", backKeybindingLabel) : localize('quickInput.back', \"Back\");\n ui.container.style.display = '';\n this.updateLayout();\n ui.inputBox.setFocus();\n this.quickInputTypeContext.set(controller.type);\n }\n isVisible() {\n return !!this.ui && this.ui.container.style.display !== 'none';\n }\n setVisibilities(visibilities) {\n const ui = this.getUI();\n ui.title.style.display = visibilities.title ? '' : 'none';\n ui.description1.style.display = visibilities.description && (visibilities.inputBox || visibilities.checkAll) ? '' : 'none';\n ui.description2.style.display = visibilities.description && !(visibilities.inputBox || visibilities.checkAll) ? '' : 'none';\n ui.checkAll.style.display = visibilities.checkAll ? '' : 'none';\n ui.inputContainer.style.display = visibilities.inputBox ? '' : 'none';\n ui.filterContainer.style.display = visibilities.inputBox ? '' : 'none';\n ui.visibleCountContainer.style.display = visibilities.visibleCount ? '' : 'none';\n ui.countContainer.style.display = visibilities.count ? '' : 'none';\n ui.okContainer.style.display = visibilities.ok ? '' : 'none';\n ui.customButtonContainer.style.display = visibilities.customButton ? '' : 'none';\n ui.message.style.display = visibilities.message ? '' : 'none';\n ui.progressBar.getContainer().style.display = visibilities.progressBar ? '' : 'none';\n ui.list.display(!!visibilities.list);\n ui.container.classList.toggle('show-checkboxes', !!visibilities.checkBox);\n ui.container.classList.toggle('hidden-input', !visibilities.inputBox && !visibilities.description);\n this.updateLayout(); // TODO\n }\n setEnabled(enabled) {\n if (enabled !== this.enabled) {\n this.enabled = enabled;\n for (const item of this.getUI().leftActionBar.viewItems) {\n item.action.enabled = enabled;\n }\n for (const item of this.getUI().rightActionBar.viewItems) {\n item.action.enabled = enabled;\n }\n this.getUI().checkAll.disabled = !enabled;\n this.getUI().inputBox.enabled = enabled;\n this.getUI().ok.enabled = enabled;\n this.getUI().list.enabled = enabled;\n }\n }\n hide(reason) {\n var _a, _b;\n const controller = this.controller;\n if (!controller) {\n return;\n }\n controller.willHide(reason);\n const container = (_a = this.ui) === null || _a === void 0 ? void 0 : _a.container;\n const focusChanged = container && !dom.isAncestorOfActiveElement(container);\n this.controller = null;\n this.onHideEmitter.fire();\n if (container) {\n container.style.display = 'none';\n }\n if (!focusChanged) {\n let currentElement = this.previousFocusElement;\n while (currentElement && !currentElement.offsetParent) {\n currentElement = (_b = currentElement.parentElement) !== null && _b !== void 0 ? _b : undefined;\n }\n if (currentElement === null || currentElement === void 0 ? void 0 : currentElement.offsetParent) {\n currentElement.focus();\n this.previousFocusElement = undefined;\n }\n else {\n this.options.returnFocus();\n }\n }\n controller.didHide(reason);\n }\n layout(dimension, titleBarOffset) {\n this.dimension = dimension;\n this.titleBarOffset = titleBarOffset;\n this.updateLayout();\n }\n updateLayout() {\n if (this.ui && this.isVisible()) {\n this.ui.container.style.top = `${this.titleBarOffset}px`;\n const style = this.ui.container.style;\n const width = Math.min(this.dimension.width * 0.62 /* golden cut */, QuickInputController_1.MAX_WIDTH);\n style.width = width + 'px';\n style.marginLeft = '-' + (width / 2) + 'px';\n this.ui.inputBox.layout();\n this.ui.list.layout(this.dimension && this.dimension.height * 0.4);\n }\n }\n applyStyles(styles) {\n this.styles = styles;\n this.updateStyles();\n }\n updateStyles() {\n if (this.ui) {\n const { quickInputTitleBackground, quickInputBackground, quickInputForeground, widgetBorder, widgetShadow, } = this.styles.widget;\n this.ui.titleBar.style.backgroundColor = quickInputTitleBackground !== null && quickInputTitleBackground !== void 0 ? quickInputTitleBackground : '';\n this.ui.container.style.backgroundColor = quickInputBackground !== null && quickInputBackground !== void 0 ? quickInputBackground : '';\n this.ui.container.style.color = quickInputForeground !== null && quickInputForeground !== void 0 ? quickInputForeground : '';\n this.ui.container.style.border = widgetBorder ? `1px solid ${widgetBorder}` : '';\n this.ui.container.style.boxShadow = widgetShadow ? `0 0 8px 2px ${widgetShadow}` : '';\n this.ui.list.style(this.styles.list);\n const content = [];\n if (this.styles.pickerGroup.pickerGroupBorder) {\n content.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.pickerGroup.pickerGroupBorder}; }`);\n }\n if (this.styles.pickerGroup.pickerGroupForeground) {\n content.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.pickerGroup.pickerGroupForeground}; }`);\n }\n if (this.styles.pickerGroup.pickerGroupForeground) {\n content.push(`.quick-input-list .quick-input-list-separator-as-item { color: var(--vscode-descriptionForeground); }`);\n }\n if (this.styles.keybindingLabel.keybindingLabelBackground ||\n this.styles.keybindingLabel.keybindingLabelBorder ||\n this.styles.keybindingLabel.keybindingLabelBottomBorder ||\n this.styles.keybindingLabel.keybindingLabelShadow ||\n this.styles.keybindingLabel.keybindingLabelForeground) {\n content.push('.quick-input-list .monaco-keybinding > .monaco-keybinding-key {');\n if (this.styles.keybindingLabel.keybindingLabelBackground) {\n content.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`);\n }\n if (this.styles.keybindingLabel.keybindingLabelBorder) {\n // Order matters here. `border-color` must come before `border-bottom-color`.\n content.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`);\n }\n if (this.styles.keybindingLabel.keybindingLabelBottomBorder) {\n content.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`);\n }\n if (this.styles.keybindingLabel.keybindingLabelShadow) {\n content.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`);\n }\n if (this.styles.keybindingLabel.keybindingLabelForeground) {\n content.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`);\n }\n content.push('}');\n }\n const newStyles = content.join('\\n');\n if (newStyles !== this.ui.styleSheet.textContent) {\n this.ui.styleSheet.textContent = newStyles;\n }\n }\n }\n};\nQuickInputController.MAX_WIDTH = 600; // Max total width of quick input widget\nQuickInputController = QuickInputController_1 = __decorate([\n __param(1, ILayoutService),\n __param(2, IInstantiationService),\n __param(3, IContextKeyService)\n], QuickInputController);\nexport { QuickInputController };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { CancellationToken } from '../../../base/common/cancellation.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\nimport { IOpenerService } from '../../opener/common/opener.js';\nimport { QuickAccessController } from './quickAccess.js';\nimport { defaultButtonStyles, defaultCountBadgeStyles, defaultInputBoxStyles, defaultKeybindingLabelStyles, defaultProgressBarStyles, defaultToggleStyles, getListStyles } from '../../theme/browser/defaultStyles.js';\nimport { activeContrastBorder, asCssVariable, pickerGroupBorder, pickerGroupForeground, quickInputBackground, quickInputForeground, quickInputListFocusBackground, quickInputListFocusForeground, quickInputListFocusIconForeground, quickInputTitleBackground, widgetBorder, widgetShadow } from '../../theme/common/colorRegistry.js';\nimport { IThemeService, Themable } from '../../theme/common/themeService.js';\nimport { QuickInputHoverDelegate } from './quickInput.js';\nimport { QuickInputController } from './quickInputController.js';\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\nimport { getWindow } from '../../../base/browser/dom.js';\nlet QuickInputService = class QuickInputService extends Themable {\n get controller() {\n if (!this._controller) {\n this._controller = this._register(this.createController());\n }\n return this._controller;\n }\n get hasController() { return !!this._controller; }\n get currentQuickInput() { return this.controller.currentQuickInput; }\n get quickAccess() {\n if (!this._quickAccess) {\n this._quickAccess = this._register(this.instantiationService.createInstance(QuickAccessController));\n }\n return this._quickAccess;\n }\n constructor(instantiationService, contextKeyService, themeService, layoutService, configurationService) {\n super(themeService);\n this.instantiationService = instantiationService;\n this.contextKeyService = contextKeyService;\n this.layoutService = layoutService;\n this.configurationService = configurationService;\n this._onShow = this._register(new Emitter());\n this._onHide = this._register(new Emitter());\n this.contexts = new Map();\n }\n createController(host = this.layoutService, options) {\n const defaultOptions = {\n idPrefix: 'quickInput_',\n container: host.activeContainer,\n ignoreFocusOut: () => false,\n backKeybindingLabel: () => undefined,\n setContextKey: (id) => this.setContextKey(id),\n linkOpenerDelegate: (content) => {\n // HACK: https://github.com/microsoft/vscode/issues/173691\n this.instantiationService.invokeFunction(accessor => {\n const openerService = accessor.get(IOpenerService);\n openerService.open(content, { allowCommands: true, fromUserGesture: true });\n });\n },\n returnFocus: () => host.focus(),\n styles: this.computeStyles(),\n hoverDelegate: this._register(this.instantiationService.createInstance(QuickInputHoverDelegate))\n };\n const controller = this._register(this.instantiationService.createInstance(QuickInputController, {\n ...defaultOptions,\n ...options\n }));\n controller.layout(host.activeContainerDimension, host.activeContainerOffset.quickPickTop);\n // Layout changes\n this._register(host.onDidLayoutActiveContainer(dimension => {\n if (getWindow(host.activeContainer) === getWindow(controller.container)) {\n controller.layout(dimension, host.activeContainerOffset.quickPickTop);\n }\n }));\n this._register(host.onDidChangeActiveContainer(() => {\n if (controller.isVisible()) {\n return;\n }\n controller.layout(host.activeContainerDimension, host.activeContainerOffset.quickPickTop);\n }));\n // Context keys\n this._register(controller.onShow(() => {\n this.resetContextKeys();\n this._onShow.fire();\n }));\n this._register(controller.onHide(() => {\n this.resetContextKeys();\n this._onHide.fire();\n }));\n return controller;\n }\n setContextKey(id) {\n let key;\n if (id) {\n key = this.contexts.get(id);\n if (!key) {\n key = new RawContextKey(id, false)\n .bindTo(this.contextKeyService);\n this.contexts.set(id, key);\n }\n }\n if (key && key.get()) {\n return; // already active context\n }\n this.resetContextKeys();\n key === null || key === void 0 ? void 0 : key.set(true);\n }\n resetContextKeys() {\n this.contexts.forEach(context => {\n if (context.get()) {\n context.reset();\n }\n });\n }\n pick(picks, options = {}, token = CancellationToken.None) {\n return this.controller.pick(picks, options, token);\n }\n createQuickPick() {\n return this.controller.createQuickPick();\n }\n createInputBox() {\n return this.controller.createInputBox();\n }\n updateStyles() {\n if (this.hasController) {\n this.controller.applyStyles(this.computeStyles());\n }\n }\n computeStyles() {\n return {\n widget: {\n quickInputBackground: asCssVariable(quickInputBackground),\n quickInputForeground: asCssVariable(quickInputForeground),\n quickInputTitleBackground: asCssVariable(quickInputTitleBackground),\n widgetBorder: asCssVariable(widgetBorder),\n widgetShadow: asCssVariable(widgetShadow),\n },\n inputBox: defaultInputBoxStyles,\n toggle: defaultToggleStyles,\n countBadge: defaultCountBadgeStyles,\n button: defaultButtonStyles,\n progressBar: defaultProgressBarStyles,\n keybindingLabel: defaultKeybindingLabelStyles,\n list: getListStyles({\n listBackground: quickInputBackground,\n listFocusBackground: quickInputListFocusBackground,\n listFocusForeground: quickInputListFocusForeground,\n // Look like focused when inactive.\n listInactiveFocusForeground: quickInputListFocusForeground,\n listInactiveSelectionIconForeground: quickInputListFocusIconForeground,\n listInactiveFocusBackground: quickInputListFocusBackground,\n listFocusOutline: activeContrastBorder,\n listInactiveFocusOutline: activeContrastBorder,\n }),\n pickerGroup: {\n pickerGroupBorder: asCssVariable(pickerGroupBorder),\n pickerGroupForeground: asCssVariable(pickerGroupForeground),\n }\n };\n }\n};\nQuickInputService = __decorate([\n __param(0, IInstantiationService),\n __param(1, IContextKeyService),\n __param(2, IThemeService),\n __param(3, ILayoutService),\n __param(4, IConfigurationService)\n], QuickInputService);\nexport { QuickInputService };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { coalesce } from '../../../base/common/arrays.js';\nimport { toDisposable } from '../../../base/common/lifecycle.js';\nimport { Registry } from '../../registry/common/platform.js';\nexport var DefaultQuickAccessFilterValue;\n(function (DefaultQuickAccessFilterValue) {\n /**\n * Keep the value as it is given to quick access.\n */\n DefaultQuickAccessFilterValue[DefaultQuickAccessFilterValue[\"PRESERVE\"] = 0] = \"PRESERVE\";\n /**\n * Use the value that was used last time something was accepted from the picker.\n */\n DefaultQuickAccessFilterValue[DefaultQuickAccessFilterValue[\"LAST\"] = 1] = \"LAST\";\n})(DefaultQuickAccessFilterValue || (DefaultQuickAccessFilterValue = {}));\nexport const Extensions = {\n Quickaccess: 'workbench.contributions.quickaccess'\n};\nexport class QuickAccessRegistry {\n constructor() {\n this.providers = [];\n this.defaultProvider = undefined;\n }\n registerQuickAccessProvider(provider) {\n // Extract the default provider when no prefix is present\n if (provider.prefix.length === 0) {\n this.defaultProvider = provider;\n }\n else {\n this.providers.push(provider);\n }\n // sort the providers by decreasing prefix length, such that longer\n // prefixes take priority: 'ext' vs 'ext install' - the latter should win\n this.providers.sort((providerA, providerB) => providerB.prefix.length - providerA.prefix.length);\n return toDisposable(() => {\n this.providers.splice(this.providers.indexOf(provider), 1);\n if (this.defaultProvider === provider) {\n this.defaultProvider = undefined;\n }\n });\n }\n getQuickAccessProviders() {\n return coalesce([this.defaultProvider, ...this.providers]);\n }\n getQuickAccessProvider(prefix) {\n const result = prefix ? (this.providers.find(provider => prefix.startsWith(provider.prefix)) || undefined) : undefined;\n return result || this.defaultProvider;\n }\n}\nRegistry.add(Extensions.Quickaccess, new QuickAccessRegistry());\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const NO_KEY_MODS = { ctrlCmd: false, alt: false };\nexport var QuickInputHideReason;\n(function (QuickInputHideReason) {\n /**\n * Focus moved away from the quick input.\n */\n QuickInputHideReason[QuickInputHideReason[\"Blur\"] = 1] = \"Blur\";\n /**\n * An explicit user gesture, e.g. pressing Escape key.\n */\n QuickInputHideReason[QuickInputHideReason[\"Gesture\"] = 2] = \"Gesture\";\n /**\n * Anything else.\n */\n QuickInputHideReason[QuickInputHideReason[\"Other\"] = 3] = \"Other\";\n})(QuickInputHideReason || (QuickInputHideReason = {}));\n/**\n * Represents the activation behavior for items in a quick input. This means which item will be\n * \"active\" (aka focused).\n */\nexport var ItemActivation;\n(function (ItemActivation) {\n /**\n * No item will be active.\n */\n ItemActivation[ItemActivation[\"NONE\"] = 0] = \"NONE\";\n /**\n * First item will be active.\n */\n ItemActivation[ItemActivation[\"FIRST\"] = 1] = \"FIRST\";\n /**\n * Second item will be active.\n */\n ItemActivation[ItemActivation[\"SECOND\"] = 2] = \"SECOND\";\n /**\n * Last item will be active.\n */\n ItemActivation[ItemActivation[\"LAST\"] = 3] = \"LAST\";\n})(ItemActivation || (ItemActivation = {}));\n/**\n * Represents the focus options for a quick pick.\n */\nexport var QuickPickFocus;\n(function (QuickPickFocus) {\n /**\n * Focus the first item in the list.\n */\n QuickPickFocus[QuickPickFocus[\"First\"] = 1] = \"First\";\n /**\n * Focus the second item in the list.\n */\n QuickPickFocus[QuickPickFocus[\"Second\"] = 2] = \"Second\";\n /**\n * Focus the last item in the list.\n */\n QuickPickFocus[QuickPickFocus[\"Last\"] = 3] = \"Last\";\n /**\n * Focus the next item in the list.\n */\n QuickPickFocus[QuickPickFocus[\"Next\"] = 4] = \"Next\";\n /**\n * Focus the previous item in the list.\n */\n QuickPickFocus[QuickPickFocus[\"Previous\"] = 5] = \"Previous\";\n /**\n * Focus the next page in the list.\n */\n QuickPickFocus[QuickPickFocus[\"NextPage\"] = 6] = \"NextPage\";\n /**\n * Focus the previous page in the list.\n */\n QuickPickFocus[QuickPickFocus[\"PreviousPage\"] = 7] = \"PreviousPage\";\n /**\n * Focus the first item under the next separator.\n */\n QuickPickFocus[QuickPickFocus[\"NextSeparator\"] = 8] = \"NextSeparator\";\n /**\n * Focus the first item under the current separator.\n */\n QuickPickFocus[QuickPickFocus[\"PreviousSeparator\"] = 9] = \"PreviousSeparator\";\n})(QuickPickFocus || (QuickPickFocus = {}));\nexport class QuickPickItemScorerAccessor {\n constructor(options) {\n this.options = options;\n }\n}\nexport const quickPickItemScorerAccessor = new QuickPickItemScorerAccessor();\n//#endregion\nexport const IQuickInputService = createDecorator('quickInputService');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Assert from '../../../base/common/assert.js';\nimport * as Types from '../../../base/common/types.js';\nclass RegistryImpl {\n constructor() {\n this.data = new Map();\n }\n add(id, data) {\n Assert.ok(Types.isString(id));\n Assert.ok(Types.isObject(data));\n Assert.ok(!this.data.has(id), 'There is already an extension with this id');\n this.data.set(id, data);\n }\n as(id) {\n return this.data.get(id) || null;\n }\n}\nexport const Registry = new RegistryImpl();\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport './media/severityIcon.css';\nimport { Codicon } from '../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../base/common/themables.js';\nimport Severity from '../../../base/common/severity.js';\nexport var SeverityIcon;\n(function (SeverityIcon) {\n function className(severity) {\n switch (severity) {\n case Severity.Ignore:\n return 'severity-ignore ' + ThemeIcon.asClassName(Codicon.info);\n case Severity.Info:\n return ThemeIcon.asClassName(Codicon.info);\n case Severity.Warning:\n return ThemeIcon.asClassName(Codicon.warning);\n case Severity.Error:\n return ThemeIcon.asClassName(Codicon.error);\n default:\n return '';\n }\n }\n SeverityIcon.className = className;\n})(SeverityIcon || (SeverityIcon = {}));\n"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__param","paramIndex","decorator","Link","enabled","this","_enabled","el","setAttribute","tabIndex","style","pointerEvents","opacity","cursor","constructor","container","_link","options","_hoverService","openerService","_a","_b","super","$","href","label","hoverDelegate","setTooltip","title","onClickEmitter","_register","onKeyPress","onEnterPress","event","map","e","filter","keyCode","onTap","onOpen","opener","open","allowCommands","showNativeHover","hover","setupUpdatableHover","update","IOpenerService","extractSelection","uri","selection","match","exec","fragment","startLineNumber","parseInt","startColumn","endLineNumber","undefined","endColumn","with","IProgressService","freeze","total","worked","done","Progress","callback","report","item","_value","None","IEditorProgressService","TriggerAction","isPicksWithActive","obj","candidate","Array","isArray","items","isFastAndSlowPicks","picks","additionalPicks","Promise","PickerQuickAccessProvider","prefix","provide","picker","token","runOptions","disposables","picksCts","canAcceptInBackground","matchOnLabel","matchOnDescription","matchOnDetail","sortByLabel","picksDisposable","add","updatePickerItems","async","picksDisposables","value","dispose","busy","picksToken","picksFilter","substring","shouldSkipTrimPickFilter","trim","providedPicks","_getPicks","applyPicks","skipEmpty","activeItem","active","hideInput","noResultsPick","activeItems","applyFastAndSlowPicks","fastAndSlowPicks","fastPicksApplied","slowPicksApplied","all","mergeDelay","isCancellationRequested","awaitedAdditionalPicks","activePick","additionalActivePick","fallbackActivePick","fallbackActivePickCandidate","indexOf","awaitedPicks","onDidChangeValue","onDidAccept","handleAccept","inBackground","hide","call","selectedItems","accept","keyMods","buttonTrigger","button","trigger","buttonIndex","buttons","result","action","NO_ACTION","CLOSE_PICKER","REFRESH_PICKER","REMOVE_ITEM","index","slice","removed","splice","keepScrollPositionBefore","keepScrollPosition","onDidTriggerItemButton","onDidTriggerSeparatorButton","separator","AbstractCommandsQuickAccessProvider_1","CommandsHistory_1","AbstractCommandsQuickAccessProvider","instantiationService","keybindingService","commandService","telemetryService","dialogService","PREFIX","commandsHistory","createInstance","CommandsHistory","_disposables","_c","_d","allCommandPicks","getCommandPicks","runTfidf","tfidf","updateDocuments","commandPick","commandId","textChunks","getTfIdfChunk","calculateScores","score","TFIDF_THRESHOLD","TFIDF_MAX_RESULTS","filteredCommandPicks","labelHighlights","WORD_FILTER","aliasHighlights","commandAlias","highlights","detail","showAlias","push","tfidfScore","find","tfIdfScore","mapLabelToCommand","Map","existingCommandForLabel","get","description","set","sort","commandPickA","commandPickB","localeCompare","commandACounter","peek","commandBCounter","suggestedCommandIds","commandASuggestion","has","commandBSuggestion","commandPicks","addOtherSeparator","addSuggestedSeparator","addCommonlyUsedSeparator","type","toCommandPick","hasAdditionalCommandPicks","additionalCommandPicks","getAdditionalCommandPicks","unshift","keybinding","lookupKeybinding","ariaLabel","getAriaLabel","publicLog2","id","from","args","executeCommand","error","commandDescription","chunk","original","or","storageService","configurationService","logService","configuredCommandsHistoryLength","updateConfiguration","load","registerListeners","onDidChangeConfiguration","onWillSaveState","reason","saveState","affectsConfiguration","getConfiguredCommandHistoryLength","cache","limit","hasChanges","raw","PREF_KEY_CACHE","serializedCache","JSON","parse","entries","usesLRU","a","b","forEach","entry","counter","getNumber","PREF_KEY_COUNTER","store","stringify","configuredCommandHistoryLength","getValue","workbench","commandPalette","history","DEFAULT_COMMANDS_HISTORY_LENGTH","HelpQuickAccessProvider_1","HelpQuickAccessProvider","quickInputService","registry","quickAccess","show","preserveValue","providerDescriptor","getQuickAccessProvider","substr","getQuickAccessProviders","p","providerA","providerB","flatMap","provider","createPicks","helpEntries","helpEntry","QuickAccessController","mapProviderToDescriptor","lastAcceptedPickerValues","visibleQuickAccess","doShowOrPick","pick","descriptor","getOrInstantiateProvider","enabledProviderPrefixes","visibleDescriptor","adjustValueSelection","newValue","newValueCandidateWithoutPrefix","defaultFilterValue","visibleSelection","valueSelection","visibleValue","createQuickPick","pickPromise","placeholder","quickNavigate","quickNavigateConfiguration","itemActivation","contextKey","filterValue","onWillAccept","veto","registerPickerListeners","cts","providerOptions","onDidHide","cancel","complete","providerForValue","includes","ctor","iconPathToClass","iconClassGenerator","quickInputButtonToAction","run","cssClasses","iconClass","iconPath","dark","toString","nextId","dom","light","getIconClass","alwaysVisible","tooltip","class","inQuickInputContextKeyValue","InQuickInputContextKey","inQuickInputContext","quickInputTypeContextKeyValue","QuickInputTypeContextKey","endOfQuickInputBoxContextKeyValue","EndOfQuickInputBoxContextKey","endOfQuickInputBoxContext","backButton","handle","QuickInput","ui","_widgetUpdated","visible","_busy","_ignoreFocusOut","_buttons","buttonsUpdated","_toggles","togglesUpdated","noValidationMessage","noPromptMessage","_severity","onDidTriggerButtonEmitter","onDidHideEmitter","onWillHideEmitter","onDisposeEmitter","visibleDisposables","_title","_description","step","_steps","totalSteps","_totalSteps","_contextKey","ignoreFocusOut","shouldUpdate","toggles","validationMessage","_validationMessage","severity","onDidTriggerButton","fire","_lastValidationMessage","_lastSeverity","didHide","clear","willHide","getTitle","textContent","innerHTML","innerText","getDescription","description1","description2","_widget","widget","busyDelay","setIfNotSet","progressBar","infinite","stop","leftActionBar","leftButtons","icon","rightActionBar","rightButtons","concreteToggles","opts","inputBox","setEnabled","setContextKey","message","actionHandler","parsed","node","nodes","append","startsWith","anchor","textDecoration","handleOpen","onClick","onKeydown","onSpaceOrEnter","equals","appendChild","renderQuickInputDescription","content","linkOpenerDelegate","showMessageDecoration","getSteps","String","showDecoration","styles","stylesForType","color","foreground","backgroundColor","background","border","marginBottom","QuickPick","onDidChangeValueEmitter","onWillAcceptEmitter","onDidAcceptEmitter","onDidCustomEmitter","_items","itemsUpdated","_canSelectMany","_canAcceptInBackground","_matchOnDescription","_matchOnDetail","_matchOnLabel","_matchOnLabelMode","_sortByLabel","_keepScrollPosition","_itemActivation","_activeItems","activeItemsUpdated","activeItemsToConfirm","onDidChangeActiveEmitter","_selectedItems","selectedItemsUpdated","selectedItemsToConfirm","onDidChangeSelectionEmitter","onDidTriggerItemButtonEmitter","onDidTriggerSeparatorButtonEmitter","valueSelectionUpdated","_ok","_customButton","_focusEventBufferer","onDidChangeActive","onDidChangeSelection","_quickNavigate","doSetValue","skipUpdate","list","trySelectFirst","_ariaLabel","_placeholder","scrollTop","canSelectMany","matchOnLabelMode","getSelection","start","end","_valueSelection","customButton","showCustomButton","customLabel","_customButtonLabel","customHover","_customButtonHover","ok","showOkButton","_hideInput","focus","onDidChange","getCheckedElements","onDidCustom","wrapEvent","onDidChangeFocus","_","focusedItems","setSelectedElements","onChangedCheckedElements","checkedItems","onButtonTriggered","onSeparatorButtonTriggered","registerQuickNavigation","keyboardEvent","keybindings","some","k","chords","getChords","shiftKey","ctrlKey","altKey","metaKey","scrollTopBefore","hasDescription","visibilities","checkAll","_hideCheckAll","checkBox","visibleCount","count","_hideCountBadge","setVisibilities","select","DEFAULT_ARIA_LABEL","bufferEvents","setElements","shouldLoop","checked","getAllVisibleChecked","setCount","getVisibleCount","getCheckedCount","classList","contains","clearFocus","setFocusedElements","setCheckedElements","element","domFocus","InputBox","_password","onDidValueChangeEmitter","password","remove","QuickInputHoverDelegate","hoverService","getOverrideOptions","persistence","hideOnKeyDown","appearance","showHoverHint","skipFadeInAnimation","QuickInputBox","parent","inputBoxStyles","toggleStyles","onKeyDown","handler","findInput","inputElement","input","role","ariaHasPopup","ariaAutoComplete","ariaExpanded","setValue","range","isSelectionAtEnd","getAttribute","setPlaceHolder","toggleAttribute","setAdditionalToggles","name","decoration","clearMessage","showMessage","setFocus","layout","QuickPickItemElementRenderer_1","BaseQuickPickItemElement","hasCheckbox","mainItem","_hidden","_init","saneLabel","saneSortLabel","text","saneAriaLabel","saneDescription","saneDetail","s","join","_saneDescription","_saneTooltip","_element","hidden","_saneDetail","saneTooltip","_labelHighlights","descriptionHighlights","_descriptionHighlights","detailHighlights","_detailHighlights","QuickPickItemElement","fireButtonTriggered","_onChecked","_separator","_checked","onChecked","checkboxDisabled","disabled","QuickPickSeparatorFocusReason","QuickPickSeparatorElement","fireSeparatorButtonTriggered","children","focusInsideSeparator","NONE","QuickInputItemDelegate","getHeight","getTemplateId","QuickPickItemElementRenderer","ID","QuickPickSeparatorElementRenderer","QuickInputAccessibilityProvider","getWidgetAriaLabel","getWidgetRole","getRole","isChecked","BaseQuickInputListRenderer","renderTemplate","data","create","toDisposeElement","toDisposeTemplate","checkbox","offsetParent","preventDefault","rows","row1","row2","supportHighlights","supportDescriptionHighlights","supportIcons","keybindingContainer","OS","detailContainer","actionBar","domNode","disposeTemplate","disposeElement","_index","themeService","_itemsWithSeparatorsFrequency","templateId","renderElement","getColorTheme","iconUrl","className","backgroundImage","descriptionTitle","markdown","supportThemeIcons","markdownNotSupportedFallback","matches","descriptionMatches","labelEscapeNewLines","extraClasses","iconClasses","italic","strikethrough","setLabel","display","addItemWithSeparator","toggle","removeItemWithSeparator","isItemWithSeparatorVisible","frequency","delete","_visibleSeparatorsFrequency","visibleSeparators","keys","isSeparatorVisible","addSeparator","removeSeparator","QuickInputTree","accessibilityService","_onKeyDown","_onLeave","onLeave","_onChangedAllVisibleChecked","onChangedAllVisibleChecked","_onChangedCheckedCount","onChangedCheckedCount","_onChangedVisibleCount","onChangedVisibleCount","_onChangedCheckedElements","_onButtonTriggered","_onSeparatorButtonTriggered","_elementChecked","_inputElements","_elementTree","_itemElements","_elementDisposable","_shouldFireCheckedEvents","_shouldLoop","_container","_separatorRenderer","_itemRenderer","_tree","accessibilityProvider","setRowLineHeight","multipleSelectionSupport","hideTwistiesOfChildlessElements","renderIndentGuides","findWidgetEnabled","indent","horizontalScrolling","allowNonCollapsibleParents","alwaysConsumeMouseWheel","getHTMLElement","_registerListeners","elements","browserEvent","_registerOnKeyDown","_registerOnContainerClick","_registerOnMouseMiddleClick","_registerOnElementChecked","_registerOnContextMenu","_registerHoverListeners","_registerSelectionChangeListener","_registerSeparatorActionShowingListeners","toggleCheckbox","x","y","_fireCheckedEvents","onContextMenu","setSelection","delayer","delay","onMouseOver","relatedTarget","showHover","onMouseOut","getParentElement","ACTIVE_ITEM","rerender","MOUSE_HOVER","elementsWithoutSeparators","reveal","_allVisibleChecked","setAllVisibleChecked","inputElements","currentSeparatorElement","reduce","previous","qpi","collapsible","collapsed","setChildren","isScreenReaderOptimized","setTimeout","focusedElement","querySelector","parentNode","nextSibling","removeChild","insertBefore","focused","getFocus","getActiveDescendant","Set","what","focusFirst","scrollHeight","prevFocus","focusNext","currentFocus","focusPrevious","focusNextPage","focusPreviousPage","foundSeparatorAsItem","before","focusElement","foundSeparator","maxHeight","Math","floor","query","queryWithWhitespace","currentSeparator","iconOffsets","matchesContiguous","wordToMatchAgainstWithoutIconsTrimmed","leadingWhitespaceOffset","iconOffset","matchesContiguousIconAware","alwaysShow","shownElements","normalizedSearchValue","toLowerCase","elementA","elementB","lookFor","labelHighlightsA","labelHighlightsB","compareEntries","finalElements","allChecked","isDisplayed","toggleHover","_lastHover","isDisposed","whenNoneVisible","n","onDidHideHover","linkHandler","url","showPointer","position","hoverPosition","word","wordToMatchAgainst","matchIndex","prototype","defaultCommandAndKeybindingRule","weight","when","metadata","registerQuickPickCommandAndKeybindingRule","rule","secondary","getSecondary","primary","ctrlKeyMod","withAltMod","withCtrlMod","withCmdMod","focusHandler","focusOnQuickNatigate","accessor","currentQuickPick","currentQuickInput","nextSeparatorFallbackDesc","prevSeparatorFallbackDesc","QuickInputController_1","QuickInputController","controller","layoutService","contextKeyService","ctrlCmd","alt","onShowEmitter","onShow","onHideEmitter","onHide","bindTo","quickInputTypeContext","idPrefix","window","registerKeyModsListeners","_store","reparentUI","mainContainer","mainContainerDimension","mainContainerOffset","quickPickTop","listener","getUI","showInActiveContainer","activeContainer","activeContainerDimension","activeContainerOffset","styleSheet","titleBar","headerContainer","inputContainer","filterContainer","visibleCountContainer","countFormat","comment","countBadge","countContainer","okContainer","onDidClick","customButtonContainer","getContainer","listId","focusTracker","previousFocusElement","onDidBlur","selectors","stops","querySelectorAll","updateStyles","doResolve","reject","resolve","onKeyMods","onDidFocus","removeItem","onCancellationRequested","canPickMany","placeHolder","ignoreFocusLost","then","_activeItem","picked","err","createInputBox","oldController","backKeybindingLabel","updateLayout","isVisible","viewItems","focusChanged","currentElement","parentElement","returnFocus","dimension","titleBarOffset","top","width","min","MAX_WIDTH","marginLeft","height","applyStyles","quickInputTitleBackground","quickInputBackground","quickInputForeground","widgetBorder","widgetShadow","boxShadow","pickerGroup","pickerGroupBorder","pickerGroupForeground","keybindingLabel","keybindingLabelBackground","keybindingLabelBorder","keybindingLabelBottomBorder","keybindingLabelShadow","keybindingLabelForeground","newStyles","QuickInputService","_controller","createController","hasController","_quickAccess","_onShow","_onHide","contexts","host","defaultOptions","invokeFunction","fromUserGesture","computeStyles","onDidLayoutActiveContainer","onDidChangeActiveContainer","resetContextKeys","context","reset","listBackground","listFocusBackground","listFocusForeground","listInactiveFocusForeground","listInactiveSelectionIconForeground","listInactiveFocusBackground","listFocusOutline","listInactiveFocusOutline","DefaultQuickAccessFilterValue","Extensions","Quickaccess","providers","defaultProvider","registerQuickAccessProvider","NO_KEY_MODS","QuickInputHideReason","ItemActivation","QuickPickFocus","IQuickInputService","Registry","as","SeverityIcon"],"sourceRoot":""}