{"version":3,"file":"static/js/9227_30cf6360302331a271af.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/indentation/common/indentation.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/indentation/browser/indentation.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/indentation/common/indentUtils.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/inlayHints/browser/inlayHints.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/inlayHints/browser/inlayHintsContribution.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/inlayHints/browser/inlayHintsController.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/inlayHints/browser/inlayHintsHover.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/inlayHints/browser/inlayHintsLocations.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 * as strings from '../../../../base/common/strings.js';\nimport { ShiftCommand } from '../../../common/commands/shiftCommand.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { normalizeIndentation } from '../../../common/core/indentation.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ProcessedIndentRulesSupport } from '../../../common/languages/supports/indentationLineProcessor.js';\nexport function getReindentEditOperations(model, languageConfigurationService, startLineNumber, endLineNumber) {\n if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n // Model is empty\n return [];\n }\n const indentationRulesSupport = languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).indentRulesSupport;\n if (!indentationRulesSupport) {\n return [];\n }\n const processedIndentRulesSupport = new ProcessedIndentRulesSupport(model, indentationRulesSupport, languageConfigurationService);\n endLineNumber = Math.min(endLineNumber, model.getLineCount());\n // Skip `unIndentedLinePattern` lines\n while (startLineNumber <= endLineNumber) {\n if (!processedIndentRulesSupport.shouldIgnore(startLineNumber)) {\n break;\n }\n startLineNumber++;\n }\n if (startLineNumber > endLineNumber - 1) {\n return [];\n }\n const { tabSize, indentSize, insertSpaces } = model.getOptions();\n const shiftIndent = (indentation, count) => {\n count = count || 1;\n return ShiftCommand.shiftIndent(indentation, indentation.length + count, tabSize, indentSize, insertSpaces);\n };\n const unshiftIndent = (indentation, count) => {\n count = count || 1;\n return ShiftCommand.unshiftIndent(indentation, indentation.length + count, tabSize, indentSize, insertSpaces);\n };\n const indentEdits = [];\n // indentation being passed to lines below\n // Calculate indentation for the first line\n // If there is no passed-in indentation, we use the indentation of the first line as base.\n const currentLineText = model.getLineContent(startLineNumber);\n let globalIndent = strings.getLeadingWhitespace(currentLineText);\n // idealIndentForNextLine doesn't equal globalIndent when there is a line matching `indentNextLinePattern`.\n let idealIndentForNextLine = globalIndent;\n if (processedIndentRulesSupport.shouldIncrease(startLineNumber)) {\n idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\n globalIndent = shiftIndent(globalIndent);\n }\n else if (processedIndentRulesSupport.shouldIndentNextLine(startLineNumber)) {\n idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\n }\n startLineNumber++;\n // Calculate indentation adjustment for all following lines\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\n if (doesLineStartWithString(model, lineNumber)) {\n continue;\n }\n const text = model.getLineContent(lineNumber);\n const oldIndentation = strings.getLeadingWhitespace(text);\n const currentIdealIndent = idealIndentForNextLine;\n if (processedIndentRulesSupport.shouldDecrease(lineNumber, currentIdealIndent)) {\n idealIndentForNextLine = unshiftIndent(idealIndentForNextLine);\n globalIndent = unshiftIndent(globalIndent);\n }\n if (oldIndentation !== idealIndentForNextLine) {\n indentEdits.push(EditOperation.replaceMove(new Selection(lineNumber, 1, lineNumber, oldIndentation.length + 1), normalizeIndentation(idealIndentForNextLine, indentSize, insertSpaces)));\n }\n // calculate idealIndentForNextLine\n if (processedIndentRulesSupport.shouldIgnore(lineNumber)) {\n // In reindent phase, if the line matches `unIndentedLinePattern` we inherit indentation from above lines\n // but don't change globalIndent and idealIndentForNextLine.\n continue;\n }\n else if (processedIndentRulesSupport.shouldIncrease(lineNumber, currentIdealIndent)) {\n globalIndent = shiftIndent(globalIndent);\n idealIndentForNextLine = globalIndent;\n }\n else if (processedIndentRulesSupport.shouldIndentNextLine(lineNumber, currentIdealIndent)) {\n idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\n }\n else {\n idealIndentForNextLine = globalIndent;\n }\n }\n return indentEdits;\n}\nfunction doesLineStartWithString(model, lineNumber) {\n if (!model.tokenization.isCheapToTokenize(lineNumber)) {\n return false;\n }\n const lineTokens = model.tokenization.getLineTokens(lineNumber);\n return lineTokens.getStandardTokenType(0) === 2 /* StandardTokenType.String */;\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 { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ShiftCommand } from '../../../common/commands/shiftCommand.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport * as indentUtils from '../common/indentUtils.js';\nimport * as nls from '../../../../nls.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { getGoodIndentForLine, getIndentMetadata } from '../../../common/languages/autoIndent.js';\nimport { getReindentEditOperations } from '../common/indentation.js';\nimport { getStandardTokenTypeAtPosition } from '../../../common/tokens/lineTokens.js';\nexport class IndentationToSpacesAction extends EditorAction {\n constructor() {\n super({\n id: IndentationToSpacesAction.ID,\n label: nls.localize('indentationToSpaces', \"Convert Indentation to Spaces\"),\n alias: 'Convert Indentation to Spaces',\n precondition: EditorContextKeys.writable,\n metadata: {\n description: nls.localize2('indentationToSpacesDescription', \"Convert the tab indentation to spaces.\"),\n }\n });\n }\n run(accessor, editor) {\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const modelOpts = model.getOptions();\n const selection = editor.getSelection();\n if (!selection) {\n return;\n }\n const command = new IndentationToSpacesCommand(selection, modelOpts.tabSize);\n editor.pushUndoStop();\n editor.executeCommands(this.id, [command]);\n editor.pushUndoStop();\n model.updateOptions({\n insertSpaces: true\n });\n }\n}\nIndentationToSpacesAction.ID = 'editor.action.indentationToSpaces';\nexport class IndentationToTabsAction extends EditorAction {\n constructor() {\n super({\n id: IndentationToTabsAction.ID,\n label: nls.localize('indentationToTabs', \"Convert Indentation to Tabs\"),\n alias: 'Convert Indentation to Tabs',\n precondition: EditorContextKeys.writable,\n metadata: {\n description: nls.localize2('indentationToTabsDescription', \"Convert the spaces indentation to tabs.\"),\n }\n });\n }\n run(accessor, editor) {\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const modelOpts = model.getOptions();\n const selection = editor.getSelection();\n if (!selection) {\n return;\n }\n const command = new IndentationToTabsCommand(selection, modelOpts.tabSize);\n editor.pushUndoStop();\n editor.executeCommands(this.id, [command]);\n editor.pushUndoStop();\n model.updateOptions({\n insertSpaces: false\n });\n }\n}\nIndentationToTabsAction.ID = 'editor.action.indentationToTabs';\nexport class ChangeIndentationSizeAction extends EditorAction {\n constructor(insertSpaces, displaySizeOnly, opts) {\n super(opts);\n this.insertSpaces = insertSpaces;\n this.displaySizeOnly = displaySizeOnly;\n }\n run(accessor, editor) {\n const quickInputService = accessor.get(IQuickInputService);\n const modelService = accessor.get(IModelService);\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const creationOpts = modelService.getCreationOptions(model.getLanguageId(), model.uri, model.isForSimpleWidget);\n const modelOpts = model.getOptions();\n const picks = [1, 2, 3, 4, 5, 6, 7, 8].map(n => ({\n id: n.toString(),\n label: n.toString(),\n // add description for tabSize value set in the configuration\n description: (n === creationOpts.tabSize && n === modelOpts.tabSize\n ? nls.localize('configuredTabSize', \"Configured Tab Size\")\n : n === creationOpts.tabSize\n ? nls.localize('defaultTabSize', \"Default Tab Size\")\n : n === modelOpts.tabSize\n ? nls.localize('currentTabSize', \"Current Tab Size\")\n : undefined)\n }));\n // auto focus the tabSize set for the current editor\n const autoFocusIndex = Math.min(model.getOptions().tabSize - 1, 7);\n setTimeout(() => {\n quickInputService.pick(picks, { placeHolder: nls.localize({ key: 'selectTabWidth', comment: ['Tab corresponds to the tab key'] }, \"Select Tab Size for Current File\"), activeItem: picks[autoFocusIndex] }).then(pick => {\n if (pick) {\n if (model && !model.isDisposed()) {\n const pickedVal = parseInt(pick.label, 10);\n if (this.displaySizeOnly) {\n model.updateOptions({\n tabSize: pickedVal\n });\n }\n else {\n model.updateOptions({\n tabSize: pickedVal,\n indentSize: pickedVal,\n insertSpaces: this.insertSpaces\n });\n }\n }\n }\n });\n }, 50 /* quick input is sensitive to being opened so soon after another */);\n }\n}\nexport class IndentUsingTabs extends ChangeIndentationSizeAction {\n constructor() {\n super(false, false, {\n id: IndentUsingTabs.ID,\n label: nls.localize('indentUsingTabs', \"Indent Using Tabs\"),\n alias: 'Indent Using Tabs',\n precondition: undefined,\n metadata: {\n description: nls.localize2('indentUsingTabsDescription', \"Use indentation with tabs.\"),\n }\n });\n }\n}\nIndentUsingTabs.ID = 'editor.action.indentUsingTabs';\nexport class IndentUsingSpaces extends ChangeIndentationSizeAction {\n constructor() {\n super(true, false, {\n id: IndentUsingSpaces.ID,\n label: nls.localize('indentUsingSpaces', \"Indent Using Spaces\"),\n alias: 'Indent Using Spaces',\n precondition: undefined,\n metadata: {\n description: nls.localize2('indentUsingSpacesDescription', \"Use indentation with spaces.\"),\n }\n });\n }\n}\nIndentUsingSpaces.ID = 'editor.action.indentUsingSpaces';\nexport class ChangeTabDisplaySize extends ChangeIndentationSizeAction {\n constructor() {\n super(true, true, {\n id: ChangeTabDisplaySize.ID,\n label: nls.localize('changeTabDisplaySize', \"Change Tab Display Size\"),\n alias: 'Change Tab Display Size',\n precondition: undefined,\n metadata: {\n description: nls.localize2('changeTabDisplaySizeDescription', \"Change the space size equivalent of the tab.\"),\n }\n });\n }\n}\nChangeTabDisplaySize.ID = 'editor.action.changeTabDisplaySize';\nexport class DetectIndentation extends EditorAction {\n constructor() {\n super({\n id: DetectIndentation.ID,\n label: nls.localize('detectIndentation', \"Detect Indentation from Content\"),\n alias: 'Detect Indentation from Content',\n precondition: undefined,\n metadata: {\n description: nls.localize2('detectIndentationDescription', \"Detect the indentation from content.\"),\n }\n });\n }\n run(accessor, editor) {\n const modelService = accessor.get(IModelService);\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const creationOpts = modelService.getCreationOptions(model.getLanguageId(), model.uri, model.isForSimpleWidget);\n model.detectIndentation(creationOpts.insertSpaces, creationOpts.tabSize);\n }\n}\nDetectIndentation.ID = 'editor.action.detectIndentation';\nexport class ReindentLinesAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.reindentlines',\n label: nls.localize('editor.reindentlines', \"Reindent Lines\"),\n alias: 'Reindent Lines',\n precondition: EditorContextKeys.writable,\n metadata: {\n description: nls.localize2('editor.reindentlinesDescription', \"Reindent the lines of the editor.\"),\n }\n });\n }\n run(accessor, editor) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const edits = getReindentEditOperations(model, languageConfigurationService, 1, model.getLineCount());\n if (edits.length > 0) {\n editor.pushUndoStop();\n editor.executeEdits(this.id, edits);\n editor.pushUndoStop();\n }\n }\n}\nexport class ReindentSelectedLinesAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.reindentselectedlines',\n label: nls.localize('editor.reindentselectedlines', \"Reindent Selected Lines\"),\n alias: 'Reindent Selected Lines',\n precondition: EditorContextKeys.writable,\n metadata: {\n description: nls.localize2('editor.reindentselectedlinesDescription', \"Reindent the selected lines of the editor.\"),\n }\n });\n }\n run(accessor, editor) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const selections = editor.getSelections();\n if (selections === null) {\n return;\n }\n const edits = [];\n for (const selection of selections) {\n let startLineNumber = selection.startLineNumber;\n let endLineNumber = selection.endLineNumber;\n if (startLineNumber !== endLineNumber && selection.endColumn === 1) {\n endLineNumber--;\n }\n if (startLineNumber === 1) {\n if (startLineNumber === endLineNumber) {\n continue;\n }\n }\n else {\n startLineNumber--;\n }\n const editOperations = getReindentEditOperations(model, languageConfigurationService, startLineNumber, endLineNumber);\n edits.push(...editOperations);\n }\n if (edits.length > 0) {\n editor.pushUndoStop();\n editor.executeEdits(this.id, edits);\n editor.pushUndoStop();\n }\n }\n}\nexport class AutoIndentOnPasteCommand {\n constructor(edits, initialSelection) {\n this._initialSelection = initialSelection;\n this._edits = [];\n this._selectionId = null;\n for (const edit of edits) {\n if (edit.range && typeof edit.text === 'string') {\n this._edits.push(edit);\n }\n }\n }\n getEditOperations(model, builder) {\n for (const edit of this._edits) {\n builder.addEditOperation(Range.lift(edit.range), edit.text);\n }\n let selectionIsSet = false;\n if (Array.isArray(this._edits) && this._edits.length === 1 && this._initialSelection.isEmpty()) {\n if (this._edits[0].range.startColumn === this._initialSelection.endColumn &&\n this._edits[0].range.startLineNumber === this._initialSelection.endLineNumber) {\n selectionIsSet = true;\n this._selectionId = builder.trackSelection(this._initialSelection, true);\n }\n else if (this._edits[0].range.endColumn === this._initialSelection.startColumn &&\n this._edits[0].range.endLineNumber === this._initialSelection.startLineNumber) {\n selectionIsSet = true;\n this._selectionId = builder.trackSelection(this._initialSelection, false);\n }\n }\n if (!selectionIsSet) {\n this._selectionId = builder.trackSelection(this._initialSelection);\n }\n }\n computeCursorState(model, helper) {\n return helper.getTrackedSelection(this._selectionId);\n }\n}\nlet AutoIndentOnPaste = class AutoIndentOnPaste {\n constructor(editor, _languageConfigurationService) {\n this.editor = editor;\n this._languageConfigurationService = _languageConfigurationService;\n this.callOnDispose = new DisposableStore();\n this.callOnModel = new DisposableStore();\n this.callOnDispose.add(editor.onDidChangeConfiguration(() => this.update()));\n this.callOnDispose.add(editor.onDidChangeModel(() => this.update()));\n this.callOnDispose.add(editor.onDidChangeModelLanguage(() => this.update()));\n }\n update() {\n // clean up\n this.callOnModel.clear();\n // we are disabled\n if (this.editor.getOption(12 /* EditorOption.autoIndent */) < 4 /* EditorAutoIndentStrategy.Full */ || this.editor.getOption(55 /* EditorOption.formatOnPaste */)) {\n return;\n }\n // no model\n if (!this.editor.hasModel()) {\n return;\n }\n this.callOnModel.add(this.editor.onDidPaste(({ range }) => {\n this.trigger(range);\n }));\n }\n trigger(range) {\n const selections = this.editor.getSelections();\n if (selections === null || selections.length > 1) {\n return;\n }\n const model = this.editor.getModel();\n if (!model) {\n return;\n }\n if (isStartOrEndInString(model, range)) {\n return;\n }\n if (!model.tokenization.isCheapToTokenize(range.getStartPosition().lineNumber)) {\n return;\n }\n const autoIndent = this.editor.getOption(12 /* EditorOption.autoIndent */);\n const { tabSize, indentSize, insertSpaces } = model.getOptions();\n const textEdits = [];\n const indentConverter = {\n shiftIndent: (indentation) => {\n return ShiftCommand.shiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\n },\n unshiftIndent: (indentation) => {\n return ShiftCommand.unshiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\n }\n };\n let startLineNumber = range.startLineNumber;\n while (startLineNumber <= range.endLineNumber) {\n if (this.shouldIgnoreLine(model, startLineNumber)) {\n startLineNumber++;\n continue;\n }\n break;\n }\n if (startLineNumber > range.endLineNumber) {\n return;\n }\n let firstLineText = model.getLineContent(startLineNumber);\n if (!/\\S/.test(firstLineText.substring(0, range.startColumn - 1))) {\n const indentOfFirstLine = getGoodIndentForLine(autoIndent, model, model.getLanguageId(), startLineNumber, indentConverter, this._languageConfigurationService);\n if (indentOfFirstLine !== null) {\n const oldIndentation = strings.getLeadingWhitespace(firstLineText);\n const newSpaceCnt = indentUtils.getSpaceCnt(indentOfFirstLine, tabSize);\n const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\n if (newSpaceCnt !== oldSpaceCnt) {\n const newIndent = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\n textEdits.push({\n range: new Range(startLineNumber, 1, startLineNumber, oldIndentation.length + 1),\n text: newIndent\n });\n firstLineText = newIndent + firstLineText.substr(oldIndentation.length);\n }\n else {\n const indentMetadata = getIndentMetadata(model, startLineNumber, this._languageConfigurationService);\n if (indentMetadata === 0 || indentMetadata === 8 /* IndentConsts.UNINDENT_MASK */) {\n // we paste content into a line where only contains whitespaces\n // after pasting, the indentation of the first line is already correct\n // the first line doesn't match any indentation rule\n // then no-op.\n return;\n }\n }\n }\n }\n const firstLineNumber = startLineNumber;\n // ignore empty or ignored lines\n while (startLineNumber < range.endLineNumber) {\n if (!/\\S/.test(model.getLineContent(startLineNumber + 1))) {\n startLineNumber++;\n continue;\n }\n break;\n }\n if (startLineNumber !== range.endLineNumber) {\n const virtualModel = {\n tokenization: {\n getLineTokens: (lineNumber) => {\n return model.tokenization.getLineTokens(lineNumber);\n },\n getLanguageId: () => {\n return model.getLanguageId();\n },\n getLanguageIdAtPosition: (lineNumber, column) => {\n return model.getLanguageIdAtPosition(lineNumber, column);\n },\n },\n getLineContent: (lineNumber) => {\n if (lineNumber === firstLineNumber) {\n return firstLineText;\n }\n else {\n return model.getLineContent(lineNumber);\n }\n }\n };\n const indentOfSecondLine = getGoodIndentForLine(autoIndent, virtualModel, model.getLanguageId(), startLineNumber + 1, indentConverter, this._languageConfigurationService);\n if (indentOfSecondLine !== null) {\n const newSpaceCntOfSecondLine = indentUtils.getSpaceCnt(indentOfSecondLine, tabSize);\n const oldSpaceCntOfSecondLine = indentUtils.getSpaceCnt(strings.getLeadingWhitespace(model.getLineContent(startLineNumber + 1)), tabSize);\n if (newSpaceCntOfSecondLine !== oldSpaceCntOfSecondLine) {\n const spaceCntOffset = newSpaceCntOfSecondLine - oldSpaceCntOfSecondLine;\n for (let i = startLineNumber + 1; i <= range.endLineNumber; i++) {\n const lineContent = model.getLineContent(i);\n const originalIndent = strings.getLeadingWhitespace(lineContent);\n const originalSpacesCnt = indentUtils.getSpaceCnt(originalIndent, tabSize);\n const newSpacesCnt = originalSpacesCnt + spaceCntOffset;\n const newIndent = indentUtils.generateIndent(newSpacesCnt, tabSize, insertSpaces);\n if (newIndent !== originalIndent) {\n textEdits.push({\n range: new Range(i, 1, i, originalIndent.length + 1),\n text: newIndent\n });\n }\n }\n }\n }\n }\n if (textEdits.length > 0) {\n this.editor.pushUndoStop();\n const cmd = new AutoIndentOnPasteCommand(textEdits, this.editor.getSelection());\n this.editor.executeCommand('autoIndentOnPaste', cmd);\n this.editor.pushUndoStop();\n }\n }\n shouldIgnoreLine(model, lineNumber) {\n model.tokenization.forceTokenization(lineNumber);\n const nonWhitespaceColumn = model.getLineFirstNonWhitespaceColumn(lineNumber);\n if (nonWhitespaceColumn === 0) {\n return true;\n }\n const tokens = model.tokenization.getLineTokens(lineNumber);\n if (tokens.getCount() > 0) {\n const firstNonWhitespaceTokenIndex = tokens.findTokenIndexAtOffset(nonWhitespaceColumn);\n if (firstNonWhitespaceTokenIndex >= 0 && tokens.getStandardTokenType(firstNonWhitespaceTokenIndex) === 1 /* StandardTokenType.Comment */) {\n return true;\n }\n }\n return false;\n }\n dispose() {\n this.callOnDispose.dispose();\n this.callOnModel.dispose();\n }\n};\nAutoIndentOnPaste.ID = 'editor.contrib.autoIndentOnPaste';\nAutoIndentOnPaste = __decorate([\n __param(1, ILanguageConfigurationService)\n], AutoIndentOnPaste);\nexport { AutoIndentOnPaste };\nfunction isStartOrEndInString(model, range) {\n const isPositionInString = (position) => {\n const tokenType = getStandardTokenTypeAtPosition(model, position);\n return tokenType === 2 /* StandardTokenType.String */;\n };\n return isPositionInString(range.getStartPosition()) || isPositionInString(range.getEndPosition());\n}\nfunction getIndentationEditOperations(model, builder, tabSize, tabsToSpaces) {\n if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n // Model is empty\n return;\n }\n let spaces = '';\n for (let i = 0; i < tabSize; i++) {\n spaces += ' ';\n }\n const spacesRegExp = new RegExp(spaces, 'gi');\n for (let lineNumber = 1, lineCount = model.getLineCount(); lineNumber <= lineCount; lineNumber++) {\n let lastIndentationColumn = model.getLineFirstNonWhitespaceColumn(lineNumber);\n if (lastIndentationColumn === 0) {\n lastIndentationColumn = model.getLineMaxColumn(lineNumber);\n }\n if (lastIndentationColumn === 1) {\n continue;\n }\n const originalIndentationRange = new Range(lineNumber, 1, lineNumber, lastIndentationColumn);\n const originalIndentation = model.getValueInRange(originalIndentationRange);\n const newIndentation = (tabsToSpaces\n ? originalIndentation.replace(/\\t/ig, spaces)\n : originalIndentation.replace(spacesRegExp, '\\t'));\n builder.addEditOperation(originalIndentationRange, newIndentation);\n }\n}\nexport class IndentationToSpacesCommand {\n constructor(selection, tabSize) {\n this.selection = selection;\n this.tabSize = tabSize;\n this.selectionId = null;\n }\n getEditOperations(model, builder) {\n this.selectionId = builder.trackSelection(this.selection);\n getIndentationEditOperations(model, builder, this.tabSize, true);\n }\n computeCursorState(model, helper) {\n return helper.getTrackedSelection(this.selectionId);\n }\n}\nexport class IndentationToTabsCommand {\n constructor(selection, tabSize) {\n this.selection = selection;\n this.tabSize = tabSize;\n this.selectionId = null;\n }\n getEditOperations(model, builder) {\n this.selectionId = builder.trackSelection(this.selection);\n getIndentationEditOperations(model, builder, this.tabSize, false);\n }\n computeCursorState(model, helper) {\n return helper.getTrackedSelection(this.selectionId);\n }\n}\nregisterEditorContribution(AutoIndentOnPaste.ID, AutoIndentOnPaste, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nregisterEditorAction(IndentationToSpacesAction);\nregisterEditorAction(IndentationToTabsAction);\nregisterEditorAction(IndentUsingTabs);\nregisterEditorAction(IndentUsingSpaces);\nregisterEditorAction(ChangeTabDisplaySize);\nregisterEditorAction(DetectIndentation);\nregisterEditorAction(ReindentLinesAction);\nregisterEditorAction(ReindentSelectedLinesAction);\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 *--------------------------------------------------------------------------------------------*/\nexport function getSpaceCnt(str, tabSize) {\n let spacesCnt = 0;\n for (let i = 0; i < str.length; i++) {\n if (str.charAt(i) === '\\t') {\n spacesCnt += tabSize;\n }\n else {\n spacesCnt++;\n }\n }\n return spacesCnt;\n}\nexport function generateIndent(spacesCnt, tabSize, insertSpaces) {\n spacesCnt = spacesCnt < 0 ? 0 : spacesCnt;\n let result = '';\n if (!insertSpaces) {\n const tabsCnt = Math.floor(spacesCnt / tabSize);\n spacesCnt = spacesCnt % tabSize;\n for (let i = 0; i < tabsCnt; i++) {\n result += '\\t';\n }\n }\n for (let i = 0; i < spacesCnt; i++) {\n result += ' ';\n }\n return result;\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 { CancellationError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Schemas } from '../../../../base/common/network.js';\nimport { URI } from '../../../../base/common/uri.js';\nexport class InlayHintAnchor {\n constructor(range, direction) {\n this.range = range;\n this.direction = direction;\n }\n}\nexport class InlayHintItem {\n constructor(hint, anchor, provider) {\n this.hint = hint;\n this.anchor = anchor;\n this.provider = provider;\n this._isResolved = false;\n }\n with(delta) {\n const result = new InlayHintItem(this.hint, delta.anchor, this.provider);\n result._isResolved = this._isResolved;\n result._currentResolve = this._currentResolve;\n return result;\n }\n async resolve(token) {\n if (typeof this.provider.resolveInlayHint !== 'function') {\n return;\n }\n if (this._currentResolve) {\n // wait for an active resolve operation and try again\n // when that's done.\n await this._currentResolve;\n if (token.isCancellationRequested) {\n return;\n }\n return this.resolve(token);\n }\n if (!this._isResolved) {\n this._currentResolve = this._doResolve(token)\n .finally(() => this._currentResolve = undefined);\n }\n await this._currentResolve;\n }\n async _doResolve(token) {\n var _a, _b, _c;\n try {\n const newHint = await Promise.resolve(this.provider.resolveInlayHint(this.hint, token));\n this.hint.tooltip = (_a = newHint === null || newHint === void 0 ? void 0 : newHint.tooltip) !== null && _a !== void 0 ? _a : this.hint.tooltip;\n this.hint.label = (_b = newHint === null || newHint === void 0 ? void 0 : newHint.label) !== null && _b !== void 0 ? _b : this.hint.label;\n this.hint.textEdits = (_c = newHint === null || newHint === void 0 ? void 0 : newHint.textEdits) !== null && _c !== void 0 ? _c : this.hint.textEdits;\n this._isResolved = true;\n }\n catch (err) {\n onUnexpectedExternalError(err);\n this._isResolved = false;\n }\n }\n}\nexport class InlayHintsFragments {\n static async create(registry, model, ranges, token) {\n const data = [];\n const promises = registry.ordered(model).reverse().map(provider => ranges.map(async (range) => {\n try {\n const result = await provider.provideInlayHints(model, range, token);\n if ((result === null || result === void 0 ? void 0 : result.hints.length) || provider.onDidChangeInlayHints) {\n data.push([result !== null && result !== void 0 ? result : InlayHintsFragments._emptyInlayHintList, provider]);\n }\n }\n catch (err) {\n onUnexpectedExternalError(err);\n }\n }));\n await Promise.all(promises.flat());\n if (token.isCancellationRequested || model.isDisposed()) {\n throw new CancellationError();\n }\n return new InlayHintsFragments(ranges, data, model);\n }\n constructor(ranges, data, model) {\n this._disposables = new DisposableStore();\n this.ranges = ranges;\n this.provider = new Set();\n const items = [];\n for (const [list, provider] of data) {\n this._disposables.add(list);\n this.provider.add(provider);\n for (const hint of list.hints) {\n // compute the range to which the item should be attached to\n const position = model.validatePosition(hint.position);\n let direction = 'before';\n const wordRange = InlayHintsFragments._getRangeAtPosition(model, position);\n let range;\n if (wordRange.getStartPosition().isBefore(position)) {\n range = Range.fromPositions(wordRange.getStartPosition(), position);\n direction = 'after';\n }\n else {\n range = Range.fromPositions(position, wordRange.getEndPosition());\n direction = 'before';\n }\n items.push(new InlayHintItem(hint, new InlayHintAnchor(range, direction), provider));\n }\n }\n this.items = items.sort((a, b) => Position.compare(a.hint.position, b.hint.position));\n }\n dispose() {\n this._disposables.dispose();\n }\n static _getRangeAtPosition(model, position) {\n const line = position.lineNumber;\n const word = model.getWordAtPosition(position);\n if (word) {\n // always prefer the word range\n return new Range(line, word.startColumn, line, word.endColumn);\n }\n model.tokenization.tokenizeIfCheap(line);\n const tokens = model.tokenization.getLineTokens(line);\n const offset = position.column - 1;\n const idx = tokens.findTokenIndexAtOffset(offset);\n let start = tokens.getStartOffset(idx);\n let end = tokens.getEndOffset(idx);\n if (end - start === 1) {\n // single character token, when at its end try leading/trailing token instead\n if (start === offset && idx > 1) {\n // leading token\n start = tokens.getStartOffset(idx - 1);\n end = tokens.getEndOffset(idx - 1);\n }\n else if (end === offset && idx < tokens.getCount() - 1) {\n // trailing token\n start = tokens.getStartOffset(idx + 1);\n end = tokens.getEndOffset(idx + 1);\n }\n }\n return new Range(line, start + 1, line, end + 1);\n }\n}\nInlayHintsFragments._emptyInlayHintList = Object.freeze({ dispose() { }, hints: [] });\nexport function asCommandLink(command) {\n return URI.from({\n scheme: Schemas.command,\n path: command.id,\n query: command.arguments && encodeURIComponent(JSON.stringify(command.arguments))\n }).toString();\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 { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { InlayHintsController } from './inlayHintsController.js';\nimport { InlayHintsHover } from './inlayHintsHover.js';\nregisterEditorContribution(InlayHintsController.ID, InlayHintsController, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nHoverParticipantRegistry.register(InlayHintsHover);\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 InlayHintsController_1;\nimport { isHTMLElement, ModifierKeyEmitter } from '../../../../base/browser/dom.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { LRUCache } from '../../../../base/common/map.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { DynamicCssRules } from '../../../browser/editorDom.js';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { EDITOR_FONT_DEFAULTS } from '../../../common/config/editorOptions.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Range } from '../../../common/core/range.js';\nimport * as languages from '../../../common/languages.js';\nimport { InjectedTextCursorStops } from '../../../common/model.js';\nimport { ModelDecorationInjectedTextOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { ClickLinkGesture } from '../../gotoSymbol/browser/link/clickLinkGesture.js';\nimport { InlayHintAnchor, InlayHintsFragments } from './inlayHints.js';\nimport { goToDefinitionWithLocation, showGoToContextMenu } from './inlayHintsLocations.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator, IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nimport * as colors from '../../../../platform/theme/common/colorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\n// --- hint caching service (per session)\nclass InlayHintsCache {\n constructor() {\n this._entries = new LRUCache(50);\n }\n get(model) {\n const key = InlayHintsCache._key(model);\n return this._entries.get(key);\n }\n set(model, value) {\n const key = InlayHintsCache._key(model);\n this._entries.set(key, value);\n }\n static _key(model) {\n return `${model.uri.toString()}/${model.getVersionId()}`;\n }\n}\nconst IInlayHintsCache = createDecorator('IInlayHintsCache');\nregisterSingleton(IInlayHintsCache, InlayHintsCache, 1 /* InstantiationType.Delayed */);\n// --- rendered label\nexport class RenderedInlayHintLabelPart {\n constructor(item, index) {\n this.item = item;\n this.index = index;\n }\n get part() {\n const label = this.item.hint.label;\n if (typeof label === 'string') {\n return { label };\n }\n else {\n return label[this.index];\n }\n }\n}\nclass ActiveInlayHintInfo {\n constructor(part, hasTriggerModifier) {\n this.part = part;\n this.hasTriggerModifier = hasTriggerModifier;\n }\n}\n// --- controller\nlet InlayHintsController = InlayHintsController_1 = class InlayHintsController {\n static get(editor) {\n var _a;\n return (_a = editor.getContribution(InlayHintsController_1.ID)) !== null && _a !== void 0 ? _a : undefined;\n }\n constructor(_editor, _languageFeaturesService, _featureDebounce, _inlayHintsCache, _commandService, _notificationService, _instaService) {\n this._editor = _editor;\n this._languageFeaturesService = _languageFeaturesService;\n this._inlayHintsCache = _inlayHintsCache;\n this._commandService = _commandService;\n this._notificationService = _notificationService;\n this._instaService = _instaService;\n this._disposables = new DisposableStore();\n this._sessionDisposables = new DisposableStore();\n this._decorationsMetadata = new Map();\n this._ruleFactory = new DynamicCssRules(this._editor);\n this._activeRenderMode = 0 /* RenderMode.Normal */;\n this._debounceInfo = _featureDebounce.for(_languageFeaturesService.inlayHintsProvider, 'InlayHint', { min: 25 });\n this._disposables.add(_languageFeaturesService.inlayHintsProvider.onDidChange(() => this._update()));\n this._disposables.add(_editor.onDidChangeModel(() => this._update()));\n this._disposables.add(_editor.onDidChangeModelLanguage(() => this._update()));\n this._disposables.add(_editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(141 /* EditorOption.inlayHints */)) {\n this._update();\n }\n }));\n this._update();\n }\n dispose() {\n this._sessionDisposables.dispose();\n this._removeAllDecorations();\n this._disposables.dispose();\n }\n _update() {\n this._sessionDisposables.clear();\n this._removeAllDecorations();\n const options = this._editor.getOption(141 /* EditorOption.inlayHints */);\n if (options.enabled === 'off') {\n return;\n }\n const model = this._editor.getModel();\n if (!model || !this._languageFeaturesService.inlayHintsProvider.has(model)) {\n return;\n }\n if (options.enabled === 'on') {\n // different \"on\" modes: always\n this._activeRenderMode = 0 /* RenderMode.Normal */;\n }\n else {\n // different \"on\" modes: offUnlessPressed, or onUnlessPressed\n let defaultMode;\n let altMode;\n if (options.enabled === 'onUnlessPressed') {\n defaultMode = 0 /* RenderMode.Normal */;\n altMode = 1 /* RenderMode.Invisible */;\n }\n else {\n defaultMode = 1 /* RenderMode.Invisible */;\n altMode = 0 /* RenderMode.Normal */;\n }\n this._activeRenderMode = defaultMode;\n this._sessionDisposables.add(ModifierKeyEmitter.getInstance().event(e => {\n if (!this._editor.hasModel()) {\n return;\n }\n const newRenderMode = e.altKey && e.ctrlKey && !(e.shiftKey || e.metaKey) ? altMode : defaultMode;\n if (newRenderMode !== this._activeRenderMode) {\n this._activeRenderMode = newRenderMode;\n const model = this._editor.getModel();\n const copies = this._copyInlayHintsWithCurrentAnchor(model);\n this._updateHintsDecorators([model.getFullModelRange()], copies);\n scheduler.schedule(0);\n }\n }));\n }\n // iff possible, quickly update from cache\n const cached = this._inlayHintsCache.get(model);\n if (cached) {\n this._updateHintsDecorators([model.getFullModelRange()], cached);\n }\n this._sessionDisposables.add(toDisposable(() => {\n // cache items when switching files etc\n if (!model.isDisposed()) {\n this._cacheHintsForFastRestore(model);\n }\n }));\n let cts;\n const watchedProviders = new Set();\n const scheduler = new RunOnceScheduler(async () => {\n const t1 = Date.now();\n cts === null || cts === void 0 ? void 0 : cts.dispose(true);\n cts = new CancellationTokenSource();\n const listener = model.onWillDispose(() => cts === null || cts === void 0 ? void 0 : cts.cancel());\n try {\n const myToken = cts.token;\n const inlayHints = await InlayHintsFragments.create(this._languageFeaturesService.inlayHintsProvider, model, this._getHintsRanges(), myToken);\n scheduler.delay = this._debounceInfo.update(model, Date.now() - t1);\n if (myToken.isCancellationRequested) {\n inlayHints.dispose();\n return;\n }\n // listen to provider changes\n for (const provider of inlayHints.provider) {\n if (typeof provider.onDidChangeInlayHints === 'function' && !watchedProviders.has(provider)) {\n watchedProviders.add(provider);\n this._sessionDisposables.add(provider.onDidChangeInlayHints(() => {\n if (!scheduler.isScheduled()) { // ignore event when request is already scheduled\n scheduler.schedule();\n }\n }));\n }\n }\n this._sessionDisposables.add(inlayHints);\n this._updateHintsDecorators(inlayHints.ranges, inlayHints.items);\n this._cacheHintsForFastRestore(model);\n }\n catch (err) {\n onUnexpectedError(err);\n }\n finally {\n cts.dispose();\n listener.dispose();\n }\n }, this._debounceInfo.get(model));\n this._sessionDisposables.add(scheduler);\n this._sessionDisposables.add(toDisposable(() => cts === null || cts === void 0 ? void 0 : cts.dispose(true)));\n scheduler.schedule(0);\n this._sessionDisposables.add(this._editor.onDidScrollChange((e) => {\n // update when scroll position changes\n // uses scrollTopChanged has weak heuristic to differenatiate between scrolling due to\n // typing or due to \"actual\" scrolling\n if (e.scrollTopChanged || !scheduler.isScheduled()) {\n scheduler.schedule();\n }\n }));\n this._sessionDisposables.add(this._editor.onDidChangeModelContent((e) => {\n cts === null || cts === void 0 ? void 0 : cts.cancel();\n // update less aggressive when typing\n const delay = Math.max(scheduler.delay, 1250);\n scheduler.schedule(delay);\n }));\n // mouse gestures\n this._sessionDisposables.add(this._installDblClickGesture(() => scheduler.schedule(0)));\n this._sessionDisposables.add(this._installLinkGesture());\n this._sessionDisposables.add(this._installContextMenu());\n }\n _installLinkGesture() {\n const store = new DisposableStore();\n const gesture = store.add(new ClickLinkGesture(this._editor));\n // let removeHighlight = () => { };\n const sessionStore = new DisposableStore();\n store.add(sessionStore);\n store.add(gesture.onMouseMoveOrRelevantKeyDown(e => {\n const [mouseEvent] = e;\n const labelPart = this._getInlayHintLabelPart(mouseEvent);\n const model = this._editor.getModel();\n if (!labelPart || !model) {\n sessionStore.clear();\n return;\n }\n // resolve the item\n const cts = new CancellationTokenSource();\n sessionStore.add(toDisposable(() => cts.dispose(true)));\n labelPart.item.resolve(cts.token);\n // render link => when the modifier is pressed and when there is a command or location\n this._activeInlayHintPart = labelPart.part.command || labelPart.part.location\n ? new ActiveInlayHintInfo(labelPart, mouseEvent.hasTriggerModifier)\n : undefined;\n const lineNumber = model.validatePosition(labelPart.item.hint.position).lineNumber;\n const range = new Range(lineNumber, 1, lineNumber, model.getLineMaxColumn(lineNumber));\n const lineHints = this._getInlineHintsForRange(range);\n this._updateHintsDecorators([range], lineHints);\n sessionStore.add(toDisposable(() => {\n this._activeInlayHintPart = undefined;\n this._updateHintsDecorators([range], lineHints);\n }));\n }));\n store.add(gesture.onCancel(() => sessionStore.clear()));\n store.add(gesture.onExecute(async (e) => {\n const label = this._getInlayHintLabelPart(e);\n if (label) {\n const part = label.part;\n if (part.location) {\n // location -> execute go to def\n this._instaService.invokeFunction(goToDefinitionWithLocation, e, this._editor, part.location);\n }\n else if (languages.Command.is(part.command)) {\n // command -> execute it\n await this._invokeCommand(part.command, label.item);\n }\n }\n }));\n return store;\n }\n _getInlineHintsForRange(range) {\n const lineHints = new Set();\n for (const data of this._decorationsMetadata.values()) {\n if (range.containsRange(data.item.anchor.range)) {\n lineHints.add(data.item);\n }\n }\n return Array.from(lineHints);\n }\n _installDblClickGesture(updateInlayHints) {\n return this._editor.onMouseUp(async (e) => {\n if (e.event.detail !== 2) {\n return;\n }\n const part = this._getInlayHintLabelPart(e);\n if (!part) {\n return;\n }\n e.event.preventDefault();\n await part.item.resolve(CancellationToken.None);\n if (isNonEmptyArray(part.item.hint.textEdits)) {\n const edits = part.item.hint.textEdits.map(edit => EditOperation.replace(Range.lift(edit.range), edit.text));\n this._editor.executeEdits('inlayHint.default', edits);\n updateInlayHints();\n }\n });\n }\n _installContextMenu() {\n return this._editor.onContextMenu(async (e) => {\n if (!(isHTMLElement(e.event.target))) {\n return;\n }\n const part = this._getInlayHintLabelPart(e);\n if (part) {\n await this._instaService.invokeFunction(showGoToContextMenu, this._editor, e.event.target, part);\n }\n });\n }\n _getInlayHintLabelPart(e) {\n var _a;\n if (e.target.type !== 6 /* MouseTargetType.CONTENT_TEXT */) {\n return undefined;\n }\n const options = (_a = e.target.detail.injectedText) === null || _a === void 0 ? void 0 : _a.options;\n if (options instanceof ModelDecorationInjectedTextOptions && (options === null || options === void 0 ? void 0 : options.attachedData) instanceof RenderedInlayHintLabelPart) {\n return options.attachedData;\n }\n return undefined;\n }\n async _invokeCommand(command, item) {\n var _a;\n try {\n await this._commandService.executeCommand(command.id, ...((_a = command.arguments) !== null && _a !== void 0 ? _a : []));\n }\n catch (err) {\n this._notificationService.notify({\n severity: Severity.Error,\n source: item.provider.displayName,\n message: err\n });\n }\n }\n _cacheHintsForFastRestore(model) {\n const hints = this._copyInlayHintsWithCurrentAnchor(model);\n this._inlayHintsCache.set(model, hints);\n }\n // return inlay hints but with an anchor that reflects \"updates\"\n // that happened after receiving them, e.g adding new lines before a hint\n _copyInlayHintsWithCurrentAnchor(model) {\n const items = new Map();\n for (const [id, obj] of this._decorationsMetadata) {\n if (items.has(obj.item)) {\n // an inlay item can be rendered as multiple decorations\n // but they will all uses the same range\n continue;\n }\n const range = model.getDecorationRange(id);\n if (range) {\n // update range with whatever the editor has tweaked it to\n const anchor = new InlayHintAnchor(range, obj.item.anchor.direction);\n const copy = obj.item.with({ anchor });\n items.set(obj.item, copy);\n }\n }\n return Array.from(items.values());\n }\n _getHintsRanges() {\n const extra = 30;\n const model = this._editor.getModel();\n const visibleRanges = this._editor.getVisibleRangesPlusViewportAboveBelow();\n const result = [];\n for (const range of visibleRanges.sort(Range.compareRangesUsingStarts)) {\n const extendedRange = model.validateRange(new Range(range.startLineNumber - extra, range.startColumn, range.endLineNumber + extra, range.endColumn));\n if (result.length === 0 || !Range.areIntersectingOrTouching(result[result.length - 1], extendedRange)) {\n result.push(extendedRange);\n }\n else {\n result[result.length - 1] = Range.plusRange(result[result.length - 1], extendedRange);\n }\n }\n return result;\n }\n _updateHintsDecorators(ranges, items) {\n var _a, _b;\n // utils to collect/create injected text decorations\n const newDecorationsData = [];\n const addInjectedText = (item, ref, content, cursorStops, attachedData) => {\n const opts = {\n content,\n inlineClassNameAffectsLetterSpacing: true,\n inlineClassName: ref.className,\n cursorStops,\n attachedData\n };\n newDecorationsData.push({\n item,\n classNameRef: ref,\n decoration: {\n range: item.anchor.range,\n options: {\n // className: \"rangeHighlight\", // DEBUG highlight to see to what range a hint is attached\n description: 'InlayHint',\n showIfCollapsed: item.anchor.range.isEmpty(), // \"original\" range is empty\n collapseOnReplaceEdit: !item.anchor.range.isEmpty(),\n stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n [item.anchor.direction]: this._activeRenderMode === 0 /* RenderMode.Normal */ ? opts : undefined\n }\n }\n });\n };\n const addInjectedWhitespace = (item, isLast) => {\n const marginRule = this._ruleFactory.createClassNameRef({\n width: `${(fontSize / 3) | 0}px`,\n display: 'inline-block'\n });\n addInjectedText(item, marginRule, '\\u200a', isLast ? InjectedTextCursorStops.Right : InjectedTextCursorStops.None);\n };\n //\n const { fontSize, fontFamily, padding, isUniform } = this._getLayoutInfo();\n const fontFamilyVar = '--code-editorInlayHintsFontFamily';\n this._editor.getContainerDomNode().style.setProperty(fontFamilyVar, fontFamily);\n let currentLineInfo = { line: 0, totalLen: 0 };\n for (const item of items) {\n if (currentLineInfo.line !== item.anchor.range.startLineNumber) {\n currentLineInfo = { line: item.anchor.range.startLineNumber, totalLen: 0 };\n }\n if (currentLineInfo.totalLen > InlayHintsController_1._MAX_LABEL_LEN) {\n continue;\n }\n // whitespace leading the actual label\n if (item.hint.paddingLeft) {\n addInjectedWhitespace(item, false);\n }\n // the label with its parts\n const parts = typeof item.hint.label === 'string'\n ? [{ label: item.hint.label }]\n : item.hint.label;\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const isFirst = i === 0;\n const isLast = i === parts.length - 1;\n const cssProperties = {\n fontSize: `${fontSize}px`,\n fontFamily: `var(${fontFamilyVar}), ${EDITOR_FONT_DEFAULTS.fontFamily}`,\n verticalAlign: isUniform ? 'baseline' : 'middle',\n unicodeBidi: 'isolate'\n };\n if (isNonEmptyArray(item.hint.textEdits)) {\n cssProperties.cursor = 'default';\n }\n this._fillInColors(cssProperties, item.hint);\n if ((part.command || part.location) && ((_a = this._activeInlayHintPart) === null || _a === void 0 ? void 0 : _a.part.item) === item && this._activeInlayHintPart.part.index === i) {\n // active link!\n cssProperties.textDecoration = 'underline';\n if (this._activeInlayHintPart.hasTriggerModifier) {\n cssProperties.color = themeColorFromId(colors.editorActiveLinkForeground);\n cssProperties.cursor = 'pointer';\n }\n }\n if (padding) {\n if (isFirst && isLast) {\n // only element\n cssProperties.padding = `1px ${Math.max(1, fontSize / 4) | 0}px`;\n cssProperties.borderRadius = `${(fontSize / 4) | 0}px`;\n }\n else if (isFirst) {\n // first element\n cssProperties.padding = `1px 0 1px ${Math.max(1, fontSize / 4) | 0}px`;\n cssProperties.borderRadius = `${(fontSize / 4) | 0}px 0 0 ${(fontSize / 4) | 0}px`;\n }\n else if (isLast) {\n // last element\n cssProperties.padding = `1px ${Math.max(1, fontSize / 4) | 0}px 1px 0`;\n cssProperties.borderRadius = `0 ${(fontSize / 4) | 0}px ${(fontSize / 4) | 0}px 0`;\n }\n else {\n cssProperties.padding = `1px 0 1px 0`;\n }\n }\n let textlabel = part.label;\n currentLineInfo.totalLen += textlabel.length;\n let tooLong = false;\n const over = currentLineInfo.totalLen - InlayHintsController_1._MAX_LABEL_LEN;\n if (over > 0) {\n textlabel = textlabel.slice(0, -over) + '…';\n tooLong = true;\n }\n addInjectedText(item, this._ruleFactory.createClassNameRef(cssProperties), fixSpace(textlabel), isLast && !item.hint.paddingRight ? InjectedTextCursorStops.Right : InjectedTextCursorStops.None, new RenderedInlayHintLabelPart(item, i));\n if (tooLong) {\n break;\n }\n }\n // whitespace trailing the actual label\n if (item.hint.paddingRight) {\n addInjectedWhitespace(item, true);\n }\n if (newDecorationsData.length > InlayHintsController_1._MAX_DECORATORS) {\n break;\n }\n }\n // collect all decoration ids that are affected by the ranges\n // and only update those decorations\n const decorationIdsToReplace = [];\n for (const [id, metadata] of this._decorationsMetadata) {\n const range = (_b = this._editor.getModel()) === null || _b === void 0 ? void 0 : _b.getDecorationRange(id);\n if (range && ranges.some(r => r.containsRange(range))) {\n decorationIdsToReplace.push(id);\n metadata.classNameRef.dispose();\n this._decorationsMetadata.delete(id);\n }\n }\n const scrollState = StableEditorScrollState.capture(this._editor);\n this._editor.changeDecorations(accessor => {\n const newDecorationIds = accessor.deltaDecorations(decorationIdsToReplace, newDecorationsData.map(d => d.decoration));\n for (let i = 0; i < newDecorationIds.length; i++) {\n const data = newDecorationsData[i];\n this._decorationsMetadata.set(newDecorationIds[i], data);\n }\n });\n scrollState.restore(this._editor);\n }\n _fillInColors(props, hint) {\n if (hint.kind === languages.InlayHintKind.Parameter) {\n props.backgroundColor = themeColorFromId(colors.editorInlayHintParameterBackground);\n props.color = themeColorFromId(colors.editorInlayHintParameterForeground);\n }\n else if (hint.kind === languages.InlayHintKind.Type) {\n props.backgroundColor = themeColorFromId(colors.editorInlayHintTypeBackground);\n props.color = themeColorFromId(colors.editorInlayHintTypeForeground);\n }\n else {\n props.backgroundColor = themeColorFromId(colors.editorInlayHintBackground);\n props.color = themeColorFromId(colors.editorInlayHintForeground);\n }\n }\n _getLayoutInfo() {\n const options = this._editor.getOption(141 /* EditorOption.inlayHints */);\n const padding = options.padding;\n const editorFontSize = this._editor.getOption(52 /* EditorOption.fontSize */);\n const editorFontFamily = this._editor.getOption(49 /* EditorOption.fontFamily */);\n let fontSize = options.fontSize;\n if (!fontSize || fontSize < 5 || fontSize > editorFontSize) {\n fontSize = editorFontSize;\n }\n const fontFamily = options.fontFamily || editorFontFamily;\n const isUniform = !padding\n && fontFamily === editorFontFamily\n && fontSize === editorFontSize;\n return { fontSize, fontFamily, padding, isUniform };\n }\n _removeAllDecorations() {\n this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));\n for (const obj of this._decorationsMetadata.values()) {\n obj.classNameRef.dispose();\n }\n this._decorationsMetadata.clear();\n }\n};\nInlayHintsController.ID = 'editor.contrib.InlayHints';\nInlayHintsController._MAX_DECORATORS = 1500;\nInlayHintsController._MAX_LABEL_LEN = 43;\nInlayHintsController = InlayHintsController_1 = __decorate([\n __param(1, ILanguageFeaturesService),\n __param(2, ILanguageFeatureDebounceService),\n __param(3, IInlayHintsCache),\n __param(4, ICommandService),\n __param(5, INotificationService),\n __param(6, IInstantiationService)\n], InlayHintsController);\nexport { InlayHintsController };\n// Prevents the view from potentially visible whitespace\nfunction fixSpace(str) {\n const noBreakWhitespace = '\\xa0';\n return str.replace(/[ \\t]/g, noBreakWhitespace);\n}\nCommandsRegistry.registerCommand('_executeInlayHintProvider', async (accessor, ...args) => {\n const [uri, range] = args;\n assertType(URI.isUri(uri));\n assertType(Range.isIRange(range));\n const { inlayHintsProvider } = accessor.get(ILanguageFeaturesService);\n const ref = await accessor.get(ITextModelService).createModelReference(uri);\n try {\n const model = await InlayHintsFragments.create(inlayHintsProvider, ref.object.textEditorModel, [Range.lift(range)], CancellationToken.None);\n const result = model.items.map(i => i.hint);\n setTimeout(() => model.dispose(), 0); // dispose after sending to ext host\n return result;\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 *--------------------------------------------------------------------------------------------*/\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 { AsyncIterableObject } from '../../../../base/common/async.js';\nimport { isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Position } from '../../../common/core/position.js';\nimport { ModelDecorationInjectedTextOptions } from '../../../common/model/textModel.js';\nimport { HoverForeignElementAnchor } from '../../hover/browser/hoverTypes.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { getHoverProviderResultsAsAsyncIterable } from '../../hover/browser/getHover.js';\nimport { MarkdownHover, MarkdownHoverParticipant } from '../../hover/browser/markdownHoverParticipant.js';\nimport { RenderedInlayHintLabelPart, InlayHintsController } from './inlayHintsController.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { localize } from '../../../../nls.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { asCommandLink } from './inlayHints.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { IHoverService } from '../../../../platform/hover/browser/hover.js';\nclass InlayHintsHoverAnchor extends HoverForeignElementAnchor {\n constructor(part, owner, initialMousePosX, initialMousePosY) {\n super(10, owner, part.item.anchor.range, initialMousePosX, initialMousePosY, true);\n this.part = part;\n }\n}\nlet InlayHintsHover = class InlayHintsHover extends MarkdownHoverParticipant {\n constructor(editor, languageService, openerService, keybindingService, hoverService, configurationService, _resolverService, languageFeaturesService) {\n super(editor, languageService, openerService, configurationService, languageFeaturesService, keybindingService, hoverService);\n this._resolverService = _resolverService;\n this.hoverOrdinal = 6;\n }\n suggestHoverAnchor(mouseEvent) {\n var _a;\n const controller = InlayHintsController.get(this._editor);\n if (!controller) {\n return null;\n }\n if (mouseEvent.target.type !== 6 /* MouseTargetType.CONTENT_TEXT */) {\n return null;\n }\n const options = (_a = mouseEvent.target.detail.injectedText) === null || _a === void 0 ? void 0 : _a.options;\n if (!(options instanceof ModelDecorationInjectedTextOptions && options.attachedData instanceof RenderedInlayHintLabelPart)) {\n return null;\n }\n return new InlayHintsHoverAnchor(options.attachedData, this, mouseEvent.event.posx, mouseEvent.event.posy);\n }\n computeSync() {\n return [];\n }\n computeAsync(anchor, _lineDecorations, token) {\n if (!(anchor instanceof InlayHintsHoverAnchor)) {\n return AsyncIterableObject.EMPTY;\n }\n return new AsyncIterableObject(async (executor) => {\n const { part } = anchor;\n await part.item.resolve(token);\n if (token.isCancellationRequested) {\n return;\n }\n // (1) Inlay Tooltip\n let itemTooltip;\n if (typeof part.item.hint.tooltip === 'string') {\n itemTooltip = new MarkdownString().appendText(part.item.hint.tooltip);\n }\n else if (part.item.hint.tooltip) {\n itemTooltip = part.item.hint.tooltip;\n }\n if (itemTooltip) {\n executor.emitOne(new MarkdownHover(this, anchor.range, [itemTooltip], false, 0));\n }\n // (1.2) Inlay dbl-click gesture\n if (isNonEmptyArray(part.item.hint.textEdits)) {\n executor.emitOne(new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(localize('hint.dbl', \"Double-click to insert\"))], false, 10001));\n }\n // (2) Inlay Label Part Tooltip\n let partTooltip;\n if (typeof part.part.tooltip === 'string') {\n partTooltip = new MarkdownString().appendText(part.part.tooltip);\n }\n else if (part.part.tooltip) {\n partTooltip = part.part.tooltip;\n }\n if (partTooltip) {\n executor.emitOne(new MarkdownHover(this, anchor.range, [partTooltip], false, 1));\n }\n // (2.2) Inlay Label Part Help Hover\n if (part.part.location || part.part.command) {\n let linkHint;\n const useMetaKey = this._editor.getOption(78 /* EditorOption.multiCursorModifier */) === 'altKey';\n const kb = useMetaKey\n ? platform.isMacintosh\n ? localize('links.navigate.kb.meta.mac', \"cmd + click\")\n : localize('links.navigate.kb.meta', \"ctrl + click\")\n : platform.isMacintosh\n ? localize('links.navigate.kb.alt.mac', \"option + click\")\n : localize('links.navigate.kb.alt', \"alt + click\");\n if (part.part.location && part.part.command) {\n linkHint = new MarkdownString().appendText(localize('hint.defAndCommand', 'Go to Definition ({0}), right click for more', kb));\n }\n else if (part.part.location) {\n linkHint = new MarkdownString().appendText(localize('hint.def', 'Go to Definition ({0})', kb));\n }\n else if (part.part.command) {\n linkHint = new MarkdownString(`[${localize('hint.cmd', \"Execute Command\")}](${asCommandLink(part.part.command)} \"${part.part.command.title}\") (${kb})`, { isTrusted: true });\n }\n if (linkHint) {\n executor.emitOne(new MarkdownHover(this, anchor.range, [linkHint], false, 10000));\n }\n }\n // (3) Inlay Label Part Location tooltip\n const iterable = await this._resolveInlayHintLabelPartHover(part, token);\n for await (const item of iterable) {\n executor.emitOne(item);\n }\n });\n }\n async _resolveInlayHintLabelPartHover(part, token) {\n if (!part.part.location) {\n return AsyncIterableObject.EMPTY;\n }\n const { uri, range } = part.part.location;\n const ref = await this._resolverService.createModelReference(uri);\n try {\n const model = ref.object.textEditorModel;\n if (!this._languageFeaturesService.hoverProvider.has(model)) {\n return AsyncIterableObject.EMPTY;\n }\n return getHoverProviderResultsAsAsyncIterable(this._languageFeaturesService.hoverProvider, model, new Position(range.startLineNumber, range.startColumn), token)\n .filter(item => !isEmptyMarkdownString(item.hover.contents))\n .map(item => new MarkdownHover(this, part.item.anchor.range, item.hover.contents, false, 2 + item.ordinal));\n }\n finally {\n ref.dispose();\n }\n }\n};\nInlayHintsHover = __decorate([\n __param(1, ILanguageService),\n __param(2, IOpenerService),\n __param(3, IKeybindingService),\n __param(4, IHoverService),\n __param(5, IConfigurationService),\n __param(6, ITextModelService),\n __param(7, ILanguageFeaturesService)\n], InlayHintsHover);\nexport { InlayHintsHover };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Action, Separator } from '../../../../base/common/actions.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { DefinitionAction, SymbolNavigationAction, SymbolNavigationAnchor } from '../../gotoSymbol/browser/goToCommands.js';\nimport { PeekContext } from '../../peekView/browser/peekView.js';\nimport { isIMenuItem, MenuId, MenuItemAction, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nexport async function showGoToContextMenu(accessor, editor, anchor, part) {\n var _a;\n const resolverService = accessor.get(ITextModelService);\n const contextMenuService = accessor.get(IContextMenuService);\n const commandService = accessor.get(ICommandService);\n const instaService = accessor.get(IInstantiationService);\n const notificationService = accessor.get(INotificationService);\n await part.item.resolve(CancellationToken.None);\n if (!part.part.location) {\n return;\n }\n const location = part.part.location;\n const menuActions = [];\n // from all registered (not active) context menu actions select those\n // that are a symbol navigation actions\n const filter = new Set(MenuRegistry.getMenuItems(MenuId.EditorContext)\n .map(item => isIMenuItem(item) ? item.command.id : generateUuid()));\n for (const delegate of SymbolNavigationAction.all()) {\n if (filter.has(delegate.desc.id)) {\n menuActions.push(new Action(delegate.desc.id, MenuItemAction.label(delegate.desc, { renderShortTitle: true }), undefined, true, async () => {\n const ref = await resolverService.createModelReference(location.uri);\n try {\n const symbolAnchor = new SymbolNavigationAnchor(ref.object.textEditorModel, Range.getStartPosition(location.range));\n const range = part.item.anchor.range;\n await instaService.invokeFunction(delegate.runEditorCommand.bind(delegate), editor, symbolAnchor, range);\n }\n finally {\n ref.dispose();\n }\n }));\n }\n }\n if (part.part.command) {\n const { command } = part.part;\n menuActions.push(new Separator());\n menuActions.push(new Action(command.id, command.title, undefined, true, async () => {\n var _a;\n try {\n await commandService.executeCommand(command.id, ...((_a = command.arguments) !== null && _a !== void 0 ? _a : []));\n }\n catch (err) {\n notificationService.notify({\n severity: Severity.Error,\n source: part.item.provider.displayName,\n message: err\n });\n }\n }));\n }\n // show context menu\n const useShadowDOM = editor.getOption(127 /* EditorOption.useShadowDOM */);\n contextMenuService.showContextMenu({\n domForShadowRoot: useShadowDOM ? (_a = editor.getDomNode()) !== null && _a !== void 0 ? _a : undefined : undefined,\n getAnchor: () => {\n const box = dom.getDomNodePagePosition(anchor);\n return { x: box.left, y: box.top + box.height + 8 };\n },\n getActions: () => menuActions,\n onHide: () => {\n editor.focus();\n },\n autoSelectFirstItem: true,\n });\n}\nexport async function goToDefinitionWithLocation(accessor, event, editor, location) {\n const resolverService = accessor.get(ITextModelService);\n const ref = await resolverService.createModelReference(location.uri);\n await editor.invokeWithinContext(async (accessor) => {\n const openToSide = event.hasSideBySideModifier;\n const contextKeyService = accessor.get(IContextKeyService);\n const isInPeek = PeekContext.inPeekEditor.getValue(contextKeyService);\n const canPeek = !openToSide && editor.getOption(88 /* EditorOption.definitionLinkOpensInPeek */) && !isInPeek;\n const action = new DefinitionAction({ openToSide, openInPeek: canPeek, muteMessage: true }, { title: { value: '', original: '' }, id: '', precondition: undefined });\n return action.run(accessor, new SymbolNavigationAnchor(ref.object.textEditorModel, Range.getStartPosition(location.range)), Range.lift(location.range));\n });\n ref.dispose();\n}\n"],"names":["getReindentEditOperations","model","languageConfigurationService","startLineNumber","endLineNumber","getLineCount","getLineMaxColumn","indentationRulesSupport","getLanguageConfiguration","getLanguageId","indentRulesSupport","processedIndentRulesSupport","Math","min","shouldIgnore","tabSize","indentSize","insertSpaces","getOptions","shiftIndent","indentation","count","length","unshiftIndent","indentEdits","currentLineText","getLineContent","globalIndent","strings","idealIndentForNextLine","shouldIncrease","shouldIndentNextLine","lineNumber","doesLineStartWithString","text","oldIndentation","currentIdealIndent","shouldDecrease","push","tokenization","isCheapToTokenize","getLineTokens","getStandardTokenType","__decorate","decorators","target","key","desc","d","c","arguments","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__param","paramIndex","decorator","IndentationToSpacesAction","constructor","super","id","ID","label","nls","alias","precondition","metadata","description","run","accessor","editor","getModel","modelOpts","selection","getSelection","command","IndentationToSpacesCommand","pushUndoStop","executeCommands","this","updateOptions","IndentationToTabsAction","IndentationToTabsCommand","ChangeIndentationSizeAction","displaySizeOnly","opts","quickInputService","get","modelService","creationOpts","getCreationOptions","uri","isForSimpleWidget","picks","map","n","toString","undefined","autoFocusIndex","setTimeout","pick","placeHolder","comment","activeItem","then","isDisposed","pickedVal","parseInt","IndentUsingTabs","IndentUsingSpaces","ChangeTabDisplaySize","DetectIndentation","detectIndentation","ReindentLinesAction","edits","executeEdits","ReindentSelectedLinesAction","selections","getSelections","endColumn","editOperations","AutoIndentOnPasteCommand","initialSelection","_initialSelection","_edits","_selectionId","edit","range","getEditOperations","builder","addEditOperation","selectionIsSet","Array","isArray","isEmpty","startColumn","trackSelection","computeCursorState","helper","getTrackedSelection","AutoIndentOnPaste","_languageConfigurationService","callOnDispose","callOnModel","add","onDidChangeConfiguration","update","onDidChangeModel","onDidChangeModelLanguage","clear","getOption","hasModel","onDidPaste","trigger","isPositionInString","position","getStartPosition","getEndPosition","isStartOrEndInString","autoIndent","textEdits","indentConverter","shouldIgnoreLine","firstLineText","test","substring","indentOfFirstLine","newSpaceCnt","indentUtils","newIndent","substr","indentMetadata","firstLineNumber","virtualModel","getLanguageIdAtPosition","column","indentOfSecondLine","newSpaceCntOfSecondLine","oldSpaceCntOfSecondLine","spaceCntOffset","lineContent","originalIndent","newSpacesCnt","cmd","executeCommand","forceTokenization","nonWhitespaceColumn","getLineFirstNonWhitespaceColumn","tokens","getCount","firstNonWhitespaceTokenIndex","findTokenIndexAtOffset","dispose","getIndentationEditOperations","tabsToSpaces","spaces","spacesRegExp","RegExp","lineCount","lastIndentationColumn","originalIndentationRange","originalIndentation","getValueInRange","newIndentation","replace","selectionId","getSpaceCnt","str","spacesCnt","charAt","generateIndent","result","tabsCnt","floor","InlayHintAnchor","direction","InlayHintItem","hint","anchor","provider","_isResolved","delta","_currentResolve","resolve","token","resolveInlayHint","isCancellationRequested","_doResolve","finally","_a","_b","_c","newHint","Promise","tooltip","err","InlayHintsFragments","create","registry","ranges","data","promises","ordered","reverse","async","provideInlayHints","hints","onDidChangeInlayHints","_emptyInlayHintList","all","flat","_disposables","Set","items","list","validatePosition","wordRange","_getRangeAtPosition","isBefore","sort","a","b","line","word","getWordAtPosition","tokenizeIfCheap","offset","idx","start","getStartOffset","end","getEndOffset","asCommandLink","scheme","path","query","encodeURIComponent","JSON","stringify","freeze","InlayHintsController_1","InlayHintsCache","_entries","_key","set","value","getVersionId","IInlayHintsCache","RenderedInlayHintLabelPart","item","index","part","ActiveInlayHintInfo","hasTriggerModifier","InlayHintsController","getContribution","_editor","_languageFeaturesService","_featureDebounce","_inlayHintsCache","_commandService","_notificationService","_instaService","_sessionDisposables","_decorationsMetadata","Map","_ruleFactory","_activeRenderMode","_debounceInfo","for","inlayHintsProvider","onDidChange","_update","e","hasChanged","_removeAllDecorations","options","enabled","has","defaultMode","altMode","event","newRenderMode","altKey","ctrlKey","shiftKey","metaKey","copies","_copyInlayHintsWithCurrentAnchor","_updateHintsDecorators","getFullModelRange","scheduler","schedule","cached","cts","_cacheHintsForFastRestore","watchedProviders","t1","Date","now","listener","onWillDispose","cancel","myToken","inlayHints","_getHintsRanges","delay","isScheduled","onDidScrollChange","scrollTopChanged","onDidChangeModelContent","max","_installDblClickGesture","_installLinkGesture","_installContextMenu","store","gesture","sessionStore","onMouseMoveOrRelevantKeyDown","mouseEvent","labelPart","_getInlayHintLabelPart","_activeInlayHintPart","location","lineHints","_getInlineHintsForRange","onCancel","onExecute","invokeFunction","_invokeCommand","values","containsRange","from","updateInlayHints","onMouseUp","detail","preventDefault","onContextMenu","type","injectedText","attachedData","notify","severity","source","displayName","message","obj","getDecorationRange","copy","with","visibleRanges","getVisibleRangesPlusViewportAboveBelow","extendedRange","validateRange","newDecorationsData","addInjectedText","ref","content","cursorStops","inlineClassNameAffectsLetterSpacing","inlineClassName","className","classNameRef","decoration","showIfCollapsed","collapseOnReplaceEdit","stickiness","addInjectedWhitespace","isLast","marginRule","createClassNameRef","width","fontSize","display","fontFamily","padding","isUniform","_getLayoutInfo","fontFamilyVar","getContainerDomNode","style","setProperty","currentLineInfo","totalLen","_MAX_LABEL_LEN","paddingLeft","parts","isFirst","cssProperties","verticalAlign","unicodeBidi","cursor","_fillInColors","textDecoration","color","borderRadius","textlabel","tooLong","over","slice","fixSpace","paddingRight","_MAX_DECORATORS","decorationIdsToReplace","some","delete","scrollState","changeDecorations","newDecorationIds","deltaDecorations","restore","props","kind","backgroundColor","editorFontSize","editorFontFamily","removeDecorations","keys","args","createModelReference","object","textEditorModel","InlayHintsHoverAnchor","owner","initialMousePosX","initialMousePosY","InlayHintsHover","languageService","openerService","keybindingService","hoverService","configurationService","_resolverService","languageFeaturesService","hoverOrdinal","suggestHoverAnchor","posx","posy","computeSync","computeAsync","_lineDecorations","executor","itemTooltip","partTooltip","appendText","emitOne","linkHint","kb","title","isTrusted","iterable","_resolveInlayHintLabelPartHover","hoverProvider","filter","hover","contents","ordinal","showGoToContextMenu","resolverService","contextMenuService","commandService","instaService","notificationService","menuActions","delegate","renderShortTitle","symbolAnchor","runEditorCommand","bind","useShadowDOM","showContextMenu","domForShadowRoot","getDomNode","getAnchor","box","x","left","y","top","height","getActions","onHide","focus","autoSelectFirstItem","goToDefinitionWithLocation","invokeWithinContext","openToSide","hasSideBySideModifier","contextKeyService","isInPeek","canPeek","openInPeek","muteMessage","original"],"sourceRoot":""}