{"version":3,"file":"static/js/7514_9e742159f480d1439861.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/editor/contrib/longLinesHelper/browser/longLinesHelper.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/message/browser/messageController.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/multicursor/browser/multicursor.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/provideSignatureHelp.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/peekView/browser/peekView.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/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/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/rename/browser/renameWidget.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/monaco-editor@0.50.0/node_modules/monaco-editor/esm/vs/editor/contrib/rename/browser/rename.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 *--------------------------------------------------------------------------------------------*/\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nclass LongLinesHelper extends Disposable {\n constructor(_editor) {\n super();\n this._editor = _editor;\n this._register(this._editor.onMouseDown((e) => {\n const stopRenderingLineAfter = this._editor.getOption(117 /* EditorOption.stopRenderingLineAfter */);\n if (stopRenderingLineAfter >= 0 && e.target.type === 6 /* MouseTargetType.CONTENT_TEXT */ && e.target.position.column >= stopRenderingLineAfter) {\n this._editor.updateOptions({\n stopRenderingLineAfter: -1\n });\n }\n }));\n }\n}\nLongLinesHelper.ID = 'editor.contrib.longLinesHelper';\nregisterEditorContribution(LongLinesHelper.ID, LongLinesHelper, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\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 MessageController_1;\nimport { renderMarkdown } from '../../../../base/browser/markdownRenderer.js';\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { isMarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport './messageController.css';\nimport { EditorCommand, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { openLinkFromMarkdown } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport * as dom from '../../../../base/browser/dom.js';\nlet MessageController = MessageController_1 = class MessageController {\n static get(editor) {\n return editor.getContribution(MessageController_1.ID);\n }\n constructor(editor, contextKeyService, _openerService) {\n this._openerService = _openerService;\n this._messageWidget = new MutableDisposable();\n this._messageListeners = new DisposableStore();\n this._mouseOverMessage = false;\n this._editor = editor;\n this._visible = MessageController_1.MESSAGE_VISIBLE.bindTo(contextKeyService);\n }\n dispose() {\n var _a;\n (_a = this._message) === null || _a === void 0 ? void 0 : _a.dispose();\n this._messageListeners.dispose();\n this._messageWidget.dispose();\n this._visible.reset();\n }\n showMessage(message, position) {\n alert(isMarkdownString(message) ? message.value : message);\n this._visible.set(true);\n this._messageWidget.clear();\n this._messageListeners.clear();\n this._message = isMarkdownString(message) ? renderMarkdown(message, {\n actionHandler: {\n callback: (url) => {\n this.closeMessage();\n openLinkFromMarkdown(this._openerService, url, isMarkdownString(message) ? message.isTrusted : undefined);\n },\n disposables: this._messageListeners\n },\n }) : undefined;\n this._messageWidget.value = new MessageWidget(this._editor, position, typeof message === 'string' ? message : this._message.element);\n // close on blur (debounced to allow to tab into the message), cursor, model change, dispose\n this._messageListeners.add(Event.debounce(this._editor.onDidBlurEditorText, (last, event) => event, 0)(() => {\n if (this._mouseOverMessage) {\n return; // override when mouse over message\n }\n if (this._messageWidget.value && dom.isAncestor(dom.getActiveElement(), this._messageWidget.value.getDomNode())) {\n return; // override when focus is inside the message\n }\n this.closeMessage();\n }));\n this._messageListeners.add(this._editor.onDidChangeCursorPosition(() => this.closeMessage()));\n this._messageListeners.add(this._editor.onDidDispose(() => this.closeMessage()));\n this._messageListeners.add(this._editor.onDidChangeModel(() => this.closeMessage()));\n this._messageListeners.add(dom.addDisposableListener(this._messageWidget.value.getDomNode(), dom.EventType.MOUSE_ENTER, () => this._mouseOverMessage = true, true));\n this._messageListeners.add(dom.addDisposableListener(this._messageWidget.value.getDomNode(), dom.EventType.MOUSE_LEAVE, () => this._mouseOverMessage = false, true));\n // close on mouse move\n let bounds;\n this._messageListeners.add(this._editor.onMouseMove(e => {\n // outside the text area\n if (!e.target.position) {\n return;\n }\n if (!bounds) {\n // define bounding box around position and first mouse occurance\n bounds = new Range(position.lineNumber - 3, 1, e.target.position.lineNumber + 3, 1);\n }\n else if (!bounds.containsPosition(e.target.position)) {\n // check if position is still in bounds\n this.closeMessage();\n }\n }));\n }\n closeMessage() {\n this._visible.reset();\n this._messageListeners.clear();\n if (this._messageWidget.value) {\n this._messageListeners.add(MessageWidget.fadeOut(this._messageWidget.value));\n }\n }\n};\nMessageController.ID = 'editor.contrib.messageController';\nMessageController.MESSAGE_VISIBLE = new RawContextKey('messageVisible', false, nls.localize('messageVisible', 'Whether the editor is currently showing an inline message'));\nMessageController = MessageController_1 = __decorate([\n __param(1, IContextKeyService),\n __param(2, IOpenerService)\n], MessageController);\nexport { MessageController };\nconst MessageCommand = EditorCommand.bindToContribution(MessageController.get);\nregisterEditorCommand(new MessageCommand({\n id: 'leaveEditorMessage',\n precondition: MessageController.MESSAGE_VISIBLE,\n handler: c => c.closeMessage(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 30,\n primary: 9 /* KeyCode.Escape */\n }\n}));\nclass MessageWidget {\n static fadeOut(messageWidget) {\n const dispose = () => {\n messageWidget.dispose();\n clearTimeout(handle);\n messageWidget.getDomNode().removeEventListener('animationend', dispose);\n };\n const handle = setTimeout(dispose, 110);\n messageWidget.getDomNode().addEventListener('animationend', dispose);\n messageWidget.getDomNode().classList.add('fadeOut');\n return { dispose };\n }\n constructor(editor, { lineNumber, column }, text) {\n // Editor.IContentWidget.allowEditorOverflow\n this.allowEditorOverflow = true;\n this.suppressMouseDown = false;\n this._editor = editor;\n this._editor.revealLinesInCenterIfOutsideViewport(lineNumber, lineNumber, 0 /* ScrollType.Smooth */);\n this._position = { lineNumber, column };\n this._domNode = document.createElement('div');\n this._domNode.classList.add('monaco-editor-overlaymessage');\n this._domNode.style.marginLeft = '-6px';\n const anchorTop = document.createElement('div');\n anchorTop.classList.add('anchor', 'top');\n this._domNode.appendChild(anchorTop);\n const message = document.createElement('div');\n if (typeof text === 'string') {\n message.classList.add('message');\n message.textContent = text;\n }\n else {\n text.classList.add('message');\n message.appendChild(text);\n }\n this._domNode.appendChild(message);\n const anchorBottom = document.createElement('div');\n anchorBottom.classList.add('anchor', 'below');\n this._domNode.appendChild(anchorBottom);\n this._editor.addContentWidget(this);\n this._domNode.classList.add('fadeIn');\n }\n dispose() {\n this._editor.removeContentWidget(this);\n }\n getId() {\n return 'messageoverlay';\n }\n getDomNode() {\n return this._domNode;\n }\n getPosition() {\n return {\n position: this._position,\n preference: [\n 1 /* ContentWidgetPositionPreference.ABOVE */,\n 2 /* ContentWidgetPositionPreference.BELOW */,\n ],\n positionAffinity: 1 /* PositionAffinity.Right */,\n };\n }\n afterRender(position) {\n this._domNode.classList.toggle('below', position === 2 /* ContentWidgetPositionPreference.BELOW */);\n }\n}\nregisterEditorContribution(MessageController.ID, MessageController, 4 /* EditorContributionInstantiation.Lazy */);\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 SelectionHighlighter_1;\nimport { status } from '../../../../base/browser/ui/aria/aria.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { CursorMoveCommands } from '../../../common/cursor/cursorMoveCommands.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { CommonFindController } from '../../find/browser/findController.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getSelectionHighlightDecorationOptions } from '../../wordHighlighter/browser/highlightDecorations.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nfunction announceCursorChange(previousCursorState, cursorState) {\n const cursorDiff = cursorState.filter(cs => !previousCursorState.find(pcs => pcs.equals(cs)));\n if (cursorDiff.length >= 1) {\n const cursorPositions = cursorDiff.map(cs => `line ${cs.viewState.position.lineNumber} column ${cs.viewState.position.column}`).join(', ');\n const msg = cursorDiff.length === 1 ? nls.localize('cursorAdded', \"Cursor added: {0}\", cursorPositions) : nls.localize('cursorsAdded', \"Cursors added: {0}\", cursorPositions);\n status(msg);\n }\n}\nexport class InsertCursorAbove extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.insertCursorAbove',\n label: nls.localize('mutlicursor.insertAbove', \"Add Cursor Above\"),\n alias: 'Add Cursor Above',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */,\n linux: {\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 16 /* KeyCode.UpArrow */]\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miInsertCursorAbove', comment: ['&& denotes a mnemonic'] }, \"&&Add Cursor Above\"),\n order: 2\n }\n });\n }\n run(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n let useLogicalLine = true;\n if (args && args.logicalLine === false) {\n useLogicalLine = false;\n }\n const viewModel = editor._getViewModel();\n if (viewModel.cursorConfig.readOnly) {\n return;\n }\n viewModel.model.pushStackElement();\n const previousCursorState = viewModel.getCursorStates();\n viewModel.setCursorStates(args.source, 3 /* CursorChangeReason.Explicit */, CursorMoveCommands.addCursorUp(viewModel, previousCursorState, useLogicalLine));\n viewModel.revealTopMostCursor(args.source);\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nexport class InsertCursorBelow extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.insertCursorBelow',\n label: nls.localize('mutlicursor.insertBelow', \"Add Cursor Below\"),\n alias: 'Add Cursor Below',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */,\n linux: {\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 18 /* KeyCode.DownArrow */]\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miInsertCursorBelow', comment: ['&& denotes a mnemonic'] }, \"A&&dd Cursor Below\"),\n order: 3\n }\n });\n }\n run(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n let useLogicalLine = true;\n if (args && args.logicalLine === false) {\n useLogicalLine = false;\n }\n const viewModel = editor._getViewModel();\n if (viewModel.cursorConfig.readOnly) {\n return;\n }\n viewModel.model.pushStackElement();\n const previousCursorState = viewModel.getCursorStates();\n viewModel.setCursorStates(args.source, 3 /* CursorChangeReason.Explicit */, CursorMoveCommands.addCursorDown(viewModel, previousCursorState, useLogicalLine));\n viewModel.revealBottomMostCursor(args.source);\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nclass InsertCursorAtEndOfEachLineSelected extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.insertCursorAtEndOfEachLineSelected',\n label: nls.localize('mutlicursor.insertAtEndOfEachLineSelected', \"Add Cursors to Line Ends\"),\n alias: 'Add Cursors to Line Ends',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 39 /* KeyCode.KeyI */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miInsertCursorAtEndOfEachLineSelected', comment: ['&& denotes a mnemonic'] }, \"Add C&&ursors to Line Ends\"),\n order: 4\n }\n });\n }\n getCursorsForSelection(selection, model, result) {\n if (selection.isEmpty()) {\n return;\n }\n for (let i = selection.startLineNumber; i < selection.endLineNumber; i++) {\n const currentLineMaxColumn = model.getLineMaxColumn(i);\n result.push(new Selection(i, currentLineMaxColumn, i, currentLineMaxColumn));\n }\n if (selection.endColumn > 1) {\n result.push(new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn));\n }\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const model = editor.getModel();\n const selections = editor.getSelections();\n const viewModel = editor._getViewModel();\n const previousCursorState = viewModel.getCursorStates();\n const newSelections = [];\n selections.forEach((sel) => this.getCursorsForSelection(sel, model, newSelections));\n if (newSelections.length > 0) {\n editor.setSelections(newSelections);\n }\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nclass InsertCursorAtEndOfLineSelected extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.addCursorsToBottom',\n label: nls.localize('mutlicursor.addCursorsToBottom', \"Add Cursors To Bottom\"),\n alias: 'Add Cursors To Bottom',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const selections = editor.getSelections();\n const lineCount = editor.getModel().getLineCount();\n const newSelections = [];\n for (let i = selections[0].startLineNumber; i <= lineCount; i++) {\n newSelections.push(new Selection(i, selections[0].startColumn, i, selections[0].endColumn));\n }\n const viewModel = editor._getViewModel();\n const previousCursorState = viewModel.getCursorStates();\n if (newSelections.length > 0) {\n editor.setSelections(newSelections);\n }\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nclass InsertCursorAtTopOfLineSelected extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.addCursorsToTop',\n label: nls.localize('mutlicursor.addCursorsToTop', \"Add Cursors To Top\"),\n alias: 'Add Cursors To Top',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const selections = editor.getSelections();\n const newSelections = [];\n for (let i = selections[0].startLineNumber; i >= 1; i--) {\n newSelections.push(new Selection(i, selections[0].startColumn, i, selections[0].endColumn));\n }\n const viewModel = editor._getViewModel();\n const previousCursorState = viewModel.getCursorStates();\n if (newSelections.length > 0) {\n editor.setSelections(newSelections);\n }\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nexport class MultiCursorSessionResult {\n constructor(selections, revealRange, revealScrollType) {\n this.selections = selections;\n this.revealRange = revealRange;\n this.revealScrollType = revealScrollType;\n }\n}\nexport class MultiCursorSession {\n static create(editor, findController) {\n if (!editor.hasModel()) {\n return null;\n }\n const findState = findController.getState();\n // Find widget owns entirely what we search for if:\n // - focus is not in the editor (i.e. it is in the find widget)\n // - and the search widget is visible\n // - and the search string is non-empty\n if (!editor.hasTextFocus() && findState.isRevealed && findState.searchString.length > 0) {\n // Find widget owns what is searched for\n return new MultiCursorSession(editor, findController, false, findState.searchString, findState.wholeWord, findState.matchCase, null);\n }\n // Otherwise, the selection gives the search text, and the find widget gives the search settings\n // The exception is the find state disassociation case: when beginning with a single, collapsed selection\n let isDisconnectedFromFindController = false;\n let wholeWord;\n let matchCase;\n const selections = editor.getSelections();\n if (selections.length === 1 && selections[0].isEmpty()) {\n isDisconnectedFromFindController = true;\n wholeWord = true;\n matchCase = true;\n }\n else {\n wholeWord = findState.wholeWord;\n matchCase = findState.matchCase;\n }\n // Selection owns what is searched for\n const s = editor.getSelection();\n let searchText;\n let currentMatch = null;\n if (s.isEmpty()) {\n // selection is empty => expand to current word\n const word = editor.getConfiguredWordAtPosition(s.getStartPosition());\n if (!word) {\n return null;\n }\n searchText = word.word;\n currentMatch = new Selection(s.startLineNumber, word.startColumn, s.startLineNumber, word.endColumn);\n }\n else {\n searchText = editor.getModel().getValueInRange(s).replace(/\\r\\n/g, '\\n');\n }\n return new MultiCursorSession(editor, findController, isDisconnectedFromFindController, searchText, wholeWord, matchCase, currentMatch);\n }\n constructor(_editor, findController, isDisconnectedFromFindController, searchText, wholeWord, matchCase, currentMatch) {\n this._editor = _editor;\n this.findController = findController;\n this.isDisconnectedFromFindController = isDisconnectedFromFindController;\n this.searchText = searchText;\n this.wholeWord = wholeWord;\n this.matchCase = matchCase;\n this.currentMatch = currentMatch;\n }\n addSelectionToNextFindMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n const nextMatch = this._getNextMatch();\n if (!nextMatch) {\n return null;\n }\n const allSelections = this._editor.getSelections();\n return new MultiCursorSessionResult(allSelections.concat(nextMatch), nextMatch, 0 /* ScrollType.Smooth */);\n }\n moveSelectionToNextFindMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n const nextMatch = this._getNextMatch();\n if (!nextMatch) {\n return null;\n }\n const allSelections = this._editor.getSelections();\n return new MultiCursorSessionResult(allSelections.slice(0, allSelections.length - 1).concat(nextMatch), nextMatch, 0 /* ScrollType.Smooth */);\n }\n _getNextMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n if (this.currentMatch) {\n const result = this.currentMatch;\n this.currentMatch = null;\n return result;\n }\n this.findController.highlightFindOptions();\n const allSelections = this._editor.getSelections();\n const lastAddedSelection = allSelections[allSelections.length - 1];\n const nextMatch = this._editor.getModel().findNextMatch(this.searchText, lastAddedSelection.getEndPosition(), false, this.matchCase, this.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, false);\n if (!nextMatch) {\n return null;\n }\n return new Selection(nextMatch.range.startLineNumber, nextMatch.range.startColumn, nextMatch.range.endLineNumber, nextMatch.range.endColumn);\n }\n addSelectionToPreviousFindMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n const previousMatch = this._getPreviousMatch();\n if (!previousMatch) {\n return null;\n }\n const allSelections = this._editor.getSelections();\n return new MultiCursorSessionResult(allSelections.concat(previousMatch), previousMatch, 0 /* ScrollType.Smooth */);\n }\n moveSelectionToPreviousFindMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n const previousMatch = this._getPreviousMatch();\n if (!previousMatch) {\n return null;\n }\n const allSelections = this._editor.getSelections();\n return new MultiCursorSessionResult(allSelections.slice(0, allSelections.length - 1).concat(previousMatch), previousMatch, 0 /* ScrollType.Smooth */);\n }\n _getPreviousMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n if (this.currentMatch) {\n const result = this.currentMatch;\n this.currentMatch = null;\n return result;\n }\n this.findController.highlightFindOptions();\n const allSelections = this._editor.getSelections();\n const lastAddedSelection = allSelections[allSelections.length - 1];\n const previousMatch = this._editor.getModel().findPreviousMatch(this.searchText, lastAddedSelection.getStartPosition(), false, this.matchCase, this.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, false);\n if (!previousMatch) {\n return null;\n }\n return new Selection(previousMatch.range.startLineNumber, previousMatch.range.startColumn, previousMatch.range.endLineNumber, previousMatch.range.endColumn);\n }\n selectAll(searchScope) {\n if (!this._editor.hasModel()) {\n return [];\n }\n this.findController.highlightFindOptions();\n const editorModel = this._editor.getModel();\n if (searchScope) {\n return editorModel.findMatches(this.searchText, searchScope, false, this.matchCase, this.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n }\n return editorModel.findMatches(this.searchText, true, false, this.matchCase, this.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n }\n}\nexport class MultiCursorSelectionController extends Disposable {\n static get(editor) {\n return editor.getContribution(MultiCursorSelectionController.ID);\n }\n constructor(editor) {\n super();\n this._sessionDispose = this._register(new DisposableStore());\n this._editor = editor;\n this._ignoreSelectionChange = false;\n this._session = null;\n }\n dispose() {\n this._endSession();\n super.dispose();\n }\n _beginSessionIfNeeded(findController) {\n if (!this._session) {\n // Create a new session\n const session = MultiCursorSession.create(this._editor, findController);\n if (!session) {\n return;\n }\n this._session = session;\n const newState = { searchString: this._session.searchText };\n if (this._session.isDisconnectedFromFindController) {\n newState.wholeWordOverride = 1 /* FindOptionOverride.True */;\n newState.matchCaseOverride = 1 /* FindOptionOverride.True */;\n newState.isRegexOverride = 2 /* FindOptionOverride.False */;\n }\n findController.getState().change(newState, false);\n this._sessionDispose.add(this._editor.onDidChangeCursorSelection((e) => {\n if (this._ignoreSelectionChange) {\n return;\n }\n this._endSession();\n }));\n this._sessionDispose.add(this._editor.onDidBlurEditorText(() => {\n this._endSession();\n }));\n this._sessionDispose.add(findController.getState().onFindReplaceStateChange((e) => {\n if (e.matchCase || e.wholeWord) {\n this._endSession();\n }\n }));\n }\n }\n _endSession() {\n this._sessionDispose.clear();\n if (this._session && this._session.isDisconnectedFromFindController) {\n const newState = {\n wholeWordOverride: 0 /* FindOptionOverride.NotSet */,\n matchCaseOverride: 0 /* FindOptionOverride.NotSet */,\n isRegexOverride: 0 /* FindOptionOverride.NotSet */,\n };\n this._session.findController.getState().change(newState, false);\n }\n this._session = null;\n }\n _setSelections(selections) {\n this._ignoreSelectionChange = true;\n this._editor.setSelections(selections);\n this._ignoreSelectionChange = false;\n }\n _expandEmptyToWord(model, selection) {\n if (!selection.isEmpty()) {\n return selection;\n }\n const word = this._editor.getConfiguredWordAtPosition(selection.getStartPosition());\n if (!word) {\n return selection;\n }\n return new Selection(selection.startLineNumber, word.startColumn, selection.startLineNumber, word.endColumn);\n }\n _applySessionResult(result) {\n if (!result) {\n return;\n }\n this._setSelections(result.selections);\n if (result.revealRange) {\n this._editor.revealRangeInCenterIfOutsideViewport(result.revealRange, result.revealScrollType);\n }\n }\n getSession(findController) {\n return this._session;\n }\n addSelectionToNextFindMatch(findController) {\n if (!this._editor.hasModel()) {\n return;\n }\n if (!this._session) {\n // If there are multiple cursors, handle the case where they do not all select the same text.\n const allSelections = this._editor.getSelections();\n if (allSelections.length > 1) {\n const findState = findController.getState();\n const matchCase = findState.matchCase;\n const selectionsContainSameText = modelRangesContainSameText(this._editor.getModel(), allSelections, matchCase);\n if (!selectionsContainSameText) {\n const model = this._editor.getModel();\n const resultingSelections = [];\n for (let i = 0, len = allSelections.length; i < len; i++) {\n resultingSelections[i] = this._expandEmptyToWord(model, allSelections[i]);\n }\n this._editor.setSelections(resultingSelections);\n return;\n }\n }\n }\n this._beginSessionIfNeeded(findController);\n if (this._session) {\n this._applySessionResult(this._session.addSelectionToNextFindMatch());\n }\n }\n addSelectionToPreviousFindMatch(findController) {\n this._beginSessionIfNeeded(findController);\n if (this._session) {\n this._applySessionResult(this._session.addSelectionToPreviousFindMatch());\n }\n }\n moveSelectionToNextFindMatch(findController) {\n this._beginSessionIfNeeded(findController);\n if (this._session) {\n this._applySessionResult(this._session.moveSelectionToNextFindMatch());\n }\n }\n moveSelectionToPreviousFindMatch(findController) {\n this._beginSessionIfNeeded(findController);\n if (this._session) {\n this._applySessionResult(this._session.moveSelectionToPreviousFindMatch());\n }\n }\n selectAll(findController) {\n if (!this._editor.hasModel()) {\n return;\n }\n let matches = null;\n const findState = findController.getState();\n // Special case: find widget owns entirely what we search for if:\n // - focus is not in the editor (i.e. it is in the find widget)\n // - and the search widget is visible\n // - and the search string is non-empty\n // - and we're searching for a regex\n if (findState.isRevealed && findState.searchString.length > 0 && findState.isRegex) {\n const editorModel = this._editor.getModel();\n if (findState.searchScope) {\n matches = editorModel.findMatches(findState.searchString, findState.searchScope, findState.isRegex, findState.matchCase, findState.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n }\n else {\n matches = editorModel.findMatches(findState.searchString, true, findState.isRegex, findState.matchCase, findState.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n }\n }\n else {\n this._beginSessionIfNeeded(findController);\n if (!this._session) {\n return;\n }\n matches = this._session.selectAll(findState.searchScope);\n }\n if (matches.length > 0) {\n const editorSelection = this._editor.getSelection();\n // Have the primary cursor remain the one where the action was invoked\n for (let i = 0, len = matches.length; i < len; i++) {\n const match = matches[i];\n const intersection = match.range.intersectRanges(editorSelection);\n if (intersection) {\n // bingo!\n matches[i] = matches[0];\n matches[0] = match;\n break;\n }\n }\n this._setSelections(matches.map(m => new Selection(m.range.startLineNumber, m.range.startColumn, m.range.endLineNumber, m.range.endColumn)));\n }\n }\n}\nMultiCursorSelectionController.ID = 'editor.contrib.multiCursorController';\nexport class MultiCursorSelectionControllerAction extends EditorAction {\n run(accessor, editor) {\n const multiCursorController = MultiCursorSelectionController.get(editor);\n if (!multiCursorController) {\n return;\n }\n const viewModel = editor._getViewModel();\n if (viewModel) {\n const previousCursorState = viewModel.getCursorStates();\n const findController = CommonFindController.get(editor);\n if (findController) {\n this._run(multiCursorController, findController);\n }\n else {\n const newFindController = accessor.get(IInstantiationService).createInstance(CommonFindController, editor);\n this._run(multiCursorController, newFindController);\n newFindController.dispose();\n }\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n }\n}\nexport class AddSelectionToNextFindMatchAction extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.addSelectionToNextFindMatch',\n label: nls.localize('addSelectionToNextFindMatch', \"Add Selection To Next Find Match\"),\n alias: 'Add Selection To Next Find Match',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 34 /* KeyCode.KeyD */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miAddSelectionToNextFindMatch', comment: ['&& denotes a mnemonic'] }, \"Add &&Next Occurrence\"),\n order: 5\n }\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.addSelectionToNextFindMatch(findController);\n }\n}\nexport class AddSelectionToPreviousFindMatchAction extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.addSelectionToPreviousFindMatch',\n label: nls.localize('addSelectionToPreviousFindMatch', \"Add Selection To Previous Find Match\"),\n alias: 'Add Selection To Previous Find Match',\n precondition: undefined,\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miAddSelectionToPreviousFindMatch', comment: ['&& denotes a mnemonic'] }, \"Add P&&revious Occurrence\"),\n order: 6\n }\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.addSelectionToPreviousFindMatch(findController);\n }\n}\nexport class MoveSelectionToNextFindMatchAction extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.moveSelectionToNextFindMatch',\n label: nls.localize('moveSelectionToNextFindMatch', \"Move Last Selection To Next Find Match\"),\n alias: 'Move Last Selection To Next Find Match',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 34 /* KeyCode.KeyD */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.moveSelectionToNextFindMatch(findController);\n }\n}\nexport class MoveSelectionToPreviousFindMatchAction extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.moveSelectionToPreviousFindMatch',\n label: nls.localize('moveSelectionToPreviousFindMatch', \"Move Last Selection To Previous Find Match\"),\n alias: 'Move Last Selection To Previous Find Match',\n precondition: undefined\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.moveSelectionToPreviousFindMatch(findController);\n }\n}\nexport class SelectHighlightsAction extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.selectHighlights',\n label: nls.localize('selectAllOccurrencesOfFindMatch', \"Select All Occurrences of Find Match\"),\n alias: 'Select All Occurrences of Find Match',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 42 /* KeyCode.KeyL */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miSelectHighlights', comment: ['&& denotes a mnemonic'] }, \"Select All &&Occurrences\"),\n order: 7\n }\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.selectAll(findController);\n }\n}\nexport class CompatChangeAll extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.changeAll',\n label: nls.localize('changeAll.label', \"Change All Occurrences\"),\n alias: 'Change All Occurrences',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.editorTextFocus),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 60 /* KeyCode.F2 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: '1_modification',\n order: 1.2\n }\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.selectAll(findController);\n }\n}\nclass SelectionHighlighterState {\n constructor(_model, _searchText, _matchCase, _wordSeparators, prevState) {\n this._model = _model;\n this._searchText = _searchText;\n this._matchCase = _matchCase;\n this._wordSeparators = _wordSeparators;\n this._modelVersionId = this._model.getVersionId();\n this._cachedFindMatches = null;\n if (prevState\n && this._model === prevState._model\n && this._searchText === prevState._searchText\n && this._matchCase === prevState._matchCase\n && this._wordSeparators === prevState._wordSeparators\n && this._modelVersionId === prevState._modelVersionId) {\n this._cachedFindMatches = prevState._cachedFindMatches;\n }\n }\n findMatches() {\n if (this._cachedFindMatches === null) {\n this._cachedFindMatches = this._model.findMatches(this._searchText, true, false, this._matchCase, this._wordSeparators, false).map(m => m.range);\n this._cachedFindMatches.sort(Range.compareRangesUsingStarts);\n }\n return this._cachedFindMatches;\n }\n}\nlet SelectionHighlighter = SelectionHighlighter_1 = class SelectionHighlighter extends Disposable {\n constructor(editor, _languageFeaturesService) {\n super();\n this._languageFeaturesService = _languageFeaturesService;\n this.editor = editor;\n this._isEnabled = editor.getOption(108 /* EditorOption.selectionHighlight */);\n this._decorations = editor.createDecorationsCollection();\n this.updateSoon = this._register(new RunOnceScheduler(() => this._update(), 300));\n this.state = null;\n this._register(editor.onDidChangeConfiguration((e) => {\n this._isEnabled = editor.getOption(108 /* EditorOption.selectionHighlight */);\n }));\n this._register(editor.onDidChangeCursorSelection((e) => {\n if (!this._isEnabled) {\n // Early exit if nothing needs to be done!\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\n return;\n }\n if (e.selection.isEmpty()) {\n if (e.reason === 3 /* CursorChangeReason.Explicit */) {\n if (this.state) {\n // no longer valid\n this._setState(null);\n }\n this.updateSoon.schedule();\n }\n else {\n this._setState(null);\n }\n }\n else {\n this._update();\n }\n }));\n this._register(editor.onDidChangeModel((e) => {\n this._setState(null);\n }));\n this._register(editor.onDidChangeModelContent((e) => {\n if (this._isEnabled) {\n this.updateSoon.schedule();\n }\n }));\n const findController = CommonFindController.get(editor);\n if (findController) {\n this._register(findController.getState().onFindReplaceStateChange((e) => {\n this._update();\n }));\n }\n this.updateSoon.schedule();\n }\n _update() {\n this._setState(SelectionHighlighter_1._createState(this.state, this._isEnabled, this.editor));\n }\n static _createState(oldState, isEnabled, editor) {\n if (!isEnabled) {\n return null;\n }\n if (!editor.hasModel()) {\n return null;\n }\n const s = editor.getSelection();\n if (s.startLineNumber !== s.endLineNumber) {\n // multiline forbidden for perf reasons\n return null;\n }\n const multiCursorController = MultiCursorSelectionController.get(editor);\n if (!multiCursorController) {\n return null;\n }\n const findController = CommonFindController.get(editor);\n if (!findController) {\n return null;\n }\n let r = multiCursorController.getSession(findController);\n if (!r) {\n const allSelections = editor.getSelections();\n if (allSelections.length > 1) {\n const findState = findController.getState();\n const matchCase = findState.matchCase;\n const selectionsContainSameText = modelRangesContainSameText(editor.getModel(), allSelections, matchCase);\n if (!selectionsContainSameText) {\n return null;\n }\n }\n r = MultiCursorSession.create(editor, findController);\n }\n if (!r) {\n return null;\n }\n if (r.currentMatch) {\n // This is an empty selection\n // Do not interfere with semantic word highlighting in the no selection case\n return null;\n }\n if (/^[ \\t]+$/.test(r.searchText)) {\n // whitespace only selection\n return null;\n }\n if (r.searchText.length > 200) {\n // very long selection\n return null;\n }\n // TODO: better handling of this case\n const findState = findController.getState();\n const caseSensitive = findState.matchCase;\n // Return early if the find widget shows the exact same matches\n if (findState.isRevealed) {\n let findStateSearchString = findState.searchString;\n if (!caseSensitive) {\n findStateSearchString = findStateSearchString.toLowerCase();\n }\n let mySearchString = r.searchText;\n if (!caseSensitive) {\n mySearchString = mySearchString.toLowerCase();\n }\n if (findStateSearchString === mySearchString && r.matchCase === findState.matchCase && r.wholeWord === findState.wholeWord && !findState.isRegex) {\n return null;\n }\n }\n return new SelectionHighlighterState(editor.getModel(), r.searchText, r.matchCase, r.wholeWord ? editor.getOption(131 /* EditorOption.wordSeparators */) : null, oldState);\n }\n _setState(newState) {\n this.state = newState;\n if (!this.state) {\n this._decorations.clear();\n return;\n }\n if (!this.editor.hasModel()) {\n return;\n }\n const model = this.editor.getModel();\n if (model.isTooLargeForTokenization()) {\n // the file is too large, so searching word under cursor in the whole document would be blocking the UI.\n return;\n }\n const allMatches = this.state.findMatches();\n const selections = this.editor.getSelections();\n selections.sort(Range.compareRangesUsingStarts);\n // do not overlap with selection (issue #64 and #512)\n const matches = [];\n for (let i = 0, j = 0, len = allMatches.length, lenJ = selections.length; i < len;) {\n const match = allMatches[i];\n if (j >= lenJ) {\n // finished all editor selections\n matches.push(match);\n i++;\n }\n else {\n const cmp = Range.compareRangesUsingStarts(match, selections[j]);\n if (cmp < 0) {\n // match is before sel\n if (selections[j].isEmpty() || !Range.areIntersecting(match, selections[j])) {\n matches.push(match);\n }\n i++;\n }\n else if (cmp > 0) {\n // sel is before match\n j++;\n }\n else {\n // sel is equal to match\n i++;\n j++;\n }\n }\n }\n const occurrenceHighlighting = this.editor.getOption(81 /* EditorOption.occurrencesHighlight */) !== 'off';\n const hasSemanticHighlights = this._languageFeaturesService.documentHighlightProvider.has(model) && occurrenceHighlighting;\n const decorations = matches.map(r => {\n return {\n range: r,\n options: getSelectionHighlightDecorationOptions(hasSemanticHighlights)\n };\n });\n this._decorations.set(decorations);\n }\n dispose() {\n this._setState(null);\n super.dispose();\n }\n};\nSelectionHighlighter.ID = 'editor.contrib.selectionHighlighter';\nSelectionHighlighter = SelectionHighlighter_1 = __decorate([\n __param(1, ILanguageFeaturesService)\n], SelectionHighlighter);\nexport { SelectionHighlighter };\nfunction modelRangesContainSameText(model, ranges, matchCase) {\n const selectedText = getValueInRange(model, ranges[0], !matchCase);\n for (let i = 1, len = ranges.length; i < len; i++) {\n const range = ranges[i];\n if (range.isEmpty()) {\n return false;\n }\n const thisSelectedText = getValueInRange(model, range, !matchCase);\n if (selectedText !== thisSelectedText) {\n return false;\n }\n }\n return true;\n}\nfunction getValueInRange(model, range, toLowerCase) {\n const text = model.getValueInRange(range);\n return (toLowerCase ? text.toLowerCase() : text);\n}\nexport class FocusNextCursor extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.focusNextCursor',\n label: nls.localize('mutlicursor.focusNextCursor', \"Focus Next Cursor\"),\n metadata: {\n description: nls.localize('mutlicursor.focusNextCursor.description', \"Focuses the next cursor\"),\n args: [],\n },\n alias: 'Focus Next Cursor',\n precondition: undefined\n });\n }\n run(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n const viewModel = editor._getViewModel();\n if (viewModel.cursorConfig.readOnly) {\n return;\n }\n viewModel.model.pushStackElement();\n const previousCursorState = Array.from(viewModel.getCursorStates());\n const firstCursor = previousCursorState.shift();\n if (!firstCursor) {\n return;\n }\n previousCursorState.push(firstCursor);\n viewModel.setCursorStates(args.source, 3 /* CursorChangeReason.Explicit */, previousCursorState);\n viewModel.revealPrimaryCursor(args.source, true);\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nexport class FocusPreviousCursor extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.focusPreviousCursor',\n label: nls.localize('mutlicursor.focusPreviousCursor', \"Focus Previous Cursor\"),\n metadata: {\n description: nls.localize('mutlicursor.focusPreviousCursor.description', \"Focuses the previous cursor\"),\n args: [],\n },\n alias: 'Focus Previous Cursor',\n precondition: undefined\n });\n }\n run(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n const viewModel = editor._getViewModel();\n if (viewModel.cursorConfig.readOnly) {\n return;\n }\n viewModel.model.pushStackElement();\n const previousCursorState = Array.from(viewModel.getCursorStates());\n const firstCursor = previousCursorState.pop();\n if (!firstCursor) {\n return;\n }\n previousCursorState.unshift(firstCursor);\n viewModel.setCursorStates(args.source, 3 /* CursorChangeReason.Explicit */, previousCursorState);\n viewModel.revealPrimaryCursor(args.source, true);\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nregisterEditorContribution(MultiCursorSelectionController.ID, MultiCursorSelectionController, 4 /* EditorContributionInstantiation.Lazy */);\nregisterEditorContribution(SelectionHighlighter.ID, SelectionHighlighter, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nregisterEditorAction(InsertCursorAbove);\nregisterEditorAction(InsertCursorBelow);\nregisterEditorAction(InsertCursorAtEndOfEachLineSelected);\nregisterEditorAction(AddSelectionToNextFindMatchAction);\nregisterEditorAction(AddSelectionToPreviousFindMatchAction);\nregisterEditorAction(MoveSelectionToNextFindMatchAction);\nregisterEditorAction(MoveSelectionToPreviousFindMatchAction);\nregisterEditorAction(SelectHighlightsAction);\nregisterEditorAction(CompatChangeAll);\nregisterEditorAction(InsertCursorAtEndOfLineSelected);\nregisterEditorAction(InsertCursorAtTopOfLineSelected);\nregisterEditorAction(FocusNextCursor);\nregisterEditorAction(FocusPreviousCursor);\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 { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Position } from '../../../common/core/position.js';\nimport * as languages from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nexport const Context = {\n Visible: new RawContextKey('parameterHintsVisible', false),\n MultipleSignatures: new RawContextKey('parameterHintsMultipleSignatures', false),\n};\nexport async function provideSignatureHelp(registry, model, position, context, token) {\n const supports = registry.ordered(model);\n for (const support of supports) {\n try {\n const result = await support.provideSignatureHelp(model, position, token, context);\n if (result) {\n return result;\n }\n }\n catch (err) {\n onUnexpectedExternalError(err);\n }\n }\n return undefined;\n}\nCommandsRegistry.registerCommand('_executeSignatureHelpProvider', async (accessor, ...args) => {\n const [uri, position, triggerCharacter] = args;\n assertType(URI.isUri(uri));\n assertType(Position.isIPosition(position));\n assertType(typeof triggerCharacter === 'string' || !triggerCharacter);\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const ref = await accessor.get(ITextModelService).createModelReference(uri);\n try {\n const result = await provideSignatureHelp(languageFeaturesService.signatureHelpProvider, ref.object.textEditorModel, Position.lift(position), {\n triggerKind: languages.SignatureHelpTriggerKind.Invoke,\n isRetrigger: false,\n triggerCharacter,\n }, CancellationToken.None);\n if (!result) {\n return undefined;\n }\n setTimeout(() => result.dispose(), 0);\n return result.value;\n }\n finally {\n ref.dispose();\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 *--------------------------------------------------------------------------------------------*/\nimport { createCancelablePromise, Delayer } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { CharacterSet } from '../../../common/core/characterClassifier.js';\nimport * as languages from '../../../common/languages.js';\nimport { provideSignatureHelp } from './provideSignatureHelp.js';\nvar ParameterHintState;\n(function (ParameterHintState) {\n ParameterHintState.Default = { type: 0 /* Type.Default */ };\n class Pending {\n constructor(request, previouslyActiveHints) {\n this.request = request;\n this.previouslyActiveHints = previouslyActiveHints;\n this.type = 2 /* Type.Pending */;\n }\n }\n ParameterHintState.Pending = Pending;\n class Active {\n constructor(hints) {\n this.hints = hints;\n this.type = 1 /* Type.Active */;\n }\n }\n ParameterHintState.Active = Active;\n})(ParameterHintState || (ParameterHintState = {}));\nexport class ParameterHintsModel extends Disposable {\n constructor(editor, providers, delay = ParameterHintsModel.DEFAULT_DELAY) {\n super();\n this._onChangedHints = this._register(new Emitter());\n this.onChangedHints = this._onChangedHints.event;\n this.triggerOnType = false;\n this._state = ParameterHintState.Default;\n this._pendingTriggers = [];\n this._lastSignatureHelpResult = this._register(new MutableDisposable());\n this.triggerChars = new CharacterSet();\n this.retriggerChars = new CharacterSet();\n this.triggerId = 0;\n this.editor = editor;\n this.providers = providers;\n this.throttledDelayer = new Delayer(delay);\n this._register(this.editor.onDidBlurEditorWidget(() => this.cancel()));\n this._register(this.editor.onDidChangeConfiguration(() => this.onEditorConfigurationChange()));\n this._register(this.editor.onDidChangeModel(e => this.onModelChanged()));\n this._register(this.editor.onDidChangeModelLanguage(_ => this.onModelChanged()));\n this._register(this.editor.onDidChangeCursorSelection(e => this.onCursorChange(e)));\n this._register(this.editor.onDidChangeModelContent(e => this.onModelContentChange()));\n this._register(this.providers.onDidChange(this.onModelChanged, this));\n this._register(this.editor.onDidType(text => this.onDidType(text)));\n this.onEditorConfigurationChange();\n this.onModelChanged();\n }\n get state() { return this._state; }\n set state(value) {\n if (this._state.type === 2 /* ParameterHintState.Type.Pending */) {\n this._state.request.cancel();\n }\n this._state = value;\n }\n cancel(silent = false) {\n this.state = ParameterHintState.Default;\n this.throttledDelayer.cancel();\n if (!silent) {\n this._onChangedHints.fire(undefined);\n }\n }\n trigger(context, delay) {\n const model = this.editor.getModel();\n if (!model || !this.providers.has(model)) {\n return;\n }\n const triggerId = ++this.triggerId;\n this._pendingTriggers.push(context);\n this.throttledDelayer.trigger(() => {\n return this.doTrigger(triggerId);\n }, delay)\n .catch(onUnexpectedError);\n }\n next() {\n if (this.state.type !== 1 /* ParameterHintState.Type.Active */) {\n return;\n }\n const length = this.state.hints.signatures.length;\n const activeSignature = this.state.hints.activeSignature;\n const last = (activeSignature % length) === (length - 1);\n const cycle = this.editor.getOption(86 /* EditorOption.parameterHints */).cycle;\n // If there is only one signature, or we're on last signature of list\n if ((length < 2 || last) && !cycle) {\n this.cancel();\n return;\n }\n this.updateActiveSignature(last && cycle ? 0 : activeSignature + 1);\n }\n previous() {\n if (this.state.type !== 1 /* ParameterHintState.Type.Active */) {\n return;\n }\n const length = this.state.hints.signatures.length;\n const activeSignature = this.state.hints.activeSignature;\n const first = activeSignature === 0;\n const cycle = this.editor.getOption(86 /* EditorOption.parameterHints */).cycle;\n // If there is only one signature, or we're on first signature of list\n if ((length < 2 || first) && !cycle) {\n this.cancel();\n return;\n }\n this.updateActiveSignature(first && cycle ? length - 1 : activeSignature - 1);\n }\n updateActiveSignature(activeSignature) {\n if (this.state.type !== 1 /* ParameterHintState.Type.Active */) {\n return;\n }\n this.state = new ParameterHintState.Active({ ...this.state.hints, activeSignature });\n this._onChangedHints.fire(this.state.hints);\n }\n async doTrigger(triggerId) {\n const isRetrigger = this.state.type === 1 /* ParameterHintState.Type.Active */ || this.state.type === 2 /* ParameterHintState.Type.Pending */;\n const activeSignatureHelp = this.getLastActiveHints();\n this.cancel(true);\n if (this._pendingTriggers.length === 0) {\n return false;\n }\n const context = this._pendingTriggers.reduce(mergeTriggerContexts);\n this._pendingTriggers = [];\n const triggerContext = {\n triggerKind: context.triggerKind,\n triggerCharacter: context.triggerCharacter,\n isRetrigger: isRetrigger,\n activeSignatureHelp: activeSignatureHelp\n };\n if (!this.editor.hasModel()) {\n return false;\n }\n const model = this.editor.getModel();\n const position = this.editor.getPosition();\n this.state = new ParameterHintState.Pending(createCancelablePromise(token => provideSignatureHelp(this.providers, model, position, triggerContext, token)), activeSignatureHelp);\n try {\n const result = await this.state.request;\n // Check that we are still resolving the correct signature help\n if (triggerId !== this.triggerId) {\n result === null || result === void 0 ? void 0 : result.dispose();\n return false;\n }\n if (!result || !result.value.signatures || result.value.signatures.length === 0) {\n result === null || result === void 0 ? void 0 : result.dispose();\n this._lastSignatureHelpResult.clear();\n this.cancel();\n return false;\n }\n else {\n this.state = new ParameterHintState.Active(result.value);\n this._lastSignatureHelpResult.value = result;\n this._onChangedHints.fire(this.state.hints);\n return true;\n }\n }\n catch (error) {\n if (triggerId === this.triggerId) {\n this.state = ParameterHintState.Default;\n }\n onUnexpectedError(error);\n return false;\n }\n }\n getLastActiveHints() {\n switch (this.state.type) {\n case 1 /* ParameterHintState.Type.Active */: return this.state.hints;\n case 2 /* ParameterHintState.Type.Pending */: return this.state.previouslyActiveHints;\n default: return undefined;\n }\n }\n get isTriggered() {\n return this.state.type === 1 /* ParameterHintState.Type.Active */\n || this.state.type === 2 /* ParameterHintState.Type.Pending */\n || this.throttledDelayer.isTriggered();\n }\n onModelChanged() {\n this.cancel();\n this.triggerChars.clear();\n this.retriggerChars.clear();\n const model = this.editor.getModel();\n if (!model) {\n return;\n }\n for (const support of this.providers.ordered(model)) {\n for (const ch of support.signatureHelpTriggerCharacters || []) {\n if (ch.length) {\n const charCode = ch.charCodeAt(0);\n this.triggerChars.add(charCode);\n // All trigger characters are also considered retrigger characters\n this.retriggerChars.add(charCode);\n }\n }\n for (const ch of support.signatureHelpRetriggerCharacters || []) {\n if (ch.length) {\n this.retriggerChars.add(ch.charCodeAt(0));\n }\n }\n }\n }\n onDidType(text) {\n if (!this.triggerOnType) {\n return;\n }\n const lastCharIndex = text.length - 1;\n const triggerCharCode = text.charCodeAt(lastCharIndex);\n if (this.triggerChars.has(triggerCharCode) || this.isTriggered && this.retriggerChars.has(triggerCharCode)) {\n this.trigger({\n triggerKind: languages.SignatureHelpTriggerKind.TriggerCharacter,\n triggerCharacter: text.charAt(lastCharIndex),\n });\n }\n }\n onCursorChange(e) {\n if (e.source === 'mouse') {\n this.cancel();\n }\n else if (this.isTriggered) {\n this.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n }\n }\n onModelContentChange() {\n if (this.isTriggered) {\n this.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n }\n }\n onEditorConfigurationChange() {\n this.triggerOnType = this.editor.getOption(86 /* EditorOption.parameterHints */).enabled;\n if (!this.triggerOnType) {\n this.cancel();\n }\n }\n dispose() {\n this.cancel(true);\n super.dispose();\n }\n}\nParameterHintsModel.DEFAULT_DELAY = 120; // ms\nfunction mergeTriggerContexts(previous, current) {\n switch (current.triggerKind) {\n case languages.SignatureHelpTriggerKind.Invoke:\n // Invoke overrides previous triggers.\n return current;\n case languages.SignatureHelpTriggerKind.ContentChange:\n // Ignore content changes triggers\n return previous;\n case languages.SignatureHelpTriggerKind.TriggerCharacter:\n default:\n return current;\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 ParameterHintsWidget_1;\nimport * as dom from '../../../../base/browser/dom.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { escapeRegExpCharacters } from '../../../../base/common/strings.js';\nimport { assertIsDefined } from '../../../../base/common/types.js';\nimport './parameterHints.css';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { MarkdownRenderer } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { Context } from './provideSignatureHelp.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { listHighlightForeground, registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nconst $ = dom.$;\nconst parameterHintsNextIcon = registerIcon('parameter-hints-next', Codicon.chevronDown, nls.localize('parameterHintsNextIcon', 'Icon for show next parameter hint.'));\nconst parameterHintsPreviousIcon = registerIcon('parameter-hints-previous', Codicon.chevronUp, nls.localize('parameterHintsPreviousIcon', 'Icon for show previous parameter hint.'));\nlet ParameterHintsWidget = ParameterHintsWidget_1 = class ParameterHintsWidget extends Disposable {\n constructor(editor, model, contextKeyService, openerService, languageService, telemetryService) {\n super();\n this.editor = editor;\n this.model = model;\n this.telemetryService = telemetryService;\n this.renderDisposeables = this._register(new DisposableStore());\n this.visible = false;\n this.announcedLabel = null;\n // Editor.IContentWidget.allowEditorOverflow\n this.allowEditorOverflow = true;\n this.markdownRenderer = this._register(new MarkdownRenderer({ editor }, languageService, openerService));\n this.keyVisible = Context.Visible.bindTo(contextKeyService);\n this.keyMultipleSignatures = Context.MultipleSignatures.bindTo(contextKeyService);\n }\n createParameterHintDOMNodes() {\n const element = $('.editor-widget.parameter-hints-widget');\n const wrapper = dom.append(element, $('.phwrapper'));\n wrapper.tabIndex = -1;\n const controls = dom.append(wrapper, $('.controls'));\n const previous = dom.append(controls, $('.button' + ThemeIcon.asCSSSelector(parameterHintsPreviousIcon)));\n const overloads = dom.append(controls, $('.overloads'));\n const next = dom.append(controls, $('.button' + ThemeIcon.asCSSSelector(parameterHintsNextIcon)));\n this._register(dom.addDisposableListener(previous, 'click', e => {\n dom.EventHelper.stop(e);\n this.previous();\n }));\n this._register(dom.addDisposableListener(next, 'click', e => {\n dom.EventHelper.stop(e);\n this.next();\n }));\n const body = $('.body');\n const scrollbar = new DomScrollableElement(body, {\n alwaysConsumeMouseWheel: true,\n });\n this._register(scrollbar);\n wrapper.appendChild(scrollbar.getDomNode());\n const signature = dom.append(body, $('.signature'));\n const docs = dom.append(body, $('.docs'));\n element.style.userSelect = 'text';\n this.domNodes = {\n element,\n signature,\n overloads,\n docs,\n scrollbar,\n };\n this.editor.addContentWidget(this);\n this.hide();\n this._register(this.editor.onDidChangeCursorSelection(e => {\n if (this.visible) {\n this.editor.layoutContentWidget(this);\n }\n }));\n const updateFont = () => {\n if (!this.domNodes) {\n return;\n }\n const fontInfo = this.editor.getOption(50 /* EditorOption.fontInfo */);\n this.domNodes.element.style.fontSize = `${fontInfo.fontSize}px`;\n this.domNodes.element.style.lineHeight = `${fontInfo.lineHeight / fontInfo.fontSize}`;\n };\n updateFont();\n this._register(Event.chain(this.editor.onDidChangeConfiguration.bind(this.editor), $ => $.filter(e => e.hasChanged(50 /* EditorOption.fontInfo */)))(updateFont));\n this._register(this.editor.onDidLayoutChange(e => this.updateMaxHeight()));\n this.updateMaxHeight();\n }\n show() {\n if (this.visible) {\n return;\n }\n if (!this.domNodes) {\n this.createParameterHintDOMNodes();\n }\n this.keyVisible.set(true);\n this.visible = true;\n setTimeout(() => {\n var _a;\n (_a = this.domNodes) === null || _a === void 0 ? void 0 : _a.element.classList.add('visible');\n }, 100);\n this.editor.layoutContentWidget(this);\n }\n hide() {\n var _a;\n this.renderDisposeables.clear();\n if (!this.visible) {\n return;\n }\n this.keyVisible.reset();\n this.visible = false;\n this.announcedLabel = null;\n (_a = this.domNodes) === null || _a === void 0 ? void 0 : _a.element.classList.remove('visible');\n this.editor.layoutContentWidget(this);\n }\n getPosition() {\n if (this.visible) {\n return {\n position: this.editor.getPosition(),\n preference: [1 /* ContentWidgetPositionPreference.ABOVE */, 2 /* ContentWidgetPositionPreference.BELOW */]\n };\n }\n return null;\n }\n render(hints) {\n var _a;\n this.renderDisposeables.clear();\n if (!this.domNodes) {\n return;\n }\n const multiple = hints.signatures.length > 1;\n this.domNodes.element.classList.toggle('multiple', multiple);\n this.keyMultipleSignatures.set(multiple);\n this.domNodes.signature.innerText = '';\n this.domNodes.docs.innerText = '';\n const signature = hints.signatures[hints.activeSignature];\n if (!signature) {\n return;\n }\n const code = dom.append(this.domNodes.signature, $('.code'));\n const fontInfo = this.editor.getOption(50 /* EditorOption.fontInfo */);\n code.style.fontSize = `${fontInfo.fontSize}px`;\n code.style.fontFamily = fontInfo.fontFamily;\n const hasParameters = signature.parameters.length > 0;\n const activeParameterIndex = (_a = signature.activeParameter) !== null && _a !== void 0 ? _a : hints.activeParameter;\n if (!hasParameters) {\n const label = dom.append(code, $('span'));\n label.textContent = signature.label;\n }\n else {\n this.renderParameters(code, signature, activeParameterIndex);\n }\n const activeParameter = signature.parameters[activeParameterIndex];\n if (activeParameter === null || activeParameter === void 0 ? void 0 : activeParameter.documentation) {\n const documentation = $('span.documentation');\n if (typeof activeParameter.documentation === 'string') {\n documentation.textContent = activeParameter.documentation;\n }\n else {\n const renderedContents = this.renderMarkdownDocs(activeParameter.documentation);\n documentation.appendChild(renderedContents.element);\n }\n dom.append(this.domNodes.docs, $('p', {}, documentation));\n }\n if (signature.documentation === undefined) {\n /** no op */\n }\n else if (typeof signature.documentation === 'string') {\n dom.append(this.domNodes.docs, $('p', {}, signature.documentation));\n }\n else {\n const renderedContents = this.renderMarkdownDocs(signature.documentation);\n dom.append(this.domNodes.docs, renderedContents.element);\n }\n const hasDocs = this.hasDocs(signature, activeParameter);\n this.domNodes.signature.classList.toggle('has-docs', hasDocs);\n this.domNodes.docs.classList.toggle('empty', !hasDocs);\n this.domNodes.overloads.textContent =\n String(hints.activeSignature + 1).padStart(hints.signatures.length.toString().length, '0') + '/' + hints.signatures.length;\n if (activeParameter) {\n let labelToAnnounce = '';\n const param = signature.parameters[activeParameterIndex];\n if (Array.isArray(param.label)) {\n labelToAnnounce = signature.label.substring(param.label[0], param.label[1]);\n }\n else {\n labelToAnnounce = param.label;\n }\n if (param.documentation) {\n labelToAnnounce += typeof param.documentation === 'string' ? `, ${param.documentation}` : `, ${param.documentation.value}`;\n }\n if (signature.documentation) {\n labelToAnnounce += typeof signature.documentation === 'string' ? `, ${signature.documentation}` : `, ${signature.documentation.value}`;\n }\n // Select method gets called on every user type while parameter hints are visible.\n // We do not want to spam the user with same announcements, so we only announce if the current parameter changed.\n if (this.announcedLabel !== labelToAnnounce) {\n aria.alert(nls.localize('hint', \"{0}, hint\", labelToAnnounce));\n this.announcedLabel = labelToAnnounce;\n }\n }\n this.editor.layoutContentWidget(this);\n this.domNodes.scrollbar.scanDomNode();\n }\n renderMarkdownDocs(markdown) {\n const stopWatch = new StopWatch();\n const renderedContents = this.renderDisposeables.add(this.markdownRenderer.render(markdown, {\n asyncRenderCallback: () => {\n var _a;\n (_a = this.domNodes) === null || _a === void 0 ? void 0 : _a.scrollbar.scanDomNode();\n }\n }));\n renderedContents.element.classList.add('markdown-docs');\n const renderDuration = stopWatch.elapsed();\n if (renderDuration > 300) {\n this.telemetryService.publicLog2('parameterHints.parseMarkdown', {\n renderDuration\n });\n }\n return renderedContents;\n }\n hasDocs(signature, activeParameter) {\n if (activeParameter && typeof activeParameter.documentation === 'string' && assertIsDefined(activeParameter.documentation).length > 0) {\n return true;\n }\n if (activeParameter && typeof activeParameter.documentation === 'object' && assertIsDefined(activeParameter.documentation).value.length > 0) {\n return true;\n }\n if (signature.documentation && typeof signature.documentation === 'string' && assertIsDefined(signature.documentation).length > 0) {\n return true;\n }\n if (signature.documentation && typeof signature.documentation === 'object' && assertIsDefined(signature.documentation.value).length > 0) {\n return true;\n }\n return false;\n }\n renderParameters(parent, signature, activeParameterIndex) {\n const [start, end] = this.getParameterLabelOffsets(signature, activeParameterIndex);\n const beforeSpan = document.createElement('span');\n beforeSpan.textContent = signature.label.substring(0, start);\n const paramSpan = document.createElement('span');\n paramSpan.textContent = signature.label.substring(start, end);\n paramSpan.className = 'parameter active';\n const afterSpan = document.createElement('span');\n afterSpan.textContent = signature.label.substring(end);\n dom.append(parent, beforeSpan, paramSpan, afterSpan);\n }\n getParameterLabelOffsets(signature, paramIdx) {\n const param = signature.parameters[paramIdx];\n if (!param) {\n return [0, 0];\n }\n else if (Array.isArray(param.label)) {\n return param.label;\n }\n else if (!param.label.length) {\n return [0, 0];\n }\n else {\n const regex = new RegExp(`(\\\\W|^)${escapeRegExpCharacters(param.label)}(?=\\\\W|$)`, 'g');\n regex.test(signature.label);\n const idx = regex.lastIndex - param.label.length;\n return idx >= 0\n ? [idx, regex.lastIndex]\n : [0, 0];\n }\n }\n next() {\n this.editor.focus();\n this.model.next();\n }\n previous() {\n this.editor.focus();\n this.model.previous();\n }\n getDomNode() {\n if (!this.domNodes) {\n this.createParameterHintDOMNodes();\n }\n return this.domNodes.element;\n }\n getId() {\n return ParameterHintsWidget_1.ID;\n }\n updateMaxHeight() {\n if (!this.domNodes) {\n return;\n }\n const height = Math.max(this.editor.getLayoutInfo().height / 4, 250);\n const maxHeight = `${height}px`;\n this.domNodes.element.style.maxHeight = maxHeight;\n const wrapper = this.domNodes.element.getElementsByClassName('phwrapper');\n if (wrapper.length) {\n wrapper[0].style.maxHeight = maxHeight;\n }\n }\n};\nParameterHintsWidget.ID = 'editor.widget.parameterHintsWidget';\nParameterHintsWidget = ParameterHintsWidget_1 = __decorate([\n __param(2, IContextKeyService),\n __param(3, IOpenerService),\n __param(4, ILanguageService),\n __param(5, ITelemetryService)\n], ParameterHintsWidget);\nexport { ParameterHintsWidget };\nregisterColor('editorHoverWidget.highlightForeground', { dark: listHighlightForeground, light: listHighlightForeground, hcDark: listHighlightForeground, hcLight: listHighlightForeground }, nls.localize('editorHoverWidgetHighlightForeground', 'Foreground color of the active item in the parameter hint.'));\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 ParameterHintsController_1;\nimport { Lazy } from '../../../../base/common/lazy.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as languages from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ParameterHintsModel } from './parameterHintsModel.js';\nimport { Context } from './provideSignatureHelp.js';\nimport * as nls from '../../../../nls.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ParameterHintsWidget } from './parameterHintsWidget.js';\nlet ParameterHintsController = ParameterHintsController_1 = class ParameterHintsController extends Disposable {\n static get(editor) {\n return editor.getContribution(ParameterHintsController_1.ID);\n }\n constructor(editor, instantiationService, languageFeaturesService) {\n super();\n this.editor = editor;\n this.model = this._register(new ParameterHintsModel(editor, languageFeaturesService.signatureHelpProvider));\n this._register(this.model.onChangedHints(newParameterHints => {\n var _a;\n if (newParameterHints) {\n this.widget.value.show();\n this.widget.value.render(newParameterHints);\n }\n else {\n (_a = this.widget.rawValue) === null || _a === void 0 ? void 0 : _a.hide();\n }\n }));\n this.widget = new Lazy(() => this._register(instantiationService.createInstance(ParameterHintsWidget, this.editor, this.model)));\n }\n cancel() {\n this.model.cancel();\n }\n previous() {\n var _a;\n (_a = this.widget.rawValue) === null || _a === void 0 ? void 0 : _a.previous();\n }\n next() {\n var _a;\n (_a = this.widget.rawValue) === null || _a === void 0 ? void 0 : _a.next();\n }\n trigger(context) {\n this.model.trigger(context, 0);\n }\n};\nParameterHintsController.ID = 'editor.controller.parameterHints';\nParameterHintsController = ParameterHintsController_1 = __decorate([\n __param(1, IInstantiationService),\n __param(2, ILanguageFeaturesService)\n], ParameterHintsController);\nexport { ParameterHintsController };\nexport class TriggerParameterHintsAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.triggerParameterHints',\n label: nls.localize('parameterHints.trigger.label', \"Trigger Parameter Hints\"),\n alias: 'Trigger Parameter Hints',\n precondition: EditorContextKeys.hasSignatureHelpProvider,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 10 /* KeyCode.Space */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n const controller = ParameterHintsController.get(editor);\n controller === null || controller === void 0 ? void 0 : controller.trigger({\n triggerKind: languages.SignatureHelpTriggerKind.Invoke\n });\n }\n}\nregisterEditorContribution(ParameterHintsController.ID, ParameterHintsController, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nregisterEditorAction(TriggerParameterHintsAction);\nconst weight = 100 /* KeybindingWeight.EditorContrib */ + 75;\nconst ParameterHintsCommand = EditorCommand.bindToContribution(ParameterHintsController.get);\nregisterEditorCommand(new ParameterHintsCommand({\n id: 'closeParameterHints',\n precondition: Context.Visible,\n handler: x => x.cancel(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.focus,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\nregisterEditorCommand(new ParameterHintsCommand({\n id: 'showPrevParameterHint',\n precondition: ContextKeyExpr.and(Context.Visible, Context.MultipleSignatures),\n handler: x => x.previous(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.focus,\n primary: 16 /* KeyCode.UpArrow */,\n secondary: [512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */],\n mac: { primary: 16 /* KeyCode.UpArrow */, secondary: [512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */, 256 /* KeyMod.WinCtrl */ | 46 /* KeyCode.KeyP */] }\n }\n}));\nregisterEditorCommand(new ParameterHintsCommand({\n id: 'showNextParameterHint',\n precondition: ContextKeyExpr.and(Context.Visible, Context.MultipleSignatures),\n handler: x => x.next(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.focus,\n primary: 18 /* KeyCode.DownArrow */,\n secondary: [512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */],\n mac: { primary: 18 /* KeyCode.DownArrow */, secondary: [512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */, 256 /* KeyMod.WinCtrl */ | 44 /* KeyCode.KeyN */] }\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 { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { Action } from '../../../../base/common/actions.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport * as objects from '../../../../base/common/objects.js';\nimport './media/peekViewWidget.css';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport { ZoneWidget } from '../../zoneWidget/browser/zoneWidget.js';\nimport * as nls from '../../../../nls.js';\nimport { createActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator, IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { activeContrastBorder, contrastBorder, editorForeground, editorInfoForeground, registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nexport const IPeekViewService = createDecorator('IPeekViewService');\nregisterSingleton(IPeekViewService, class {\n constructor() {\n this._widgets = new Map();\n }\n addExclusiveWidget(editor, widget) {\n const existing = this._widgets.get(editor);\n if (existing) {\n existing.listener.dispose();\n existing.widget.dispose();\n }\n const remove = () => {\n const data = this._widgets.get(editor);\n if (data && data.widget === widget) {\n data.listener.dispose();\n this._widgets.delete(editor);\n }\n };\n this._widgets.set(editor, { widget, listener: widget.onDidClose(remove) });\n }\n}, 1 /* InstantiationType.Delayed */);\nexport var PeekContext;\n(function (PeekContext) {\n PeekContext.inPeekEditor = new RawContextKey('inReferenceSearchEditor', true, nls.localize('inReferenceSearchEditor', \"Whether the current code editor is embedded inside peek\"));\n PeekContext.notInPeekEditor = PeekContext.inPeekEditor.toNegated();\n})(PeekContext || (PeekContext = {}));\nlet PeekContextController = class PeekContextController {\n constructor(editor, contextKeyService) {\n if (editor instanceof EmbeddedCodeEditorWidget) {\n PeekContext.inPeekEditor.bindTo(contextKeyService);\n }\n }\n dispose() { }\n};\nPeekContextController.ID = 'editor.contrib.referenceController';\nPeekContextController = __decorate([\n __param(1, IContextKeyService)\n], PeekContextController);\nregisterEditorContribution(PeekContextController.ID, PeekContextController, 0 /* EditorContributionInstantiation.Eager */); // eager because it needs to define a context key\nexport function getOuterEditor(accessor) {\n const editor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n if (editor instanceof EmbeddedCodeEditorWidget) {\n return editor.getParentEditor();\n }\n return editor;\n}\nconst defaultOptions = {\n headerBackgroundColor: Color.white,\n primaryHeadingColor: Color.fromHex('#333333'),\n secondaryHeadingColor: Color.fromHex('#6c6c6cb3')\n};\nlet PeekViewWidget = class PeekViewWidget extends ZoneWidget {\n constructor(editor, options, instantiationService) {\n super(editor, options);\n this.instantiationService = instantiationService;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n objects.mixin(this.options, defaultOptions, false);\n }\n dispose() {\n if (!this.disposed) {\n this.disposed = true; // prevent consumers who dispose on onDidClose from looping\n super.dispose();\n this._onDidClose.fire(this);\n }\n }\n style(styles) {\n const options = this.options;\n if (styles.headerBackgroundColor) {\n options.headerBackgroundColor = styles.headerBackgroundColor;\n }\n if (styles.primaryHeadingColor) {\n options.primaryHeadingColor = styles.primaryHeadingColor;\n }\n if (styles.secondaryHeadingColor) {\n options.secondaryHeadingColor = styles.secondaryHeadingColor;\n }\n super.style(styles);\n }\n _applyStyles() {\n super._applyStyles();\n const options = this.options;\n if (this._headElement && options.headerBackgroundColor) {\n this._headElement.style.backgroundColor = options.headerBackgroundColor.toString();\n }\n if (this._primaryHeading && options.primaryHeadingColor) {\n this._primaryHeading.style.color = options.primaryHeadingColor.toString();\n }\n if (this._secondaryHeading && options.secondaryHeadingColor) {\n this._secondaryHeading.style.color = options.secondaryHeadingColor.toString();\n }\n if (this._bodyElement && options.frameColor) {\n this._bodyElement.style.borderColor = options.frameColor.toString();\n }\n }\n _fillContainer(container) {\n this.setCssClass('peekview-widget');\n this._headElement = dom.$('.head');\n this._bodyElement = dom.$('.body');\n this._fillHead(this._headElement);\n this._fillBody(this._bodyElement);\n container.appendChild(this._headElement);\n container.appendChild(this._bodyElement);\n }\n _fillHead(container, noCloseAction) {\n this._titleElement = dom.$('.peekview-title');\n if (this.options.supportOnTitleClick) {\n this._titleElement.classList.add('clickable');\n dom.addStandardDisposableListener(this._titleElement, 'click', event => this._onTitleClick(event));\n }\n dom.append(this._headElement, this._titleElement);\n this._fillTitleIcon(this._titleElement);\n this._primaryHeading = dom.$('span.filename');\n this._secondaryHeading = dom.$('span.dirname');\n this._metaHeading = dom.$('span.meta');\n dom.append(this._titleElement, this._primaryHeading, this._secondaryHeading, this._metaHeading);\n const actionsContainer = dom.$('.peekview-actions');\n dom.append(this._headElement, actionsContainer);\n const actionBarOptions = this._getActionBarOptions();\n this._actionbarWidget = new ActionBar(actionsContainer, actionBarOptions);\n this._disposables.add(this._actionbarWidget);\n if (!noCloseAction) {\n this._actionbarWidget.push(new Action('peekview.close', nls.localize('label.close', \"Close\"), ThemeIcon.asClassName(Codicon.close), true, () => {\n this.dispose();\n return Promise.resolve();\n }), { label: false, icon: true });\n }\n }\n _fillTitleIcon(container) {\n }\n _getActionBarOptions() {\n return {\n actionViewItemProvider: createActionViewItem.bind(undefined, this.instantiationService),\n orientation: 0 /* ActionsOrientation.HORIZONTAL */\n };\n }\n _onTitleClick(event) {\n // implement me if supportOnTitleClick option is set\n }\n setTitle(primaryHeading, secondaryHeading) {\n if (this._primaryHeading && this._secondaryHeading) {\n this._primaryHeading.innerText = primaryHeading;\n this._primaryHeading.setAttribute('title', primaryHeading);\n if (secondaryHeading) {\n this._secondaryHeading.innerText = secondaryHeading;\n }\n else {\n dom.clearNode(this._secondaryHeading);\n }\n }\n }\n setMetaTitle(value) {\n if (this._metaHeading) {\n if (value) {\n this._metaHeading.innerText = value;\n dom.show(this._metaHeading);\n }\n else {\n dom.hide(this._metaHeading);\n }\n }\n }\n _doLayout(heightInPixel, widthInPixel) {\n if (!this._isShowing && heightInPixel < 0) {\n // Looks like the view zone got folded away!\n this.dispose();\n return;\n }\n const headHeight = Math.ceil(this.editor.getOption(67 /* EditorOption.lineHeight */) * 1.2);\n const bodyHeight = Math.round(heightInPixel - (headHeight + 2 /* the border-top/bottom width*/));\n this._doLayoutHead(headHeight, widthInPixel);\n this._doLayoutBody(bodyHeight, widthInPixel);\n }\n _doLayoutHead(heightInPixel, widthInPixel) {\n if (this._headElement) {\n this._headElement.style.height = `${heightInPixel}px`;\n this._headElement.style.lineHeight = this._headElement.style.height;\n }\n }\n _doLayoutBody(heightInPixel, widthInPixel) {\n if (this._bodyElement) {\n this._bodyElement.style.height = `${heightInPixel}px`;\n }\n }\n};\nPeekViewWidget = __decorate([\n __param(2, IInstantiationService)\n], PeekViewWidget);\nexport { PeekViewWidget };\nexport const peekViewTitleBackground = registerColor('peekViewTitle.background', { dark: '#252526', light: '#F3F3F3', hcDark: Color.black, hcLight: Color.white }, nls.localize('peekViewTitleBackground', 'Background color of the peek view title area.'));\nexport const peekViewTitleForeground = registerColor('peekViewTitleLabel.foreground', { dark: Color.white, light: Color.black, hcDark: Color.white, hcLight: editorForeground }, nls.localize('peekViewTitleForeground', 'Color of the peek view title.'));\nexport const peekViewTitleInfoForeground = registerColor('peekViewTitleDescription.foreground', { dark: '#ccccccb3', light: '#616161', hcDark: '#FFFFFF99', hcLight: '#292929' }, nls.localize('peekViewTitleInfoForeground', 'Color of the peek view title info.'));\nexport const peekViewBorder = registerColor('peekView.border', { dark: editorInfoForeground, light: editorInfoForeground, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('peekViewBorder', 'Color of the peek view borders and arrow.'));\nexport const peekViewResultsBackground = registerColor('peekViewResult.background', { dark: '#252526', light: '#F3F3F3', hcDark: Color.black, hcLight: Color.white }, nls.localize('peekViewResultsBackground', 'Background color of the peek view result list.'));\nexport const peekViewResultsMatchForeground = registerColor('peekViewResult.lineForeground', { dark: '#bbbbbb', light: '#646465', hcDark: Color.white, hcLight: editorForeground }, nls.localize('peekViewResultsMatchForeground', 'Foreground color for line nodes in the peek view result list.'));\nexport const peekViewResultsFileForeground = registerColor('peekViewResult.fileForeground', { dark: Color.white, light: '#1E1E1E', hcDark: Color.white, hcLight: editorForeground }, nls.localize('peekViewResultsFileForeground', 'Foreground color for file nodes in the peek view result list.'));\nexport const peekViewResultsSelectionBackground = registerColor('peekViewResult.selectionBackground', { dark: '#3399ff33', light: '#3399ff33', hcDark: null, hcLight: null }, nls.localize('peekViewResultsSelectionBackground', 'Background color of the selected entry in the peek view result list.'));\nexport const peekViewResultsSelectionForeground = registerColor('peekViewResult.selectionForeground', { dark: Color.white, light: '#6C6C6C', hcDark: Color.white, hcLight: editorForeground }, nls.localize('peekViewResultsSelectionForeground', 'Foreground color of the selected entry in the peek view result list.'));\nexport const peekViewEditorBackground = registerColor('peekViewEditor.background', { dark: '#001F33', light: '#F2F8FC', hcDark: Color.black, hcLight: Color.white }, nls.localize('peekViewEditorBackground', 'Background color of the peek view editor.'));\nexport const peekViewEditorGutterBackground = registerColor('peekViewEditorGutter.background', { dark: peekViewEditorBackground, light: peekViewEditorBackground, hcDark: peekViewEditorBackground, hcLight: peekViewEditorBackground }, nls.localize('peekViewEditorGutterBackground', 'Background color of the gutter in the peek view editor.'));\nexport const peekViewEditorStickyScrollBackground = registerColor('peekViewEditorStickyScroll.background', { dark: peekViewEditorBackground, light: peekViewEditorBackground, hcDark: peekViewEditorBackground, hcLight: peekViewEditorBackground }, nls.localize('peekViewEditorStickScrollBackground', 'Background color of sticky scroll in the peek view editor.'));\nexport const peekViewResultsMatchHighlight = registerColor('peekViewResult.matchHighlightBackground', { dark: '#ea5c004d', light: '#ea5c004d', hcDark: null, hcLight: null }, nls.localize('peekViewResultsMatchHighlight', 'Match highlight color in the peek view result list.'));\nexport const peekViewEditorMatchHighlight = registerColor('peekViewEditor.matchHighlightBackground', { dark: '#ff8f0099', light: '#f5d802de', hcDark: null, hcLight: null }, nls.localize('peekViewEditorMatchHighlight', 'Match highlight color in the peek view editor.'));\nexport const peekViewEditorMatchHighlightBorder = registerColor('peekViewEditor.matchHighlightBorder', { dark: null, light: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('peekViewEditorMatchHighlightBorder', 'Match highlight border in the peek view editor.'));\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 { stripIcons } from '../../../../base/common/iconLabels.js';\nimport { isLocalizedString } from '../../../../platform/action/common/action.js';\nimport { AbstractCommandsQuickAccessProvider } from '../../../../platform/quickinput/browser/commandsQuickAccess.js';\nexport class AbstractEditorCommandsQuickAccessProvider extends AbstractCommandsQuickAccessProvider {\n constructor(options, instantiationService, keybindingService, commandService, telemetryService, dialogService) {\n super(options, instantiationService, keybindingService, commandService, telemetryService, dialogService);\n }\n getCodeEditorCommandPicks() {\n var _a;\n const activeTextEditorControl = this.activeTextEditorControl;\n if (!activeTextEditorControl) {\n return [];\n }\n const editorCommandPicks = [];\n for (const editorAction of activeTextEditorControl.getSupportedActions()) {\n let commandDescription;\n if ((_a = editorAction.metadata) === null || _a === void 0 ? void 0 : _a.description) {\n if (isLocalizedString(editorAction.metadata.description)) {\n commandDescription = editorAction.metadata.description;\n }\n else {\n commandDescription = { original: editorAction.metadata.description, value: editorAction.metadata.description };\n }\n }\n editorCommandPicks.push({\n commandId: editorAction.id,\n commandAlias: editorAction.alias,\n commandDescription,\n label: stripIcons(editorAction.label) || editorAction.id,\n });\n }\n return editorCommandPicks;\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 *--------------------------------------------------------------------------------------------*/\nimport { createSingleCallFunction } from '../../../../base/common/functional.js';\nimport { DisposableStore, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { getCodeEditor, isDiffEditor } from '../../../browser/editorBrowser.js';\nimport { OverviewRulerLane } from '../../../common/model.js';\nimport { overviewRulerRangeHighlight } from '../../../common/core/editorColorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nimport { status } from '../../../../base/browser/ui/aria/aria.js';\n/**\n * A reusable quick access provider for the editor with support\n * for adding decorations for navigating in the currently active file\n * (for example \"Go to line\", \"Go to symbol\").\n */\nexport class AbstractEditorNavigationQuickAccessProvider {\n constructor(options) {\n this.options = options;\n //#endregion\n //#region Decorations Utils\n this.rangeHighlightDecorationId = undefined;\n }\n //#region Provider methods\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 // Provide based on current active editor\n const pickerDisposable = disposables.add(new MutableDisposable());\n pickerDisposable.value = this.doProvide(picker, token, runOptions);\n // Re-create whenever the active editor changes\n disposables.add(this.onDidActiveTextEditorControlChange(() => {\n // Clear old\n pickerDisposable.value = undefined;\n // Add new\n pickerDisposable.value = this.doProvide(picker, token);\n }));\n return disposables;\n }\n doProvide(picker, token, runOptions) {\n var _a;\n const disposables = new DisposableStore();\n // With text control\n const editor = this.activeTextEditorControl;\n if (editor && this.canProvideWithTextEditor(editor)) {\n const context = { editor };\n // Restore any view state if this picker was closed\n // without actually going to a line\n const codeEditor = getCodeEditor(editor);\n if (codeEditor) {\n // Remember view state and update it when the cursor position\n // changes even later because it could be that the user has\n // configured quick access to remain open when focus is lost and\n // we always want to restore the current location.\n let lastKnownEditorViewState = (_a = editor.saveViewState()) !== null && _a !== void 0 ? _a : undefined;\n disposables.add(codeEditor.onDidChangeCursorPosition(() => {\n var _a;\n lastKnownEditorViewState = (_a = editor.saveViewState()) !== null && _a !== void 0 ? _a : undefined;\n }));\n context.restoreViewState = () => {\n if (lastKnownEditorViewState && editor === this.activeTextEditorControl) {\n editor.restoreViewState(lastKnownEditorViewState);\n }\n };\n disposables.add(createSingleCallFunction(token.onCancellationRequested)(() => { var _a; return (_a = context.restoreViewState) === null || _a === void 0 ? void 0 : _a.call(context); }));\n }\n // Clean up decorations on dispose\n disposables.add(toDisposable(() => this.clearDecorations(editor)));\n // Ask subclass for entries\n disposables.add(this.provideWithTextEditor(context, picker, token, runOptions));\n }\n // Without text control\n else {\n disposables.add(this.provideWithoutTextEditor(picker, token));\n }\n return disposables;\n }\n /**\n * Subclasses to implement if they can operate on the text editor.\n */\n canProvideWithTextEditor(editor) {\n return true;\n }\n gotoLocation({ editor }, options) {\n editor.setSelection(options.range, \"code.jump\" /* TextEditorSelectionSource.JUMP */);\n editor.revealRangeInCenter(options.range, 0 /* ScrollType.Smooth */);\n if (!options.preserveFocus) {\n editor.focus();\n }\n const model = editor.getModel();\n if (model && 'getLineContent' in model) {\n status(`${model.getLineContent(options.range.startLineNumber)}`);\n }\n }\n getModel(editor) {\n var _a;\n return isDiffEditor(editor) ?\n (_a = editor.getModel()) === null || _a === void 0 ? void 0 : _a.modified :\n editor.getModel();\n }\n addDecorations(editor, range) {\n editor.changeDecorations(changeAccessor => {\n // Reset old decorations if any\n const deleteDecorations = [];\n if (this.rangeHighlightDecorationId) {\n deleteDecorations.push(this.rangeHighlightDecorationId.overviewRulerDecorationId);\n deleteDecorations.push(this.rangeHighlightDecorationId.rangeHighlightId);\n this.rangeHighlightDecorationId = undefined;\n }\n // Add new decorations for the range\n const newDecorations = [\n // highlight the entire line on the range\n {\n range,\n options: {\n description: 'quick-access-range-highlight',\n className: 'rangeHighlight',\n isWholeLine: true\n }\n },\n // also add overview ruler highlight\n {\n range,\n options: {\n description: 'quick-access-range-highlight-overview',\n overviewRuler: {\n color: themeColorFromId(overviewRulerRangeHighlight),\n position: OverviewRulerLane.Full\n }\n }\n }\n ];\n const [rangeHighlightId, overviewRulerDecorationId] = changeAccessor.deltaDecorations(deleteDecorations, newDecorations);\n this.rangeHighlightDecorationId = { rangeHighlightId, overviewRulerDecorationId };\n });\n }\n clearDecorations(editor) {\n const rangeHighlightDecorationId = this.rangeHighlightDecorationId;\n if (rangeHighlightDecorationId) {\n editor.changeDecorations(changeAccessor => {\n changeAccessor.deltaDecorations([\n rangeHighlightDecorationId.overviewRulerDecorationId,\n rangeHighlightDecorationId.rangeHighlightId\n ], []);\n });\n this.rangeHighlightDecorationId = undefined;\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 *--------------------------------------------------------------------------------------------*/\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { getCodeEditor } from '../../../browser/editorBrowser.js';\nimport { AbstractEditorNavigationQuickAccessProvider } from './editorNavigationQuickAccess.js';\nimport { localize } from '../../../../nls.js';\nexport class AbstractGotoLineQuickAccessProvider extends AbstractEditorNavigationQuickAccessProvider {\n constructor() {\n super({ canAcceptInBackground: true });\n }\n provideWithoutTextEditor(picker) {\n const label = localize('cannotRunGotoLine', \"Open a text editor first to go to a line.\");\n picker.items = [{ label }];\n picker.ariaLabel = label;\n return Disposable.None;\n }\n provideWithTextEditor(context, picker, token) {\n const editor = context.editor;\n const disposables = new DisposableStore();\n // Goto line once picked\n disposables.add(picker.onDidAccept(event => {\n const [item] = picker.selectedItems;\n if (item) {\n if (!this.isValidLineNumber(editor, item.lineNumber)) {\n return;\n }\n this.gotoLocation(context, { range: this.toRange(item.lineNumber, item.column), keyMods: picker.keyMods, preserveFocus: event.inBackground });\n if (!event.inBackground) {\n picker.hide();\n }\n }\n }));\n // React to picker changes\n const updatePickerAndEditor = () => {\n const position = this.parsePosition(editor, picker.value.trim().substr(AbstractGotoLineQuickAccessProvider.PREFIX.length));\n const label = this.getPickLabel(editor, position.lineNumber, position.column);\n // Picker\n picker.items = [{\n lineNumber: position.lineNumber,\n column: position.column,\n label\n }];\n // ARIA Label\n picker.ariaLabel = label;\n // Clear decorations for invalid range\n if (!this.isValidLineNumber(editor, position.lineNumber)) {\n this.clearDecorations(editor);\n return;\n }\n // Reveal\n const range = this.toRange(position.lineNumber, position.column);\n editor.revealRangeInCenter(range, 0 /* ScrollType.Smooth */);\n // Decorate\n this.addDecorations(editor, range);\n };\n updatePickerAndEditor();\n disposables.add(picker.onDidChangeValue(() => updatePickerAndEditor()));\n // Adjust line number visibility as needed\n const codeEditor = getCodeEditor(editor);\n if (codeEditor) {\n const options = codeEditor.getOptions();\n const lineNumbers = options.get(68 /* EditorOption.lineNumbers */);\n if (lineNumbers.renderType === 2 /* RenderLineNumbersType.Relative */) {\n codeEditor.updateOptions({ lineNumbers: 'on' });\n disposables.add(toDisposable(() => codeEditor.updateOptions({ lineNumbers: 'relative' })));\n }\n }\n return disposables;\n }\n toRange(lineNumber = 1, column = 1) {\n return {\n startLineNumber: lineNumber,\n startColumn: column,\n endLineNumber: lineNumber,\n endColumn: column\n };\n }\n parsePosition(editor, value) {\n // Support line-col formats of `line,col`, `line:col`, `line#col`\n const numbers = value.split(/,|:|#/).map(part => parseInt(part, 10)).filter(part => !isNaN(part));\n const endLine = this.lineCount(editor) + 1;\n return {\n lineNumber: numbers[0] > 0 ? numbers[0] : endLine + numbers[0],\n column: numbers[1]\n };\n }\n getPickLabel(editor, lineNumber, column) {\n // Location valid: indicate this as picker label\n if (this.isValidLineNumber(editor, lineNumber)) {\n if (this.isValidColumn(editor, lineNumber, column)) {\n return localize('gotoLineColumnLabel', \"Go to line {0} and character {1}.\", lineNumber, column);\n }\n return localize('gotoLineLabel', \"Go to line {0}.\", lineNumber);\n }\n // Location invalid: show generic label\n const position = editor.getPosition() || { lineNumber: 1, column: 1 };\n const lineCount = this.lineCount(editor);\n if (lineCount > 1) {\n return localize('gotoLineLabelEmptyWithLimit', \"Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.\", position.lineNumber, position.column, lineCount);\n }\n return localize('gotoLineLabelEmpty', \"Current Line: {0}, Character: {1}. Type a line number to navigate to.\", position.lineNumber, position.column);\n }\n isValidLineNumber(editor, lineNumber) {\n if (!lineNumber || typeof lineNumber !== 'number') {\n return false;\n }\n return lineNumber > 0 && lineNumber <= this.lineCount(editor);\n }\n isValidColumn(editor, lineNumber, column) {\n if (!column || typeof column !== 'number') {\n return false;\n }\n const model = this.getModel(editor);\n if (!model) {\n return false;\n }\n const positionCandidate = { lineNumber, column };\n return model.validatePosition(positionCandidate).equals(positionCandidate);\n }\n lineCount(editor) {\n var _a, _b;\n return (_b = (_a = this.getModel(editor)) === null || _a === void 0 ? void 0 : _a.getLineCount()) !== null && _b !== void 0 ? _b : 0;\n }\n}\nAbstractGotoLineQuickAccessProvider.PREFIX = ':';\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 AbstractGotoSymbolQuickAccessProvider_1;\nimport { DeferredPromise } from '../../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { pieceToQuery, prepareQuery, scoreFuzzy2 } from '../../../../base/common/fuzzyScorer.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { format, trim } from '../../../../base/common/strings.js';\nimport { Range } from '../../../common/core/range.js';\nimport { SymbolKinds, getAriaLabelForSymbol } from '../../../common/languages.js';\nimport { IOutlineModelService } from '../../documentSymbols/browser/outlineModel.js';\nimport { AbstractEditorNavigationQuickAccessProvider } from './editorNavigationQuickAccess.js';\nimport { localize } from '../../../../nls.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { findLast } from '../../../../base/common/arraysFind.js';\nlet AbstractGotoSymbolQuickAccessProvider = AbstractGotoSymbolQuickAccessProvider_1 = class AbstractGotoSymbolQuickAccessProvider extends AbstractEditorNavigationQuickAccessProvider {\n constructor(_languageFeaturesService, _outlineModelService, options = Object.create(null)) {\n super(options);\n this._languageFeaturesService = _languageFeaturesService;\n this._outlineModelService = _outlineModelService;\n this.options = options;\n this.options.canAcceptInBackground = true;\n }\n provideWithoutTextEditor(picker) {\n this.provideLabelPick(picker, localize('cannotRunGotoSymbolWithoutEditor', \"To go to a symbol, first open a text editor with symbol information.\"));\n return Disposable.None;\n }\n provideWithTextEditor(context, picker, token, runOptions) {\n const editor = context.editor;\n const model = this.getModel(editor);\n if (!model) {\n return Disposable.None;\n }\n // Provide symbols from model if available in registry\n if (this._languageFeaturesService.documentSymbolProvider.has(model)) {\n return this.doProvideWithEditorSymbols(context, model, picker, token, runOptions);\n }\n // Otherwise show an entry for a model without registry\n // But give a chance to resolve the symbols at a later\n // point if possible\n return this.doProvideWithoutEditorSymbols(context, model, picker, token);\n }\n doProvideWithoutEditorSymbols(context, model, picker, token) {\n const disposables = new DisposableStore();\n // Generic pick for not having any symbol information\n this.provideLabelPick(picker, localize('cannotRunGotoSymbolWithoutSymbolProvider', \"The active text editor does not provide symbol information.\"));\n // Wait for changes to the registry and see if eventually\n // we do get symbols. This can happen if the picker is opened\n // very early after the model has loaded but before the\n // language registry is ready.\n // https://github.com/microsoft/vscode/issues/70607\n (async () => {\n const result = await this.waitForLanguageSymbolRegistry(model, disposables);\n if (!result || token.isCancellationRequested) {\n return;\n }\n disposables.add(this.doProvideWithEditorSymbols(context, model, picker, token));\n })();\n return disposables;\n }\n provideLabelPick(picker, label) {\n picker.items = [{ label, index: 0, kind: 14 /* SymbolKind.String */ }];\n picker.ariaLabel = label;\n }\n async waitForLanguageSymbolRegistry(model, disposables) {\n if (this._languageFeaturesService.documentSymbolProvider.has(model)) {\n return true;\n }\n const symbolProviderRegistryPromise = new DeferredPromise();\n // Resolve promise when registry knows model\n const symbolProviderListener = disposables.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(() => {\n if (this._languageFeaturesService.documentSymbolProvider.has(model)) {\n symbolProviderListener.dispose();\n symbolProviderRegistryPromise.complete(true);\n }\n }));\n // Resolve promise when we get disposed too\n disposables.add(toDisposable(() => symbolProviderRegistryPromise.complete(false)));\n return symbolProviderRegistryPromise.p;\n }\n doProvideWithEditorSymbols(context, model, picker, token, runOptions) {\n var _a;\n const editor = context.editor;\n const disposables = new DisposableStore();\n // Goto symbol once picked\n disposables.add(picker.onDidAccept(event => {\n var _a;\n const [item] = picker.selectedItems;\n if (item && item.range) {\n this.gotoLocation(context, { range: item.range.selection, keyMods: picker.keyMods, preserveFocus: event.inBackground });\n (_a = runOptions === null || runOptions === void 0 ? void 0 : runOptions.handleAccept) === null || _a === void 0 ? void 0 : _a.call(runOptions, item);\n if (!event.inBackground) {\n picker.hide();\n }\n }\n }));\n // Goto symbol side by side if enabled\n disposables.add(picker.onDidTriggerItemButton(({ item }) => {\n if (item && item.range) {\n this.gotoLocation(context, { range: item.range.selection, keyMods: picker.keyMods, forceSideBySide: true });\n picker.hide();\n }\n }));\n // Resolve symbols from document once and reuse this\n // request for all filtering and typing then on\n const symbolsPromise = this.getDocumentSymbols(model, token);\n // Set initial picks and update on type\n let picksCts = undefined;\n const updatePickerItems = async (positionToEnclose) => {\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 symbol picks\n picker.busy = true;\n try {\n const query = prepareQuery(picker.value.substr(AbstractGotoSymbolQuickAccessProvider_1.PREFIX.length).trim());\n const items = await this.doGetSymbolPicks(symbolsPromise, query, undefined, picksCts.token, model);\n if (token.isCancellationRequested) {\n return;\n }\n if (items.length > 0) {\n picker.items = items;\n if (positionToEnclose && query.original.length === 0) {\n const candidate = findLast(items, item => Boolean(item.type !== 'separator' && item.range && Range.containsPosition(item.range.decoration, positionToEnclose)));\n if (candidate) {\n picker.activeItems = [candidate];\n }\n }\n }\n else {\n if (query.original.length > 0) {\n this.provideLabelPick(picker, localize('noMatchingSymbolResults', \"No matching editor symbols\"));\n }\n else {\n this.provideLabelPick(picker, localize('noSymbolResults', \"No editor symbols\"));\n }\n }\n }\n finally {\n if (!token.isCancellationRequested) {\n picker.busy = false;\n }\n }\n };\n disposables.add(picker.onDidChangeValue(() => updatePickerItems(undefined)));\n updatePickerItems((_a = editor.getSelection()) === null || _a === void 0 ? void 0 : _a.getPosition());\n // Reveal and decorate when active item changes\n disposables.add(picker.onDidChangeActive(() => {\n const [item] = picker.activeItems;\n if (item && item.range) {\n // Reveal\n editor.revealRangeInCenter(item.range.selection, 0 /* ScrollType.Smooth */);\n // Decorate\n this.addDecorations(editor, item.range.decoration);\n }\n }));\n return disposables;\n }\n async doGetSymbolPicks(symbolsPromise, query, options, token, model) {\n var _a, _b;\n const symbols = await symbolsPromise;\n if (token.isCancellationRequested) {\n return [];\n }\n const filterBySymbolKind = query.original.indexOf(AbstractGotoSymbolQuickAccessProvider_1.SCOPE_PREFIX) === 0;\n const filterPos = filterBySymbolKind ? 1 : 0;\n // Split between symbol and container query\n let symbolQuery;\n let containerQuery;\n if (query.values && query.values.length > 1) {\n symbolQuery = pieceToQuery(query.values[0]); // symbol: only match on first part\n containerQuery = pieceToQuery(query.values.slice(1)); // container: match on all but first parts\n }\n else {\n symbolQuery = query;\n }\n // Convert to symbol picks and apply filtering\n let buttons;\n const openSideBySideDirection = (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.openSideBySideDirection) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (openSideBySideDirection) {\n buttons = [{\n iconClass: openSideBySideDirection === 'right' ? ThemeIcon.asClassName(Codicon.splitHorizontal) : ThemeIcon.asClassName(Codicon.splitVertical),\n tooltip: openSideBySideDirection === 'right' ? localize('openToSide', \"Open to the Side\") : localize('openToBottom', \"Open to the Bottom\")\n }];\n }\n const filteredSymbolPicks = [];\n for (let index = 0; index < symbols.length; index++) {\n const symbol = symbols[index];\n const symbolLabel = trim(symbol.name);\n const symbolLabelWithIcon = `$(${SymbolKinds.toIcon(symbol.kind).id}) ${symbolLabel}`;\n const symbolLabelIconOffset = symbolLabelWithIcon.length - symbolLabel.length;\n let containerLabel = symbol.containerName;\n if (options === null || options === void 0 ? void 0 : options.extraContainerLabel) {\n if (containerLabel) {\n containerLabel = `${options.extraContainerLabel} • ${containerLabel}`;\n }\n else {\n containerLabel = options.extraContainerLabel;\n }\n }\n let symbolScore = undefined;\n let symbolMatches = undefined;\n let containerScore = undefined;\n let containerMatches = undefined;\n if (query.original.length > filterPos) {\n // First: try to score on the entire query, it is possible that\n // the symbol matches perfectly (e.g. searching for \"change log\"\n // can be a match on a markdown symbol \"change log\"). In that\n // case we want to skip the container query altogether.\n let skipContainerQuery = false;\n if (symbolQuery !== query) {\n [symbolScore, symbolMatches] = scoreFuzzy2(symbolLabelWithIcon, { ...query, values: undefined /* disable multi-query support */ }, filterPos, symbolLabelIconOffset);\n if (typeof symbolScore === 'number') {\n skipContainerQuery = true; // since we consumed the query, skip any container matching\n }\n }\n // Otherwise: score on the symbol query and match on the container later\n if (typeof symbolScore !== 'number') {\n [symbolScore, symbolMatches] = scoreFuzzy2(symbolLabelWithIcon, symbolQuery, filterPos, symbolLabelIconOffset);\n if (typeof symbolScore !== 'number') {\n continue;\n }\n }\n // Score by container if specified\n if (!skipContainerQuery && containerQuery) {\n if (containerLabel && containerQuery.original.length > 0) {\n [containerScore, containerMatches] = scoreFuzzy2(containerLabel, containerQuery);\n }\n if (typeof containerScore !== 'number') {\n continue;\n }\n if (typeof symbolScore === 'number') {\n symbolScore += containerScore; // boost symbolScore by containerScore\n }\n }\n }\n const deprecated = symbol.tags && symbol.tags.indexOf(1 /* SymbolTag.Deprecated */) >= 0;\n filteredSymbolPicks.push({\n index,\n kind: symbol.kind,\n score: symbolScore,\n label: symbolLabelWithIcon,\n ariaLabel: getAriaLabelForSymbol(symbol.name, symbol.kind),\n description: containerLabel,\n highlights: deprecated ? undefined : {\n label: symbolMatches,\n description: containerMatches\n },\n range: {\n selection: Range.collapseToStart(symbol.selectionRange),\n decoration: symbol.range\n },\n uri: model.uri,\n symbolName: symbolLabel,\n strikethrough: deprecated,\n buttons\n });\n }\n // Sort by score\n const sortedFilteredSymbolPicks = filteredSymbolPicks.sort((symbolA, symbolB) => filterBySymbolKind ?\n this.compareByKindAndScore(symbolA, symbolB) :\n this.compareByScore(symbolA, symbolB));\n // Add separator for types\n // - @ only total number of symbols\n // - @: grouped by symbol kind\n let symbolPicks = [];\n if (filterBySymbolKind) {\n let lastSymbolKind = undefined;\n let lastSeparator = undefined;\n let lastSymbolKindCounter = 0;\n function updateLastSeparatorLabel() {\n if (lastSeparator && typeof lastSymbolKind === 'number' && lastSymbolKindCounter > 0) {\n lastSeparator.label = format(NLS_SYMBOL_KIND_CACHE[lastSymbolKind] || FALLBACK_NLS_SYMBOL_KIND, lastSymbolKindCounter);\n }\n }\n for (const symbolPick of sortedFilteredSymbolPicks) {\n // Found new kind\n if (lastSymbolKind !== symbolPick.kind) {\n // Update last separator with number of symbols we found for kind\n updateLastSeparatorLabel();\n lastSymbolKind = symbolPick.kind;\n lastSymbolKindCounter = 1;\n // Add new separator for new kind\n lastSeparator = { type: 'separator' };\n symbolPicks.push(lastSeparator);\n }\n // Existing kind, keep counting\n else {\n lastSymbolKindCounter++;\n }\n // Add to final result\n symbolPicks.push(symbolPick);\n }\n // Update last separator with number of symbols we found for kind\n updateLastSeparatorLabel();\n }\n else if (sortedFilteredSymbolPicks.length > 0) {\n symbolPicks = [\n { label: localize('symbols', \"symbols ({0})\", filteredSymbolPicks.length), type: 'separator' },\n ...sortedFilteredSymbolPicks\n ];\n }\n return symbolPicks;\n }\n compareByScore(symbolA, symbolB) {\n if (typeof symbolA.score !== 'number' && typeof symbolB.score === 'number') {\n return 1;\n }\n else if (typeof symbolA.score === 'number' && typeof symbolB.score !== 'number') {\n return -1;\n }\n if (typeof symbolA.score === 'number' && typeof symbolB.score === 'number') {\n if (symbolA.score > symbolB.score) {\n return -1;\n }\n else if (symbolA.score < symbolB.score) {\n return 1;\n }\n }\n if (symbolA.index < symbolB.index) {\n return -1;\n }\n else if (symbolA.index > symbolB.index) {\n return 1;\n }\n return 0;\n }\n compareByKindAndScore(symbolA, symbolB) {\n const kindA = NLS_SYMBOL_KIND_CACHE[symbolA.kind] || FALLBACK_NLS_SYMBOL_KIND;\n const kindB = NLS_SYMBOL_KIND_CACHE[symbolB.kind] || FALLBACK_NLS_SYMBOL_KIND;\n // Sort by type first if scoped search\n const result = kindA.localeCompare(kindB);\n if (result === 0) {\n return this.compareByScore(symbolA, symbolB);\n }\n return result;\n }\n async getDocumentSymbols(document, token) {\n const model = await this._outlineModelService.getOrCreate(document, token);\n return token.isCancellationRequested ? [] : model.asListOfDocumentSymbols();\n }\n};\nAbstractGotoSymbolQuickAccessProvider.PREFIX = '@';\nAbstractGotoSymbolQuickAccessProvider.SCOPE_PREFIX = ':';\nAbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY = `${AbstractGotoSymbolQuickAccessProvider_1.PREFIX}${AbstractGotoSymbolQuickAccessProvider_1.SCOPE_PREFIX}`;\nAbstractGotoSymbolQuickAccessProvider = AbstractGotoSymbolQuickAccessProvider_1 = __decorate([\n __param(0, ILanguageFeaturesService),\n __param(1, IOutlineModelService)\n], AbstractGotoSymbolQuickAccessProvider);\nexport { AbstractGotoSymbolQuickAccessProvider };\n// #region NLS Helpers\nconst FALLBACK_NLS_SYMBOL_KIND = localize('property', \"properties ({0})\");\nconst NLS_SYMBOL_KIND_CACHE = {\n [5 /* SymbolKind.Method */]: localize('method', \"methods ({0})\"),\n [11 /* SymbolKind.Function */]: localize('function', \"functions ({0})\"),\n [8 /* SymbolKind.Constructor */]: localize('_constructor', \"constructors ({0})\"),\n [12 /* SymbolKind.Variable */]: localize('variable', \"variables ({0})\"),\n [4 /* SymbolKind.Class */]: localize('class', \"classes ({0})\"),\n [22 /* SymbolKind.Struct */]: localize('struct', \"structs ({0})\"),\n [23 /* SymbolKind.Event */]: localize('event', \"events ({0})\"),\n [24 /* SymbolKind.Operator */]: localize('operator', \"operators ({0})\"),\n [10 /* SymbolKind.Interface */]: localize('interface', \"interfaces ({0})\"),\n [2 /* SymbolKind.Namespace */]: localize('namespace', \"namespaces ({0})\"),\n [3 /* SymbolKind.Package */]: localize('package', \"packages ({0})\"),\n [25 /* SymbolKind.TypeParameter */]: localize('typeParameter', \"type parameters ({0})\"),\n [1 /* SymbolKind.Module */]: localize('modules', \"modules ({0})\"),\n [6 /* SymbolKind.Property */]: localize('property', \"properties ({0})\"),\n [9 /* SymbolKind.Enum */]: localize('enum', \"enumerations ({0})\"),\n [21 /* SymbolKind.EnumMember */]: localize('enumMember', \"enumeration members ({0})\"),\n [14 /* SymbolKind.String */]: localize('string', \"strings ({0})\"),\n [0 /* SymbolKind.File */]: localize('file', \"files ({0})\"),\n [17 /* SymbolKind.Array */]: localize('array', \"arrays ({0})\"),\n [15 /* SymbolKind.Number */]: localize('number', \"numbers ({0})\"),\n [16 /* SymbolKind.Boolean */]: localize('boolean', \"booleans ({0})\"),\n [18 /* SymbolKind.Object */]: localize('object', \"objects ({0})\"),\n [19 /* SymbolKind.Key */]: localize('key', \"keys ({0})\"),\n [7 /* SymbolKind.Field */]: localize('field', \"fields ({0})\"),\n [13 /* SymbolKind.Constant */]: localize('constant', \"constants ({0})\")\n};\n//#endregion\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 { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport * as nls from '../../../../nls.js';\nexport class ReadOnlyMessageController extends Disposable {\n constructor(editor) {\n super();\n this.editor = editor;\n this._register(this.editor.onDidAttemptReadOnlyEdit(() => this._onDidAttemptReadOnlyEdit()));\n }\n _onDidAttemptReadOnlyEdit() {\n const messageController = MessageController.get(this.editor);\n if (messageController && this.editor.hasModel()) {\n let message = this.editor.getOptions().get(92 /* EditorOption.readOnlyMessage */);\n if (!message) {\n if (this.editor.isSimpleWidget) {\n message = new MarkdownString(nls.localize('editor.simple.readonly', \"Cannot edit in read-only input\"));\n }\n else {\n message = new MarkdownString(nls.localize('editor.readonly', \"Cannot edit in read-only editor\"));\n }\n }\n messageController.showMessage(message, this.editor.getPosition());\n }\n }\n}\nReadOnlyMessageController.ID = 'editor.contrib.readOnlyMessageController';\nregisterEditorContribution(ReadOnlyMessageController.ID, ReadOnlyMessageController, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\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 * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { getBaseLayerHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate2.js';\nimport { getDefaultHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';\nimport { renderIcon } from '../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { DeferredPromise, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType, isDefined } from '../../../../base/common/types.js';\nimport './renameWidget.css';\nimport * as domFontInfo from '../../../browser/config/domFontInfo.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { NewSymbolNameTag, NewSymbolNameTriggerKind } from '../../../common/languages.js';\nimport * as nls from '../../../../nls.js';\nimport { localize } from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { getListStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport { editorWidgetBackground, inputBackground, inputBorder, inputForeground, quickInputListFocusBackground, quickInputListFocusForeground, widgetBorder, widgetShadow } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\n/** for debugging */\nconst _sticky = false;\nexport const CONTEXT_RENAME_INPUT_VISIBLE = new RawContextKey('renameInputVisible', false, localize('renameInputVisible', \"Whether the rename input widget is visible\"));\nexport const CONTEXT_RENAME_INPUT_FOCUSED = new RawContextKey('renameInputFocused', false, localize('renameInputFocused', \"Whether the rename input widget is focused\"));\nlet RenameWidget = class RenameWidget {\n constructor(_editor, _acceptKeybindings, _themeService, _keybindingService, contextKeyService, _logService) {\n this._editor = _editor;\n this._acceptKeybindings = _acceptKeybindings;\n this._themeService = _themeService;\n this._keybindingService = _keybindingService;\n this._logService = _logService;\n // implement IContentWidget\n this.allowEditorOverflow = true;\n this._disposables = new DisposableStore();\n this._visibleContextKey = CONTEXT_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\n this._isEditingRenameCandidate = false;\n this._nRenameSuggestionsInvocations = 0;\n this._hadAutomaticRenameSuggestionsInvocation = false;\n this._candidates = new Set();\n this._beforeFirstInputFieldEditSW = new StopWatch();\n this._inputWithButton = new InputWithButton();\n this._disposables.add(this._inputWithButton);\n this._editor.addContentWidget(this);\n this._disposables.add(this._editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(50 /* EditorOption.fontInfo */)) {\n this._updateFont();\n }\n }));\n this._disposables.add(_themeService.onDidColorThemeChange(this._updateStyles, this));\n }\n dispose() {\n this._disposables.dispose();\n this._editor.removeContentWidget(this);\n }\n getId() {\n return '__renameInputWidget';\n }\n getDomNode() {\n if (!this._domNode) {\n this._domNode = document.createElement('div');\n this._domNode.className = 'monaco-editor rename-box';\n this._domNode.appendChild(this._inputWithButton.domNode);\n this._renameCandidateListView = this._disposables.add(new RenameCandidateListView(this._domNode, {\n fontInfo: this._editor.getOption(50 /* EditorOption.fontInfo */),\n onFocusChange: (newSymbolName) => {\n this._inputWithButton.input.value = newSymbolName;\n this._isEditingRenameCandidate = false; // @ulugbekna: reset\n },\n onSelectionChange: () => {\n this._isEditingRenameCandidate = false; // @ulugbekna: because user picked a rename suggestion\n this.acceptInput(false); // we don't allow preview with mouse click for now\n }\n }));\n this._disposables.add(this._inputWithButton.onDidInputChange(() => {\n var _a, _b, _c, _d;\n if (((_a = this._renameCandidateListView) === null || _a === void 0 ? void 0 : _a.focusedCandidate) !== undefined) {\n this._isEditingRenameCandidate = true;\n }\n (_b = this._timeBeforeFirstInputFieldEdit) !== null && _b !== void 0 ? _b : (this._timeBeforeFirstInputFieldEdit = this._beforeFirstInputFieldEditSW.elapsed());\n if (((_c = this._renameCandidateProvidersCts) === null || _c === void 0 ? void 0 : _c.token.isCancellationRequested) === false) {\n this._renameCandidateProvidersCts.cancel();\n }\n (_d = this._renameCandidateListView) === null || _d === void 0 ? void 0 : _d.clearFocus();\n }));\n this._label = document.createElement('div');\n this._label.className = 'rename-label';\n this._domNode.appendChild(this._label);\n this._updateFont();\n this._updateStyles(this._themeService.getColorTheme());\n }\n return this._domNode;\n }\n _updateStyles(theme) {\n var _a, _b, _c, _d, _e;\n if (!this._domNode) {\n return;\n }\n const widgetShadowColor = theme.getColor(widgetShadow);\n const widgetBorderColor = theme.getColor(widgetBorder);\n this._domNode.style.backgroundColor = String((_a = theme.getColor(editorWidgetBackground)) !== null && _a !== void 0 ? _a : '');\n this._domNode.style.boxShadow = widgetShadowColor ? ` 0 0 8px 2px ${widgetShadowColor}` : '';\n this._domNode.style.border = widgetBorderColor ? `1px solid ${widgetBorderColor}` : '';\n this._domNode.style.color = String((_b = theme.getColor(inputForeground)) !== null && _b !== void 0 ? _b : '');\n const border = theme.getColor(inputBorder);\n this._inputWithButton.domNode.style.backgroundColor = String((_c = theme.getColor(inputBackground)) !== null && _c !== void 0 ? _c : '');\n this._inputWithButton.input.style.backgroundColor = String((_d = theme.getColor(inputBackground)) !== null && _d !== void 0 ? _d : '');\n this._inputWithButton.domNode.style.borderWidth = border ? '1px' : '0px';\n this._inputWithButton.domNode.style.borderStyle = border ? 'solid' : 'none';\n this._inputWithButton.domNode.style.borderColor = (_e = border === null || border === void 0 ? void 0 : border.toString()) !== null && _e !== void 0 ? _e : 'none';\n }\n _updateFont() {\n if (this._domNode === undefined) {\n return;\n }\n assertType(this._label !== undefined, 'RenameWidget#_updateFont: _label must not be undefined given _domNode is defined');\n this._editor.applyFontInfo(this._inputWithButton.input);\n const fontInfo = this._editor.getOption(50 /* EditorOption.fontInfo */);\n this._label.style.fontSize = `${this._computeLabelFontSize(fontInfo.fontSize)}px`;\n }\n _computeLabelFontSize(editorFontSize) {\n return editorFontSize * 0.8;\n }\n getPosition() {\n if (!this._visible) {\n return null;\n }\n if (!this._editor.hasModel() || // @ulugbekna: shouldn't happen\n !this._editor.getDomNode() // @ulugbekna: can happen during tests based on suggestWidget's similar predicate check\n ) {\n return null;\n }\n const bodyBox = dom.getClientArea(this.getDomNode().ownerDocument.body);\n const editorBox = dom.getDomNodePagePosition(this._editor.getDomNode());\n const cursorBoxTop = this._getTopForPosition();\n this._nPxAvailableAbove = cursorBoxTop + editorBox.top;\n this._nPxAvailableBelow = bodyBox.height - this._nPxAvailableAbove;\n const lineHeight = this._editor.getOption(67 /* EditorOption.lineHeight */);\n const { totalHeight: candidateViewHeight } = RenameCandidateView.getLayoutInfo({ lineHeight });\n const positionPreference = this._nPxAvailableBelow > candidateViewHeight * 6 /* approximate # of candidates to fit in (inclusive of rename input box & rename label) */\n ? [2 /* ContentWidgetPositionPreference.BELOW */, 1 /* ContentWidgetPositionPreference.ABOVE */]\n : [1 /* ContentWidgetPositionPreference.ABOVE */, 2 /* ContentWidgetPositionPreference.BELOW */];\n return {\n position: this._position,\n preference: positionPreference,\n };\n }\n beforeRender() {\n var _a, _b;\n const [accept, preview] = this._acceptKeybindings;\n this._label.innerText = localize({ key: 'label', comment: ['placeholders are keybindings, e.g \"F2 to Rename, Shift+F2 to Preview\"'] }, \"{0} to Rename, {1} to Preview\", (_a = this._keybindingService.lookupKeybinding(accept)) === null || _a === void 0 ? void 0 : _a.getLabel(), (_b = this._keybindingService.lookupKeybinding(preview)) === null || _b === void 0 ? void 0 : _b.getLabel());\n this._domNode.style.minWidth = `200px`; // to prevent from widening when candidates come in\n return null;\n }\n afterRender(position) {\n this._trace('invoking afterRender, position: ', position ? 'not null' : 'null');\n if (position === null) {\n // cancel rename when input widget isn't rendered anymore\n this.cancelInput(true, 'afterRender (because position is null)');\n return;\n }\n if (!this._editor.hasModel() || // shouldn't happen\n !this._editor.getDomNode() // can happen during tests based on suggestWidget's similar predicate check\n ) {\n return;\n }\n assertType(this._renameCandidateListView);\n assertType(this._nPxAvailableAbove !== undefined);\n assertType(this._nPxAvailableBelow !== undefined);\n const inputBoxHeight = dom.getTotalHeight(this._inputWithButton.domNode);\n const labelHeight = dom.getTotalHeight(this._label);\n let totalHeightAvailable;\n if (position === 2 /* ContentWidgetPositionPreference.BELOW */) {\n totalHeightAvailable = this._nPxAvailableBelow;\n }\n else {\n totalHeightAvailable = this._nPxAvailableAbove;\n }\n this._renameCandidateListView.layout({\n height: totalHeightAvailable - labelHeight - inputBoxHeight,\n width: dom.getTotalWidth(this._inputWithButton.domNode),\n });\n }\n acceptInput(wantsPreview) {\n var _a;\n this._trace(`invoking acceptInput`);\n (_a = this._currentAcceptInput) === null || _a === void 0 ? void 0 : _a.call(this, wantsPreview);\n }\n cancelInput(focusEditor, caller) {\n var _a;\n this._trace(`invoking cancelInput, caller: ${caller}, _currentCancelInput: ${this._currentAcceptInput ? 'not undefined' : 'undefined'}`);\n (_a = this._currentCancelInput) === null || _a === void 0 ? void 0 : _a.call(this, focusEditor);\n }\n focusNextRenameSuggestion() {\n var _a;\n if (!((_a = this._renameCandidateListView) === null || _a === void 0 ? void 0 : _a.focusNext())) {\n this._inputWithButton.input.value = this._currentName;\n }\n }\n focusPreviousRenameSuggestion() {\n var _a;\n if (!((_a = this._renameCandidateListView) === null || _a === void 0 ? void 0 : _a.focusPrevious())) {\n this._inputWithButton.input.value = this._currentName;\n }\n }\n /**\n * @param requestRenameCandidates is `undefined` when there are no rename suggestion providers\n */\n getInput(where, currentName, supportPreview, requestRenameCandidates, cts) {\n const { start: selectionStart, end: selectionEnd } = this._getSelection(where, currentName);\n this._renameCts = cts;\n const disposeOnDone = new DisposableStore();\n this._nRenameSuggestionsInvocations = 0;\n this._hadAutomaticRenameSuggestionsInvocation = false;\n if (requestRenameCandidates === undefined) {\n this._inputWithButton.button.style.display = 'none';\n }\n else {\n this._inputWithButton.button.style.display = 'flex';\n this._requestRenameCandidatesOnce = requestRenameCandidates;\n this._requestRenameCandidates(currentName, false);\n disposeOnDone.add(dom.addDisposableListener(this._inputWithButton.button, 'click', () => this._requestRenameCandidates(currentName, true)));\n disposeOnDone.add(dom.addDisposableListener(this._inputWithButton.button, dom.EventType.KEY_DOWN, (e) => {\n const keyEvent = new StandardKeyboardEvent(e);\n if (keyEvent.equals(3 /* KeyCode.Enter */) || keyEvent.equals(10 /* KeyCode.Space */)) {\n keyEvent.stopPropagation();\n keyEvent.preventDefault();\n this._requestRenameCandidates(currentName, true);\n }\n }));\n }\n this._isEditingRenameCandidate = false;\n this._domNode.classList.toggle('preview', supportPreview);\n this._position = new Position(where.startLineNumber, where.startColumn);\n this._currentName = currentName;\n this._inputWithButton.input.value = currentName;\n this._inputWithButton.input.setAttribute('selectionStart', selectionStart.toString());\n this._inputWithButton.input.setAttribute('selectionEnd', selectionEnd.toString());\n this._inputWithButton.input.size = Math.max((where.endColumn - where.startColumn) * 1.1, 20); // determines width\n this._beforeFirstInputFieldEditSW.reset();\n disposeOnDone.add(toDisposable(() => {\n this._renameCts = undefined;\n cts.dispose(true);\n })); // @ulugbekna: this may result in `this.cancelInput` being called twice, but it should be safe since we set it to undefined after 1st call\n disposeOnDone.add(toDisposable(() => {\n if (this._renameCandidateProvidersCts !== undefined) {\n this._renameCandidateProvidersCts.dispose(true);\n this._renameCandidateProvidersCts = undefined;\n }\n }));\n disposeOnDone.add(toDisposable(() => this._candidates.clear()));\n const inputResult = new DeferredPromise();\n inputResult.p.finally(() => {\n disposeOnDone.dispose();\n this._hide();\n });\n this._currentCancelInput = (focusEditor) => {\n var _a;\n this._trace('invoking _currentCancelInput');\n this._currentAcceptInput = undefined;\n this._currentCancelInput = undefined;\n // fixme session cleanup\n (_a = this._renameCandidateListView) === null || _a === void 0 ? void 0 : _a.clearCandidates();\n inputResult.complete(focusEditor);\n return true;\n };\n this._currentAcceptInput = (wantsPreview) => {\n this._trace('invoking _currentAcceptInput');\n assertType(this._renameCandidateListView !== undefined);\n const nRenameSuggestions = this._renameCandidateListView.nCandidates;\n let newName;\n let source;\n const focusedCandidate = this._renameCandidateListView.focusedCandidate;\n if (focusedCandidate !== undefined) {\n this._trace('using new name from renameSuggestion');\n newName = focusedCandidate;\n source = { k: 'renameSuggestion' };\n }\n else {\n this._trace('using new name from inputField');\n newName = this._inputWithButton.input.value;\n source = this._isEditingRenameCandidate ? { k: 'userEditedRenameSuggestion' } : { k: 'inputField' };\n }\n if (newName === currentName || newName.trim().length === 0 /* is just whitespace */) {\n this.cancelInput(true, '_currentAcceptInput (because newName === value || newName.trim().length === 0)');\n return;\n }\n this._currentAcceptInput = undefined;\n this._currentCancelInput = undefined;\n this._renameCandidateListView.clearCandidates();\n // fixme session cleanup\n inputResult.complete({\n newName,\n wantsPreview: supportPreview && wantsPreview,\n stats: {\n source,\n nRenameSuggestions,\n timeBeforeFirstInputFieldEdit: this._timeBeforeFirstInputFieldEdit,\n nRenameSuggestionsInvocations: this._nRenameSuggestionsInvocations,\n hadAutomaticRenameSuggestionsInvocation: this._hadAutomaticRenameSuggestionsInvocation,\n }\n });\n };\n disposeOnDone.add(cts.token.onCancellationRequested(() => this.cancelInput(true, 'cts.token.onCancellationRequested')));\n if (!_sticky) {\n disposeOnDone.add(this._editor.onDidBlurEditorWidget(() => { var _a; return this.cancelInput(!((_a = this._domNode) === null || _a === void 0 ? void 0 : _a.ownerDocument.hasFocus()), 'editor.onDidBlurEditorWidget'); }));\n }\n this._show();\n return inputResult.p;\n }\n _requestRenameCandidates(currentName, isManuallyTriggered) {\n if (this._requestRenameCandidatesOnce === undefined) {\n return;\n }\n if (this._renameCandidateProvidersCts !== undefined) {\n this._renameCandidateProvidersCts.dispose(true);\n }\n assertType(this._renameCts);\n if (this._inputWithButton.buttonState !== 'stop') {\n this._renameCandidateProvidersCts = new CancellationTokenSource();\n const triggerKind = isManuallyTriggered ? NewSymbolNameTriggerKind.Invoke : NewSymbolNameTriggerKind.Automatic;\n const candidates = this._requestRenameCandidatesOnce(triggerKind, this._renameCandidateProvidersCts.token);\n if (candidates.length === 0) {\n this._inputWithButton.setSparkleButton();\n return;\n }\n if (!isManuallyTriggered) {\n this._hadAutomaticRenameSuggestionsInvocation = true;\n }\n this._nRenameSuggestionsInvocations += 1;\n this._inputWithButton.setStopButton();\n this._updateRenameCandidates(candidates, currentName, this._renameCts.token);\n }\n }\n /**\n * This allows selecting only part of the symbol name in the input field based on the selection in the editor\n */\n _getSelection(where, currentName) {\n assertType(this._editor.hasModel());\n const selection = this._editor.getSelection();\n let start = 0;\n let end = currentName.length;\n if (!Range.isEmpty(selection) && !Range.spansMultipleLines(selection) && Range.containsRange(where, selection)) {\n start = Math.max(0, selection.startColumn - where.startColumn);\n end = Math.min(where.endColumn, selection.endColumn) - where.startColumn;\n }\n return { start, end };\n }\n _show() {\n this._trace('invoking _show');\n this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber, 0 /* ScrollType.Smooth */);\n this._visible = true;\n this._visibleContextKey.set(true);\n this._editor.layoutContentWidget(this);\n // TODO@ulugbekna: could this be simply run in `afterRender`?\n setTimeout(() => {\n this._inputWithButton.input.focus();\n this._inputWithButton.input.setSelectionRange(parseInt(this._inputWithButton.input.getAttribute('selectionStart')), parseInt(this._inputWithButton.input.getAttribute('selectionEnd')));\n }, 100);\n }\n async _updateRenameCandidates(candidates, currentName, token) {\n const trace = (...args) => this._trace('_updateRenameCandidates', ...args);\n trace('start');\n const namesListResults = await raceCancellation(Promise.allSettled(candidates), token);\n this._inputWithButton.setSparkleButton();\n if (namesListResults === undefined) {\n trace('returning early - received updateRenameCandidates results - undefined');\n return;\n }\n const newNames = namesListResults.flatMap(namesListResult => namesListResult.status === 'fulfilled' && isDefined(namesListResult.value)\n ? namesListResult.value\n : []);\n trace(`received updateRenameCandidates results - total (unfiltered) ${newNames.length} candidates.`);\n // deduplicate and filter out the current value\n const distinctNames = arrays.distinct(newNames, v => v.newSymbolName);\n trace(`distinct candidates - ${distinctNames.length} candidates.`);\n const validDistinctNames = distinctNames.filter(({ newSymbolName }) => newSymbolName.trim().length > 0 && newSymbolName !== this._inputWithButton.input.value && newSymbolName !== currentName && !this._candidates.has(newSymbolName));\n trace(`valid distinct candidates - ${newNames.length} candidates.`);\n validDistinctNames.forEach(n => this._candidates.add(n.newSymbolName));\n if (validDistinctNames.length < 1) {\n trace('returning early - no valid distinct candidates');\n return;\n }\n // show the candidates\n trace('setting candidates');\n this._renameCandidateListView.setCandidates(validDistinctNames);\n // ask editor to re-layout given that the widget is now of a different size after rendering rename candidates\n trace('asking editor to re-layout');\n this._editor.layoutContentWidget(this);\n }\n _hide() {\n this._trace('invoked _hide');\n this._visible = false;\n this._visibleContextKey.reset();\n this._editor.layoutContentWidget(this);\n }\n _getTopForPosition() {\n const visibleRanges = this._editor.getVisibleRanges();\n let firstLineInViewport;\n if (visibleRanges.length > 0) {\n firstLineInViewport = visibleRanges[0].startLineNumber;\n }\n else {\n this._logService.warn('RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty');\n firstLineInViewport = Math.max(1, this._position.lineNumber - 5); // @ulugbekna: fallback to current line minus 5\n }\n return this._editor.getTopForLineNumber(this._position.lineNumber) - this._editor.getTopForLineNumber(firstLineInViewport);\n }\n _trace(...args) {\n this._logService.trace('RenameWidget', ...args);\n }\n};\nRenameWidget = __decorate([\n __param(2, IThemeService),\n __param(3, IKeybindingService),\n __param(4, IContextKeyService),\n __param(5, ILogService)\n], RenameWidget);\nexport { RenameWidget };\nclass RenameCandidateListView {\n // FIXME@ulugbekna: rewrite using event emitters\n constructor(parent, opts) {\n this._disposables = new DisposableStore();\n this._availableHeight = 0;\n this._minimumWidth = 0;\n this._lineHeight = opts.fontInfo.lineHeight;\n this._typicalHalfwidthCharacterWidth = opts.fontInfo.typicalHalfwidthCharacterWidth;\n this._listContainer = document.createElement('div');\n this._listContainer.className = 'rename-box rename-candidate-list-container';\n parent.appendChild(this._listContainer);\n this._listWidget = RenameCandidateListView._createListWidget(this._listContainer, this._candidateViewHeight, opts.fontInfo);\n this._listWidget.onDidChangeFocus(e => {\n if (e.elements.length === 1) {\n opts.onFocusChange(e.elements[0].newSymbolName);\n }\n }, this._disposables);\n this._listWidget.onDidChangeSelection(e => {\n if (e.elements.length === 1) {\n opts.onSelectionChange();\n }\n }, this._disposables);\n this._disposables.add(this._listWidget.onDidBlur(e => {\n this._listWidget.setFocus([]);\n }));\n this._listWidget.style(getListStyles({\n listInactiveFocusForeground: quickInputListFocusForeground,\n listInactiveFocusBackground: quickInputListFocusBackground,\n }));\n }\n dispose() {\n this._listWidget.dispose();\n this._disposables.dispose();\n }\n // height - max height allowed by parent element\n layout({ height, width }) {\n this._availableHeight = height;\n this._minimumWidth = width;\n }\n setCandidates(candidates) {\n // insert candidates into list widget\n this._listWidget.splice(0, 0, candidates);\n // adjust list widget layout\n const height = this._pickListHeight(this._listWidget.length);\n const width = this._pickListWidth(candidates);\n this._listWidget.layout(height, width);\n // adjust list container layout\n this._listContainer.style.height = `${height}px`;\n this._listContainer.style.width = `${width}px`;\n aria.status(localize('renameSuggestionsReceivedAria', \"Received {0} rename suggestions\", candidates.length));\n }\n clearCandidates() {\n this._listContainer.style.height = '0px';\n this._listContainer.style.width = '0px';\n this._listWidget.splice(0, this._listWidget.length, []);\n }\n get nCandidates() {\n return this._listWidget.length;\n }\n get focusedCandidate() {\n if (this._listWidget.length === 0) {\n return;\n }\n const selectedElement = this._listWidget.getSelectedElements()[0];\n if (selectedElement !== undefined) {\n return selectedElement.newSymbolName;\n }\n const focusedElement = this._listWidget.getFocusedElements()[0];\n if (focusedElement !== undefined) {\n return focusedElement.newSymbolName;\n }\n return;\n }\n focusNext() {\n if (this._listWidget.length === 0) {\n return false;\n }\n const focusedIxs = this._listWidget.getFocus();\n if (focusedIxs.length === 0) {\n this._listWidget.focusFirst();\n this._listWidget.reveal(0);\n return true;\n }\n else {\n if (focusedIxs[0] === this._listWidget.length - 1) {\n this._listWidget.setFocus([]);\n this._listWidget.reveal(0); // @ulugbekna: without this, it seems like focused element is obstructed\n return false;\n }\n else {\n this._listWidget.focusNext();\n const focused = this._listWidget.getFocus()[0];\n this._listWidget.reveal(focused);\n return true;\n }\n }\n }\n /**\n * @returns true if focus is moved to previous element\n */\n focusPrevious() {\n if (this._listWidget.length === 0) {\n return false;\n }\n const focusedIxs = this._listWidget.getFocus();\n if (focusedIxs.length === 0) {\n this._listWidget.focusLast();\n const focused = this._listWidget.getFocus()[0];\n this._listWidget.reveal(focused);\n return true;\n }\n else {\n if (focusedIxs[0] === 0) {\n this._listWidget.setFocus([]);\n return false;\n }\n else {\n this._listWidget.focusPrevious();\n const focused = this._listWidget.getFocus()[0];\n this._listWidget.reveal(focused);\n return true;\n }\n }\n }\n clearFocus() {\n this._listWidget.setFocus([]);\n }\n get _candidateViewHeight() {\n const { totalHeight } = RenameCandidateView.getLayoutInfo({ lineHeight: this._lineHeight });\n return totalHeight;\n }\n _pickListHeight(nCandidates) {\n const heightToFitAllCandidates = this._candidateViewHeight * nCandidates;\n const MAX_N_CANDIDATES = 7; // @ulugbekna: max # of candidates we want to show at once\n const height = Math.min(heightToFitAllCandidates, this._availableHeight, this._candidateViewHeight * MAX_N_CANDIDATES);\n return height;\n }\n _pickListWidth(candidates) {\n const longestCandidateWidth = Math.ceil(Math.max(...candidates.map(c => c.newSymbolName.length)) * this._typicalHalfwidthCharacterWidth);\n const width = Math.max(this._minimumWidth, 4 /* padding */ + 16 /* sparkle icon */ + 5 /* margin-left */ + longestCandidateWidth + 10 /* (possibly visible) scrollbar width */ // TODO@ulugbekna: approximate calc - clean this up\n );\n return width;\n }\n static _createListWidget(container, candidateViewHeight, fontInfo) {\n const virtualDelegate = new class {\n getTemplateId(element) {\n return 'candidate';\n }\n getHeight(element) {\n return candidateViewHeight;\n }\n };\n const renderer = new class {\n constructor() {\n this.templateId = 'candidate';\n }\n renderTemplate(container) {\n return new RenameCandidateView(container, fontInfo);\n }\n renderElement(candidate, index, templateData) {\n templateData.populate(candidate);\n }\n disposeTemplate(templateData) {\n templateData.dispose();\n }\n };\n return new List('NewSymbolNameCandidates', container, virtualDelegate, [renderer], {\n keyboardSupport: false, // @ulugbekna: because we handle keyboard events through proper commands & keybinding service, see `rename.ts`\n mouseSupport: true,\n multipleSelectionSupport: false,\n });\n }\n}\nclass InputWithButton {\n constructor() {\n this._onDidInputChange = new Emitter();\n this.onDidInputChange = this._onDidInputChange.event;\n this._disposables = new DisposableStore();\n }\n get domNode() {\n if (!this._domNode) {\n this._domNode = document.createElement('div');\n this._domNode.className = 'rename-input-with-button';\n this._domNode.style.display = 'flex';\n this._domNode.style.flexDirection = 'row';\n this._domNode.style.alignItems = 'center';\n this._inputNode = document.createElement('input');\n this._inputNode.className = 'rename-input';\n this._inputNode.type = 'text';\n this._inputNode.style.border = 'none';\n this._inputNode.setAttribute('aria-label', localize('renameAriaLabel', \"Rename input. Type new name and press Enter to commit.\"));\n this._domNode.appendChild(this._inputNode);\n this._buttonNode = document.createElement('div');\n this._buttonNode.className = 'rename-suggestions-button';\n this._buttonNode.setAttribute('tabindex', '0');\n this._buttonGenHoverText = nls.localize('generateRenameSuggestionsButton', \"Generate new name suggestions\");\n this._buttonCancelHoverText = nls.localize('cancelRenameSuggestionsButton', \"Cancel\");\n this._buttonHover = getBaseLayerHoverDelegate().setupUpdatableHover(getDefaultHoverDelegate('element'), this._buttonNode, this._buttonGenHoverText);\n this._disposables.add(this._buttonHover);\n this._domNode.appendChild(this._buttonNode);\n // notify if selection changes to cancel request to rename-suggestion providers\n this._disposables.add(dom.addDisposableListener(this.input, dom.EventType.INPUT, () => this._onDidInputChange.fire()));\n this._disposables.add(dom.addDisposableListener(this.input, dom.EventType.KEY_DOWN, (e) => {\n const keyEvent = new StandardKeyboardEvent(e);\n if (keyEvent.keyCode === 15 /* KeyCode.LeftArrow */ || keyEvent.keyCode === 17 /* KeyCode.RightArrow */) {\n this._onDidInputChange.fire();\n }\n }));\n this._disposables.add(dom.addDisposableListener(this.input, dom.EventType.CLICK, () => this._onDidInputChange.fire()));\n // focus \"container\" border instead of input box\n this._disposables.add(dom.addDisposableListener(this.input, dom.EventType.FOCUS, () => {\n this.domNode.style.outlineWidth = '1px';\n this.domNode.style.outlineStyle = 'solid';\n this.domNode.style.outlineOffset = '-1px';\n this.domNode.style.outlineColor = 'var(--vscode-focusBorder)';\n }));\n this._disposables.add(dom.addDisposableListener(this.input, dom.EventType.BLUR, () => {\n this.domNode.style.outline = 'none';\n }));\n }\n return this._domNode;\n }\n get input() {\n assertType(this._inputNode);\n return this._inputNode;\n }\n get button() {\n assertType(this._buttonNode);\n return this._buttonNode;\n }\n get buttonState() {\n return this._buttonState;\n }\n setSparkleButton() {\n var _a, _b;\n this._buttonState = 'sparkle';\n (_a = this._sparkleIcon) !== null && _a !== void 0 ? _a : (this._sparkleIcon = renderIcon(Codicon.sparkle));\n dom.clearNode(this.button);\n this.button.appendChild(this._sparkleIcon);\n this.button.setAttribute('aria-label', 'Generating new name suggestions');\n (_b = this._buttonHover) === null || _b === void 0 ? void 0 : _b.update(this._buttonGenHoverText);\n this.input.focus();\n }\n setStopButton() {\n var _a, _b;\n this._buttonState = 'stop';\n (_a = this._stopIcon) !== null && _a !== void 0 ? _a : (this._stopIcon = renderIcon(Codicon.primitiveSquare));\n dom.clearNode(this.button);\n this.button.appendChild(this._stopIcon);\n this.button.setAttribute('aria-label', 'Cancel generating new name suggestions');\n (_b = this._buttonHover) === null || _b === void 0 ? void 0 : _b.update(this._buttonCancelHoverText);\n this.input.focus();\n }\n dispose() {\n this._disposables.dispose();\n }\n}\nclass RenameCandidateView {\n constructor(parent, fontInfo) {\n this._domNode = document.createElement('div');\n this._domNode.className = 'rename-box rename-candidate';\n this._domNode.style.display = `flex`;\n this._domNode.style.columnGap = `5px`;\n this._domNode.style.alignItems = `center`;\n this._domNode.style.height = `${fontInfo.lineHeight}px`;\n this._domNode.style.padding = `${RenameCandidateView._PADDING}px`;\n // @ulugbekna: needed to keep space when the `icon.style.display` is set to `none`\n const iconContainer = document.createElement('div');\n iconContainer.style.display = `flex`;\n iconContainer.style.alignItems = `center`;\n iconContainer.style.width = iconContainer.style.height = `${fontInfo.lineHeight * 0.8}px`;\n this._domNode.appendChild(iconContainer);\n this._icon = renderIcon(Codicon.sparkle);\n this._icon.style.display = `none`;\n iconContainer.appendChild(this._icon);\n this._label = document.createElement('div');\n domFontInfo.applyFontInfo(this._label, fontInfo);\n this._domNode.appendChild(this._label);\n parent.appendChild(this._domNode);\n }\n populate(value) {\n this._updateIcon(value);\n this._updateLabel(value);\n }\n _updateIcon(value) {\n var _a;\n const isAIGenerated = !!((_a = value.tags) === null || _a === void 0 ? void 0 : _a.includes(NewSymbolNameTag.AIGenerated));\n this._icon.style.display = isAIGenerated ? 'inherit' : 'none';\n }\n _updateLabel(value) {\n this._label.innerText = value.newSymbolName;\n }\n static getLayoutInfo({ lineHeight }) {\n const totalHeight = lineHeight + RenameCandidateView._PADDING * 2 /* top & bottom padding */;\n return { totalHeight };\n }\n dispose() {\n }\n}\nRenameCandidateView._PADDING = 2;\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 RenameController_1;\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { CancellationError, onUnexpectedError } from '../../../../base/common/errors.js';\nimport { isMarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution, registerModelAndPositionCommand } from '../../../browser/editorExtensions.js';\nimport { IBulkEditService } from '../../../browser/services/bulkEditService.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { NewSymbolNameTriggerKind } from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ITextResourceConfigurationService } from '../../../common/services/textResourceConfiguration.js';\nimport { EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport * as nls from '../../../../nls.js';\nimport { Action2, registerAction2 } from '../../../../platform/actions/common/actions.js';\nimport { Extensions } from '../../../../platform/configuration/common/configurationRegistry.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { CONTEXT_RENAME_INPUT_VISIBLE, RenameWidget } from './renameWidget.js';\nclass RenameSkeleton {\n constructor(model, position, registry) {\n this.model = model;\n this.position = position;\n this._providerRenameIdx = 0;\n this._providers = registry.ordered(model);\n }\n hasProvider() {\n return this._providers.length > 0;\n }\n async resolveRenameLocation(token) {\n const rejects = [];\n for (this._providerRenameIdx = 0; this._providerRenameIdx < this._providers.length; this._providerRenameIdx++) {\n const provider = this._providers[this._providerRenameIdx];\n if (!provider.resolveRenameLocation) {\n break;\n }\n const res = await provider.resolveRenameLocation(this.model, this.position, token);\n if (!res) {\n continue;\n }\n if (res.rejectReason) {\n rejects.push(res.rejectReason);\n continue;\n }\n return res;\n }\n // we are here when no provider prepared a location which means we can\n // just rely on the word under cursor and start with the first provider\n this._providerRenameIdx = 0;\n const word = this.model.getWordAtPosition(this.position);\n if (!word) {\n return {\n range: Range.fromPositions(this.position),\n text: '',\n rejectReason: rejects.length > 0 ? rejects.join('\\n') : undefined\n };\n }\n return {\n range: new Range(this.position.lineNumber, word.startColumn, this.position.lineNumber, word.endColumn),\n text: word.word,\n rejectReason: rejects.length > 0 ? rejects.join('\\n') : undefined\n };\n }\n async provideRenameEdits(newName, token) {\n return this._provideRenameEdits(newName, this._providerRenameIdx, [], token);\n }\n async _provideRenameEdits(newName, i, rejects, token) {\n const provider = this._providers[i];\n if (!provider) {\n return {\n edits: [],\n rejectReason: rejects.join('\\n')\n };\n }\n const result = await provider.provideRenameEdits(this.model, this.position, newName, token);\n if (!result) {\n return this._provideRenameEdits(newName, i + 1, rejects.concat(nls.localize('no result', \"No result.\")), token);\n }\n else if (result.rejectReason) {\n return this._provideRenameEdits(newName, i + 1, rejects.concat(result.rejectReason), token);\n }\n return result;\n }\n}\nexport async function rename(registry, model, position, newName) {\n const skeleton = new RenameSkeleton(model, position, registry);\n const loc = await skeleton.resolveRenameLocation(CancellationToken.None);\n if (loc === null || loc === void 0 ? void 0 : loc.rejectReason) {\n return { edits: [], rejectReason: loc.rejectReason };\n }\n return skeleton.provideRenameEdits(newName, CancellationToken.None);\n}\n// --- register actions and commands\nlet RenameController = RenameController_1 = class RenameController {\n static get(editor) {\n return editor.getContribution(RenameController_1.ID);\n }\n constructor(editor, _instaService, _notificationService, _bulkEditService, _progressService, _logService, _configService, _languageFeaturesService, _telemetryService) {\n this.editor = editor;\n this._instaService = _instaService;\n this._notificationService = _notificationService;\n this._bulkEditService = _bulkEditService;\n this._progressService = _progressService;\n this._logService = _logService;\n this._configService = _configService;\n this._languageFeaturesService = _languageFeaturesService;\n this._telemetryService = _telemetryService;\n this._disposableStore = new DisposableStore();\n this._cts = new CancellationTokenSource();\n this._renameWidget = this._disposableStore.add(this._instaService.createInstance(RenameWidget, this.editor, ['acceptRenameInput', 'acceptRenameInputWithPreview']));\n }\n dispose() {\n this._disposableStore.dispose();\n this._cts.dispose(true);\n }\n async run() {\n var _a, _b;\n const trace = this._logService.trace.bind(this._logService, '[rename]');\n // set up cancellation token to prevent reentrant rename, this\n // is the parent to the resolve- and rename-tokens\n this._cts.dispose(true);\n this._cts = new CancellationTokenSource();\n if (!this.editor.hasModel()) {\n trace('editor has no model');\n return undefined;\n }\n const position = this.editor.getPosition();\n const skeleton = new RenameSkeleton(this.editor.getModel(), position, this._languageFeaturesService.renameProvider);\n if (!skeleton.hasProvider()) {\n trace('skeleton has no provider');\n return undefined;\n }\n // part 1 - resolve rename location\n const cts1 = new EditorStateCancellationTokenSource(this.editor, 4 /* CodeEditorStateFlag.Position */ | 1 /* CodeEditorStateFlag.Value */, undefined, this._cts.token);\n let loc;\n try {\n trace('resolving rename location');\n const resolveLocationOperation = skeleton.resolveRenameLocation(cts1.token);\n this._progressService.showWhile(resolveLocationOperation, 250);\n loc = await resolveLocationOperation;\n trace('resolved rename location');\n }\n catch (e) {\n if (e instanceof CancellationError) {\n trace('resolve rename location cancelled', JSON.stringify(e, null, '\\t'));\n }\n else {\n trace('resolve rename location failed', e instanceof Error ? e : JSON.stringify(e, null, '\\t'));\n if (typeof e === 'string' || isMarkdownString(e)) {\n (_a = MessageController.get(this.editor)) === null || _a === void 0 ? void 0 : _a.showMessage(e || nls.localize('resolveRenameLocationFailed', \"An unknown error occurred while resolving rename location\"), position);\n }\n }\n return undefined;\n }\n finally {\n cts1.dispose();\n }\n if (!loc) {\n trace('returning early - no loc');\n return undefined;\n }\n if (loc.rejectReason) {\n trace(`returning early - rejected with reason: ${loc.rejectReason}`, loc.rejectReason);\n (_b = MessageController.get(this.editor)) === null || _b === void 0 ? void 0 : _b.showMessage(loc.rejectReason, position);\n return undefined;\n }\n if (cts1.token.isCancellationRequested) {\n trace('returning early - cts1 cancelled');\n return undefined;\n }\n // part 2 - do rename at location\n const cts2 = new EditorStateCancellationTokenSource(this.editor, 4 /* CodeEditorStateFlag.Position */ | 1 /* CodeEditorStateFlag.Value */, loc.range, this._cts.token);\n const model = this.editor.getModel(); // @ulugbekna: assumes editor still has a model, otherwise, cts1 should've been cancelled\n const newSymbolNamesProviders = this._languageFeaturesService.newSymbolNamesProvider.all(model);\n const resolvedNewSymbolnamesProviders = await Promise.all(newSymbolNamesProviders.map(async (p) => { var _a; return [p, (_a = await p.supportsAutomaticNewSymbolNamesTriggerKind) !== null && _a !== void 0 ? _a : false]; }));\n const requestRenameSuggestions = (triggerKind, cts) => {\n let providers = resolvedNewSymbolnamesProviders.slice();\n if (triggerKind === NewSymbolNameTriggerKind.Automatic) {\n providers = providers.filter(([_, supportsAutomatic]) => supportsAutomatic);\n }\n return providers.map(([p,]) => p.provideNewSymbolNames(model, loc.range, triggerKind, cts));\n };\n trace('creating rename input field and awaiting its result');\n const supportPreview = this._bulkEditService.hasPreviewHandler() && this._configService.getValue(this.editor.getModel().uri, 'editor.rename.enablePreview');\n const inputFieldResult = await this._renameWidget.getInput(loc.range, loc.text, supportPreview, newSymbolNamesProviders.length > 0 ? requestRenameSuggestions : undefined, cts2);\n trace('received response from rename input field');\n if (newSymbolNamesProviders.length > 0) { // @ulugbekna: we're interested only in telemetry for rename suggestions currently\n this._reportTelemetry(newSymbolNamesProviders.length, model.getLanguageId(), inputFieldResult);\n }\n // no result, only hint to focus the editor or not\n if (typeof inputFieldResult === 'boolean') {\n trace(`returning early - rename input field response - ${inputFieldResult}`);\n if (inputFieldResult) {\n this.editor.focus();\n }\n cts2.dispose();\n return undefined;\n }\n this.editor.focus();\n trace('requesting rename edits');\n const renameOperation = raceCancellation(skeleton.provideRenameEdits(inputFieldResult.newName, cts2.token), cts2.token).then(async (renameResult) => {\n if (!renameResult) {\n trace('returning early - no rename edits result');\n return;\n }\n if (!this.editor.hasModel()) {\n trace('returning early - no model after rename edits are provided');\n return;\n }\n if (renameResult.rejectReason) {\n trace(`returning early - rejected with reason: ${renameResult.rejectReason}`);\n this._notificationService.info(renameResult.rejectReason);\n return;\n }\n // collapse selection to active end\n this.editor.setSelection(Range.fromPositions(this.editor.getSelection().getPosition()));\n trace('applying edits');\n this._bulkEditService.apply(renameResult, {\n editor: this.editor,\n showPreview: inputFieldResult.wantsPreview,\n label: nls.localize('label', \"Renaming '{0}' to '{1}'\", loc === null || loc === void 0 ? void 0 : loc.text, inputFieldResult.newName),\n code: 'undoredo.rename',\n quotableLabel: nls.localize('quotableLabel', \"Renaming {0} to {1}\", loc === null || loc === void 0 ? void 0 : loc.text, inputFieldResult.newName),\n respectAutoSaveConfig: true\n }).then(result => {\n trace('edits applied');\n if (result.ariaSummary) {\n alert(nls.localize('aria', \"Successfully renamed '{0}' to '{1}'. Summary: {2}\", loc.text, inputFieldResult.newName, result.ariaSummary));\n }\n }).catch(err => {\n trace(`error when applying edits ${JSON.stringify(err, null, '\\t')}`);\n this._notificationService.error(nls.localize('rename.failedApply', \"Rename failed to apply edits\"));\n this._logService.error(err);\n });\n }, err => {\n trace('error when providing rename edits', JSON.stringify(err, null, '\\t'));\n this._notificationService.error(nls.localize('rename.failed', \"Rename failed to compute edits\"));\n this._logService.error(err);\n }).finally(() => {\n cts2.dispose();\n });\n trace('returning rename operation');\n this._progressService.showWhile(renameOperation, 250);\n return renameOperation;\n }\n acceptRenameInput(wantsPreview) {\n this._renameWidget.acceptInput(wantsPreview);\n }\n cancelRenameInput() {\n this._renameWidget.cancelInput(true, 'cancelRenameInput command');\n }\n focusNextRenameSuggestion() {\n this._renameWidget.focusNextRenameSuggestion();\n }\n focusPreviousRenameSuggestion() {\n this._renameWidget.focusPreviousRenameSuggestion();\n }\n _reportTelemetry(nRenameSuggestionProviders, languageId, inputFieldResult) {\n const value = typeof inputFieldResult === 'boolean'\n ? {\n kind: 'cancelled',\n languageId,\n nRenameSuggestionProviders,\n }\n : {\n kind: 'accepted',\n languageId,\n nRenameSuggestionProviders,\n source: inputFieldResult.stats.source.k,\n nRenameSuggestions: inputFieldResult.stats.nRenameSuggestions,\n timeBeforeFirstInputFieldEdit: inputFieldResult.stats.timeBeforeFirstInputFieldEdit,\n wantsPreview: inputFieldResult.wantsPreview,\n nRenameSuggestionsInvocations: inputFieldResult.stats.nRenameSuggestionsInvocations,\n hadAutomaticRenameSuggestionsInvocation: inputFieldResult.stats.hadAutomaticRenameSuggestionsInvocation,\n };\n this._telemetryService.publicLog2('renameInvokedEvent', value);\n }\n};\nRenameController.ID = 'editor.contrib.renameController';\nRenameController = RenameController_1 = __decorate([\n __param(1, IInstantiationService),\n __param(2, INotificationService),\n __param(3, IBulkEditService),\n __param(4, IEditorProgressService),\n __param(5, ILogService),\n __param(6, ITextResourceConfigurationService),\n __param(7, ILanguageFeaturesService),\n __param(8, ITelemetryService)\n], RenameController);\n// ---- action implementation\nexport class RenameAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.rename',\n label: nls.localize('rename.label', \"Rename Symbol\"),\n alias: 'Rename Symbol',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasRenameProvider),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 60 /* KeyCode.F2 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: '1_modification',\n order: 1.1\n }\n });\n }\n runCommand(accessor, args) {\n const editorService = accessor.get(ICodeEditorService);\n const [uri, pos] = Array.isArray(args) && args || [undefined, undefined];\n if (URI.isUri(uri) && Position.isIPosition(pos)) {\n return editorService.openCodeEditor({ resource: uri }, editorService.getActiveCodeEditor()).then(editor => {\n if (!editor) {\n return;\n }\n editor.setPosition(pos);\n editor.invokeWithinContext(accessor => {\n this.reportTelemetry(accessor, editor);\n return this.run(accessor, editor);\n });\n }, onUnexpectedError);\n }\n return super.runCommand(accessor, args);\n }\n run(accessor, editor) {\n const logService = accessor.get(ILogService);\n const controller = RenameController.get(editor);\n if (controller) {\n logService.trace('[RenameAction] got controller, running...');\n return controller.run();\n }\n logService.trace('[RenameAction] returning early - controller missing');\n return Promise.resolve();\n }\n}\nregisterEditorContribution(RenameController.ID, RenameController, 4 /* EditorContributionInstantiation.Lazy */);\nregisterEditorAction(RenameAction);\nconst RenameCommand = EditorCommand.bindToContribution(RenameController.get);\nregisterEditorCommand(new RenameCommand({\n id: 'acceptRenameInput',\n precondition: CONTEXT_RENAME_INPUT_VISIBLE,\n handler: x => x.acceptRenameInput(false),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 99,\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, ContextKeyExpr.not('isComposing')),\n primary: 3 /* KeyCode.Enter */\n }\n}));\nregisterEditorCommand(new RenameCommand({\n id: 'acceptRenameInputWithPreview',\n precondition: ContextKeyExpr.and(CONTEXT_RENAME_INPUT_VISIBLE, ContextKeyExpr.has('config.editor.rename.enablePreview')),\n handler: x => x.acceptRenameInput(true),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 99,\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, ContextKeyExpr.not('isComposing')),\n primary: 2048 /* KeyMod.CtrlCmd */ + 3 /* KeyCode.Enter */\n }\n}));\nregisterEditorCommand(new RenameCommand({\n id: 'cancelRenameInput',\n precondition: CONTEXT_RENAME_INPUT_VISIBLE,\n handler: x => x.cancelRenameInput(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 99,\n kbExpr: EditorContextKeys.focus,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\nregisterAction2(class FocusNextRenameSuggestion extends Action2 {\n constructor() {\n super({\n id: 'focusNextRenameSuggestion',\n title: {\n ...nls.localize2('focusNextRenameSuggestion', \"Focus Next Rename Suggestion\"),\n },\n precondition: CONTEXT_RENAME_INPUT_VISIBLE,\n keybinding: [\n {\n primary: 18 /* KeyCode.DownArrow */,\n weight: 100 /* KeybindingWeight.EditorContrib */ + 99,\n }\n ]\n });\n }\n run(accessor) {\n const currentEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n if (!currentEditor) {\n return;\n }\n const controller = RenameController.get(currentEditor);\n if (!controller) {\n return;\n }\n controller.focusNextRenameSuggestion();\n }\n});\nregisterAction2(class FocusPreviousRenameSuggestion extends Action2 {\n constructor() {\n super({\n id: 'focusPreviousRenameSuggestion',\n title: {\n ...nls.localize2('focusPreviousRenameSuggestion', \"Focus Previous Rename Suggestion\"),\n },\n precondition: CONTEXT_RENAME_INPUT_VISIBLE,\n keybinding: [\n {\n primary: 16 /* KeyCode.UpArrow */,\n weight: 100 /* KeybindingWeight.EditorContrib */ + 99,\n }\n ]\n });\n }\n run(accessor) {\n const currentEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n if (!currentEditor) {\n return;\n }\n const controller = RenameController.get(currentEditor);\n if (!controller) {\n return;\n }\n controller.focusPreviousRenameSuggestion();\n }\n});\n// ---- api bridge command\nregisterModelAndPositionCommand('_executeDocumentRenameProvider', function (accessor, model, position, ...args) {\n const [newName] = args;\n assertType(typeof newName === 'string');\n const { renameProvider } = accessor.get(ILanguageFeaturesService);\n return rename(renameProvider, model, position, newName);\n});\nregisterModelAndPositionCommand('_executePrepareRename', async function (accessor, model, position) {\n const { renameProvider } = accessor.get(ILanguageFeaturesService);\n const skeleton = new RenameSkeleton(model, position, renameProvider);\n const loc = await skeleton.resolveRenameLocation(CancellationToken.None);\n if (loc === null || loc === void 0 ? void 0 : loc.rejectReason) {\n throw new Error(loc.rejectReason);\n }\n return loc;\n});\n//todo@jrieken use editor options world\nRegistry.as(Extensions.Configuration).registerConfiguration({\n id: 'editor',\n properties: {\n 'editor.rename.enablePreview': {\n scope: 5 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,\n description: nls.localize('enablePreview', \"Enable/disable the ability to preview changes before renaming\"),\n default: true,\n type: 'boolean'\n }\n }\n});\n"],"names":["LongLinesHelper","constructor","_editor","super","this","_register","onMouseDown","e","stopRenderingLineAfter","getOption","target","type","position","column","updateOptions","ID","MessageController_1","__decorate","decorators","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__param","paramIndex","decorator","MessageController","get","editor","getContribution","contextKeyService","_openerService","_messageWidget","_messageListeners","_mouseOverMessage","_visible","MESSAGE_VISIBLE","bindTo","dispose","_a","_message","reset","showMessage","message","bounds","value","set","clear","actionHandler","callback","url","closeMessage","isTrusted","undefined","disposables","MessageWidget","element","add","onDidBlurEditorText","last","event","getDomNode","onDidChangeCursorPosition","onDidDispose","onDidChangeModel","onMouseMove","containsPosition","lineNumber","fadeOut","MessageCommand","id","precondition","handler","kbOpts","weight","primary","messageWidget","clearTimeout","handle","removeEventListener","setTimeout","addEventListener","classList","text","allowEditorOverflow","suppressMouseDown","revealLinesInCenterIfOutsideViewport","_position","_domNode","document","createElement","style","marginLeft","anchorTop","appendChild","textContent","anchorBottom","addContentWidget","removeContentWidget","getId","getPosition","preference","positionAffinity","afterRender","toggle","SelectionHighlighter_1","announceCursorChange","previousCursorState","cursorState","cursorDiff","filter","cs","find","pcs","equals","cursorPositions","map","viewState","join","msg","InsertCursorAbove","label","alias","kbExpr","linux","secondary","menuOpts","menuId","group","title","comment","order","run","accessor","args","hasModel","useLogicalLine","logicalLine","viewModel","_getViewModel","cursorConfig","readOnly","model","pushStackElement","getCursorStates","setCursorStates","source","revealTopMostCursor","InsertCursorBelow","revealBottomMostCursor","InsertCursorAtEndOfEachLineSelected","getCursorsForSelection","selection","result","isEmpty","startLineNumber","endLineNumber","currentLineMaxColumn","getLineMaxColumn","push","endColumn","getModel","selections","getSelections","newSelections","forEach","sel","setSelections","InsertCursorAtEndOfLineSelected","lineCount","getLineCount","startColumn","InsertCursorAtTopOfLineSelected","MultiCursorSessionResult","revealRange","revealScrollType","MultiCursorSession","create","findController","findState","getState","hasTextFocus","isRevealed","searchString","wholeWord","matchCase","isDisconnectedFromFindController","s","getSelection","searchText","currentMatch","word","getConfiguredWordAtPosition","getStartPosition","getValueInRange","replace","addSelectionToNextFindMatch","nextMatch","_getNextMatch","allSelections","concat","moveSelectionToNextFindMatch","slice","highlightFindOptions","lastAddedSelection","findNextMatch","getEndPosition","range","addSelectionToPreviousFindMatch","previousMatch","_getPreviousMatch","moveSelectionToPreviousFindMatch","findPreviousMatch","selectAll","searchScope","editorModel","findMatches","MultiCursorSelectionController","_sessionDispose","_ignoreSelectionChange","_session","_endSession","_beginSessionIfNeeded","session","newState","wholeWordOverride","matchCaseOverride","isRegexOverride","change","onDidChangeCursorSelection","onFindReplaceStateChange","_setSelections","_expandEmptyToWord","_applySessionResult","revealRangeInCenterIfOutsideViewport","getSession","modelRangesContainSameText","resultingSelections","len","matches","isRegex","editorSelection","match","intersectRanges","m","MultiCursorSelectionControllerAction","multiCursorController","_run","newFindController","createInstance","SelectionHighlighterState","_model","_searchText","_matchCase","_wordSeparators","prevState","_modelVersionId","getVersionId","_cachedFindMatches","sort","SelectionHighlighter","_languageFeaturesService","_isEnabled","_decorations","createDecorationsCollection","updateSoon","_update","state","onDidChangeConfiguration","reason","_setState","schedule","onDidChangeModelContent","_createState","oldState","isEnabled","test","caseSensitive","findStateSearchString","toLowerCase","mySearchString","isTooLargeForTokenization","allMatches","j","lenJ","cmp","occurrenceHighlighting","hasSemanticHighlights","documentHighlightProvider","has","decorations","options","ranges","selectedText","FocusNextCursor","metadata","description","Array","from","firstCursor","shift","revealPrimaryCursor","FocusPreviousCursor","pop","unshift","contextMenuOpts","Context","Visible","MultipleSignatures","async","provideSignatureHelp","registry","context","token","supports","ordered","support","err","ParameterHintState","uri","triggerCharacter","languageFeaturesService","ref","createModelReference","signatureHelpProvider","object","textEditorModel","triggerKind","languages","isRetrigger","Default","Pending","request","previouslyActiveHints","Active","hints","ParameterHintsModel","providers","delay","DEFAULT_DELAY","_onChangedHints","onChangedHints","triggerOnType","_state","_pendingTriggers","_lastSignatureHelpResult","triggerChars","retriggerChars","triggerId","throttledDelayer","onDidBlurEditorWidget","cancel","onEditorConfigurationChange","onModelChanged","onDidChangeModelLanguage","_","onCursorChange","onModelContentChange","onDidChange","onDidType","silent","fire","trigger","doTrigger","catch","next","signatures","activeSignature","cycle","updateActiveSignature","previous","first","activeSignatureHelp","getLastActiveHints","reduce","mergeTriggerContexts","triggerContext","error","isTriggered","ch","signatureHelpTriggerCharacters","charCode","charCodeAt","signatureHelpRetriggerCharacters","lastCharIndex","triggerCharCode","charAt","enabled","current","ParameterHintsWidget_1","$","dom","parameterHintsNextIcon","nls","parameterHintsPreviousIcon","ParameterHintsWidget","openerService","languageService","telemetryService","renderDisposeables","visible","announcedLabel","markdownRenderer","keyVisible","keyMultipleSignatures","createParameterHintDOMNodes","wrapper","tabIndex","controls","overloads","body","scrollbar","alwaysConsumeMouseWheel","signature","docs","userSelect","domNodes","hide","layoutContentWidget","updateFont","fontInfo","fontSize","lineHeight","bind","hasChanged","onDidLayoutChange","updateMaxHeight","show","remove","render","multiple","innerText","code","fontFamily","hasParameters","parameters","activeParameterIndex","activeParameter","renderParameters","documentation","renderedContents","renderMarkdownDocs","hasDocs","String","padStart","toString","labelToAnnounce","param","isArray","substring","aria","scanDomNode","markdown","stopWatch","asyncRenderCallback","renderDuration","elapsed","publicLog2","parent","start","end","getParameterLabelOffsets","beforeSpan","paramSpan","className","afterSpan","paramIdx","regex","RegExp","idx","lastIndex","focus","maxHeight","Math","max","getLayoutInfo","height","getElementsByClassName","dark","light","hcDark","hcLight","ParameterHintsController_1","ParameterHintsController","instantiationService","newParameterHints","widget","rawValue","TriggerParameterHintsAction","controller","ParameterHintsCommand","x","mac","IPeekViewService","PeekContext","_widgets","Map","addExclusiveWidget","existing","listener","onDidClose","data","delete","inPeekEditor","notInPeekEditor","toNegated","PeekContextController","getOuterEditor","getFocusedCodeEditor","getParentEditor","defaultOptions","headerBackgroundColor","primaryHeadingColor","secondaryHeadingColor","PeekViewWidget","_onDidClose","disposed","styles","_applyStyles","_headElement","backgroundColor","_primaryHeading","color","_secondaryHeading","_bodyElement","frameColor","borderColor","_fillContainer","container","setCssClass","_fillHead","_fillBody","noCloseAction","_titleElement","supportOnTitleClick","_onTitleClick","_fillTitleIcon","_metaHeading","actionsContainer","actionBarOptions","_getActionBarOptions","_actionbarWidget","_disposables","Promise","resolve","icon","actionViewItemProvider","orientation","setTitle","primaryHeading","secondaryHeading","setAttribute","setMetaTitle","_doLayout","heightInPixel","widthInPixel","_isShowing","headHeight","ceil","bodyHeight","round","_doLayoutHead","_doLayoutBody","peekViewTitleBackground","peekViewTitleForeground","peekViewTitleInfoForeground","peekViewBorder","peekViewResultsBackground","peekViewEditorBackground","AbstractEditorCommandsQuickAccessProvider","keybindingService","commandService","dialogService","getCodeEditorCommandPicks","activeTextEditorControl","editorCommandPicks","editorAction","getSupportedActions","commandDescription","original","commandId","commandAlias","AbstractEditorNavigationQuickAccessProvider","rangeHighlightDecorationId","provide","picker","runOptions","canAcceptInBackground","matchOnLabel","matchOnDescription","matchOnDetail","sortByLabel","pickerDisposable","doProvide","onDidActiveTextEditorControlChange","canProvideWithTextEditor","codeEditor","lastKnownEditorViewState","saveViewState","restoreViewState","onCancellationRequested","call","clearDecorations","provideWithTextEditor","provideWithoutTextEditor","gotoLocation","setSelection","revealRangeInCenter","preserveFocus","getLineContent","modified","addDecorations","changeDecorations","changeAccessor","deleteDecorations","overviewRulerDecorationId","rangeHighlightId","newDecorations","isWholeLine","overviewRuler","deltaDecorations","AbstractGotoLineQuickAccessProvider","items","ariaLabel","onDidAccept","item","selectedItems","isValidLineNumber","toRange","keyMods","inBackground","updatePickerAndEditor","parsePosition","trim","substr","PREFIX","getPickLabel","onDidChangeValue","getOptions","renderType","lineNumbers","numbers","split","part","parseInt","isNaN","endLine","isValidColumn","positionCandidate","validatePosition","_b","AbstractGotoSymbolQuickAccessProvider_1","AbstractGotoSymbolQuickAccessProvider","_outlineModelService","provideLabelPick","documentSymbolProvider","doProvideWithEditorSymbols","doProvideWithoutEditorSymbols","waitForLanguageSymbolRegistry","isCancellationRequested","index","kind","symbolProviderRegistryPromise","symbolProviderListener","complete","p","handleAccept","onDidTriggerItemButton","forceSideBySide","symbolsPromise","getDocumentSymbols","picksCts","updatePickerItems","positionToEnclose","busy","query","doGetSymbolPicks","candidate","Boolean","decoration","activeItems","onDidChangeActive","symbols","filterBySymbolKind","indexOf","SCOPE_PREFIX","filterPos","symbolQuery","containerQuery","buttons","values","openSideBySideDirection","iconClass","tooltip","filteredSymbolPicks","symbol","symbolLabel","name","symbolLabelWithIcon","symbolLabelIconOffset","symbolScore","symbolMatches","containerScore","containerMatches","containerLabel","containerName","extraContainerLabel","skipContainerQuery","deprecated","tags","score","highlights","selectionRange","symbolName","strikethrough","sortedFilteredSymbolPicks","symbolA","symbolB","compareByKindAndScore","compareByScore","symbolPicks","lastSymbolKind","lastSeparator","lastSymbolKindCounter","updateLastSeparatorLabel","NLS_SYMBOL_KIND_CACHE","FALLBACK_NLS_SYMBOL_KIND","symbolPick","kindA","kindB","localeCompare","getOrCreate","asListOfDocumentSymbols","PREFIX_BY_CATEGORY","ReadOnlyMessageController","onDidAttemptReadOnlyEdit","_onDidAttemptReadOnlyEdit","messageController","isSimpleWidget","CONTEXT_RENAME_INPUT_VISIBLE","RenameWidget","_acceptKeybindings","_themeService","_keybindingService","_logService","_visibleContextKey","_isEditingRenameCandidate","_nRenameSuggestionsInvocations","_hadAutomaticRenameSuggestionsInvocation","_candidates","Set","_beforeFirstInputFieldEditSW","_inputWithButton","InputWithButton","_updateFont","onDidColorThemeChange","_updateStyles","domNode","_renameCandidateListView","RenameCandidateListView","onFocusChange","newSymbolName","input","onSelectionChange","acceptInput","onDidInputChange","_c","_d","focusedCandidate","_timeBeforeFirstInputFieldEdit","_renameCandidateProvidersCts","clearFocus","_label","getColorTheme","theme","_e","widgetShadowColor","getColor","widgetBorderColor","boxShadow","border","borderWidth","borderStyle","applyFontInfo","_computeLabelFontSize","editorFontSize","bodyBox","ownerDocument","editorBox","cursorBoxTop","_getTopForPosition","_nPxAvailableAbove","top","_nPxAvailableBelow","totalHeight","candidateViewHeight","RenameCandidateView","positionPreference","beforeRender","accept","preview","lookupKeybinding","getLabel","minWidth","_trace","cancelInput","inputBoxHeight","labelHeight","totalHeightAvailable","layout","width","wantsPreview","_currentAcceptInput","focusEditor","caller","_currentCancelInput","focusNextRenameSuggestion","focusNext","_currentName","focusPreviousRenameSuggestion","focusPrevious","getInput","where","currentName","supportPreview","requestRenameCandidates","cts","selectionStart","selectionEnd","_getSelection","_renameCts","disposeOnDone","button","display","_requestRenameCandidatesOnce","_requestRenameCandidates","keyEvent","stopPropagation","preventDefault","size","inputResult","finally","_hide","clearCandidates","nRenameSuggestions","nCandidates","newName","k","stats","timeBeforeFirstInputFieldEdit","nRenameSuggestionsInvocations","hadAutomaticRenameSuggestionsInvocation","hasFocus","_show","isManuallyTriggered","buttonState","candidates","setSparkleButton","setStopButton","_updateRenameCandidates","min","revealLineInCenterIfOutsideViewport","setSelectionRange","getAttribute","trace","namesListResults","allSettled","newNames","flatMap","namesListResult","status","distinctNames","arrays","v","validDistinctNames","n","setCandidates","visibleRanges","getVisibleRanges","firstLineInViewport","warn","getTopForLineNumber","opts","_availableHeight","_minimumWidth","_lineHeight","_typicalHalfwidthCharacterWidth","typicalHalfwidthCharacterWidth","_listContainer","_listWidget","_createListWidget","_candidateViewHeight","onDidChangeFocus","elements","onDidChangeSelection","onDidBlur","setFocus","listInactiveFocusForeground","listInactiveFocusBackground","splice","_pickListHeight","_pickListWidth","selectedElement","getSelectedElements","focusedElement","getFocusedElements","focusedIxs","getFocus","focusFirst","reveal","focused","focusLast","heightToFitAllCandidates","longestCandidateWidth","virtualDelegate","getTemplateId","getHeight","renderer","templateId","renderTemplate","renderElement","templateData","populate","disposeTemplate","keyboardSupport","mouseSupport","multipleSelectionSupport","_onDidInputChange","flexDirection","alignItems","_inputNode","_buttonNode","_buttonGenHoverText","_buttonCancelHoverText","_buttonHover","setupUpdatableHover","keyCode","outlineWidth","outlineStyle","outlineOffset","outlineColor","outline","_buttonState","_sparkleIcon","update","_stopIcon","columnGap","padding","_PADDING","iconContainer","_icon","domFontInfo","_updateIcon","_updateLabel","isAIGenerated","includes","RenameController_1","RenameSkeleton","_providerRenameIdx","_providers","hasProvider","resolveRenameLocation","rejects","provider","res","rejectReason","getWordAtPosition","provideRenameEdits","_provideRenameEdits","edits","RenameController","_instaService","_notificationService","_bulkEditService","_progressService","_configService","_telemetryService","_disposableStore","_cts","_renameWidget","skeleton","renameProvider","cts1","loc","resolveLocationOperation","showWhile","JSON","stringify","Error","cts2","newSymbolNamesProviders","newSymbolNamesProvider","all","resolvedNewSymbolnamesProviders","supportsAutomaticNewSymbolNamesTriggerKind","hasPreviewHandler","getValue","inputFieldResult","supportsAutomatic","provideNewSymbolNames","_reportTelemetry","getLanguageId","renameOperation","then","renameResult","info","apply","showPreview","quotableLabel","respectAutoSaveConfig","ariaSummary","acceptRenameInput","cancelRenameInput","nRenameSuggestionProviders","languageId","RenameAction","runCommand","editorService","pos","openCodeEditor","resource","getActiveCodeEditor","setPosition","invokeWithinContext","reportTelemetry","logService","RenameCommand","keybinding","currentEditor","rename","registerConfiguration","properties","scope","default"],"sourceRoot":""}