{
  "version": 3,
  "sources": ["../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/browser/outlineModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplaceCommand.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.css", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.css", "../../../../../node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js", "../../src/code-editor/MonacoEditor.styles.ts", "../../../../../node_modules/monaco-editor/esm/vs/editor/editor.main.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/abap/abap.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/apex/apex.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/azcli/azcli.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/bat/bat.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/bicep/bicep.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/cameligo/cameligo.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/clojure/clojure.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/coffee/coffee.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/cpp/cpp.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/csharp/csharp.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/csp/csp.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/css/css.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/cypher/cypher.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/dart/dart.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/dockerfile/dockerfile.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/ecl/ecl.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/elixir/elixir.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/flow9/flow9.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/fsharp/fsharp.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/freemarker2/freemarker2.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/go/go.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/handlebars/handlebars.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/hcl/hcl.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/html/html.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/ini/ini.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/java/java.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/julia/julia.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/kotlin/kotlin.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/less/less.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/lexon/lexon.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/lua/lua.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/liquid/liquid.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/m3/m3.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/mdx/mdx.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/mips/mips.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/msdax/msdax.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/mysql/mysql.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/objective-c/objective-c.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/pascal/pascal.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/pascaligo/pascaligo.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/perl/perl.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/pgsql/pgsql.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/php/php.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/pla/pla.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/postiats/postiats.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/powerquery/powerquery.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/protobuf/protobuf.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/pug/pug.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/python/python.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/qsharp/qsharp.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/r/r.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/razor/razor.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/redis/redis.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/redshift/redshift.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/restructuredtext/restructuredtext.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/ruby/ruby.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/rust/rust.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/sb/sb.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/scala/scala.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/scheme/scheme.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/scss/scss.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/shell/shell.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/solidity/solidity.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/sophia/sophia.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/sparql/sparql.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/sql/sql.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/st/st.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/swift/swift.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/systemverilog/systemverilog.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/tcl/tcl.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/twig/twig.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/typespec/typespec.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/vb/vb.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/wgsl/wgsl.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/language/css/monaco.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/language/html/monaco.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/language/json/monaco.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditor/commands.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/browser/moveCaretCommand.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/browser/transpose.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/clipboard/browser/clipboard.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js", "../../../../../node_modules/monaco-editor/esm/vs/base/common/dataTransfer.js", "../../../../../node_modules/monaco-editor/esm/vs/base/common/uuid.js", "../../../../../node_modules/monaco-editor/esm/vs/base/common/hierarchicalKind.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/browser/dnd.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/dnd/browser/dnd.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetParser.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/edit.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineProgress/browser/inlineProgress.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/message/browser/messageController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/base/common/errorMessage.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeAction.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/common/types.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionKeybindingResolver.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/actionWidget/browser/actionWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/actionWidget/browser/actionList.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelensController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelens.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codeLensCache.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelensWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorContributions.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/color.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/defaultDocumentColorProvider.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorHoverParticipant.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorPickerModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorPickerWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hoverActionIds.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hoverController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsHintsWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/commandIds.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/contentHoverWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/base/browser/ui/resizable/resizable.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/resizableContentWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/contentHoverController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hoverOperation.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hoverTypes.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/getHover.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlayHints/browser/inlayHints.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/browser/widget/codeEditor/embeddedCodeEditorWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/peekView/browser/peekView.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/browser/zoneWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/goToSymbol.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/contentHoverComputer.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/contentHoverTypes.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/contentHoverStatusBar.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/marginHoverWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/marginHoverComputer.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPickerActions.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPickerWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/comment/browser/comment.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/comment/browser/blockCommentCommand.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/comment/browser/lineCommentCommand.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/dnd/browser/dnd.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/dnd/browser/dragAndDropCommand.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/common/services/treeViewsDnd.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/common/services/treeViewsDndService.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findDecorations.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/replaceAllCommand.js", "../../../../../node_modules/monaco-editor/esm/vs/base/common/search.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/replacePattern.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findOptionsWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findState.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/replaceInput.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/history/browser/contextScopedHistoryWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/history/browser/historyWidgetKeybindingHint.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/folding.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/foldingModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/foldingRanges.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/hiddenRangeModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/indentRangeProvider.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/foldingDecorations.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/syntaxRangeProvider.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/format/browser/formatActions.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/browser/documentSymbols.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/commands.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletionContextKeys.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostTextWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostText.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/utils.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsSource.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/provideInlineCompletions.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/fixBrackets.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/singleTextEdit.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetController2.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggest.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetSession.js", "../../../../../node_modules/monaco-editor/esm/vs/base/common/labels.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetVariables.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/suggestWidgetInlineCompletionProvider.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestMemory.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/wordContextKey.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestAlternatives.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestCommitCharacters.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/wordDistance.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/browser/bracketSelections.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/completionModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestOvertypingCapturer.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestWidgetStatus.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/common/services/getIconClasses.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/files/common/files.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/hoverParticipant.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/browser/gotoError.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/browser/markerNavigationService.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/severityIcon/browser/severityIcon.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hoverActions.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hoverContribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/indentation/browser/indentation.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/indentation/common/indentUtils.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/indentation/common/indentation.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlayHints/browser/inlayHintsContribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/editor.all.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/common/commands/trimTrailingWhitespaceCommand.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/browser/copyLinesCommand.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/browser/moveLinesCommand.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/browser/sortLinesCommand.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/links/browser/links.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/links/browser/getLinks.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/longLinesHelper/browser/longLinesHelper.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/multicursor/browser/multicursor.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineEdit/browser/inlineEdit.contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineEdit/browser/commands.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineEdit/browser/commandIds.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineEdit/browser/inlineEditController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineEdit/browser/ghostTextWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineEdit/browser/inlineEditHintsWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/inlineEdit/browser/hoverParticipant.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/provideSignatureHelp.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/rename/browser/rename.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/rename/browser/renameWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/semanticTokens/common/getSemanticTokens.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/common/services/semanticTokensDto.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/semanticTokens/common/semanticTokensConfig.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/semanticTokens/browser/viewportSemanticTokens.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/browser/wordSelections.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollContribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/action/common/actionCommonCategories.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollModelProvider.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollElement.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/tokenization/browser/tokenization.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/opener/browser/link.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/wordPartOperations/browser/wordPartOperations.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/edcore.main.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/quickinput/browser/helpQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/base/common/fuzzyScorer.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/quickinput/browser/commandsQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/base/common/tfIdf.js", "../../../../../node_modules/monaco-editor/esm/vs/platform/quickinput/browser/pickerQuickAccess.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js", "../../../../../node_modules/monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js", "../../src/code-editor/framerTheme.ts"],
  "sourcesContent": ["/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { equals } from '../../../../base/common/arrays.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { LRUCache } from '../../../../base/common/map.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport class TreeElement {\n    remove() {\n        var _a;\n        (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children.delete(this.id);\n    }\n    static findId(candidate, container) {\n        // complex id-computation which contains the origin/extension,\n        // the parent path, and some dedupe logic when names collide\n        let candidateId;\n        if (typeof candidate === 'string') {\n            candidateId = `${container.id}/${candidate}`;\n        }\n        else {\n            candidateId = `${container.id}/${candidate.name}`;\n            if (container.children.get(candidateId) !== undefined) {\n                candidateId = `${container.id}/${candidate.name}_${candidate.range.startLineNumber}_${candidate.range.startColumn}`;\n            }\n        }\n        let id = candidateId;\n        for (let i = 0; container.children.get(id) !== undefined; i++) {\n            id = `${candidateId}_${i}`;\n        }\n        return id;\n    }\n    static empty(element) {\n        return element.children.size === 0;\n    }\n}\nexport class OutlineElement extends TreeElement {\n    constructor(id, parent, symbol) {\n        super();\n        this.id = id;\n        this.parent = parent;\n        this.symbol = symbol;\n        this.children = new Map();\n    }\n}\nexport class OutlineGroup extends TreeElement {\n    constructor(id, parent, label, order) {\n        super();\n        this.id = id;\n        this.parent = parent;\n        this.label = label;\n        this.order = order;\n        this.children = new Map();\n    }\n}\nexport class OutlineModel extends TreeElement {\n    static create(registry, textModel, token) {\n        const cts = new CancellationTokenSource(token);\n        const result = new OutlineModel(textModel.uri);\n        const provider = registry.ordered(textModel);\n        const promises = provider.map((provider, index) => {\n            var _a;\n            const id = TreeElement.findId(`provider_${index}`, result);\n            const group = new OutlineGroup(id, result, (_a = provider.displayName) !== null && _a !== void 0 ? _a : 'Unknown Outline Provider', index);\n            return Promise.resolve(provider.provideDocumentSymbols(textModel, cts.token)).then(result => {\n                for (const info of result || []) {\n                    OutlineModel._makeOutlineElement(info, group);\n                }\n                return group;\n            }, err => {\n                onUnexpectedExternalError(err);\n                return group;\n            }).then(group => {\n                if (!TreeElement.empty(group)) {\n                    result._groups.set(id, group);\n                }\n                else {\n                    group.remove();\n                }\n            });\n        });\n        const listener = registry.onDidChange(() => {\n            const newProvider = registry.ordered(textModel);\n            if (!equals(newProvider, provider)) {\n                cts.cancel();\n            }\n        });\n        return Promise.all(promises).then(() => {\n            if (cts.token.isCancellationRequested && !token.isCancellationRequested) {\n                return OutlineModel.create(registry, textModel, token);\n            }\n            else {\n                return result._compact();\n            }\n        }).finally(() => {\n            cts.dispose();\n            listener.dispose();\n            cts.dispose();\n        });\n    }\n    static _makeOutlineElement(info, container) {\n        const id = TreeElement.findId(info, container);\n        const res = new OutlineElement(id, container, info);\n        if (info.children) {\n            for (const childInfo of info.children) {\n                OutlineModel._makeOutlineElement(childInfo, res);\n            }\n        }\n        container.children.set(res.id, res);\n    }\n    constructor(uri) {\n        super();\n        this.uri = uri;\n        this.id = 'root';\n        this.parent = undefined;\n        this._groups = new Map();\n        this.children = new Map();\n        this.id = 'root';\n        this.parent = undefined;\n    }\n    _compact() {\n        let count = 0;\n        for (const [key, group] of this._groups) {\n            if (group.children.size === 0) { // empty\n                this._groups.delete(key);\n            }\n            else {\n                count += 1;\n            }\n        }\n        if (count !== 1) {\n            //\n            this.children = this._groups;\n        }\n        else {\n            // adopt all elements of the first group\n            const group = Iterable.first(this._groups.values());\n            for (const [, child] of group.children) {\n                child.parent = this;\n                this.children.set(child.id, child);\n            }\n        }\n        return this;\n    }\n    getTopLevelSymbols() {\n        const roots = [];\n        for (const child of this.children.values()) {\n            if (child instanceof OutlineElement) {\n                roots.push(child.symbol);\n            }\n            else {\n                roots.push(...Iterable.map(child.children.values(), child => child.symbol));\n            }\n        }\n        return roots.sort((a, b) => Range.compareRangesUsingStarts(a.range, b.range));\n    }\n    asListOfDocumentSymbols() {\n        const roots = this.getTopLevelSymbols();\n        const bucket = [];\n        OutlineModel._flattenDocumentSymbols(bucket, roots, '');\n        return bucket.sort((a, b) => Position.compare(Range.getStartPosition(a.range), Range.getStartPosition(b.range)) || Position.compare(Range.getEndPosition(b.range), Range.getEndPosition(a.range)));\n    }\n    static _flattenDocumentSymbols(bucket, entries, overrideContainerLabel) {\n        for (const entry of entries) {\n            bucket.push({\n                kind: entry.kind,\n                tags: entry.tags,\n                name: entry.name,\n                detail: entry.detail,\n                containerName: entry.containerName || overrideContainerLabel,\n                range: entry.range,\n                selectionRange: entry.selectionRange,\n                children: undefined, // we flatten it...\n            });\n            // Recurse over children\n            if (entry.children) {\n                OutlineModel._flattenDocumentSymbols(bucket, entry.children, entry.name);\n            }\n        }\n    }\n}\nexport const IOutlineModelService = createDecorator('IOutlineModelService');\nlet OutlineModelService = class OutlineModelService {\n    constructor(_languageFeaturesService, debounces, modelService) {\n        this._languageFeaturesService = _languageFeaturesService;\n        this._disposables = new DisposableStore();\n        this._cache = new LRUCache(10, 0.7);\n        this._debounceInformation = debounces.for(_languageFeaturesService.documentSymbolProvider, 'DocumentSymbols', { min: 350 });\n        // don't cache outline models longer than their text model\n        this._disposables.add(modelService.onModelRemoved(textModel => {\n            this._cache.delete(textModel.id);\n        }));\n    }\n    dispose() {\n        this._disposables.dispose();\n    }\n    async getOrCreate(textModel, token) {\n        const registry = this._languageFeaturesService.documentSymbolProvider;\n        const provider = registry.ordered(textModel);\n        let data = this._cache.get(textModel.id);\n        if (!data || data.versionId !== textModel.getVersionId() || !equals(data.provider, provider)) {\n            const source = new CancellationTokenSource();\n            data = {\n                versionId: textModel.getVersionId(),\n                provider,\n                promiseCnt: 0,\n                source,\n                promise: OutlineModel.create(registry, textModel, source.token),\n                model: undefined,\n            };\n            this._cache.set(textModel.id, data);\n            const now = Date.now();\n            data.promise.then(outlineModel => {\n                data.model = outlineModel;\n                this._debounceInformation.update(textModel, Date.now() - now);\n            }).catch(_err => {\n                this._cache.delete(textModel.id);\n            });\n        }\n        if (data.model) {\n            // resolved -> return data\n            return data.model;\n        }\n        // increase usage counter\n        data.promiseCnt += 1;\n        const listener = token.onCancellationRequested(() => {\n            // last -> cancel provider request, remove cached promise\n            if (--data.promiseCnt === 0) {\n                data.source.cancel();\n                this._cache.delete(textModel.id);\n            }\n        });\n        try {\n            return await data.promise;\n        }\n        finally {\n            listener.dispose();\n        }\n    }\n};\nOutlineModelService = __decorate([\n    __param(0, ILanguageFeaturesService),\n    __param(1, ILanguageFeatureDebounceService),\n    __param(2, IModelService)\n], OutlineModelService);\nexport { OutlineModelService };\nregisterSingleton(IOutlineModelService, OutlineModelService, 1 /* InstantiationType.Delayed */);\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 { Selection } from '../../../common/core/selection.js';\nexport class InPlaceReplaceCommand {\n    constructor(editRange, originalSelection, text) {\n        this._editRange = editRange;\n        this._originalSelection = originalSelection;\n        this._text = text;\n    }\n    getEditOperations(model, builder) {\n        builder.addTrackedEditOperation(this._editRange, this._text);\n    }\n    computeCursorState(model, helper) {\n        const inverseEditOperations = helper.getInverseEditOperations();\n        const srcRange = inverseEditOperations[0].range;\n        if (!this._originalSelection.isEmpty()) {\n            // Preserve selection and extends to typed text\n            return new Selection(srcRange.endLineNumber, srcRange.endColumn - this._text.length, srcRange.endLineNumber, srcRange.endColumn);\n        }\n        return new Selection(srcRange.endLineNumber, Math.min(this._originalSelection.positionColumn, srcRange.endColumn), srcRange.endLineNumber, Math.min(this._originalSelection.positionColumn, srcRange.endColumn));\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 *--------------------------------------------------------------------------------------------*/\n\n\n.monaco-editor.vs .valueSetReplacement {\n\toutline: solid 2px var(--vscode-editorBracketMatch-border);\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 InPlaceReplaceController_1;\nimport { createCancelablePromise, timeout } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { EditorState } from '../../editorState/browser/editorState.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport * as nls from '../../../../nls.js';\nimport { InPlaceReplaceCommand } from './inPlaceReplaceCommand.js';\nimport './inPlaceReplace.css';\nlet InPlaceReplaceController = InPlaceReplaceController_1 = class InPlaceReplaceController {\n    static get(editor) {\n        return editor.getContribution(InPlaceReplaceController_1.ID);\n    }\n    constructor(editor, editorWorkerService) {\n        this.editor = editor;\n        this.editorWorkerService = editorWorkerService;\n        this.decorations = this.editor.createDecorationsCollection();\n    }\n    dispose() {\n    }\n    run(source, up) {\n        var _a;\n        // cancel any pending request\n        (_a = this.currentRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n        const editorSelection = this.editor.getSelection();\n        const model = this.editor.getModel();\n        if (!model || !editorSelection) {\n            return undefined;\n        }\n        let selection = editorSelection;\n        if (selection.startLineNumber !== selection.endLineNumber) {\n            // Can't accept multiline selection\n            return undefined;\n        }\n        const state = new EditorState(this.editor, 1 /* CodeEditorStateFlag.Value */ | 4 /* CodeEditorStateFlag.Position */);\n        const modelURI = model.uri;\n        if (!this.editorWorkerService.canNavigateValueSet(modelURI)) {\n            return Promise.resolve(undefined);\n        }\n        this.currentRequest = createCancelablePromise(token => this.editorWorkerService.navigateValueSet(modelURI, selection, up));\n        return this.currentRequest.then(result => {\n            var _a;\n            if (!result || !result.range || !result.value) {\n                // No proper result\n                return;\n            }\n            if (!state.validate(this.editor)) {\n                // state has changed\n                return;\n            }\n            // Selection\n            const editRange = Range.lift(result.range);\n            let highlightRange = result.range;\n            const diff = result.value.length - (selection.endColumn - selection.startColumn);\n            // highlight\n            highlightRange = {\n                startLineNumber: highlightRange.startLineNumber,\n                startColumn: highlightRange.startColumn,\n                endLineNumber: highlightRange.endLineNumber,\n                endColumn: highlightRange.startColumn + result.value.length\n            };\n            if (diff > 1) {\n                selection = new Selection(selection.startLineNumber, selection.startColumn, selection.endLineNumber, selection.endColumn + diff - 1);\n            }\n            // Insert new text\n            const command = new InPlaceReplaceCommand(editRange, selection, result.value);\n            this.editor.pushUndoStop();\n            this.editor.executeCommand(source, command);\n            this.editor.pushUndoStop();\n            // add decoration\n            this.decorations.set([{\n                    range: highlightRange,\n                    options: InPlaceReplaceController_1.DECORATION\n                }]);\n            // remove decoration after delay\n            (_a = this.decorationRemover) === null || _a === void 0 ? void 0 : _a.cancel();\n            this.decorationRemover = timeout(350);\n            this.decorationRemover.then(() => this.decorations.clear()).catch(onUnexpectedError);\n        }).catch(onUnexpectedError);\n    }\n};\nInPlaceReplaceController.ID = 'editor.contrib.inPlaceReplaceController';\nInPlaceReplaceController.DECORATION = ModelDecorationOptions.register({\n    description: 'in-place-replace',\n    className: 'valueSetReplacement'\n});\nInPlaceReplaceController = InPlaceReplaceController_1 = __decorate([\n    __param(1, IEditorWorkerService)\n], InPlaceReplaceController);\nclass InPlaceReplaceUp extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.inPlaceReplace.up',\n            label: nls.localize('InPlaceReplaceAction.previous.label', \"Replace with Previous Value\"),\n            alias: 'Replace with Previous Value',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 87 /* KeyCode.Comma */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor, editor) {\n        const controller = InPlaceReplaceController.get(editor);\n        if (!controller) {\n            return Promise.resolve(undefined);\n        }\n        return controller.run(this.id, false);\n    }\n}\nclass InPlaceReplaceDown extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.inPlaceReplace.down',\n            label: nls.localize('InPlaceReplaceAction.next.label', \"Replace with Next Value\"),\n            alias: 'Replace with Next Value',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 89 /* KeyCode.Period */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor, editor) {\n        const controller = InPlaceReplaceController.get(editor);\n        if (!controller) {\n            return Promise.resolve(undefined);\n        }\n        return controller.run(this.id, true);\n    }\n}\nregisterEditorContribution(InPlaceReplaceController.ID, InPlaceReplaceController, 4 /* EditorContributionInstantiation.Lazy */);\nregisterEditorAction(InPlaceReplaceUp);\nregisterEditorAction(InPlaceReplaceDown);\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 { reverseOrder, compareBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { observableValue, observableSignalFromEvent, autorunWithStore } from '../../../../base/common/observable.js';\nimport { HideUnchangedRegionsFeature } from '../../../browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js';\nimport { DisposableCancellationTokenSource } from '../../../browser/widget/diffEditor/utils.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IOutlineModelService } from '../../documentSymbols/browser/outlineModel.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Event } from '../../../../base/common/event.js';\nlet DiffEditorBreadcrumbsSource = class DiffEditorBreadcrumbsSource extends Disposable {\n    constructor(_textModel, _languageFeaturesService, _outlineModelService) {\n        super();\n        this._textModel = _textModel;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._outlineModelService = _outlineModelService;\n        this._currentModel = observableValue(this, undefined);\n        const documentSymbolProviderChanged = observableSignalFromEvent('documentSymbolProvider.onDidChange', this._languageFeaturesService.documentSymbolProvider.onDidChange);\n        const textModelChanged = observableSignalFromEvent('_textModel.onDidChangeContent', Event.debounce(e => this._textModel.onDidChangeContent(e), () => undefined, 100));\n        this._register(autorunWithStore(async (reader, store) => {\n            documentSymbolProviderChanged.read(reader);\n            textModelChanged.read(reader);\n            const src = store.add(new DisposableCancellationTokenSource());\n            const model = await this._outlineModelService.getOrCreate(this._textModel, src.token);\n            if (store.isDisposed) {\n                return;\n            }\n            this._currentModel.set(model, undefined);\n        }));\n    }\n    getBreadcrumbItems(startRange, reader) {\n        const m = this._currentModel.read(reader);\n        if (!m) {\n            return [];\n        }\n        const symbols = m.asListOfDocumentSymbols()\n            .filter(s => startRange.contains(s.range.startLineNumber) && !startRange.contains(s.range.endLineNumber));\n        symbols.sort(reverseOrder(compareBy(s => s.range.endLineNumber - s.range.startLineNumber, numberComparator)));\n        return symbols.map(s => ({ name: s.name, kind: s.kind, startLineNumber: s.range.startLineNumber }));\n    }\n};\nDiffEditorBreadcrumbsSource = __decorate([\n    __param(1, ILanguageFeaturesService),\n    __param(2, IOutlineModelService)\n], DiffEditorBreadcrumbsSource);\nHideUnchangedRegionsFeature.setBreadcrumbsSourceFactory((textModel, instantiationService) => {\n    return instantiationService.createInstance(DiffEditorBreadcrumbsSource, textModel);\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 *--------------------------------------------------------------------------------------------*/\n\n.monaco-editor .tokens-inspect-widget {\n\tz-index: 50;\n\tuser-select: text;\n\t-webkit-user-select: text;\n\tpadding: 10px;\n\tcolor: var(--vscode-editorHoverWidget-foreground);\n\tbackground-color: var(--vscode-editorHoverWidget-background);\n\tborder: 1px solid var(--vscode-editorHoverWidget-border);\n}\n.monaco-editor.hc-black .tokens-inspect-widget, .monaco-editor.hc-light .tokens-inspect-widget {\n\tborder-width: 2px;\n}\n\n.monaco-editor .tokens-inspect-widget .tokens-inspect-separator {\n\theight: 1px;\n\tborder: 0;\n\tbackground-color: var(--vscode-editorHoverWidget-border);\n}\n\n.monaco-editor .tokens-inspect-widget .tm-token {\n\tfont-family: var(--monaco-monospace-font);\n}\n\n.monaco-editor .tokens-inspect-widget .tm-token-length {\n\tfont-weight: normal;\n\tfont-size: 60%;\n\tfloat: right;\n}\n\n.monaco-editor .tokens-inspect-widget .tm-metadata-table {\n\twidth: 100%;\n}\n\n.monaco-editor .tokens-inspect-widget .tm-metadata-value {\n\tfont-family: var(--monaco-monospace-font);\n\ttext-align: right;\n}\n\n.monaco-editor .tokens-inspect-widget .tm-token-type {\n\tfont-family: var(--monaco-monospace-font);\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 InspectTokensController_1;\nimport './inspectTokens.css';\nimport { $, append, reset } from '../../../../base/browser/dom.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { TokenizationRegistry } from '../../../common/languages.js';\nimport { TokenMetadata } from '../../../common/encodedTokenAttributes.js';\nimport { NullState, nullTokenize, nullTokenizeEncoded } from '../../../common/languages/nullTokenize.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { IStandaloneThemeService } from '../../common/standaloneTheme.js';\nimport { InspectTokensNLS } from '../../../common/standaloneStrings.js';\nlet InspectTokensController = InspectTokensController_1 = class InspectTokensController extends Disposable {\n    static get(editor) {\n        return editor.getContribution(InspectTokensController_1.ID);\n    }\n    constructor(editor, standaloneColorService, languageService) {\n        super();\n        this._editor = editor;\n        this._languageService = languageService;\n        this._widget = null;\n        this._register(this._editor.onDidChangeModel((e) => this.stop()));\n        this._register(this._editor.onDidChangeModelLanguage((e) => this.stop()));\n        this._register(TokenizationRegistry.onDidChange((e) => this.stop()));\n        this._register(this._editor.onKeyUp((e) => e.keyCode === 9 /* KeyCode.Escape */ && this.stop()));\n    }\n    dispose() {\n        this.stop();\n        super.dispose();\n    }\n    launch() {\n        if (this._widget) {\n            return;\n        }\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        this._widget = new InspectTokensWidget(this._editor, this._languageService);\n    }\n    stop() {\n        if (this._widget) {\n            this._widget.dispose();\n            this._widget = null;\n        }\n    }\n};\nInspectTokensController.ID = 'editor.contrib.inspectTokens';\nInspectTokensController = InspectTokensController_1 = __decorate([\n    __param(1, IStandaloneThemeService),\n    __param(2, ILanguageService)\n], InspectTokensController);\nclass InspectTokens extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.inspectTokens',\n            label: InspectTokensNLS.inspectTokensAction,\n            alias: 'Developer: Inspect Tokens',\n            precondition: undefined\n        });\n    }\n    run(accessor, editor) {\n        const controller = InspectTokensController.get(editor);\n        controller === null || controller === void 0 ? void 0 : controller.launch();\n    }\n}\nfunction renderTokenText(tokenText) {\n    let result = '';\n    for (let charIndex = 0, len = tokenText.length; charIndex < len; charIndex++) {\n        const charCode = tokenText.charCodeAt(charIndex);\n        switch (charCode) {\n            case 9 /* CharCode.Tab */:\n                result += '\\u2192'; // &rarr;\n                break;\n            case 32 /* CharCode.Space */:\n                result += '\\u00B7'; // &middot;\n                break;\n            default:\n                result += String.fromCharCode(charCode);\n        }\n    }\n    return result;\n}\nfunction getSafeTokenizationSupport(languageIdCodec, languageId) {\n    const tokenizationSupport = TokenizationRegistry.get(languageId);\n    if (tokenizationSupport) {\n        return tokenizationSupport;\n    }\n    const encodedLanguageId = languageIdCodec.encodeLanguageId(languageId);\n    return {\n        getInitialState: () => NullState,\n        tokenize: (line, hasEOL, state) => nullTokenize(languageId, state),\n        tokenizeEncoded: (line, hasEOL, state) => nullTokenizeEncoded(encodedLanguageId, state)\n    };\n}\nclass InspectTokensWidget extends Disposable {\n    constructor(editor, languageService) {\n        super();\n        // Editor.IContentWidget.allowEditorOverflow\n        this.allowEditorOverflow = true;\n        this._editor = editor;\n        this._languageService = languageService;\n        this._model = this._editor.getModel();\n        this._domNode = document.createElement('div');\n        this._domNode.className = 'tokens-inspect-widget';\n        this._tokenizationSupport = getSafeTokenizationSupport(this._languageService.languageIdCodec, this._model.getLanguageId());\n        this._compute(this._editor.getPosition());\n        this._register(this._editor.onDidChangeCursorPosition((e) => this._compute(this._editor.getPosition())));\n        this._editor.addContentWidget(this);\n    }\n    dispose() {\n        this._editor.removeContentWidget(this);\n        super.dispose();\n    }\n    getId() {\n        return InspectTokensWidget._ID;\n    }\n    _compute(position) {\n        const data = this._getTokensAtLine(position.lineNumber);\n        let token1Index = 0;\n        for (let i = data.tokens1.length - 1; i >= 0; i--) {\n            const t = data.tokens1[i];\n            if (position.column - 1 >= t.offset) {\n                token1Index = i;\n                break;\n            }\n        }\n        let token2Index = 0;\n        for (let i = (data.tokens2.length >>> 1); i >= 0; i--) {\n            if (position.column - 1 >= data.tokens2[(i << 1)]) {\n                token2Index = i;\n                break;\n            }\n        }\n        const lineContent = this._model.getLineContent(position.lineNumber);\n        let tokenText = '';\n        if (token1Index < data.tokens1.length) {\n            const tokenStartIndex = data.tokens1[token1Index].offset;\n            const tokenEndIndex = token1Index + 1 < data.tokens1.length ? data.tokens1[token1Index + 1].offset : lineContent.length;\n            tokenText = lineContent.substring(tokenStartIndex, tokenEndIndex);\n        }\n        reset(this._domNode, $('h2.tm-token', undefined, renderTokenText(tokenText), $('span.tm-token-length', undefined, `${tokenText.length} ${tokenText.length === 1 ? 'char' : 'chars'}`)));\n        append(this._domNode, $('hr.tokens-inspect-separator', { 'style': 'clear:both' }));\n        const metadata = (token2Index << 1) + 1 < data.tokens2.length ? this._decodeMetadata(data.tokens2[(token2Index << 1) + 1]) : null;\n        append(this._domNode, $('table.tm-metadata-table', undefined, $('tbody', undefined, $('tr', undefined, $('td.tm-metadata-key', undefined, 'language'), $('td.tm-metadata-value', undefined, `${metadata ? metadata.languageId : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'token type'), $('td.tm-metadata-value', undefined, `${metadata ? this._tokenTypeToString(metadata.tokenType) : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'font style'), $('td.tm-metadata-value', undefined, `${metadata ? this._fontStyleToString(metadata.fontStyle) : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'foreground'), $('td.tm-metadata-value', undefined, `${metadata ? Color.Format.CSS.formatHex(metadata.foreground) : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'background'), $('td.tm-metadata-value', undefined, `${metadata ? Color.Format.CSS.formatHex(metadata.background) : '-?-'}`)))));\n        append(this._domNode, $('hr.tokens-inspect-separator'));\n        if (token1Index < data.tokens1.length) {\n            append(this._domNode, $('span.tm-token-type', undefined, data.tokens1[token1Index].type));\n        }\n        this._editor.layoutContentWidget(this);\n    }\n    _decodeMetadata(metadata) {\n        const colorMap = TokenizationRegistry.getColorMap();\n        const languageId = TokenMetadata.getLanguageId(metadata);\n        const tokenType = TokenMetadata.getTokenType(metadata);\n        const fontStyle = TokenMetadata.getFontStyle(metadata);\n        const foreground = TokenMetadata.getForeground(metadata);\n        const background = TokenMetadata.getBackground(metadata);\n        return {\n            languageId: this._languageService.languageIdCodec.decodeLanguageId(languageId),\n            tokenType: tokenType,\n            fontStyle: fontStyle,\n            foreground: colorMap[foreground],\n            background: colorMap[background]\n        };\n    }\n    _tokenTypeToString(tokenType) {\n        switch (tokenType) {\n            case 0 /* StandardTokenType.Other */: return 'Other';\n            case 1 /* StandardTokenType.Comment */: return 'Comment';\n            case 2 /* StandardTokenType.String */: return 'String';\n            case 3 /* StandardTokenType.RegEx */: return 'RegEx';\n            default: return '??';\n        }\n    }\n    _fontStyleToString(fontStyle) {\n        let r = '';\n        if (fontStyle & 1 /* FontStyle.Italic */) {\n            r += 'italic ';\n        }\n        if (fontStyle & 2 /* FontStyle.Bold */) {\n            r += 'bold ';\n        }\n        if (fontStyle & 4 /* FontStyle.Underline */) {\n            r += 'underline ';\n        }\n        if (fontStyle & 8 /* FontStyle.Strikethrough */) {\n            r += 'strikethrough ';\n        }\n        if (r.length === 0) {\n            r = '---';\n        }\n        return r;\n    }\n    _getTokensAtLine(lineNumber) {\n        const stateBeforeLine = this._getStateBeforeLine(lineNumber);\n        const tokenizationResult1 = this._tokenizationSupport.tokenize(this._model.getLineContent(lineNumber), true, stateBeforeLine);\n        const tokenizationResult2 = this._tokenizationSupport.tokenizeEncoded(this._model.getLineContent(lineNumber), true, stateBeforeLine);\n        return {\n            startState: stateBeforeLine,\n            tokens1: tokenizationResult1.tokens,\n            tokens2: tokenizationResult2.tokens,\n            endState: tokenizationResult1.endState\n        };\n    }\n    _getStateBeforeLine(lineNumber) {\n        let state = this._tokenizationSupport.getInitialState();\n        for (let i = 1; i < lineNumber; i++) {\n            const tokenizationResult = this._tokenizationSupport.tokenize(this._model.getLineContent(i), true, state);\n            state = tokenizationResult.endState;\n        }\n        return state;\n    }\n    getDomNode() {\n        return this._domNode;\n    }\n    getPosition() {\n        return {\n            position: this._editor.getPosition(),\n            preference: [2 /* ContentWidgetPositionPreference.BELOW */, 1 /* ContentWidgetPositionPreference.ABOVE */]\n        };\n    }\n}\nInspectTokensWidget._ID = 'editor.contrib.inspectTokensWidget';\nregisterEditorContribution(InspectTokensController.ID, InspectTokensController, 4 /* EditorContributionInstantiation.Lazy */);\nregisterEditorAction(InspectTokens);\n", "import \"MonacoEditor.styles_hf8hrv.wyw.css\"; export const iconVariables = {\n  iconVariable: \"--iconVariable\",\n  iconFunction: \"--iconFunction\",\n  iconClass: \"--iconClass\",\n  iconFile: \"--iconFile\",\n  iconModule: \"--iconModule\",\n  iconProperty: \"--iconProperty\",\n  iconValue: \"--iconValue\",\n  iconKeyword: \"--iconKeyword\",\n  iconUnit: \"--iconUnit\",\n  iconSnippet: \"--iconSnippet\",\n  iconText: \"--iconText\",\n  iconColor: \"--iconColor\",\n  iconKeywordDarkMode: \"--iconKeywordDarkMode\"\n};\nexport const monacoEditor = \"monacoEditor_m11188tw\";\nexport const hideScrollbar = \"hideScrollbar_hgqxikf\";\nexport const hideHorizontalScrollbar = \"hideHorizontalScrollbar_h1ksej3n\";\nexport const container = \"container_cr61ip\";\nexport const containerWithPreview = \"containerWithPreview_c1puat3r\";\nexport const containerWithAgent = \"containerWithAgent_c1euocvy\";\nexport const containerWithPreviewAndAgent = \"containerWithPreviewAndAgent_c1qq07gx\";\nexport const editor = \"editor_e21ngw1\";\nexport const hideEditor = \"hideEditor_h1swuar9\";", "import '../basic-languages/monaco.contribution';\nimport '../language/css/monaco.contribution';\nimport '../language/html/monaco.contribution';\nimport '../language/json/monaco.contribution';\nimport '../language/typescript/monaco.contribution';\n\nexport * from './edcore.main';", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n\n// src/fillers/monaco-editor-core.ts\nvar monaco_editor_core_exports = {};\n__reExport(monaco_editor_core_exports, monaco_editor_core_star);\nimport * as monaco_editor_core_star from \"../editor/editor.api.js\";\n\n// src/basic-languages/_.contribution.ts\nvar languageDefinitions = {};\nvar lazyLanguageLoaders = {};\nvar LazyLanguageLoader = class _LazyLanguageLoader {\n  static getOrCreate(languageId) {\n    if (!lazyLanguageLoaders[languageId]) {\n      lazyLanguageLoaders[languageId] = new _LazyLanguageLoader(languageId);\n    }\n    return lazyLanguageLoaders[languageId];\n  }\n  constructor(languageId) {\n    this._languageId = languageId;\n    this._loadingTriggered = false;\n    this._lazyLoadPromise = new Promise((resolve, reject) => {\n      this._lazyLoadPromiseResolve = resolve;\n      this._lazyLoadPromiseReject = reject;\n    });\n  }\n  load() {\n    if (!this._loadingTriggered) {\n      this._loadingTriggered = true;\n      languageDefinitions[this._languageId].loader().then(\n        (mod) => this._lazyLoadPromiseResolve(mod),\n        (err) => this._lazyLoadPromiseReject(err)\n      );\n    }\n    return this._lazyLoadPromise;\n  }\n};\nasync function loadLanguage(languageId) {\n  await LazyLanguageLoader.getOrCreate(languageId).load();\n  const model = monaco_editor_core_exports.editor.createModel(\"\", languageId);\n  model.dispose();\n}\nfunction registerLanguage(def) {\n  const languageId = def.id;\n  languageDefinitions[languageId] = def;\n  monaco_editor_core_exports.languages.register(def);\n  const lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId);\n  monaco_editor_core_exports.languages.registerTokensProviderFactory(languageId, {\n    create: async () => {\n      const mod = await lazyLanguageLoader.load();\n      return mod.language;\n    }\n  });\n  monaco_editor_core_exports.languages.onLanguageEncountered(languageId, async () => {\n    const mod = await lazyLanguageLoader.load();\n    monaco_editor_core_exports.languages.setLanguageConfiguration(languageId, mod.conf);\n  });\n}\nexport {\n  loadLanguage,\n  registerLanguage\n};\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/abap/abap.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"abap\",\n  extensions: [\".abap\"],\n  aliases: [\"abap\", \"ABAP\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/abap/abap\"], resolve, reject);\n      });\n    } else {\n      return import(\"./abap.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/apex/apex.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"apex\",\n  extensions: [\".cls\"],\n  aliases: [\"Apex\", \"apex\"],\n  mimetypes: [\"text/x-apex-source\", \"text/x-apex\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/apex/apex\"], resolve, reject);\n      });\n    } else {\n      return import(\"./apex.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/azcli/azcli.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"azcli\",\n  extensions: [\".azcli\"],\n  aliases: [\"Azure CLI\", \"azcli\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/azcli/azcli\"], resolve, reject);\n      });\n    } else {\n      return import(\"./azcli.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/bat/bat.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"bat\",\n  extensions: [\".bat\", \".cmd\"],\n  aliases: [\"Batch\", \"bat\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/bat/bat\"], resolve, reject);\n      });\n    } else {\n      return import(\"./bat.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/bicep/bicep.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"bicep\",\n  extensions: [\".bicep\"],\n  aliases: [\"Bicep\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/bicep/bicep\"], resolve, reject);\n      });\n    } else {\n      return import(\"./bicep.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/cameligo/cameligo.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"cameligo\",\n  extensions: [\".mligo\"],\n  aliases: [\"Cameligo\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/cameligo/cameligo\"], resolve, reject);\n      });\n    } else {\n      return import(\"./cameligo.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/clojure/clojure.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"clojure\",\n  extensions: [\".clj\", \".cljs\", \".cljc\", \".edn\"],\n  aliases: [\"clojure\", \"Clojure\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/clojure/clojure\"], resolve, reject);\n      });\n    } else {\n      return import(\"./clojure.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/coffee/coffee.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"coffeescript\",\n  extensions: [\".coffee\"],\n  aliases: [\"CoffeeScript\", \"coffeescript\", \"coffee\"],\n  mimetypes: [\"text/x-coffeescript\", \"text/coffeescript\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/coffee/coffee\"], resolve, reject);\n      });\n    } else {\n      return import(\"./coffee.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/cpp/cpp.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"c\",\n  extensions: [\".c\", \".h\"],\n  aliases: [\"C\", \"c\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/cpp/cpp\"], resolve, reject);\n      });\n    } else {\n      return import(\"./cpp.js\");\n    }\n  }\n});\nregisterLanguage({\n  id: \"cpp\",\n  extensions: [\".cpp\", \".cc\", \".cxx\", \".hpp\", \".hh\", \".hxx\"],\n  aliases: [\"C++\", \"Cpp\", \"cpp\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/cpp/cpp\"], resolve, reject);\n      });\n    } else {\n      return import(\"./cpp.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/csharp/csharp.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"csharp\",\n  extensions: [\".cs\", \".csx\", \".cake\"],\n  aliases: [\"C#\", \"csharp\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/csharp/csharp\"], resolve, reject);\n      });\n    } else {\n      return import(\"./csharp.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/csp/csp.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"csp\",\n  extensions: [],\n  aliases: [\"CSP\", \"csp\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/csp/csp\"], resolve, reject);\n      });\n    } else {\n      return import(\"./csp.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/css/css.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"css\",\n  extensions: [\".css\"],\n  aliases: [\"CSS\", \"css\"],\n  mimetypes: [\"text/css\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/css/css\"], resolve, reject);\n      });\n    } else {\n      return import(\"./css.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/cypher/cypher.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"cypher\",\n  extensions: [\".cypher\", \".cyp\"],\n  aliases: [\"Cypher\", \"OpenCypher\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/cypher/cypher\"], resolve, reject);\n      });\n    } else {\n      return import(\"./cypher.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/dart/dart.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"dart\",\n  extensions: [\".dart\"],\n  aliases: [\"Dart\", \"dart\"],\n  mimetypes: [\"text/x-dart-source\", \"text/x-dart\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/dart/dart\"], resolve, reject);\n      });\n    } else {\n      return import(\"./dart.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/dockerfile/dockerfile.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"dockerfile\",\n  extensions: [\".dockerfile\"],\n  filenames: [\"Dockerfile\"],\n  aliases: [\"Dockerfile\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/dockerfile/dockerfile\"], resolve, reject);\n      });\n    } else {\n      return import(\"./dockerfile.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/ecl/ecl.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"ecl\",\n  extensions: [\".ecl\"],\n  aliases: [\"ECL\", \"Ecl\", \"ecl\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/ecl/ecl\"], resolve, reject);\n      });\n    } else {\n      return import(\"./ecl.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/elixir/elixir.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"elixir\",\n  extensions: [\".ex\", \".exs\"],\n  aliases: [\"Elixir\", \"elixir\", \"ex\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/elixir/elixir\"], resolve, reject);\n      });\n    } else {\n      return import(\"./elixir.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/flow9/flow9.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"flow9\",\n  extensions: [\".flow\"],\n  aliases: [\"Flow9\", \"Flow\", \"flow9\", \"flow\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/flow9/flow9\"], resolve, reject);\n      });\n    } else {\n      return import(\"./flow9.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/fsharp/fsharp.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"fsharp\",\n  extensions: [\".fs\", \".fsi\", \".ml\", \".mli\", \".fsx\", \".fsscript\"],\n  aliases: [\"F#\", \"FSharp\", \"fsharp\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/fsharp/fsharp\"], resolve, reject);\n      });\n    } else {\n      return import(\"./fsharp.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/freemarker2/freemarker2.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"freemarker2\",\n  extensions: [\".ftl\", \".ftlh\", \".ftlx\"],\n  aliases: [\"FreeMarker2\", \"Apache FreeMarker2\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/freemarker2/freemarker2\"], resolve, reject);\n      }).then((m) => m.TagAngleInterpolationDollar);\n    } else {\n      return import(\"./freemarker2.js\").then((m) => m.TagAutoInterpolationDollar);\n    }\n  }\n});\nregisterLanguage({\n  id: \"freemarker2.tag-angle.interpolation-dollar\",\n  aliases: [\"FreeMarker2 (Angle/Dollar)\", \"Apache FreeMarker2 (Angle/Dollar)\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/freemarker2/freemarker2\"], resolve, reject);\n      }).then((m) => m.TagAngleInterpolationDollar);\n    } else {\n      return import(\"./freemarker2.js\").then((m) => m.TagAngleInterpolationDollar);\n    }\n  }\n});\nregisterLanguage({\n  id: \"freemarker2.tag-bracket.interpolation-dollar\",\n  aliases: [\"FreeMarker2 (Bracket/Dollar)\", \"Apache FreeMarker2 (Bracket/Dollar)\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/freemarker2/freemarker2\"], resolve, reject);\n      }).then((m) => m.TagBracketInterpolationDollar);\n    } else {\n      return import(\"./freemarker2.js\").then((m) => m.TagBracketInterpolationDollar);\n    }\n  }\n});\nregisterLanguage({\n  id: \"freemarker2.tag-angle.interpolation-bracket\",\n  aliases: [\"FreeMarker2 (Angle/Bracket)\", \"Apache FreeMarker2 (Angle/Bracket)\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/freemarker2/freemarker2\"], resolve, reject);\n      }).then((m) => m.TagAngleInterpolationBracket);\n    } else {\n      return import(\"./freemarker2.js\").then((m) => m.TagAngleInterpolationBracket);\n    }\n  }\n});\nregisterLanguage({\n  id: \"freemarker2.tag-bracket.interpolation-bracket\",\n  aliases: [\"FreeMarker2 (Bracket/Bracket)\", \"Apache FreeMarker2 (Bracket/Bracket)\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/freemarker2/freemarker2\"], resolve, reject);\n      }).then((m) => m.TagBracketInterpolationBracket);\n    } else {\n      return import(\"./freemarker2.js\").then((m) => m.TagBracketInterpolationBracket);\n    }\n  }\n});\nregisterLanguage({\n  id: \"freemarker2.tag-auto.interpolation-dollar\",\n  aliases: [\"FreeMarker2 (Auto/Dollar)\", \"Apache FreeMarker2 (Auto/Dollar)\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/freemarker2/freemarker2\"], resolve, reject);\n      }).then((m) => m.TagAutoInterpolationDollar);\n    } else {\n      return import(\"./freemarker2.js\").then((m) => m.TagAutoInterpolationDollar);\n    }\n  }\n});\nregisterLanguage({\n  id: \"freemarker2.tag-auto.interpolation-bracket\",\n  aliases: [\"FreeMarker2 (Auto/Bracket)\", \"Apache FreeMarker2 (Auto/Bracket)\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/freemarker2/freemarker2\"], resolve, reject);\n      }).then((m) => m.TagAutoInterpolationBracket);\n    } else {\n      return import(\"./freemarker2.js\").then((m) => m.TagAutoInterpolationBracket);\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/go/go.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"go\",\n  extensions: [\".go\"],\n  aliases: [\"Go\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/go/go\"], resolve, reject);\n      });\n    } else {\n      return import(\"./go.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/graphql/graphql.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"graphql\",\n  extensions: [\".graphql\", \".gql\"],\n  aliases: [\"GraphQL\", \"graphql\", \"gql\"],\n  mimetypes: [\"application/graphql\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/graphql/graphql\"], resolve, reject);\n      });\n    } else {\n      return import(\"./graphql.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/handlebars/handlebars.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"handlebars\",\n  extensions: [\".handlebars\", \".hbs\"],\n  aliases: [\"Handlebars\", \"handlebars\", \"hbs\"],\n  mimetypes: [\"text/x-handlebars-template\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/handlebars/handlebars\"], resolve, reject);\n      });\n    } else {\n      return import(\"./handlebars.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/hcl/hcl.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"hcl\",\n  extensions: [\".tf\", \".tfvars\", \".hcl\"],\n  aliases: [\"Terraform\", \"tf\", \"HCL\", \"hcl\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/hcl/hcl\"], resolve, reject);\n      });\n    } else {\n      return import(\"./hcl.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/html/html.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"html\",\n  extensions: [\".html\", \".htm\", \".shtml\", \".xhtml\", \".mdoc\", \".jsp\", \".asp\", \".aspx\", \".jshtm\"],\n  aliases: [\"HTML\", \"htm\", \"html\", \"xhtml\"],\n  mimetypes: [\"text/html\", \"text/x-jshtm\", \"text/template\", \"text/ng-template\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/html/html\"], resolve, reject);\n      });\n    } else {\n      return import(\"./html.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/ini/ini.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"ini\",\n  extensions: [\".ini\", \".properties\", \".gitconfig\"],\n  filenames: [\"config\", \".gitattributes\", \".gitconfig\", \".editorconfig\"],\n  aliases: [\"Ini\", \"ini\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/ini/ini\"], resolve, reject);\n      });\n    } else {\n      return import(\"./ini.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/java/java.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"java\",\n  extensions: [\".java\", \".jav\"],\n  aliases: [\"Java\", \"java\"],\n  mimetypes: [\"text/x-java-source\", \"text/x-java\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/java/java\"], resolve, reject);\n      });\n    } else {\n      return import(\"./java.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/javascript/javascript.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"javascript\",\n  extensions: [\".js\", \".es6\", \".jsx\", \".mjs\", \".cjs\"],\n  firstLine: \"^#!.*\\\\bnode\",\n  filenames: [\"jakefile\"],\n  aliases: [\"JavaScript\", \"javascript\", \"js\"],\n  mimetypes: [\"text/javascript\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/javascript/javascript\"], resolve, reject);\n      });\n    } else {\n      return import(\"./javascript.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/julia/julia.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"julia\",\n  extensions: [\".jl\"],\n  aliases: [\"julia\", \"Julia\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/julia/julia\"], resolve, reject);\n      });\n    } else {\n      return import(\"./julia.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/kotlin/kotlin.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"kotlin\",\n  extensions: [\".kt\", \".kts\"],\n  aliases: [\"Kotlin\", \"kotlin\"],\n  mimetypes: [\"text/x-kotlin-source\", \"text/x-kotlin\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/kotlin/kotlin\"], resolve, reject);\n      });\n    } else {\n      return import(\"./kotlin.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/less/less.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"less\",\n  extensions: [\".less\"],\n  aliases: [\"Less\", \"less\"],\n  mimetypes: [\"text/x-less\", \"text/less\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/less/less\"], resolve, reject);\n      });\n    } else {\n      return import(\"./less.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/lexon/lexon.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"lexon\",\n  extensions: [\".lex\"],\n  aliases: [\"Lexon\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/lexon/lexon\"], resolve, reject);\n      });\n    } else {\n      return import(\"./lexon.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/lua/lua.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"lua\",\n  extensions: [\".lua\"],\n  aliases: [\"Lua\", \"lua\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/lua/lua\"], resolve, reject);\n      });\n    } else {\n      return import(\"./lua.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/liquid/liquid.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"liquid\",\n  extensions: [\".liquid\", \".html.liquid\"],\n  aliases: [\"Liquid\", \"liquid\"],\n  mimetypes: [\"application/liquid\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/liquid/liquid\"], resolve, reject);\n      });\n    } else {\n      return import(\"./liquid.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/m3/m3.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"m3\",\n  extensions: [\".m3\", \".i3\", \".mg\", \".ig\"],\n  aliases: [\"Modula-3\", \"Modula3\", \"modula3\", \"m3\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/m3/m3\"], resolve, reject);\n      });\n    } else {\n      return import(\"./m3.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/markdown/markdown.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"markdown\",\n  extensions: [\".md\", \".markdown\", \".mdown\", \".mkdn\", \".mkd\", \".mdwn\", \".mdtxt\", \".mdtext\"],\n  aliases: [\"Markdown\", \"markdown\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/markdown/markdown\"], resolve, reject);\n      });\n    } else {\n      return import(\"./markdown.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/mdx/mdx.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"mdx\",\n  extensions: [\".mdx\"],\n  aliases: [\"MDX\", \"mdx\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/mdx/mdx\"], resolve, reject);\n      });\n    } else {\n      return import(\"./mdx.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/mips/mips.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"mips\",\n  extensions: [\".s\"],\n  aliases: [\"MIPS\", \"MIPS-V\"],\n  mimetypes: [\"text/x-mips\", \"text/mips\", \"text/plaintext\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/mips/mips\"], resolve, reject);\n      });\n    } else {\n      return import(\"./mips.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/msdax/msdax.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"msdax\",\n  extensions: [\".dax\", \".msdax\"],\n  aliases: [\"DAX\", \"MSDAX\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/msdax/msdax\"], resolve, reject);\n      });\n    } else {\n      return import(\"./msdax.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/mysql/mysql.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"mysql\",\n  extensions: [],\n  aliases: [\"MySQL\", \"mysql\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/mysql/mysql\"], resolve, reject);\n      });\n    } else {\n      return import(\"./mysql.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/objective-c/objective-c.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"objective-c\",\n  extensions: [\".m\"],\n  aliases: [\"Objective-C\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/objective-c/objective-c\"], resolve, reject);\n      });\n    } else {\n      return import(\"./objective-c.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/pascal/pascal.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"pascal\",\n  extensions: [\".pas\", \".p\", \".pp\"],\n  aliases: [\"Pascal\", \"pas\"],\n  mimetypes: [\"text/x-pascal-source\", \"text/x-pascal\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/pascal/pascal\"], resolve, reject);\n      });\n    } else {\n      return import(\"./pascal.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/pascaligo/pascaligo.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"pascaligo\",\n  extensions: [\".ligo\"],\n  aliases: [\"Pascaligo\", \"ligo\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/pascaligo/pascaligo\"], resolve, reject);\n      });\n    } else {\n      return import(\"./pascaligo.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/perl/perl.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"perl\",\n  extensions: [\".pl\", \".pm\"],\n  aliases: [\"Perl\", \"pl\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/perl/perl\"], resolve, reject);\n      });\n    } else {\n      return import(\"./perl.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/pgsql/pgsql.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"pgsql\",\n  extensions: [],\n  aliases: [\"PostgreSQL\", \"postgres\", \"pg\", \"postgre\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/pgsql/pgsql\"], resolve, reject);\n      });\n    } else {\n      return import(\"./pgsql.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/php/php.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"php\",\n  extensions: [\".php\", \".php4\", \".php5\", \".phtml\", \".ctp\"],\n  aliases: [\"PHP\", \"php\"],\n  mimetypes: [\"application/x-php\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/php/php\"], resolve, reject);\n      });\n    } else {\n      return import(\"./php.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/pla/pla.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"pla\",\n  extensions: [\".pla\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/pla/pla\"], resolve, reject);\n      });\n    } else {\n      return import(\"./pla.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/postiats/postiats.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"postiats\",\n  extensions: [\".dats\", \".sats\", \".hats\"],\n  aliases: [\"ATS\", \"ATS/Postiats\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/postiats/postiats\"], resolve, reject);\n      });\n    } else {\n      return import(\"./postiats.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/powerquery/powerquery.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"powerquery\",\n  extensions: [\".pq\", \".pqm\"],\n  aliases: [\"PQ\", \"M\", \"Power Query\", \"Power Query M\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/powerquery/powerquery\"], resolve, reject);\n      });\n    } else {\n      return import(\"./powerquery.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/powershell/powershell.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"powershell\",\n  extensions: [\".ps1\", \".psm1\", \".psd1\"],\n  aliases: [\"PowerShell\", \"powershell\", \"ps\", \"ps1\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/powershell/powershell\"], resolve, reject);\n      });\n    } else {\n      return import(\"./powershell.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/protobuf/protobuf.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"proto\",\n  extensions: [\".proto\"],\n  aliases: [\"protobuf\", \"Protocol Buffers\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/protobuf/protobuf\"], resolve, reject);\n      });\n    } else {\n      return import(\"./protobuf.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/pug/pug.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"pug\",\n  extensions: [\".jade\", \".pug\"],\n  aliases: [\"Pug\", \"Jade\", \"jade\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/pug/pug\"], resolve, reject);\n      });\n    } else {\n      return import(\"./pug.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/python/python.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"python\",\n  extensions: [\".py\", \".rpy\", \".pyw\", \".cpy\", \".gyp\", \".gypi\"],\n  aliases: [\"Python\", \"py\"],\n  firstLine: \"^#!/.*\\\\bpython[0-9.-]*\\\\b\",\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/python/python\"], resolve, reject);\n      });\n    } else {\n      return import(\"./python.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/qsharp/qsharp.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"qsharp\",\n  extensions: [\".qs\"],\n  aliases: [\"Q#\", \"qsharp\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/qsharp/qsharp\"], resolve, reject);\n      });\n    } else {\n      return import(\"./qsharp.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/r/r.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"r\",\n  extensions: [\".r\", \".rhistory\", \".rmd\", \".rprofile\", \".rt\"],\n  aliases: [\"R\", \"r\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/r/r\"], resolve, reject);\n      });\n    } else {\n      return import(\"./r.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/razor/razor.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"razor\",\n  extensions: [\".cshtml\"],\n  aliases: [\"Razor\", \"razor\"],\n  mimetypes: [\"text/x-cshtml\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/razor/razor\"], resolve, reject);\n      });\n    } else {\n      return import(\"./razor.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/redis/redis.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"redis\",\n  extensions: [\".redis\"],\n  aliases: [\"redis\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/redis/redis\"], resolve, reject);\n      });\n    } else {\n      return import(\"./redis.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/redshift/redshift.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"redshift\",\n  extensions: [],\n  aliases: [\"Redshift\", \"redshift\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/redshift/redshift\"], resolve, reject);\n      });\n    } else {\n      return import(\"./redshift.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/restructuredtext/restructuredtext.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"restructuredtext\",\n  extensions: [\".rst\"],\n  aliases: [\"reStructuredText\", \"restructuredtext\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/restructuredtext/restructuredtext\"], resolve, reject);\n      });\n    } else {\n      return import(\"./restructuredtext.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/ruby/ruby.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"ruby\",\n  extensions: [\".rb\", \".rbx\", \".rjs\", \".gemspec\", \".pp\"],\n  filenames: [\"rakefile\", \"Gemfile\"],\n  aliases: [\"Ruby\", \"rb\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/ruby/ruby\"], resolve, reject);\n      });\n    } else {\n      return import(\"./ruby.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/rust/rust.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"rust\",\n  extensions: [\".rs\", \".rlib\"],\n  aliases: [\"Rust\", \"rust\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/rust/rust\"], resolve, reject);\n      });\n    } else {\n      return import(\"./rust.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/sb/sb.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"sb\",\n  extensions: [\".sb\"],\n  aliases: [\"Small Basic\", \"sb\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/sb/sb\"], resolve, reject);\n      });\n    } else {\n      return import(\"./sb.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/scala/scala.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"scala\",\n  extensions: [\".scala\", \".sc\", \".sbt\"],\n  aliases: [\"Scala\", \"scala\", \"SBT\", \"Sbt\", \"sbt\", \"Dotty\", \"dotty\"],\n  mimetypes: [\"text/x-scala-source\", \"text/x-scala\", \"text/x-sbt\", \"text/x-dotty\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/scala/scala\"], resolve, reject);\n      });\n    } else {\n      return import(\"./scala.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/scheme/scheme.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"scheme\",\n  extensions: [\".scm\", \".ss\", \".sch\", \".rkt\"],\n  aliases: [\"scheme\", \"Scheme\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/scheme/scheme\"], resolve, reject);\n      });\n    } else {\n      return import(\"./scheme.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/scss/scss.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"scss\",\n  extensions: [\".scss\"],\n  aliases: [\"Sass\", \"sass\", \"scss\"],\n  mimetypes: [\"text/x-scss\", \"text/scss\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/scss/scss\"], resolve, reject);\n      });\n    } else {\n      return import(\"./scss.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/shell/shell.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"shell\",\n  extensions: [\".sh\", \".bash\"],\n  aliases: [\"Shell\", \"sh\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/shell/shell\"], resolve, reject);\n      });\n    } else {\n      return import(\"./shell.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/solidity/solidity.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"sol\",\n  extensions: [\".sol\"],\n  aliases: [\"sol\", \"solidity\", \"Solidity\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/solidity/solidity\"], resolve, reject);\n      });\n    } else {\n      return import(\"./solidity.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/sophia/sophia.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"aes\",\n  extensions: [\".aes\"],\n  aliases: [\"aes\", \"sophia\", \"Sophia\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/sophia/sophia\"], resolve, reject);\n      });\n    } else {\n      return import(\"./sophia.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/sparql/sparql.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"sparql\",\n  extensions: [\".rq\"],\n  aliases: [\"sparql\", \"SPARQL\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/sparql/sparql\"], resolve, reject);\n      });\n    } else {\n      return import(\"./sparql.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/sql/sql.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"sql\",\n  extensions: [\".sql\"],\n  aliases: [\"SQL\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/sql/sql\"], resolve, reject);\n      });\n    } else {\n      return import(\"./sql.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/st/st.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"st\",\n  extensions: [\".st\", \".iecst\", \".iecplc\", \".lc3lib\", \".TcPOU\", \".TcDUT\", \".TcGVL\", \".TcIO\"],\n  aliases: [\"StructuredText\", \"scl\", \"stl\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/st/st\"], resolve, reject);\n      });\n    } else {\n      return import(\"./st.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/swift/swift.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"swift\",\n  aliases: [\"Swift\", \"swift\"],\n  extensions: [\".swift\"],\n  mimetypes: [\"text/swift\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/swift/swift\"], resolve, reject);\n      });\n    } else {\n      return import(\"./swift.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/systemverilog/systemverilog.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"systemverilog\",\n  extensions: [\".sv\", \".svh\"],\n  aliases: [\"SV\", \"sv\", \"SystemVerilog\", \"systemverilog\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/systemverilog/systemverilog\"], resolve, reject);\n      });\n    } else {\n      return import(\"./systemverilog.js\");\n    }\n  }\n});\nregisterLanguage({\n  id: \"verilog\",\n  extensions: [\".v\", \".vh\"],\n  aliases: [\"V\", \"v\", \"Verilog\", \"verilog\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/systemverilog/systemverilog\"], resolve, reject);\n      });\n    } else {\n      return import(\"./systemverilog.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/tcl/tcl.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"tcl\",\n  extensions: [\".tcl\"],\n  aliases: [\"tcl\", \"Tcl\", \"tcltk\", \"TclTk\", \"tcl/tk\", \"Tcl/Tk\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/tcl/tcl\"], resolve, reject);\n      });\n    } else {\n      return import(\"./tcl.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/twig/twig.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"twig\",\n  extensions: [\".twig\"],\n  aliases: [\"Twig\", \"twig\"],\n  mimetypes: [\"text/x-twig\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/twig/twig\"], resolve, reject);\n      });\n    } else {\n      return import(\"./twig.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/typescript/typescript.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"typescript\",\n  extensions: [\".ts\", \".tsx\", \".cts\", \".mts\"],\n  aliases: [\"TypeScript\", \"ts\", \"typescript\"],\n  mimetypes: [\"text/typescript\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/typescript/typescript\"], resolve, reject);\n      });\n    } else {\n      return import(\"./typescript.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/typespec/typespec.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"typespec\",\n  extensions: [\".tsp\"],\n  aliases: [\"TypeSpec\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/typespec/typespec\"], resolve, reject);\n      });\n    } else {\n      return import(\"./typespec.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/vb/vb.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"vb\",\n  extensions: [\".vb\"],\n  aliases: [\"Visual Basic\", \"vb\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/vb/vb\"], resolve, reject);\n      });\n    } else {\n      return import(\"./vb.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/wgsl/wgsl.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"wgsl\",\n  extensions: [\".wgsl\"],\n  aliases: [\"WebGPU Shading Language\", \"WGSL\", \"wgsl\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/wgsl/wgsl\"], resolve, reject);\n      });\n    } else {\n      return import(\"./wgsl.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/xml/xml.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"xml\",\n  extensions: [\n    \".xml\",\n    \".xsd\",\n    \".dtd\",\n    \".ascx\",\n    \".csproj\",\n    \".config\",\n    \".props\",\n    \".targets\",\n    \".wxi\",\n    \".wxl\",\n    \".wxs\",\n    \".xaml\",\n    \".svg\",\n    \".svgz\",\n    \".opf\",\n    \".xslt\",\n    \".xsl\"\n  ],\n  firstLine: \"(\\\\<\\\\?xml.*)|(\\\\<svg)|(\\\\<\\\\!doctype\\\\s+svg)\",\n  aliases: [\"XML\", \"xml\"],\n  mimetypes: [\"text/xml\", \"application/xml\", \"application/xaml+xml\", \"application/xml-dtd\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/xml/xml\"], resolve, reject);\n      });\n    } else {\n      return import(\"./xml.js\");\n    }\n  }\n});\n", "/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\n\n// src/basic-languages/yaml/yaml.contribution.ts\nimport { registerLanguage } from \"../_.contribution.js\";\nregisterLanguage({\n  id: \"yaml\",\n  extensions: [\".yaml\", \".yml\"],\n  aliases: [\"YAML\", \"yaml\", \"YML\", \"yml\"],\n  mimetypes: [\"application/x-yaml\", \"text/x-yaml\"],\n  loader: () => {\n    if (false) {\n      return new Promise((resolve, reject) => {\n        __require([\"vs/basic-languages/yaml/yaml\"], resolve, reject);\n      });\n    } else {\n      return import(\"./yaml.js\");\n    }\n  }\n});\n", "import '../../editor/editor.api.js';\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n\n// src/fillers/monaco-editor-core.ts\nvar monaco_editor_core_exports = {};\n__reExport(monaco_editor_core_exports, monaco_editor_core_star);\nimport * as monaco_editor_core_star from \"../../editor/editor.api.js\";\n\n// src/language/css/monaco.contribution.ts\nvar LanguageServiceDefaultsImpl = class {\n  constructor(languageId, options, modeConfiguration) {\n    this._onDidChange = new monaco_editor_core_exports.Emitter();\n    this._languageId = languageId;\n    this.setOptions(options);\n    this.setModeConfiguration(modeConfiguration);\n  }\n  get onDidChange() {\n    return this._onDidChange.event;\n  }\n  get languageId() {\n    return this._languageId;\n  }\n  get modeConfiguration() {\n    return this._modeConfiguration;\n  }\n  get diagnosticsOptions() {\n    return this.options;\n  }\n  get options() {\n    return this._options;\n  }\n  setOptions(options) {\n    this._options = options || /* @__PURE__ */ Object.create(null);\n    this._onDidChange.fire(this);\n  }\n  setDiagnosticsOptions(options) {\n    this.setOptions(options);\n  }\n  setModeConfiguration(modeConfiguration) {\n    this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n    this._onDidChange.fire(this);\n  }\n};\nvar optionsDefault = {\n  validate: true,\n  lint: {\n    compatibleVendorPrefixes: \"ignore\",\n    vendorPrefix: \"warning\",\n    duplicateProperties: \"warning\",\n    emptyRules: \"warning\",\n    importStatement: \"ignore\",\n    boxModel: \"ignore\",\n    universalSelector: \"ignore\",\n    zeroUnits: \"ignore\",\n    fontFaceProperties: \"warning\",\n    hexColorLength: \"error\",\n    argumentsInColorFunction: \"error\",\n    unknownProperties: \"warning\",\n    ieHack: \"ignore\",\n    unknownVendorSpecificProperties: \"ignore\",\n    propertyIgnoredDueToDisplay: \"warning\",\n    important: \"ignore\",\n    float: \"ignore\",\n    idSelector: \"ignore\"\n  },\n  data: { useDefaultDataProvider: true },\n  format: {\n    newlineBetweenSelectors: true,\n    newlineBetweenRules: true,\n    spaceAroundSelectorSeparator: false,\n    braceStyle: \"collapse\",\n    maxPreserveNewLines: void 0,\n    preserveNewLines: true\n  }\n};\nvar modeConfigurationDefault = {\n  completionItems: true,\n  hovers: true,\n  documentSymbols: true,\n  definitions: true,\n  references: true,\n  documentHighlights: true,\n  rename: true,\n  colors: true,\n  foldingRanges: true,\n  diagnostics: true,\n  selectionRanges: true,\n  documentFormattingEdits: true,\n  documentRangeFormattingEdits: true\n};\nvar cssDefaults = new LanguageServiceDefaultsImpl(\n  \"css\",\n  optionsDefault,\n  modeConfigurationDefault\n);\nvar scssDefaults = new LanguageServiceDefaultsImpl(\n  \"scss\",\n  optionsDefault,\n  modeConfigurationDefault\n);\nvar lessDefaults = new LanguageServiceDefaultsImpl(\n  \"less\",\n  optionsDefault,\n  modeConfigurationDefault\n);\nmonaco_editor_core_exports.languages.css = { cssDefaults, lessDefaults, scssDefaults };\nfunction getMode() {\n  if (false) {\n    return new Promise((resolve, reject) => {\n      __require([\"vs/language/css/cssMode\"], resolve, reject);\n    });\n  } else {\n    return import(\"./cssMode.js\");\n  }\n}\nmonaco_editor_core_exports.languages.onLanguage(\"less\", () => {\n  getMode().then((mode) => mode.setupMode(lessDefaults));\n});\nmonaco_editor_core_exports.languages.onLanguage(\"scss\", () => {\n  getMode().then((mode) => mode.setupMode(scssDefaults));\n});\nmonaco_editor_core_exports.languages.onLanguage(\"css\", () => {\n  getMode().then((mode) => mode.setupMode(cssDefaults));\n});\nexport {\n  cssDefaults,\n  lessDefaults,\n  scssDefaults\n};\n", "import '../../editor/editor.api.js';\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n\n// src/fillers/monaco-editor-core.ts\nvar monaco_editor_core_exports = {};\n__reExport(monaco_editor_core_exports, monaco_editor_core_star);\nimport * as monaco_editor_core_star from \"../../editor/editor.api.js\";\n\n// src/language/html/monaco.contribution.ts\nvar LanguageServiceDefaultsImpl = class {\n  constructor(languageId, options, modeConfiguration) {\n    this._onDidChange = new monaco_editor_core_exports.Emitter();\n    this._languageId = languageId;\n    this.setOptions(options);\n    this.setModeConfiguration(modeConfiguration);\n  }\n  get onDidChange() {\n    return this._onDidChange.event;\n  }\n  get languageId() {\n    return this._languageId;\n  }\n  get options() {\n    return this._options;\n  }\n  get modeConfiguration() {\n    return this._modeConfiguration;\n  }\n  setOptions(options) {\n    this._options = options || /* @__PURE__ */ Object.create(null);\n    this._onDidChange.fire(this);\n  }\n  setModeConfiguration(modeConfiguration) {\n    this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n    this._onDidChange.fire(this);\n  }\n};\nvar formatDefaults = {\n  tabSize: 4,\n  insertSpaces: false,\n  wrapLineLength: 120,\n  unformatted: 'default\": \"a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',\n  contentUnformatted: \"pre\",\n  indentInnerHtml: false,\n  preserveNewLines: true,\n  maxPreserveNewLines: void 0,\n  indentHandlebars: false,\n  endWithNewline: false,\n  extraLiners: \"head, body, /html\",\n  wrapAttributes: \"auto\"\n};\nvar optionsDefault = {\n  format: formatDefaults,\n  suggest: {},\n  data: { useDefaultDataProvider: true }\n};\nfunction getConfigurationDefault(languageId) {\n  return {\n    completionItems: true,\n    hovers: true,\n    documentSymbols: true,\n    links: true,\n    documentHighlights: true,\n    rename: true,\n    colors: true,\n    foldingRanges: true,\n    selectionRanges: true,\n    diagnostics: languageId === htmlLanguageId,\n    // turned off for Razor and Handlebar\n    documentFormattingEdits: languageId === htmlLanguageId,\n    // turned off for Razor and Handlebar\n    documentRangeFormattingEdits: languageId === htmlLanguageId\n    // turned off for Razor and Handlebar\n  };\n}\nvar htmlLanguageId = \"html\";\nvar handlebarsLanguageId = \"handlebars\";\nvar razorLanguageId = \"razor\";\nvar htmlLanguageService = registerHTMLLanguageService(\n  htmlLanguageId,\n  optionsDefault,\n  getConfigurationDefault(htmlLanguageId)\n);\nvar htmlDefaults = htmlLanguageService.defaults;\nvar handlebarLanguageService = registerHTMLLanguageService(\n  handlebarsLanguageId,\n  optionsDefault,\n  getConfigurationDefault(handlebarsLanguageId)\n);\nvar handlebarDefaults = handlebarLanguageService.defaults;\nvar razorLanguageService = registerHTMLLanguageService(\n  razorLanguageId,\n  optionsDefault,\n  getConfigurationDefault(razorLanguageId)\n);\nvar razorDefaults = razorLanguageService.defaults;\nmonaco_editor_core_exports.languages.html = {\n  htmlDefaults,\n  razorDefaults,\n  handlebarDefaults,\n  htmlLanguageService,\n  handlebarLanguageService,\n  razorLanguageService,\n  registerHTMLLanguageService\n};\nfunction getMode() {\n  if (false) {\n    return new Promise((resolve, reject) => {\n      __require([\"vs/language/html/htmlMode\"], resolve, reject);\n    });\n  } else {\n    return import(\"./htmlMode.js\");\n  }\n}\nfunction registerHTMLLanguageService(languageId, options = optionsDefault, modeConfiguration = getConfigurationDefault(languageId)) {\n  const defaults = new LanguageServiceDefaultsImpl(languageId, options, modeConfiguration);\n  let mode;\n  const onLanguageListener = monaco_editor_core_exports.languages.onLanguage(languageId, async () => {\n    mode = (await getMode()).setupMode(defaults);\n  });\n  return {\n    defaults,\n    dispose() {\n      onLanguageListener.dispose();\n      mode?.dispose();\n      mode = void 0;\n    }\n  };\n}\nexport {\n  handlebarDefaults,\n  handlebarLanguageService,\n  htmlDefaults,\n  htmlLanguageService,\n  razorDefaults,\n  razorLanguageService,\n  registerHTMLLanguageService\n};\n", "import '../../editor/editor.api.js';\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.49.0-dev-20240506(b400f83fe3ac6a1780b7eed419dc4d83dbf32919)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n\n// src/fillers/monaco-editor-core.ts\nvar monaco_editor_core_exports = {};\n__reExport(monaco_editor_core_exports, monaco_editor_core_star);\nimport * as monaco_editor_core_star from \"../../editor/editor.api.js\";\n\n// src/language/json/monaco.contribution.ts\nvar LanguageServiceDefaultsImpl = class {\n  constructor(languageId, diagnosticsOptions, modeConfiguration) {\n    this._onDidChange = new monaco_editor_core_exports.Emitter();\n    this._languageId = languageId;\n    this.setDiagnosticsOptions(diagnosticsOptions);\n    this.setModeConfiguration(modeConfiguration);\n  }\n  get onDidChange() {\n    return this._onDidChange.event;\n  }\n  get languageId() {\n    return this._languageId;\n  }\n  get modeConfiguration() {\n    return this._modeConfiguration;\n  }\n  get diagnosticsOptions() {\n    return this._diagnosticsOptions;\n  }\n  setDiagnosticsOptions(options) {\n    this._diagnosticsOptions = options || /* @__PURE__ */ Object.create(null);\n    this._onDidChange.fire(this);\n  }\n  setModeConfiguration(modeConfiguration) {\n    this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n    this._onDidChange.fire(this);\n  }\n};\nvar diagnosticDefault = {\n  validate: true,\n  allowComments: true,\n  schemas: [],\n  enableSchemaRequest: false,\n  schemaRequest: \"warning\",\n  schemaValidation: \"warning\",\n  comments: \"error\",\n  trailingCommas: \"error\"\n};\nvar modeConfigurationDefault = {\n  documentFormattingEdits: true,\n  documentRangeFormattingEdits: true,\n  completionItems: true,\n  hovers: true,\n  documentSymbols: true,\n  tokens: true,\n  colors: true,\n  foldingRanges: true,\n  diagnostics: true,\n  selectionRanges: true\n};\nvar jsonDefaults = new LanguageServiceDefaultsImpl(\n  \"json\",\n  diagnosticDefault,\n  modeConfigurationDefault\n);\nvar getWorker = () => getMode().then((mode) => mode.getWorker());\nmonaco_editor_core_exports.languages.json = { jsonDefaults, getWorker };\nfunction getMode() {\n  if (false) {\n    return new Promise((resolve, reject) => {\n      __require([\"vs/language/json/jsonMode\"], resolve, reject);\n    });\n  } else {\n    return import(\"./jsonMode.js\");\n  }\n}\nmonaco_editor_core_exports.languages.register({\n  id: \"json\",\n  extensions: [\".json\", \".bowerrc\", \".jshintrc\", \".jscsrc\", \".eslintrc\", \".babelrc\", \".har\"],\n  aliases: [\"JSON\", \"json\"],\n  mimetypes: [\"application/json\"]\n});\nmonaco_editor_core_exports.languages.onLanguage(\"json\", () => {\n  getMode().then((mode) => mode.setupMode(jsonDefaults));\n});\nexport {\n  getWorker,\n  jsonDefaults\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 { Codicon } from '../../../../base/common/codicons.js';\nimport { AccessibleDiffViewerNext, AccessibleDiffViewerPrev, CollapseAllUnchangedRegions, ExitCompareMove, RevertHunkOrSelection, ShowAllUnchangedRegions, SwitchSide, ToggleCollapseUnchangedRegions, ToggleShowMovedCodeBlocks, ToggleUseInlineViewWhenSpaceIsLimited } from './commands.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { localize } from '../../../../nls.js';\nimport { MenuId, MenuRegistry, registerAction2 } from '../../../../platform/actions/common/actions.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyEqualsExpr, ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport './registrations.contribution.js';\nregisterAction2(ToggleCollapseUnchangedRegions);\nregisterAction2(ToggleShowMovedCodeBlocks);\nregisterAction2(ToggleUseInlineViewWhenSpaceIsLimited);\nMenuRegistry.appendMenuItem(MenuId.EditorTitle, {\n    command: {\n        id: new ToggleUseInlineViewWhenSpaceIsLimited().desc.id,\n        title: localize('useInlineViewWhenSpaceIsLimited', \"Use Inline View When Space Is Limited\"),\n        toggled: ContextKeyExpr.has('config.diffEditor.useInlineViewWhenSpaceIsLimited'),\n        precondition: ContextKeyExpr.has('isInDiffEditor'),\n    },\n    order: 11,\n    group: '1_diff',\n    when: ContextKeyExpr.and(EditorContextKeys.diffEditorRenderSideBySideInlineBreakpointReached, ContextKeyExpr.has('isInDiffEditor')),\n});\nMenuRegistry.appendMenuItem(MenuId.EditorTitle, {\n    command: {\n        id: new ToggleShowMovedCodeBlocks().desc.id,\n        title: localize('showMoves', \"Show Moved Code Blocks\"),\n        icon: Codicon.move,\n        toggled: ContextKeyEqualsExpr.create('config.diffEditor.experimental.showMoves', true),\n        precondition: ContextKeyExpr.has('isInDiffEditor'),\n    },\n    order: 10,\n    group: '1_diff',\n    when: ContextKeyExpr.has('isInDiffEditor'),\n});\nregisterAction2(RevertHunkOrSelection);\nfor (const ctx of [\n    { icon: Codicon.arrowRight, key: EditorContextKeys.diffEditorInlineMode.toNegated() },\n    { icon: Codicon.discard, key: EditorContextKeys.diffEditorInlineMode }\n]) {\n    MenuRegistry.appendMenuItem(MenuId.DiffEditorHunkToolbar, {\n        command: {\n            id: new RevertHunkOrSelection().desc.id,\n            title: localize('revertHunk', \"Revert Block\"),\n            icon: ctx.icon,\n        },\n        when: ContextKeyExpr.and(EditorContextKeys.diffEditorModifiedWritable, ctx.key),\n        order: 5,\n        group: 'primary',\n    });\n    MenuRegistry.appendMenuItem(MenuId.DiffEditorSelectionToolbar, {\n        command: {\n            id: new RevertHunkOrSelection().desc.id,\n            title: localize('revertSelection', \"Revert Selection\"),\n            icon: ctx.icon,\n        },\n        when: ContextKeyExpr.and(EditorContextKeys.diffEditorModifiedWritable, ctx.key),\n        order: 5,\n        group: 'primary',\n    });\n}\nregisterAction2(SwitchSide);\nregisterAction2(ExitCompareMove);\nregisterAction2(CollapseAllUnchangedRegions);\nregisterAction2(ShowAllUnchangedRegions);\nMenuRegistry.appendMenuItem(MenuId.EditorTitle, {\n    command: {\n        id: AccessibleDiffViewerNext.id,\n        title: localize('Open Accessible Diff Viewer', \"Open Accessible Diff Viewer\"),\n        precondition: ContextKeyExpr.has('isInDiffEditor'),\n    },\n    order: 10,\n    group: '2_diff',\n    when: ContextKeyExpr.and(EditorContextKeys.accessibleDiffViewerVisible.negate(), ContextKeyExpr.has('isInDiffEditor')),\n});\nCommandsRegistry.registerCommandAlias('editor.action.diffReview.next', AccessibleDiffViewerNext.id);\nregisterAction2(AccessibleDiffViewerNext);\nCommandsRegistry.registerCommandAlias('editor.action.diffReview.prev', AccessibleDiffViewerPrev.id);\nregisterAction2(AccessibleDiffViewerPrev);\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 { getActiveElement } from '../../../../base/browser/dom.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { EditorAction2 } from '../../editorExtensions.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { DiffEditorWidget } from './diffEditorWidget.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { localize2 } from '../../../../nls.js';\nimport { Action2, MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport './registrations.contribution.js';\nexport class ToggleCollapseUnchangedRegions extends Action2 {\n    constructor() {\n        super({\n            id: 'diffEditor.toggleCollapseUnchangedRegions',\n            title: localize2('toggleCollapseUnchangedRegions', 'Toggle Collapse Unchanged Regions'),\n            icon: Codicon.map,\n            toggled: ContextKeyExpr.has('config.diffEditor.hideUnchangedRegions.enabled'),\n            precondition: ContextKeyExpr.has('isInDiffEditor'),\n            menu: {\n                when: ContextKeyExpr.has('isInDiffEditor'),\n                id: MenuId.EditorTitle,\n                order: 22,\n                group: 'navigation',\n            },\n        });\n    }\n    run(accessor, ...args) {\n        const configurationService = accessor.get(IConfigurationService);\n        const newValue = !configurationService.getValue('diffEditor.hideUnchangedRegions.enabled');\n        configurationService.updateValue('diffEditor.hideUnchangedRegions.enabled', newValue);\n    }\n}\nexport class ToggleShowMovedCodeBlocks extends Action2 {\n    constructor() {\n        super({\n            id: 'diffEditor.toggleShowMovedCodeBlocks',\n            title: localize2('toggleShowMovedCodeBlocks', 'Toggle Show Moved Code Blocks'),\n            precondition: ContextKeyExpr.has('isInDiffEditor'),\n        });\n    }\n    run(accessor, ...args) {\n        const configurationService = accessor.get(IConfigurationService);\n        const newValue = !configurationService.getValue('diffEditor.experimental.showMoves');\n        configurationService.updateValue('diffEditor.experimental.showMoves', newValue);\n    }\n}\nexport class ToggleUseInlineViewWhenSpaceIsLimited extends Action2 {\n    constructor() {\n        super({\n            id: 'diffEditor.toggleUseInlineViewWhenSpaceIsLimited',\n            title: localize2('toggleUseInlineViewWhenSpaceIsLimited', 'Toggle Use Inline View When Space Is Limited'),\n            precondition: ContextKeyExpr.has('isInDiffEditor'),\n        });\n    }\n    run(accessor, ...args) {\n        const configurationService = accessor.get(IConfigurationService);\n        const newValue = !configurationService.getValue('diffEditor.useInlineViewWhenSpaceIsLimited');\n        configurationService.updateValue('diffEditor.useInlineViewWhenSpaceIsLimited', newValue);\n    }\n}\nconst diffEditorCategory = localize2('diffEditor', \"Diff Editor\");\nexport class SwitchSide extends EditorAction2 {\n    constructor() {\n        super({\n            id: 'diffEditor.switchSide',\n            title: localize2('switchSide', 'Switch Side'),\n            icon: Codicon.arrowSwap,\n            precondition: ContextKeyExpr.has('isInDiffEditor'),\n            f1: true,\n            category: diffEditorCategory,\n        });\n    }\n    runEditorCommand(accessor, editor, arg) {\n        const diffEditor = findFocusedDiffEditor(accessor);\n        if (diffEditor instanceof DiffEditorWidget) {\n            if (arg && arg.dryRun) {\n                return { destinationSelection: diffEditor.mapToOtherSide().destinationSelection };\n            }\n            else {\n                diffEditor.switchSide();\n            }\n        }\n        return undefined;\n    }\n}\nexport class ExitCompareMove extends EditorAction2 {\n    constructor() {\n        super({\n            id: 'diffEditor.exitCompareMove',\n            title: localize2('exitCompareMove', 'Exit Compare Move'),\n            icon: Codicon.close,\n            precondition: EditorContextKeys.comparingMovedCode,\n            f1: false,\n            category: diffEditorCategory,\n            keybinding: {\n                weight: 10000,\n                primary: 9 /* KeyCode.Escape */,\n            }\n        });\n    }\n    runEditorCommand(accessor, editor, ...args) {\n        const diffEditor = findFocusedDiffEditor(accessor);\n        if (diffEditor instanceof DiffEditorWidget) {\n            diffEditor.exitCompareMove();\n        }\n    }\n}\nexport class CollapseAllUnchangedRegions extends EditorAction2 {\n    constructor() {\n        super({\n            id: 'diffEditor.collapseAllUnchangedRegions',\n            title: localize2('collapseAllUnchangedRegions', 'Collapse All Unchanged Regions'),\n            icon: Codicon.fold,\n            precondition: ContextKeyExpr.has('isInDiffEditor'),\n            f1: true,\n            category: diffEditorCategory,\n        });\n    }\n    runEditorCommand(accessor, editor, ...args) {\n        const diffEditor = findFocusedDiffEditor(accessor);\n        if (diffEditor instanceof DiffEditorWidget) {\n            diffEditor.collapseAllUnchangedRegions();\n        }\n    }\n}\nexport class ShowAllUnchangedRegions extends EditorAction2 {\n    constructor() {\n        super({\n            id: 'diffEditor.showAllUnchangedRegions',\n            title: localize2('showAllUnchangedRegions', 'Show All Unchanged Regions'),\n            icon: Codicon.unfold,\n            precondition: ContextKeyExpr.has('isInDiffEditor'),\n            f1: true,\n            category: diffEditorCategory,\n        });\n    }\n    runEditorCommand(accessor, editor, ...args) {\n        const diffEditor = findFocusedDiffEditor(accessor);\n        if (diffEditor instanceof DiffEditorWidget) {\n            diffEditor.showAllUnchangedRegions();\n        }\n    }\n}\nexport class RevertHunkOrSelection extends Action2 {\n    constructor() {\n        super({\n            id: 'diffEditor.revert',\n            title: localize2('revert', 'Revert'),\n            f1: false,\n            category: diffEditorCategory,\n        });\n    }\n    run(accessor, arg) {\n        var _a;\n        const diffEditor = findDiffEditor(accessor, arg.originalUri, arg.modifiedUri);\n        if (diffEditor instanceof DiffEditorWidget) {\n            diffEditor.revertRangeMappings((_a = arg.mapping.innerChanges) !== null && _a !== void 0 ? _a : []);\n        }\n        return undefined;\n    }\n}\nconst accessibleDiffViewerCategory = localize2('accessibleDiffViewer', \"Accessible Diff Viewer\");\nexport class AccessibleDiffViewerNext extends Action2 {\n    constructor() {\n        super({\n            id: AccessibleDiffViewerNext.id,\n            title: localize2('editor.action.accessibleDiffViewer.next', 'Go to Next Difference'),\n            category: accessibleDiffViewerCategory,\n            precondition: ContextKeyExpr.has('isInDiffEditor'),\n            keybinding: {\n                primary: 65 /* KeyCode.F7 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            f1: true,\n        });\n    }\n    run(accessor) {\n        const diffEditor = findFocusedDiffEditor(accessor);\n        diffEditor === null || diffEditor === void 0 ? void 0 : diffEditor.accessibleDiffViewerNext();\n    }\n}\nAccessibleDiffViewerNext.id = 'editor.action.accessibleDiffViewer.next';\nexport class AccessibleDiffViewerPrev extends Action2 {\n    constructor() {\n        super({\n            id: AccessibleDiffViewerPrev.id,\n            title: localize2('editor.action.accessibleDiffViewer.prev', 'Go to Previous Difference'),\n            category: accessibleDiffViewerCategory,\n            precondition: ContextKeyExpr.has('isInDiffEditor'),\n            keybinding: {\n                primary: 1024 /* KeyMod.Shift */ | 65 /* KeyCode.F7 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            f1: true,\n        });\n    }\n    run(accessor) {\n        const diffEditor = findFocusedDiffEditor(accessor);\n        diffEditor === null || diffEditor === void 0 ? void 0 : diffEditor.accessibleDiffViewerPrev();\n    }\n}\nAccessibleDiffViewerPrev.id = 'editor.action.accessibleDiffViewer.prev';\nexport function findDiffEditor(accessor, originalUri, modifiedUri) {\n    const codeEditorService = accessor.get(ICodeEditorService);\n    const diffEditors = codeEditorService.listDiffEditors();\n    return diffEditors.find(diffEditor => {\n        var _a, _b;\n        const modified = diffEditor.getModifiedEditor();\n        const original = diffEditor.getOriginalEditor();\n        return modified && ((_a = modified.getModel()) === null || _a === void 0 ? void 0 : _a.uri.toString()) === modifiedUri.toString()\n            && original && ((_b = original.getModel()) === null || _b === void 0 ? void 0 : _b.uri.toString()) === originalUri.toString();\n    }) || null;\n}\nexport function findFocusedDiffEditor(accessor) {\n    const codeEditorService = accessor.get(ICodeEditorService);\n    const diffEditors = codeEditorService.listDiffEditors();\n    const activeElement = getActiveElement();\n    if (activeElement) {\n        for (const d of diffEditors) {\n            const container = d.getContainerDomNode();\n            if (isElementOrParentOf(container, activeElement)) {\n                return d;\n            }\n        }\n    }\n    return null;\n}\nfunction isElementOrParentOf(elementOrParent, element) {\n    let e = element;\n    while (e) {\n        if (e === elementOrParent) {\n            return true;\n        }\n        e = e.parentElement;\n    }\n    return false;\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 SelectionAnchorController_1;\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport './anchorSelect.css';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { localize } from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nexport const SelectionAnchorSet = new RawContextKey('selectionAnchorSet', false);\nlet SelectionAnchorController = SelectionAnchorController_1 = class SelectionAnchorController {\n    static get(editor) {\n        return editor.getContribution(SelectionAnchorController_1.ID);\n    }\n    constructor(editor, contextKeyService) {\n        this.editor = editor;\n        this.selectionAnchorSetContextKey = SelectionAnchorSet.bindTo(contextKeyService);\n        this.modelChangeListener = editor.onDidChangeModel(() => this.selectionAnchorSetContextKey.reset());\n    }\n    setSelectionAnchor() {\n        if (this.editor.hasModel()) {\n            const position = this.editor.getPosition();\n            this.editor.changeDecorations((accessor) => {\n                if (this.decorationId) {\n                    accessor.removeDecoration(this.decorationId);\n                }\n                this.decorationId = accessor.addDecoration(Selection.fromPositions(position, position), {\n                    description: 'selection-anchor',\n                    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n                    hoverMessage: new MarkdownString().appendText(localize('selectionAnchor', \"Selection Anchor\")),\n                    className: 'selection-anchor'\n                });\n            });\n            this.selectionAnchorSetContextKey.set(!!this.decorationId);\n            alert(localize('anchorSet', \"Anchor set at {0}:{1}\", position.lineNumber, position.column));\n        }\n    }\n    goToSelectionAnchor() {\n        if (this.editor.hasModel() && this.decorationId) {\n            const anchorPosition = this.editor.getModel().getDecorationRange(this.decorationId);\n            if (anchorPosition) {\n                this.editor.setPosition(anchorPosition.getStartPosition());\n            }\n        }\n    }\n    selectFromAnchorToCursor() {\n        if (this.editor.hasModel() && this.decorationId) {\n            const start = this.editor.getModel().getDecorationRange(this.decorationId);\n            if (start) {\n                const end = this.editor.getPosition();\n                this.editor.setSelection(Selection.fromPositions(start.getStartPosition(), end));\n                this.cancelSelectionAnchor();\n            }\n        }\n    }\n    cancelSelectionAnchor() {\n        if (this.decorationId) {\n            const decorationId = this.decorationId;\n            this.editor.changeDecorations((accessor) => {\n                accessor.removeDecoration(decorationId);\n                this.decorationId = undefined;\n            });\n            this.selectionAnchorSetContextKey.set(false);\n        }\n    }\n    dispose() {\n        this.cancelSelectionAnchor();\n        this.modelChangeListener.dispose();\n    }\n};\nSelectionAnchorController.ID = 'editor.contrib.selectionAnchorController';\nSelectionAnchorController = SelectionAnchorController_1 = __decorate([\n    __param(1, IContextKeyService)\n], SelectionAnchorController);\nclass SetSelectionAnchor extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.setSelectionAnchor',\n            label: localize('setSelectionAnchor', \"Set Selection Anchor\"),\n            alias: 'Set Selection Anchor',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 32 /* KeyCode.KeyB */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    async run(_accessor, editor) {\n        var _a;\n        (_a = SelectionAnchorController.get(editor)) === null || _a === void 0 ? void 0 : _a.setSelectionAnchor();\n    }\n}\nclass GoToSelectionAnchor extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.goToSelectionAnchor',\n            label: localize('goToSelectionAnchor', \"Go to Selection Anchor\"),\n            alias: 'Go to Selection Anchor',\n            precondition: SelectionAnchorSet,\n        });\n    }\n    async run(_accessor, editor) {\n        var _a;\n        (_a = SelectionAnchorController.get(editor)) === null || _a === void 0 ? void 0 : _a.goToSelectionAnchor();\n    }\n}\nclass SelectFromAnchorToCursor extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.selectFromAnchorToCursor',\n            label: localize('selectFromAnchorToCursor', \"Select from Anchor to Cursor\"),\n            alias: 'Select from Anchor to Cursor',\n            precondition: SelectionAnchorSet,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    async run(_accessor, editor) {\n        var _a;\n        (_a = SelectionAnchorController.get(editor)) === null || _a === void 0 ? void 0 : _a.selectFromAnchorToCursor();\n    }\n}\nclass CancelSelectionAnchor extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.cancelSelectionAnchor',\n            label: localize('cancelSelectionAnchor', \"Cancel Selection Anchor\"),\n            alias: 'Cancel Selection Anchor',\n            precondition: SelectionAnchorSet,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 9 /* KeyCode.Escape */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    async run(_accessor, editor) {\n        var _a;\n        (_a = SelectionAnchorController.get(editor)) === null || _a === void 0 ? void 0 : _a.cancelSelectionAnchor();\n    }\n}\nregisterEditorContribution(SelectionAnchorController.ID, SelectionAnchorController, 4 /* EditorContributionInstantiation.Lazy */);\nregisterEditorAction(SetSelectionAnchor);\nregisterEditorAction(GoToSelectionAnchor);\nregisterEditorAction(SelectFromAnchorToCursor);\nregisterEditorAction(CancelSelectionAnchor);\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 { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport './bracketMatching.css';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { OverviewRulerLane } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nconst overviewRulerBracketMatchForeground = registerColor('editorOverviewRuler.bracketMatchForeground', { dark: '#A0A0A0', light: '#A0A0A0', hcDark: '#A0A0A0', hcLight: '#A0A0A0' }, nls.localize('overviewRulerBracketMatchForeground', 'Overview ruler marker color for matching brackets.'));\nclass JumpToBracketAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.jumpToBracket',\n            label: nls.localize('smartSelect.jumpBracket', \"Go to Bracket\"),\n            alias: 'Go to Bracket',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 93 /* KeyCode.Backslash */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor, editor) {\n        var _a;\n        (_a = BracketMatchingController.get(editor)) === null || _a === void 0 ? void 0 : _a.jumpToBracket();\n    }\n}\nclass SelectToBracketAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.selectToBracket',\n            label: nls.localize('smartSelect.selectToBracket', \"Select to Bracket\"),\n            alias: 'Select to Bracket',\n            precondition: undefined,\n            metadata: {\n                description: nls.localize2('smartSelect.selectToBracketDescription', \"Select the text inside and including the brackets or curly braces\"),\n                args: [{\n                        name: 'args',\n                        schema: {\n                            type: 'object',\n                            properties: {\n                                'selectBrackets': {\n                                    type: 'boolean',\n                                    default: true\n                                }\n                            },\n                        }\n                    }]\n            }\n        });\n    }\n    run(accessor, editor, args) {\n        var _a;\n        let selectBrackets = true;\n        if (args && args.selectBrackets === false) {\n            selectBrackets = false;\n        }\n        (_a = BracketMatchingController.get(editor)) === null || _a === void 0 ? void 0 : _a.selectToBracket(selectBrackets);\n    }\n}\nclass RemoveBracketsAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.removeBrackets',\n            label: nls.localize('smartSelect.removeBrackets', \"Remove Brackets\"),\n            alias: 'Remove Brackets',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 1 /* KeyCode.Backspace */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor, editor) {\n        var _a;\n        (_a = BracketMatchingController.get(editor)) === null || _a === void 0 ? void 0 : _a.removeBrackets(this.id);\n    }\n}\nclass BracketsData {\n    constructor(position, brackets, options) {\n        this.position = position;\n        this.brackets = brackets;\n        this.options = options;\n    }\n}\nexport class BracketMatchingController extends Disposable {\n    static get(editor) {\n        return editor.getContribution(BracketMatchingController.ID);\n    }\n    constructor(editor) {\n        super();\n        this._editor = editor;\n        this._lastBracketsData = [];\n        this._lastVersionId = 0;\n        this._decorations = this._editor.createDecorationsCollection();\n        this._updateBracketsSoon = this._register(new RunOnceScheduler(() => this._updateBrackets(), 50));\n        this._matchBrackets = this._editor.getOption(72 /* EditorOption.matchBrackets */);\n        this._updateBracketsSoon.schedule();\n        this._register(editor.onDidChangeCursorPosition((e) => {\n            if (this._matchBrackets === 'never') {\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            this._updateBracketsSoon.schedule();\n        }));\n        this._register(editor.onDidChangeModelContent((e) => {\n            this._updateBracketsSoon.schedule();\n        }));\n        this._register(editor.onDidChangeModel((e) => {\n            this._lastBracketsData = [];\n            this._updateBracketsSoon.schedule();\n        }));\n        this._register(editor.onDidChangeModelLanguageConfiguration((e) => {\n            this._lastBracketsData = [];\n            this._updateBracketsSoon.schedule();\n        }));\n        this._register(editor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(72 /* EditorOption.matchBrackets */)) {\n                this._matchBrackets = this._editor.getOption(72 /* EditorOption.matchBrackets */);\n                this._decorations.clear();\n                this._lastBracketsData = [];\n                this._lastVersionId = 0;\n                this._updateBracketsSoon.schedule();\n            }\n        }));\n        this._register(editor.onDidBlurEditorWidget(() => {\n            this._updateBracketsSoon.schedule();\n        }));\n        this._register(editor.onDidFocusEditorWidget(() => {\n            this._updateBracketsSoon.schedule();\n        }));\n    }\n    jumpToBracket() {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const model = this._editor.getModel();\n        const newSelections = this._editor.getSelections().map(selection => {\n            const position = selection.getStartPosition();\n            // find matching brackets if position is on a bracket\n            const brackets = model.bracketPairs.matchBracket(position);\n            let newCursorPosition = null;\n            if (brackets) {\n                if (brackets[0].containsPosition(position) && !brackets[1].containsPosition(position)) {\n                    newCursorPosition = brackets[1].getStartPosition();\n                }\n                else if (brackets[1].containsPosition(position)) {\n                    newCursorPosition = brackets[0].getStartPosition();\n                }\n            }\n            else {\n                // find the enclosing brackets if the position isn't on a matching bracket\n                const enclosingBrackets = model.bracketPairs.findEnclosingBrackets(position);\n                if (enclosingBrackets) {\n                    newCursorPosition = enclosingBrackets[1].getStartPosition();\n                }\n                else {\n                    // no enclosing brackets, try the very first next bracket\n                    const nextBracket = model.bracketPairs.findNextBracket(position);\n                    if (nextBracket && nextBracket.range) {\n                        newCursorPosition = nextBracket.range.getStartPosition();\n                    }\n                }\n            }\n            if (newCursorPosition) {\n                return new Selection(newCursorPosition.lineNumber, newCursorPosition.column, newCursorPosition.lineNumber, newCursorPosition.column);\n            }\n            return new Selection(position.lineNumber, position.column, position.lineNumber, position.column);\n        });\n        this._editor.setSelections(newSelections);\n        this._editor.revealRange(newSelections[0]);\n    }\n    selectToBracket(selectBrackets) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const model = this._editor.getModel();\n        const newSelections = [];\n        this._editor.getSelections().forEach(selection => {\n            const position = selection.getStartPosition();\n            let brackets = model.bracketPairs.matchBracket(position);\n            if (!brackets) {\n                brackets = model.bracketPairs.findEnclosingBrackets(position);\n                if (!brackets) {\n                    const nextBracket = model.bracketPairs.findNextBracket(position);\n                    if (nextBracket && nextBracket.range) {\n                        brackets = model.bracketPairs.matchBracket(nextBracket.range.getStartPosition());\n                    }\n                }\n            }\n            let selectFrom = null;\n            let selectTo = null;\n            if (brackets) {\n                brackets.sort(Range.compareRangesUsingStarts);\n                const [open, close] = brackets;\n                selectFrom = selectBrackets ? open.getStartPosition() : open.getEndPosition();\n                selectTo = selectBrackets ? close.getEndPosition() : close.getStartPosition();\n                if (close.containsPosition(position)) {\n                    // select backwards if the cursor was on the closing bracket\n                    const tmp = selectFrom;\n                    selectFrom = selectTo;\n                    selectTo = tmp;\n                }\n            }\n            if (selectFrom && selectTo) {\n                newSelections.push(new Selection(selectFrom.lineNumber, selectFrom.column, selectTo.lineNumber, selectTo.column));\n            }\n        });\n        if (newSelections.length > 0) {\n            this._editor.setSelections(newSelections);\n            this._editor.revealRange(newSelections[0]);\n        }\n    }\n    removeBrackets(editSource) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const model = this._editor.getModel();\n        this._editor.getSelections().forEach((selection) => {\n            const position = selection.getPosition();\n            let brackets = model.bracketPairs.matchBracket(position);\n            if (!brackets) {\n                brackets = model.bracketPairs.findEnclosingBrackets(position);\n            }\n            if (brackets) {\n                this._editor.pushUndoStop();\n                this._editor.executeEdits(editSource, [\n                    { range: brackets[0], text: '' },\n                    { range: brackets[1], text: '' }\n                ]);\n                this._editor.pushUndoStop();\n            }\n        });\n    }\n    _updateBrackets() {\n        if (this._matchBrackets === 'never') {\n            return;\n        }\n        this._recomputeBrackets();\n        const newDecorations = [];\n        let newDecorationsLen = 0;\n        for (const bracketData of this._lastBracketsData) {\n            const brackets = bracketData.brackets;\n            if (brackets) {\n                newDecorations[newDecorationsLen++] = { range: brackets[0], options: bracketData.options };\n                newDecorations[newDecorationsLen++] = { range: brackets[1], options: bracketData.options };\n            }\n        }\n        this._decorations.set(newDecorations);\n    }\n    _recomputeBrackets() {\n        if (!this._editor.hasModel() || !this._editor.hasWidgetFocus()) {\n            // no model or no focus => no brackets!\n            this._lastBracketsData = [];\n            this._lastVersionId = 0;\n            return;\n        }\n        const selections = this._editor.getSelections();\n        if (selections.length > 100) {\n            // no bracket matching for high numbers of selections\n            this._lastBracketsData = [];\n            this._lastVersionId = 0;\n            return;\n        }\n        const model = this._editor.getModel();\n        const versionId = model.getVersionId();\n        let previousData = [];\n        if (this._lastVersionId === versionId) {\n            // use the previous data only if the model is at the same version id\n            previousData = this._lastBracketsData;\n        }\n        const positions = [];\n        let positionsLen = 0;\n        for (let i = 0, len = selections.length; i < len; i++) {\n            const selection = selections[i];\n            if (selection.isEmpty()) {\n                // will bracket match a cursor only if the selection is collapsed\n                positions[positionsLen++] = selection.getStartPosition();\n            }\n        }\n        // sort positions for `previousData` cache hits\n        if (positions.length > 1) {\n            positions.sort(Position.compare);\n        }\n        const newData = [];\n        let newDataLen = 0;\n        let previousIndex = 0;\n        const previousLen = previousData.length;\n        for (let i = 0, len = positions.length; i < len; i++) {\n            const position = positions[i];\n            while (previousIndex < previousLen && previousData[previousIndex].position.isBefore(position)) {\n                previousIndex++;\n            }\n            if (previousIndex < previousLen && previousData[previousIndex].position.equals(position)) {\n                newData[newDataLen++] = previousData[previousIndex];\n            }\n            else {\n                let brackets = model.bracketPairs.matchBracket(position, 20 /* give at most 20ms to compute */);\n                let options = BracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;\n                if (!brackets && this._matchBrackets === 'always') {\n                    brackets = model.bracketPairs.findEnclosingBrackets(position, 20 /* give at most 20ms to compute */);\n                    options = BracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER;\n                }\n                newData[newDataLen++] = new BracketsData(position, brackets, options);\n            }\n        }\n        this._lastBracketsData = newData;\n        this._lastVersionId = versionId;\n    }\n}\nBracketMatchingController.ID = 'editor.contrib.bracketMatchingController';\nBracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER = ModelDecorationOptions.register({\n    description: 'bracket-match-overview',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    className: 'bracket-match',\n    overviewRuler: {\n        color: themeColorFromId(overviewRulerBracketMatchForeground),\n        position: OverviewRulerLane.Center\n    }\n});\nBracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER = ModelDecorationOptions.register({\n    description: 'bracket-match-no-overview',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    className: 'bracket-match'\n});\nregisterEditorContribution(BracketMatchingController.ID, BracketMatchingController, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nregisterEditorAction(SelectToBracketAction);\nregisterEditorAction(JumpToBracketAction);\nregisterEditorAction(RemoveBracketsAction);\n// Go to menu\nMenuRegistry.appendMenuItem(MenuId.MenubarGoMenu, {\n    group: '5_infile_nav',\n    command: {\n        id: 'editor.action.jumpToBracket',\n        title: nls.localize({ key: 'miGoToBracket', comment: ['&& denotes a mnemonic'] }, \"Go to &&Bracket\")\n    },\n    order: 2\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 { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { MoveCaretCommand } from './moveCaretCommand.js';\nimport * as nls from '../../../../nls.js';\nclass MoveCaretAction extends EditorAction {\n    constructor(left, opts) {\n        super(opts);\n        this.left = left;\n    }\n    run(accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const commands = [];\n        const selections = editor.getSelections();\n        for (const selection of selections) {\n            commands.push(new MoveCaretCommand(selection, this.left));\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, commands);\n        editor.pushUndoStop();\n    }\n}\nclass MoveCaretLeftAction extends MoveCaretAction {\n    constructor() {\n        super(true, {\n            id: 'editor.action.moveCarretLeftAction',\n            label: nls.localize('caret.moveLeft', \"Move Selected Text Left\"),\n            alias: 'Move Selected Text Left',\n            precondition: EditorContextKeys.writable\n        });\n    }\n}\nclass MoveCaretRightAction extends MoveCaretAction {\n    constructor() {\n        super(false, {\n            id: 'editor.action.moveCarretRightAction',\n            label: nls.localize('caret.moveRight', \"Move Selected Text Right\"),\n            alias: 'Move Selected Text Right',\n            precondition: EditorContextKeys.writable\n        });\n    }\n}\nregisterEditorAction(MoveCaretLeftAction);\nregisterEditorAction(MoveCaretRightAction);\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 { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nexport class MoveCaretCommand {\n    constructor(selection, isMovingLeft) {\n        this._selection = selection;\n        this._isMovingLeft = isMovingLeft;\n    }\n    getEditOperations(model, builder) {\n        if (this._selection.startLineNumber !== this._selection.endLineNumber || this._selection.isEmpty()) {\n            return;\n        }\n        const lineNumber = this._selection.startLineNumber;\n        const startColumn = this._selection.startColumn;\n        const endColumn = this._selection.endColumn;\n        if (this._isMovingLeft && startColumn === 1) {\n            return;\n        }\n        if (!this._isMovingLeft && endColumn === model.getLineMaxColumn(lineNumber)) {\n            return;\n        }\n        if (this._isMovingLeft) {\n            const rangeBefore = new Range(lineNumber, startColumn - 1, lineNumber, startColumn);\n            const charBefore = model.getValueInRange(rangeBefore);\n            builder.addEditOperation(rangeBefore, null);\n            builder.addEditOperation(new Range(lineNumber, endColumn, lineNumber, endColumn), charBefore);\n        }\n        else {\n            const rangeAfter = new Range(lineNumber, endColumn, lineNumber, endColumn + 1);\n            const charAfter = model.getValueInRange(rangeAfter);\n            builder.addEditOperation(rangeAfter, null);\n            builder.addEditOperation(new Range(lineNumber, startColumn, lineNumber, startColumn), charAfter);\n        }\n    }\n    computeCursorState(model, helper) {\n        if (this._isMovingLeft) {\n            return new Selection(this._selection.startLineNumber, this._selection.startColumn - 1, this._selection.endLineNumber, this._selection.endColumn - 1);\n        }\n        else {\n            return new Selection(this._selection.startLineNumber, this._selection.startColumn + 1, this._selection.endLineNumber, this._selection.endColumn + 1);\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 { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { ReplaceCommand } from '../../../common/commands/replaceCommand.js';\nimport { MoveOperations } from '../../../common/cursor/cursorMoveOperations.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nclass TransposeLettersAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.transposeLetters',\n            label: nls.localize('transposeLetters.label', \"Transpose Letters\"),\n            alias: 'Transpose Letters',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 0,\n                mac: {\n                    primary: 256 /* KeyMod.WinCtrl */ | 50 /* KeyCode.KeyT */\n                },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const model = editor.getModel();\n        const commands = [];\n        const selections = editor.getSelections();\n        for (const selection of selections) {\n            if (!selection.isEmpty()) {\n                continue;\n            }\n            const lineNumber = selection.startLineNumber;\n            const column = selection.startColumn;\n            const lastColumn = model.getLineMaxColumn(lineNumber);\n            if (lineNumber === 1 && (column === 1 || (column === 2 && lastColumn === 2))) {\n                // at beginning of file, nothing to do\n                continue;\n            }\n            // handle special case: when at end of line, transpose left two chars\n            // otherwise, transpose left and right chars\n            const endPosition = (column === lastColumn) ?\n                selection.getPosition() :\n                MoveOperations.rightPosition(model, selection.getPosition().lineNumber, selection.getPosition().column);\n            const middlePosition = MoveOperations.leftPosition(model, endPosition);\n            const beginPosition = MoveOperations.leftPosition(model, middlePosition);\n            const leftChar = model.getValueInRange(Range.fromPositions(beginPosition, middlePosition));\n            const rightChar = model.getValueInRange(Range.fromPositions(middlePosition, endPosition));\n            const replaceRange = Range.fromPositions(beginPosition, endPosition);\n            commands.push(new ReplaceCommand(replaceRange, rightChar + leftChar));\n        }\n        if (commands.length > 0) {\n            editor.pushUndoStop();\n            editor.executeCommands(this.id, commands);\n            editor.pushUndoStop();\n        }\n    }\n}\nregisterEditorAction(TransposeLettersAction);\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 browser from '../../../../base/browser/browser.js';\nimport { getActiveDocument } from '../../../../base/browser/dom.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { CopyOptions, InMemoryClipboardMetadataManager } from '../../../browser/controller/textAreaInput.js';\nimport { EditorAction, MultiCommand, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { CopyPasteController } from '../../dropOrPasteInto/browser/copyPasteController.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nconst CLIPBOARD_CONTEXT_MENU_GROUP = '9_cutcopypaste';\nconst supportsCut = (platform.isNative || document.queryCommandSupported('cut'));\nconst supportsCopy = (platform.isNative || document.queryCommandSupported('copy'));\n// Firefox only supports navigator.clipboard.readText() in browser extensions.\n// See https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText#Browser_compatibility\n// When loading over http, navigator.clipboard can be undefined. See https://github.com/microsoft/monaco-editor/issues/2313\nconst supportsPaste = (typeof navigator.clipboard === 'undefined' || browser.isFirefox) ? document.queryCommandSupported('paste') : true;\nfunction registerCommand(command) {\n    command.register();\n    return command;\n}\nexport const CutAction = supportsCut ? registerCommand(new MultiCommand({\n    id: 'editor.action.clipboardCutAction',\n    precondition: undefined,\n    kbOpts: (\n    // Do not bind cut keybindings in the browser,\n    // since browsers do that for us and it avoids security prompts\n    platform.isNative ? {\n        primary: 2048 /* KeyMod.CtrlCmd */ | 54 /* KeyCode.KeyX */,\n        win: { primary: 2048 /* KeyMod.CtrlCmd */ | 54 /* KeyCode.KeyX */, secondary: [1024 /* KeyMod.Shift */ | 20 /* KeyCode.Delete */] },\n        weight: 100 /* KeybindingWeight.EditorContrib */\n    } : undefined),\n    menuOpts: [{\n            menuId: MenuId.MenubarEditMenu,\n            group: '2_ccp',\n            title: nls.localize({ key: 'miCut', comment: ['&& denotes a mnemonic'] }, \"Cu&&t\"),\n            order: 1\n        }, {\n            menuId: MenuId.EditorContext,\n            group: CLIPBOARD_CONTEXT_MENU_GROUP,\n            title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n            when: EditorContextKeys.writable,\n            order: 1,\n        }, {\n            menuId: MenuId.CommandPalette,\n            group: '',\n            title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n            order: 1\n        }, {\n            menuId: MenuId.SimpleEditorContext,\n            group: CLIPBOARD_CONTEXT_MENU_GROUP,\n            title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n            when: EditorContextKeys.writable,\n            order: 1,\n        }]\n})) : undefined;\nexport const CopyAction = supportsCopy ? registerCommand(new MultiCommand({\n    id: 'editor.action.clipboardCopyAction',\n    precondition: undefined,\n    kbOpts: (\n    // Do not bind copy keybindings in the browser,\n    // since browsers do that for us and it avoids security prompts\n    platform.isNative ? {\n        primary: 2048 /* KeyMod.CtrlCmd */ | 33 /* KeyCode.KeyC */,\n        win: { primary: 2048 /* KeyMod.CtrlCmd */ | 33 /* KeyCode.KeyC */, secondary: [2048 /* KeyMod.CtrlCmd */ | 19 /* KeyCode.Insert */] },\n        weight: 100 /* KeybindingWeight.EditorContrib */\n    } : undefined),\n    menuOpts: [{\n            menuId: MenuId.MenubarEditMenu,\n            group: '2_ccp',\n            title: nls.localize({ key: 'miCopy', comment: ['&& denotes a mnemonic'] }, \"&&Copy\"),\n            order: 2\n        }, {\n            menuId: MenuId.EditorContext,\n            group: CLIPBOARD_CONTEXT_MENU_GROUP,\n            title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n            order: 2,\n        }, {\n            menuId: MenuId.CommandPalette,\n            group: '',\n            title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n            order: 1\n        }, {\n            menuId: MenuId.SimpleEditorContext,\n            group: CLIPBOARD_CONTEXT_MENU_GROUP,\n            title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n            order: 2,\n        }]\n})) : undefined;\nMenuRegistry.appendMenuItem(MenuId.MenubarEditMenu, { submenu: MenuId.MenubarCopy, title: nls.localize2('copy as', \"Copy As\"), group: '2_ccp', order: 3 });\nMenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextCopy, title: nls.localize2('copy as', \"Copy As\"), group: CLIPBOARD_CONTEXT_MENU_GROUP, order: 3 });\nMenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextShare, title: nls.localize2('share', \"Share\"), group: '11_share', order: -1, when: ContextKeyExpr.and(ContextKeyExpr.notEquals('resourceScheme', 'output'), EditorContextKeys.editorTextFocus) });\nMenuRegistry.appendMenuItem(MenuId.EditorTitleContext, { submenu: MenuId.EditorTitleContextShare, title: nls.localize2('share', \"Share\"), group: '11_share', order: -1 });\nMenuRegistry.appendMenuItem(MenuId.ExplorerContext, { submenu: MenuId.ExplorerContextShare, title: nls.localize2('share', \"Share\"), group: '11_share', order: -1 });\nexport const PasteAction = supportsPaste ? registerCommand(new MultiCommand({\n    id: 'editor.action.clipboardPasteAction',\n    precondition: undefined,\n    kbOpts: (\n    // Do not bind paste keybindings in the browser,\n    // since browsers do that for us and it avoids security prompts\n    platform.isNative ? {\n        primary: 2048 /* KeyMod.CtrlCmd */ | 52 /* KeyCode.KeyV */,\n        win: { primary: 2048 /* KeyMod.CtrlCmd */ | 52 /* KeyCode.KeyV */, secondary: [1024 /* KeyMod.Shift */ | 19 /* KeyCode.Insert */] },\n        linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 52 /* KeyCode.KeyV */, secondary: [1024 /* KeyMod.Shift */ | 19 /* KeyCode.Insert */] },\n        weight: 100 /* KeybindingWeight.EditorContrib */\n    } : undefined),\n    menuOpts: [{\n            menuId: MenuId.MenubarEditMenu,\n            group: '2_ccp',\n            title: nls.localize({ key: 'miPaste', comment: ['&& denotes a mnemonic'] }, \"&&Paste\"),\n            order: 4\n        }, {\n            menuId: MenuId.EditorContext,\n            group: CLIPBOARD_CONTEXT_MENU_GROUP,\n            title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n            when: EditorContextKeys.writable,\n            order: 4,\n        }, {\n            menuId: MenuId.CommandPalette,\n            group: '',\n            title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n            order: 1\n        }, {\n            menuId: MenuId.SimpleEditorContext,\n            group: CLIPBOARD_CONTEXT_MENU_GROUP,\n            title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n            when: EditorContextKeys.writable,\n            order: 4,\n        }]\n})) : undefined;\nclass ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.clipboardCopyWithSyntaxHighlightingAction',\n            label: nls.localize('actions.clipboard.copyWithSyntaxHighlightingLabel', \"Copy With Syntax Highlighting\"),\n            alias: 'Copy With Syntax Highlighting',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 0,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const emptySelectionClipboard = editor.getOption(37 /* EditorOption.emptySelectionClipboard */);\n        if (!emptySelectionClipboard && editor.getSelection().isEmpty()) {\n            return;\n        }\n        CopyOptions.forceCopyWithSyntaxHighlighting = true;\n        editor.focus();\n        editor.getContainerDomNode().ownerDocument.execCommand('copy');\n        CopyOptions.forceCopyWithSyntaxHighlighting = false;\n    }\n}\nfunction registerExecCommandImpl(target, browserCommand) {\n    if (!target) {\n        return;\n    }\n    // 1. handle case when focus is in editor.\n    target.addImplementation(10000, 'code-editor', (accessor, args) => {\n        // Only if editor text focus (i.e. not if editor has widget focus).\n        const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n        if (focusedEditor && focusedEditor.hasTextFocus()) {\n            // Do not execute if there is no selection and empty selection clipboard is off\n            const emptySelectionClipboard = focusedEditor.getOption(37 /* EditorOption.emptySelectionClipboard */);\n            const selection = focusedEditor.getSelection();\n            if (selection && selection.isEmpty() && !emptySelectionClipboard) {\n                return true;\n            }\n            focusedEditor.getContainerDomNode().ownerDocument.execCommand(browserCommand);\n            return true;\n        }\n        return false;\n    });\n    // 2. (default) handle case when focus is somewhere else.\n    target.addImplementation(0, 'generic-dom', (accessor, args) => {\n        getActiveDocument().execCommand(browserCommand);\n        return true;\n    });\n}\nregisterExecCommandImpl(CutAction, 'cut');\nregisterExecCommandImpl(CopyAction, 'copy');\nif (PasteAction) {\n    // 1. Paste: handle case when focus is in editor.\n    PasteAction.addImplementation(10000, 'code-editor', (accessor, args) => {\n        var _a, _b;\n        const codeEditorService = accessor.get(ICodeEditorService);\n        const clipboardService = accessor.get(IClipboardService);\n        // Only if editor text focus (i.e. not if editor has widget focus).\n        const focusedEditor = codeEditorService.getFocusedCodeEditor();\n        if (focusedEditor && focusedEditor.hasTextFocus()) {\n            const result = focusedEditor.getContainerDomNode().ownerDocument.execCommand('paste');\n            if (result) {\n                return (_b = (_a = CopyPasteController.get(focusedEditor)) === null || _a === void 0 ? void 0 : _a.finishedPaste()) !== null && _b !== void 0 ? _b : Promise.resolve();\n            }\n            else if (platform.isWeb) {\n                // Use the clipboard service if document.execCommand('paste') was not successful\n                return (async () => {\n                    const clipboardText = await clipboardService.readText();\n                    if (clipboardText !== '') {\n                        const metadata = InMemoryClipboardMetadataManager.INSTANCE.get(clipboardText);\n                        let pasteOnNewLine = false;\n                        let multicursorText = null;\n                        let mode = null;\n                        if (metadata) {\n                            pasteOnNewLine = (focusedEditor.getOption(37 /* EditorOption.emptySelectionClipboard */) && !!metadata.isFromEmptySelection);\n                            multicursorText = (typeof metadata.multicursorText !== 'undefined' ? metadata.multicursorText : null);\n                            mode = metadata.mode;\n                        }\n                        focusedEditor.trigger('keyboard', \"paste\" /* Handler.Paste */, {\n                            text: clipboardText,\n                            pasteOnNewLine,\n                            multicursorText,\n                            mode\n                        });\n                    }\n                })();\n            }\n            return true;\n        }\n        return false;\n    });\n    // 2. Paste: (default) handle case when focus is somewhere else.\n    PasteAction.addImplementation(0, 'generic-dom', (accessor, args) => {\n        getActiveDocument().execCommand('paste');\n        return true;\n    });\n}\nif (supportsCopy) {\n    registerEditorAction(ExecCommandCopyWithSyntaxHighlightingAction);\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 CopyPasteController_1;\nimport { addDisposableListener, getActiveDocument } from '../../../../base/browser/dom.js';\nimport { coalesce } from '../../../../base/common/arrays.js';\nimport { createCancelablePromise, raceCancellation } from '../../../../base/common/async.js';\nimport { UriList, createStringDataTransferItem, matchesMimeType } from '../../../../base/common/dataTransfer.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Mimes } from '../../../../base/common/mime.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { ClipboardEventUtils } from '../../../browser/controller/textAreaInput.js';\nimport { toExternalVSDataTransfer, toVSDataTransfer } from '../../../browser/dnd.js';\nimport { IBulkEditService } from '../../../browser/services/bulkEditService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { DocumentPasteTriggerKind } from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { DefaultTextPasteOrDropEditProvider } from './defaultProviders.js';\nimport { createCombinedWorkspaceEdit, sortEditsByYieldTo } from './edit.js';\nimport { EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { InlineProgressManager } from '../../inlineProgress/browser/inlineProgress.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { localize } from '../../../../nls.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IProgressService } from '../../../../platform/progress/common/progress.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { PostEditWidgetManager } from './postEditWidget.js';\nexport const changePasteTypeCommandId = 'editor.changePasteType';\nexport const pasteWidgetVisibleCtx = new RawContextKey('pasteWidgetVisible', false, localize('pasteWidgetVisible', \"Whether the paste widget is showing\"));\nconst vscodeClipboardMime = 'application/vnd.code.copyMetadata';\nlet CopyPasteController = CopyPasteController_1 = class CopyPasteController extends Disposable {\n    static get(editor) {\n        return editor.getContribution(CopyPasteController_1.ID);\n    }\n    constructor(editor, instantiationService, _bulkEditService, _clipboardService, _languageFeaturesService, _quickInputService, _progressService) {\n        super();\n        this._bulkEditService = _bulkEditService;\n        this._clipboardService = _clipboardService;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._quickInputService = _quickInputService;\n        this._progressService = _progressService;\n        this._editor = editor;\n        const container = editor.getContainerDomNode();\n        this._register(addDisposableListener(container, 'copy', e => this.handleCopy(e)));\n        this._register(addDisposableListener(container, 'cut', e => this.handleCopy(e)));\n        this._register(addDisposableListener(container, 'paste', e => this.handlePaste(e), true));\n        this._pasteProgressManager = this._register(new InlineProgressManager('pasteIntoEditor', editor, instantiationService));\n        this._postPasteWidgetManager = this._register(instantiationService.createInstance(PostEditWidgetManager, 'pasteIntoEditor', editor, pasteWidgetVisibleCtx, { id: changePasteTypeCommandId, label: localize('postPasteWidgetTitle', \"Show paste options...\") }));\n    }\n    changePasteType() {\n        this._postPasteWidgetManager.tryShowSelector();\n    }\n    pasteAs(preferred) {\n        this._editor.focus();\n        try {\n            this._pasteAsActionContext = { preferred };\n            getActiveDocument().execCommand('paste');\n        }\n        finally {\n            this._pasteAsActionContext = undefined;\n        }\n    }\n    clearWidgets() {\n        this._postPasteWidgetManager.clear();\n    }\n    isPasteAsEnabled() {\n        return this._editor.getOption(85 /* EditorOption.pasteAs */).enabled\n            && !this._editor.getOption(91 /* EditorOption.readOnly */);\n    }\n    async finishedPaste() {\n        await this._currentPasteOperation;\n    }\n    handleCopy(e) {\n        var _a, _b;\n        if (!this._editor.hasTextFocus()) {\n            return;\n        }\n        if (platform.isWeb) {\n            // Explicitly clear the web resources clipboard.\n            // This is needed because on web, the browser clipboard is faked out using an in-memory store.\n            // This means the resources clipboard is not properly updated when copying from the editor.\n            this._clipboardService.writeResources([]);\n        }\n        if (!e.clipboardData || !this.isPasteAsEnabled()) {\n            return;\n        }\n        const model = this._editor.getModel();\n        const selections = this._editor.getSelections();\n        if (!model || !(selections === null || selections === void 0 ? void 0 : selections.length)) {\n            return;\n        }\n        const enableEmptySelectionClipboard = this._editor.getOption(37 /* EditorOption.emptySelectionClipboard */);\n        let ranges = selections;\n        const wasFromEmptySelection = selections.length === 1 && selections[0].isEmpty();\n        if (wasFromEmptySelection) {\n            if (!enableEmptySelectionClipboard) {\n                return;\n            }\n            ranges = [new Range(ranges[0].startLineNumber, 1, ranges[0].startLineNumber, 1 + model.getLineLength(ranges[0].startLineNumber))];\n        }\n        const toCopy = (_a = this._editor._getViewModel()) === null || _a === void 0 ? void 0 : _a.getPlainTextToCopy(selections, enableEmptySelectionClipboard, platform.isWindows);\n        const multicursorText = Array.isArray(toCopy) ? toCopy : null;\n        const defaultPastePayload = {\n            multicursorText,\n            pasteOnNewLine: wasFromEmptySelection,\n            mode: null\n        };\n        const providers = this._languageFeaturesService.documentPasteEditProvider\n            .ordered(model)\n            .filter(x => !!x.prepareDocumentPaste);\n        if (!providers.length) {\n            this.setCopyMetadata(e.clipboardData, { defaultPastePayload });\n            return;\n        }\n        const dataTransfer = toVSDataTransfer(e.clipboardData);\n        const providerCopyMimeTypes = providers.flatMap(x => { var _a; return (_a = x.copyMimeTypes) !== null && _a !== void 0 ? _a : []; });\n        // Save off a handle pointing to data that VS Code maintains.\n        const handle = generateUuid();\n        this.setCopyMetadata(e.clipboardData, {\n            id: handle,\n            providerCopyMimeTypes,\n            defaultPastePayload\n        });\n        const promise = createCancelablePromise(async (token) => {\n            const results = coalesce(await Promise.all(providers.map(async (provider) => {\n                try {\n                    return await provider.prepareDocumentPaste(model, ranges, dataTransfer, token);\n                }\n                catch (err) {\n                    console.error(err);\n                    return undefined;\n                }\n            })));\n            // Values from higher priority providers should overwrite values from lower priority ones.\n            // Reverse the array to so that the calls to `replace` below will do this\n            results.reverse();\n            for (const result of results) {\n                for (const [mime, value] of result) {\n                    dataTransfer.replace(mime, value);\n                }\n            }\n            return dataTransfer;\n        });\n        (_b = CopyPasteController_1._currentCopyOperation) === null || _b === void 0 ? void 0 : _b.dataTransferPromise.cancel();\n        CopyPasteController_1._currentCopyOperation = { handle: handle, dataTransferPromise: promise };\n    }\n    async handlePaste(e) {\n        var _a, _b, _c, _d;\n        if (!e.clipboardData || !this._editor.hasTextFocus()) {\n            return;\n        }\n        (_a = MessageController.get(this._editor)) === null || _a === void 0 ? void 0 : _a.closeMessage();\n        (_b = this._currentPasteOperation) === null || _b === void 0 ? void 0 : _b.cancel();\n        this._currentPasteOperation = undefined;\n        const model = this._editor.getModel();\n        const selections = this._editor.getSelections();\n        if (!(selections === null || selections === void 0 ? void 0 : selections.length) || !model) {\n            return;\n        }\n        if (!this.isPasteAsEnabled()\n            && !this._pasteAsActionContext // Still enable if paste as was explicitly requested\n        ) {\n            return;\n        }\n        const metadata = this.fetchCopyMetadata(e);\n        const dataTransfer = toExternalVSDataTransfer(e.clipboardData);\n        dataTransfer.delete(vscodeClipboardMime);\n        const allPotentialMimeTypes = [\n            ...e.clipboardData.types,\n            ...(_c = metadata === null || metadata === void 0 ? void 0 : metadata.providerCopyMimeTypes) !== null && _c !== void 0 ? _c : [],\n            // TODO: always adds `uri-list` because this get set if there are resources in the system clipboard.\n            // However we can only check the system clipboard async. For this early check, just add it in.\n            // We filter providers again once we have the final dataTransfer we will use.\n            Mimes.uriList,\n        ];\n        const allProviders = this._languageFeaturesService.documentPasteEditProvider\n            .ordered(model)\n            .filter(provider => {\n            var _a, _b;\n            // Filter out providers that don't match the requested paste types\n            const preference = (_a = this._pasteAsActionContext) === null || _a === void 0 ? void 0 : _a.preferred;\n            if (preference) {\n                if (provider.providedPasteEditKinds && !this.providerMatchesPreference(provider, preference)) {\n                    return false;\n                }\n            }\n            // And providers that don't handle any of mime types in the clipboard\n            return (_b = provider.pasteMimeTypes) === null || _b === void 0 ? void 0 : _b.some(type => matchesMimeType(type, allPotentialMimeTypes));\n        });\n        if (!allProviders.length) {\n            if ((_d = this._pasteAsActionContext) === null || _d === void 0 ? void 0 : _d.preferred) {\n                this.showPasteAsNoEditMessage(selections, this._pasteAsActionContext.preferred);\n            }\n            return;\n        }\n        // Prevent the editor's default paste handler from running.\n        // Note that after this point, we are fully responsible for handling paste.\n        // If we can't provider a paste for any reason, we need to explicitly delegate pasting back to the editor.\n        e.preventDefault();\n        e.stopImmediatePropagation();\n        if (this._pasteAsActionContext) {\n            this.showPasteAsPick(this._pasteAsActionContext.preferred, allProviders, selections, dataTransfer, metadata);\n        }\n        else {\n            this.doPasteInline(allProviders, selections, dataTransfer, metadata, e);\n        }\n    }\n    showPasteAsNoEditMessage(selections, preference) {\n        var _a;\n        (_a = MessageController.get(this._editor)) === null || _a === void 0 ? void 0 : _a.showMessage(localize('pasteAsError', \"No paste edits for '{0}' found\", preference instanceof HierarchicalKind ? preference.value : preference.providerId), selections[0].getStartPosition());\n    }\n    doPasteInline(allProviders, selections, dataTransfer, metadata, clipboardEvent) {\n        const p = createCancelablePromise(async (token) => {\n            const editor = this._editor;\n            if (!editor.hasModel()) {\n                return;\n            }\n            const model = editor.getModel();\n            const tokenSource = new EditorStateCancellationTokenSource(editor, 1 /* CodeEditorStateFlag.Value */ | 2 /* CodeEditorStateFlag.Selection */, undefined, token);\n            try {\n                await this.mergeInDataFromCopy(dataTransfer, metadata, tokenSource.token);\n                if (tokenSource.token.isCancellationRequested) {\n                    return;\n                }\n                const supportedProviders = allProviders.filter(provider => this.isSupportedPasteProvider(provider, dataTransfer));\n                if (!supportedProviders.length\n                    || (supportedProviders.length === 1 && supportedProviders[0] instanceof DefaultTextPasteOrDropEditProvider) // Only our default text provider is active\n                ) {\n                    return this.applyDefaultPasteHandler(dataTransfer, metadata, tokenSource.token, clipboardEvent);\n                }\n                const context = {\n                    triggerKind: DocumentPasteTriggerKind.Automatic,\n                };\n                const providerEdits = await this.getPasteEdits(supportedProviders, dataTransfer, model, selections, context, tokenSource.token);\n                if (tokenSource.token.isCancellationRequested) {\n                    return;\n                }\n                // If the only edit returned is our default text edit, use the default paste handler\n                if (providerEdits.length === 1 && providerEdits[0].provider instanceof DefaultTextPasteOrDropEditProvider) {\n                    return this.applyDefaultPasteHandler(dataTransfer, metadata, tokenSource.token, clipboardEvent);\n                }\n                if (providerEdits.length) {\n                    const canShowWidget = editor.getOption(85 /* EditorOption.pasteAs */).showPasteSelector === 'afterPaste';\n                    return this._postPasteWidgetManager.applyEditAndShowIfNeeded(selections, { activeEditIndex: 0, allEdits: providerEdits }, canShowWidget, async (edit, token) => {\n                        var _a, _b;\n                        const resolved = await ((_b = (_a = edit.provider).resolveDocumentPasteEdit) === null || _b === void 0 ? void 0 : _b.call(_a, edit, token));\n                        if (resolved) {\n                            edit.additionalEdit = resolved.additionalEdit;\n                        }\n                        return edit;\n                    }, tokenSource.token);\n                }\n                await this.applyDefaultPasteHandler(dataTransfer, metadata, tokenSource.token, clipboardEvent);\n            }\n            finally {\n                tokenSource.dispose();\n                if (this._currentPasteOperation === p) {\n                    this._currentPasteOperation = undefined;\n                }\n            }\n        });\n        this._pasteProgressManager.showWhile(selections[0].getEndPosition(), localize('pasteIntoEditorProgress', \"Running paste handlers. Click to cancel\"), p);\n        this._currentPasteOperation = p;\n    }\n    showPasteAsPick(preference, allProviders, selections, dataTransfer, metadata) {\n        const p = createCancelablePromise(async (token) => {\n            const editor = this._editor;\n            if (!editor.hasModel()) {\n                return;\n            }\n            const model = editor.getModel();\n            const tokenSource = new EditorStateCancellationTokenSource(editor, 1 /* CodeEditorStateFlag.Value */ | 2 /* CodeEditorStateFlag.Selection */, undefined, token);\n            try {\n                await this.mergeInDataFromCopy(dataTransfer, metadata, tokenSource.token);\n                if (tokenSource.token.isCancellationRequested) {\n                    return;\n                }\n                // Filter out any providers the don't match the full data transfer we will send them.\n                let supportedProviders = allProviders.filter(provider => this.isSupportedPasteProvider(provider, dataTransfer, preference));\n                if (preference) {\n                    // We are looking for a specific edit\n                    supportedProviders = supportedProviders.filter(provider => this.providerMatchesPreference(provider, preference));\n                }\n                const context = {\n                    triggerKind: DocumentPasteTriggerKind.PasteAs,\n                    only: preference && preference instanceof HierarchicalKind ? preference : undefined,\n                };\n                let providerEdits = await this.getPasteEdits(supportedProviders, dataTransfer, model, selections, context, tokenSource.token);\n                if (tokenSource.token.isCancellationRequested) {\n                    return;\n                }\n                // Filter out any edits that don't match the requested kind\n                if (preference) {\n                    providerEdits = providerEdits.filter(edit => {\n                        if (preference instanceof HierarchicalKind) {\n                            return preference.contains(edit.kind);\n                        }\n                        else {\n                            return preference.providerId === edit.provider.id;\n                        }\n                    });\n                }\n                if (!providerEdits.length) {\n                    if (context.only) {\n                        this.showPasteAsNoEditMessage(selections, context.only);\n                    }\n                    return;\n                }\n                let pickedEdit;\n                if (preference) {\n                    pickedEdit = providerEdits.at(0);\n                }\n                else {\n                    const selected = await this._quickInputService.pick(providerEdits.map((edit) => {\n                        var _a;\n                        return ({\n                            label: edit.title,\n                            description: (_a = edit.kind) === null || _a === void 0 ? void 0 : _a.value,\n                            edit,\n                        });\n                    }), {\n                        placeHolder: localize('pasteAsPickerPlaceholder', \"Select Paste Action\"),\n                    });\n                    pickedEdit = selected === null || selected === void 0 ? void 0 : selected.edit;\n                }\n                if (!pickedEdit) {\n                    return;\n                }\n                const combinedWorkspaceEdit = createCombinedWorkspaceEdit(model.uri, selections, pickedEdit);\n                await this._bulkEditService.apply(combinedWorkspaceEdit, { editor: this._editor });\n            }\n            finally {\n                tokenSource.dispose();\n                if (this._currentPasteOperation === p) {\n                    this._currentPasteOperation = undefined;\n                }\n            }\n        });\n        this._progressService.withProgress({\n            location: 10 /* ProgressLocation.Window */,\n            title: localize('pasteAsProgress', \"Running paste handlers\"),\n        }, () => p);\n    }\n    setCopyMetadata(dataTransfer, metadata) {\n        dataTransfer.setData(vscodeClipboardMime, JSON.stringify(metadata));\n    }\n    fetchCopyMetadata(e) {\n        var _a;\n        if (!e.clipboardData) {\n            return;\n        }\n        // Prefer using the clipboard data we saved off\n        const rawMetadata = e.clipboardData.getData(vscodeClipboardMime);\n        if (rawMetadata) {\n            try {\n                return JSON.parse(rawMetadata);\n            }\n            catch (_b) {\n                return undefined;\n            }\n        }\n        // Otherwise try to extract the generic text editor metadata\n        const [_, metadata] = ClipboardEventUtils.getTextData(e.clipboardData);\n        if (metadata) {\n            return {\n                defaultPastePayload: {\n                    mode: metadata.mode,\n                    multicursorText: (_a = metadata.multicursorText) !== null && _a !== void 0 ? _a : null,\n                    pasteOnNewLine: !!metadata.isFromEmptySelection,\n                },\n            };\n        }\n        return undefined;\n    }\n    async mergeInDataFromCopy(dataTransfer, metadata, token) {\n        var _a;\n        if ((metadata === null || metadata === void 0 ? void 0 : metadata.id) && ((_a = CopyPasteController_1._currentCopyOperation) === null || _a === void 0 ? void 0 : _a.handle) === metadata.id) {\n            const toMergeDataTransfer = await CopyPasteController_1._currentCopyOperation.dataTransferPromise;\n            if (token.isCancellationRequested) {\n                return;\n            }\n            for (const [key, value] of toMergeDataTransfer) {\n                dataTransfer.replace(key, value);\n            }\n        }\n        if (!dataTransfer.has(Mimes.uriList)) {\n            const resources = await this._clipboardService.readResources();\n            if (token.isCancellationRequested) {\n                return;\n            }\n            if (resources.length) {\n                dataTransfer.append(Mimes.uriList, createStringDataTransferItem(UriList.create(resources)));\n            }\n        }\n    }\n    async getPasteEdits(providers, dataTransfer, model, selections, context, token) {\n        const results = await raceCancellation(Promise.all(providers.map(async (provider) => {\n            var _a, _b;\n            try {\n                const edits = await ((_a = provider.provideDocumentPasteEdits) === null || _a === void 0 ? void 0 : _a.call(provider, model, selections, dataTransfer, context, token));\n                // TODO: dispose of edits\n                return (_b = edits === null || edits === void 0 ? void 0 : edits.edits) === null || _b === void 0 ? void 0 : _b.map(edit => ({ ...edit, provider }));\n            }\n            catch (err) {\n                console.error(err);\n            }\n            return undefined;\n        })), token);\n        const edits = coalesce(results !== null && results !== void 0 ? results : []).flat().filter(edit => {\n            return !context.only || context.only.contains(edit.kind);\n        });\n        return sortEditsByYieldTo(edits);\n    }\n    async applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent) {\n        var _a, _b, _c, _d;\n        const textDataTransfer = (_a = dataTransfer.get(Mimes.text)) !== null && _a !== void 0 ? _a : dataTransfer.get('text');\n        const text = (_b = (await (textDataTransfer === null || textDataTransfer === void 0 ? void 0 : textDataTransfer.asString()))) !== null && _b !== void 0 ? _b : '';\n        if (token.isCancellationRequested) {\n            return;\n        }\n        const payload = {\n            clipboardEvent,\n            text,\n            pasteOnNewLine: (_c = metadata === null || metadata === void 0 ? void 0 : metadata.defaultPastePayload.pasteOnNewLine) !== null && _c !== void 0 ? _c : false,\n            multicursorText: (_d = metadata === null || metadata === void 0 ? void 0 : metadata.defaultPastePayload.multicursorText) !== null && _d !== void 0 ? _d : null,\n            mode: null,\n        };\n        this._editor.trigger('keyboard', \"paste\" /* Handler.Paste */, payload);\n    }\n    /**\n     * Filter out providers if they:\n     * - Don't handle any of the data transfer types we have\n     * - Don't match the preferred paste kind\n     */\n    isSupportedPasteProvider(provider, dataTransfer, preference) {\n        var _a;\n        if (!((_a = provider.pasteMimeTypes) === null || _a === void 0 ? void 0 : _a.some(type => dataTransfer.matches(type)))) {\n            return false;\n        }\n        return !preference || this.providerMatchesPreference(provider, preference);\n    }\n    providerMatchesPreference(provider, preference) {\n        if (preference instanceof HierarchicalKind) {\n            if (!provider.providedPasteEditKinds) {\n                return true;\n            }\n            return provider.providedPasteEditKinds.some(providedKind => preference.contains(providedKind));\n        }\n        else {\n            return provider.id === preference.providerId;\n        }\n    }\n};\nCopyPasteController.ID = 'editor.contrib.copyPasteActionController';\nCopyPasteController = CopyPasteController_1 = __decorate([\n    __param(1, IInstantiationService),\n    __param(2, IBulkEditService),\n    __param(3, IClipboardService),\n    __param(4, ILanguageFeaturesService),\n    __param(5, IQuickInputService),\n    __param(6, IProgressService)\n], CopyPasteController);\nexport { CopyPasteController };\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 { distinct } from './arrays.js';\nimport { Iterable } from './iterator.js';\nimport { generateUuid } from './uuid.js';\nexport function createStringDataTransferItem(stringOrPromise) {\n    return {\n        asString: async () => stringOrPromise,\n        asFile: () => undefined,\n        value: typeof stringOrPromise === 'string' ? stringOrPromise : undefined,\n    };\n}\nexport function createFileDataTransferItem(fileName, uri, data) {\n    const file = { id: generateUuid(), name: fileName, uri, data };\n    return {\n        asString: async () => '',\n        asFile: () => file,\n        value: undefined,\n    };\n}\nexport class VSDataTransfer {\n    constructor() {\n        this._entries = new Map();\n    }\n    get size() {\n        let size = 0;\n        for (const _ of this._entries) {\n            size++;\n        }\n        return size;\n    }\n    has(mimeType) {\n        return this._entries.has(this.toKey(mimeType));\n    }\n    matches(pattern) {\n        const mimes = [...this._entries.keys()];\n        if (Iterable.some(this, ([_, item]) => item.asFile())) {\n            mimes.push('files');\n        }\n        return matchesMimeType_normalized(normalizeMimeType(pattern), mimes);\n    }\n    get(mimeType) {\n        var _a;\n        return (_a = this._entries.get(this.toKey(mimeType))) === null || _a === void 0 ? void 0 : _a[0];\n    }\n    /**\n     * Add a new entry to this data transfer.\n     *\n     * This does not replace existing entries for `mimeType`.\n     */\n    append(mimeType, value) {\n        const existing = this._entries.get(mimeType);\n        if (existing) {\n            existing.push(value);\n        }\n        else {\n            this._entries.set(this.toKey(mimeType), [value]);\n        }\n    }\n    /**\n     * Set the entry for a given mime type.\n     *\n     * This replaces all existing entries for `mimeType`.\n     */\n    replace(mimeType, value) {\n        this._entries.set(this.toKey(mimeType), [value]);\n    }\n    /**\n     * Remove all entries for `mimeType`.\n     */\n    delete(mimeType) {\n        this._entries.delete(this.toKey(mimeType));\n    }\n    /**\n     * Iterate over all `[mime, item]` pairs in this data transfer.\n     *\n     * There may be multiple entries for each mime type.\n     */\n    *[Symbol.iterator]() {\n        for (const [mine, items] of this._entries) {\n            for (const item of items) {\n                yield [mine, item];\n            }\n        }\n    }\n    toKey(mimeType) {\n        return normalizeMimeType(mimeType);\n    }\n}\nfunction normalizeMimeType(mimeType) {\n    return mimeType.toLowerCase();\n}\nexport function matchesMimeType(pattern, mimeTypes) {\n    return matchesMimeType_normalized(normalizeMimeType(pattern), mimeTypes.map(normalizeMimeType));\n}\nfunction matchesMimeType_normalized(normalizedPattern, normalizedMimeTypes) {\n    // Anything wildcard\n    if (normalizedPattern === '*/*') {\n        return normalizedMimeTypes.length > 0;\n    }\n    // Exact match\n    if (normalizedMimeTypes.includes(normalizedPattern)) {\n        return true;\n    }\n    // Wildcard, such as `image/*`\n    const wildcard = normalizedPattern.match(/^([a-z]+)\\/([a-z]+|\\*)$/i);\n    if (!wildcard) {\n        return false;\n    }\n    const [_, type, subtype] = wildcard;\n    if (subtype === '*') {\n        return normalizedMimeTypes.some(mime => mime.startsWith(type + '/'));\n    }\n    return false;\n}\nexport const UriList = Object.freeze({\n    // http://amundsen.com/hypermedia/urilist/\n    create: (entries) => {\n        return distinct(entries.map(x => x.toString())).join('\\r\\n');\n    },\n    split: (str) => {\n        return str.split('\\r\\n');\n    },\n    parse: (str) => {\n        return UriList.split(str).filter(value => !value.startsWith('#'));\n    }\n});\n", "export const generateUuid = (function () {\n    // use `randomUUID` if possible\n    if (typeof crypto === 'object' && typeof crypto.randomUUID === 'function') {\n        return crypto.randomUUID.bind(crypto);\n    }\n    // use `randomValues` if possible\n    let getRandomValues;\n    if (typeof crypto === 'object' && typeof crypto.getRandomValues === 'function') {\n        getRandomValues = crypto.getRandomValues.bind(crypto);\n    }\n    else {\n        getRandomValues = function (bucket) {\n            for (let i = 0; i < bucket.length; i++) {\n                bucket[i] = Math.floor(Math.random() * 256);\n            }\n            return bucket;\n        };\n    }\n    // prep-work\n    const _data = new Uint8Array(16);\n    const _hex = [];\n    for (let i = 0; i < 256; i++) {\n        _hex.push(i.toString(16).padStart(2, '0'));\n    }\n    return function generateUuid() {\n        // get data\n        getRandomValues(_data);\n        // set version bits\n        _data[6] = (_data[6] & 0x0f) | 0x40;\n        _data[8] = (_data[8] & 0x3f) | 0x80;\n        // print as string\n        let i = 0;\n        let result = '';\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        result += '-';\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        result += '-';\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        result += '-';\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        result += '-';\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        result += _hex[_data[i++]];\n        return result;\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 *--------------------------------------------------------------------------------------------*/\nexport class HierarchicalKind {\n    constructor(value) {\n        this.value = value;\n    }\n    equals(other) {\n        return this.value === other.value;\n    }\n    contains(other) {\n        return this.equals(other) || this.value === '' || other.value.startsWith(this.value + HierarchicalKind.sep);\n    }\n    intersects(other) {\n        return this.contains(other) || other.contains(this);\n    }\n    append(...parts) {\n        return new HierarchicalKind((this.value ? [this.value, ...parts] : parts).join(HierarchicalKind.sep));\n    }\n}\nHierarchicalKind.sep = '.';\nHierarchicalKind.None = new HierarchicalKind('@@none@@'); // Special kind that matches nothing\nHierarchicalKind.Empty = new HierarchicalKind('');\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 { DataTransfers } from '../../base/browser/dnd.js';\nimport { createFileDataTransferItem, createStringDataTransferItem, UriList, VSDataTransfer } from '../../base/common/dataTransfer.js';\nimport { Mimes } from '../../base/common/mime.js';\nimport { URI } from '../../base/common/uri.js';\nimport { CodeDataTransfers } from '../../platform/dnd/browser/dnd.js';\nexport function toVSDataTransfer(dataTransfer) {\n    const vsDataTransfer = new VSDataTransfer();\n    for (const item of dataTransfer.items) {\n        const type = item.type;\n        if (item.kind === 'string') {\n            const asStringValue = new Promise(resolve => item.getAsString(resolve));\n            vsDataTransfer.append(type, createStringDataTransferItem(asStringValue));\n        }\n        else if (item.kind === 'file') {\n            const file = item.getAsFile();\n            if (file) {\n                vsDataTransfer.append(type, createFileDataTransferItemFromFile(file));\n            }\n        }\n    }\n    return vsDataTransfer;\n}\nfunction createFileDataTransferItemFromFile(file) {\n    const uri = file.path ? URI.parse(file.path) : undefined;\n    return createFileDataTransferItem(file.name, uri, async () => {\n        return new Uint8Array(await file.arrayBuffer());\n    });\n}\nconst INTERNAL_DND_MIME_TYPES = Object.freeze([\n    CodeDataTransfers.EDITORS,\n    CodeDataTransfers.FILES,\n    DataTransfers.RESOURCES,\n    DataTransfers.INTERNAL_URI_LIST,\n]);\nexport function toExternalVSDataTransfer(sourceDataTransfer, overwriteUriList = false) {\n    const vsDataTransfer = toVSDataTransfer(sourceDataTransfer);\n    // Try to expose the internal uri-list type as the standard type\n    const uriList = vsDataTransfer.get(DataTransfers.INTERNAL_URI_LIST);\n    if (uriList) {\n        vsDataTransfer.replace(Mimes.uriList, uriList);\n    }\n    else {\n        if (overwriteUriList || !vsDataTransfer.has(Mimes.uriList)) {\n            // Otherwise, fallback to adding dragged resources to the uri list\n            const editorData = [];\n            for (const item of sourceDataTransfer.items) {\n                const file = item.getAsFile();\n                if (file) {\n                    const path = file.path;\n                    try {\n                        if (path) {\n                            editorData.push(URI.file(path).toString());\n                        }\n                        else {\n                            editorData.push(URI.parse(file.name, true).toString());\n                        }\n                    }\n                    catch (_a) {\n                        // Parsing failed. Leave out from list\n                    }\n                }\n            }\n            if (editorData.length) {\n                vsDataTransfer.replace(Mimes.uriList, createStringDataTransferItem(UriList.create(editorData)));\n            }\n        }\n    }\n    for (const internal of INTERNAL_DND_MIME_TYPES) {\n        vsDataTransfer.delete(internal);\n    }\n    return vsDataTransfer;\n}\n", "import { Registry } from '../../registry/common/platform.js';\n//#region Editor / Resources DND\nexport const CodeDataTransfers = {\n    EDITORS: 'CodeEditors',\n    FILES: 'CodeFiles'\n};\nclass DragAndDropContributionRegistry {\n}\nexport const Extensions = {\n    DragAndDropContribution: 'workbench.contributions.dragAndDrop'\n};\nRegistry.add(Extensions.DragAndDropContribution, new DragAndDropContributionRegistry());\n//#endregion\n//#region DND Utilities\n/**\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\n */\nexport class LocalSelectionTransfer {\n    constructor() {\n        // protect against external instantiation\n    }\n    static getInstance() {\n        return LocalSelectionTransfer.INSTANCE;\n    }\n    hasData(proto) {\n        return proto && proto === this.proto;\n    }\n    getData(proto) {\n        if (this.hasData(proto)) {\n            return this.data;\n        }\n        return undefined;\n    }\n}\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\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 *--------------------------------------------------------------------------------------------*/\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 { coalesce } from '../../../../base/common/arrays.js';\nimport { UriList } from '../../../../base/common/dataTransfer.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Mimes } from '../../../../base/common/mime.js';\nimport { Schemas } from '../../../../base/common/network.js';\nimport { relativePath } from '../../../../base/common/resources.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { DocumentPasteTriggerKind } from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { localize } from '../../../../nls.js';\nimport { IWorkspaceContextService } from '../../../../platform/workspace/common/workspace.js';\nclass SimplePasteAndDropProvider {\n    async provideDocumentPasteEdits(_model, _ranges, dataTransfer, context, token) {\n        const edit = await this.getEdit(dataTransfer, token);\n        if (!edit) {\n            return undefined;\n        }\n        return {\n            dispose() { },\n            edits: [{ insertText: edit.insertText, title: edit.title, kind: edit.kind, handledMimeType: edit.handledMimeType, yieldTo: edit.yieldTo }]\n        };\n    }\n    async provideDocumentDropEdits(_model, _position, dataTransfer, token) {\n        const edit = await this.getEdit(dataTransfer, token);\n        return edit ? [{ insertText: edit.insertText, title: edit.title, kind: edit.kind, handledMimeType: edit.handledMimeType, yieldTo: edit.yieldTo }] : undefined;\n    }\n}\nexport class DefaultTextPasteOrDropEditProvider extends SimplePasteAndDropProvider {\n    constructor() {\n        super(...arguments);\n        this.kind = DefaultTextPasteOrDropEditProvider.kind;\n        this.dropMimeTypes = [Mimes.text];\n        this.pasteMimeTypes = [Mimes.text];\n    }\n    async getEdit(dataTransfer, _token) {\n        const textEntry = dataTransfer.get(Mimes.text);\n        if (!textEntry) {\n            return;\n        }\n        // Suppress if there's also a uriList entry.\n        // Typically the uri-list contains the same text as the text entry so showing both is confusing.\n        if (dataTransfer.has(Mimes.uriList)) {\n            return;\n        }\n        const insertText = await textEntry.asString();\n        return {\n            handledMimeType: Mimes.text,\n            title: localize('text.label', \"Insert Plain Text\"),\n            insertText,\n            kind: this.kind,\n        };\n    }\n}\nDefaultTextPasteOrDropEditProvider.id = 'text';\nDefaultTextPasteOrDropEditProvider.kind = new HierarchicalKind('text.plain');\nclass PathProvider extends SimplePasteAndDropProvider {\n    constructor() {\n        super(...arguments);\n        this.kind = new HierarchicalKind('uri.absolute');\n        this.dropMimeTypes = [Mimes.uriList];\n        this.pasteMimeTypes = [Mimes.uriList];\n    }\n    async getEdit(dataTransfer, token) {\n        const entries = await extractUriList(dataTransfer);\n        if (!entries.length || token.isCancellationRequested) {\n            return;\n        }\n        let uriCount = 0;\n        const insertText = entries\n            .map(({ uri, originalText }) => {\n            if (uri.scheme === Schemas.file) {\n                return uri.fsPath;\n            }\n            else {\n                uriCount++;\n                return originalText;\n            }\n        })\n            .join(' ');\n        let label;\n        if (uriCount > 0) {\n            // Dropping at least one generic uri (such as https) so use most generic label\n            label = entries.length > 1\n                ? localize('defaultDropProvider.uriList.uris', \"Insert Uris\")\n                : localize('defaultDropProvider.uriList.uri', \"Insert Uri\");\n        }\n        else {\n            // All the paths are file paths\n            label = entries.length > 1\n                ? localize('defaultDropProvider.uriList.paths', \"Insert Paths\")\n                : localize('defaultDropProvider.uriList.path', \"Insert Path\");\n        }\n        return {\n            handledMimeType: Mimes.uriList,\n            insertText,\n            title: label,\n            kind: this.kind,\n        };\n    }\n}\nlet RelativePathProvider = class RelativePathProvider extends SimplePasteAndDropProvider {\n    constructor(_workspaceContextService) {\n        super();\n        this._workspaceContextService = _workspaceContextService;\n        this.kind = new HierarchicalKind('uri.relative');\n        this.dropMimeTypes = [Mimes.uriList];\n        this.pasteMimeTypes = [Mimes.uriList];\n    }\n    async getEdit(dataTransfer, token) {\n        const entries = await extractUriList(dataTransfer);\n        if (!entries.length || token.isCancellationRequested) {\n            return;\n        }\n        const relativeUris = coalesce(entries.map(({ uri }) => {\n            const root = this._workspaceContextService.getWorkspaceFolder(uri);\n            return root ? relativePath(root.uri, uri) : undefined;\n        }));\n        if (!relativeUris.length) {\n            return;\n        }\n        return {\n            handledMimeType: Mimes.uriList,\n            insertText: relativeUris.join(' '),\n            title: entries.length > 1\n                ? localize('defaultDropProvider.uriList.relativePaths', \"Insert Relative Paths\")\n                : localize('defaultDropProvider.uriList.relativePath', \"Insert Relative Path\"),\n            kind: this.kind,\n        };\n    }\n};\nRelativePathProvider = __decorate([\n    __param(0, IWorkspaceContextService)\n], RelativePathProvider);\nclass PasteHtmlProvider {\n    constructor() {\n        this.kind = new HierarchicalKind('html');\n        this.pasteMimeTypes = ['text/html'];\n        this._yieldTo = [{ mimeType: Mimes.text }];\n    }\n    async provideDocumentPasteEdits(_model, _ranges, dataTransfer, context, token) {\n        var _a;\n        if (context.triggerKind !== DocumentPasteTriggerKind.PasteAs && !((_a = context.only) === null || _a === void 0 ? void 0 : _a.contains(this.kind))) {\n            return;\n        }\n        const entry = dataTransfer.get('text/html');\n        const htmlText = await (entry === null || entry === void 0 ? void 0 : entry.asString());\n        if (!htmlText || token.isCancellationRequested) {\n            return;\n        }\n        return {\n            dispose() { },\n            edits: [{\n                    insertText: htmlText,\n                    yieldTo: this._yieldTo,\n                    title: localize('pasteHtmlLabel', 'Insert HTML'),\n                    kind: this.kind,\n                }],\n        };\n    }\n}\nasync function extractUriList(dataTransfer) {\n    const urlListEntry = dataTransfer.get(Mimes.uriList);\n    if (!urlListEntry) {\n        return [];\n    }\n    const strUriList = await urlListEntry.asString();\n    const entries = [];\n    for (const entry of UriList.parse(strUriList)) {\n        try {\n            entries.push({ uri: URI.parse(entry), originalText: entry });\n        }\n        catch (_a) {\n            // noop\n        }\n    }\n    return entries;\n}\nlet DefaultDropProvidersFeature = class DefaultDropProvidersFeature extends Disposable {\n    constructor(languageFeaturesService, workspaceContextService) {\n        super();\n        this._register(languageFeaturesService.documentDropEditProvider.register('*', new DefaultTextPasteOrDropEditProvider()));\n        this._register(languageFeaturesService.documentDropEditProvider.register('*', new PathProvider()));\n        this._register(languageFeaturesService.documentDropEditProvider.register('*', new RelativePathProvider(workspaceContextService)));\n    }\n};\nDefaultDropProvidersFeature = __decorate([\n    __param(0, ILanguageFeaturesService),\n    __param(1, IWorkspaceContextService)\n], DefaultDropProvidersFeature);\nexport { DefaultDropProvidersFeature };\nlet DefaultPasteProvidersFeature = class DefaultPasteProvidersFeature extends Disposable {\n    constructor(languageFeaturesService, workspaceContextService) {\n        super();\n        this._register(languageFeaturesService.documentPasteEditProvider.register('*', new DefaultTextPasteOrDropEditProvider()));\n        this._register(languageFeaturesService.documentPasteEditProvider.register('*', new PathProvider()));\n        this._register(languageFeaturesService.documentPasteEditProvider.register('*', new RelativePathProvider(workspaceContextService)));\n        this._register(languageFeaturesService.documentPasteEditProvider.register('*', new PasteHtmlProvider()));\n    }\n};\nDefaultPasteProvidersFeature = __decorate([\n    __param(0, ILanguageFeaturesService),\n    __param(1, IWorkspaceContextService)\n], DefaultPasteProvidersFeature);\nexport { DefaultPasteProvidersFeature };\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 class Scanner {\n    constructor() {\n        this.value = '';\n        this.pos = 0;\n    }\n    static isDigitCharacter(ch) {\n        return ch >= 48 /* CharCode.Digit0 */ && ch <= 57 /* CharCode.Digit9 */;\n    }\n    static isVariableCharacter(ch) {\n        return ch === 95 /* CharCode.Underline */\n            || (ch >= 97 /* CharCode.a */ && ch <= 122 /* CharCode.z */)\n            || (ch >= 65 /* CharCode.A */ && ch <= 90 /* CharCode.Z */);\n    }\n    text(value) {\n        this.value = value;\n        this.pos = 0;\n    }\n    tokenText(token) {\n        return this.value.substr(token.pos, token.len);\n    }\n    next() {\n        if (this.pos >= this.value.length) {\n            return { type: 14 /* TokenType.EOF */, pos: this.pos, len: 0 };\n        }\n        const pos = this.pos;\n        let len = 0;\n        let ch = this.value.charCodeAt(pos);\n        let type;\n        // static types\n        type = Scanner._table[ch];\n        if (typeof type === 'number') {\n            this.pos += 1;\n            return { type, pos, len: 1 };\n        }\n        // number\n        if (Scanner.isDigitCharacter(ch)) {\n            type = 8 /* TokenType.Int */;\n            do {\n                len += 1;\n                ch = this.value.charCodeAt(pos + len);\n            } while (Scanner.isDigitCharacter(ch));\n            this.pos += len;\n            return { type, pos, len };\n        }\n        // variable name\n        if (Scanner.isVariableCharacter(ch)) {\n            type = 9 /* TokenType.VariableName */;\n            do {\n                ch = this.value.charCodeAt(pos + (++len));\n            } while (Scanner.isVariableCharacter(ch) || Scanner.isDigitCharacter(ch));\n            this.pos += len;\n            return { type, pos, len };\n        }\n        // format\n        type = 10 /* TokenType.Format */;\n        do {\n            len += 1;\n            ch = this.value.charCodeAt(pos + len);\n        } while (!isNaN(ch)\n            && typeof Scanner._table[ch] === 'undefined' // not static token\n            && !Scanner.isDigitCharacter(ch) // not number\n            && !Scanner.isVariableCharacter(ch) // not variable\n        );\n        this.pos += len;\n        return { type, pos, len };\n    }\n}\nScanner._table = {\n    [36 /* CharCode.DollarSign */]: 0 /* TokenType.Dollar */,\n    [58 /* CharCode.Colon */]: 1 /* TokenType.Colon */,\n    [44 /* CharCode.Comma */]: 2 /* TokenType.Comma */,\n    [123 /* CharCode.OpenCurlyBrace */]: 3 /* TokenType.CurlyOpen */,\n    [125 /* CharCode.CloseCurlyBrace */]: 4 /* TokenType.CurlyClose */,\n    [92 /* CharCode.Backslash */]: 5 /* TokenType.Backslash */,\n    [47 /* CharCode.Slash */]: 6 /* TokenType.Forwardslash */,\n    [124 /* CharCode.Pipe */]: 7 /* TokenType.Pipe */,\n    [43 /* CharCode.Plus */]: 11 /* TokenType.Plus */,\n    [45 /* CharCode.Dash */]: 12 /* TokenType.Dash */,\n    [63 /* CharCode.QuestionMark */]: 13 /* TokenType.QuestionMark */,\n};\nexport class Marker {\n    constructor() {\n        this._children = [];\n    }\n    appendChild(child) {\n        if (child instanceof Text && this._children[this._children.length - 1] instanceof Text) {\n            // this and previous child are text -> merge them\n            this._children[this._children.length - 1].value += child.value;\n        }\n        else {\n            // normal adoption of child\n            child.parent = this;\n            this._children.push(child);\n        }\n        return this;\n    }\n    replace(child, others) {\n        const { parent } = child;\n        const idx = parent.children.indexOf(child);\n        const newChildren = parent.children.slice(0);\n        newChildren.splice(idx, 1, ...others);\n        parent._children = newChildren;\n        (function _fixParent(children, parent) {\n            for (const child of children) {\n                child.parent = parent;\n                _fixParent(child.children, child);\n            }\n        })(others, parent);\n    }\n    get children() {\n        return this._children;\n    }\n    get rightMostDescendant() {\n        if (this._children.length > 0) {\n            return this._children[this._children.length - 1].rightMostDescendant;\n        }\n        return this;\n    }\n    get snippet() {\n        let candidate = this;\n        while (true) {\n            if (!candidate) {\n                return undefined;\n            }\n            if (candidate instanceof TextmateSnippet) {\n                return candidate;\n            }\n            candidate = candidate.parent;\n        }\n    }\n    toString() {\n        return this.children.reduce((prev, cur) => prev + cur.toString(), '');\n    }\n    len() {\n        return 0;\n    }\n}\nexport class Text extends Marker {\n    constructor(value) {\n        super();\n        this.value = value;\n    }\n    toString() {\n        return this.value;\n    }\n    len() {\n        return this.value.length;\n    }\n    clone() {\n        return new Text(this.value);\n    }\n}\nexport class TransformableMarker extends Marker {\n}\nexport class Placeholder extends TransformableMarker {\n    static compareByIndex(a, b) {\n        if (a.index === b.index) {\n            return 0;\n        }\n        else if (a.isFinalTabstop) {\n            return 1;\n        }\n        else if (b.isFinalTabstop) {\n            return -1;\n        }\n        else if (a.index < b.index) {\n            return -1;\n        }\n        else if (a.index > b.index) {\n            return 1;\n        }\n        else {\n            return 0;\n        }\n    }\n    constructor(index) {\n        super();\n        this.index = index;\n    }\n    get isFinalTabstop() {\n        return this.index === 0;\n    }\n    get choice() {\n        return this._children.length === 1 && this._children[0] instanceof Choice\n            ? this._children[0]\n            : undefined;\n    }\n    clone() {\n        const ret = new Placeholder(this.index);\n        if (this.transform) {\n            ret.transform = this.transform.clone();\n        }\n        ret._children = this.children.map(child => child.clone());\n        return ret;\n    }\n}\nexport class Choice extends Marker {\n    constructor() {\n        super(...arguments);\n        this.options = [];\n    }\n    appendChild(marker) {\n        if (marker instanceof Text) {\n            marker.parent = this;\n            this.options.push(marker);\n        }\n        return this;\n    }\n    toString() {\n        return this.options[0].value;\n    }\n    len() {\n        return this.options[0].len();\n    }\n    clone() {\n        const ret = new Choice();\n        this.options.forEach(ret.appendChild, ret);\n        return ret;\n    }\n}\nexport class Transform extends Marker {\n    constructor() {\n        super(...arguments);\n        this.regexp = new RegExp('');\n    }\n    resolve(value) {\n        const _this = this;\n        let didMatch = false;\n        let ret = value.replace(this.regexp, function () {\n            didMatch = true;\n            return _this._replace(Array.prototype.slice.call(arguments, 0, -2));\n        });\n        // when the regex didn't match and when the transform has\n        // else branches, then run those\n        if (!didMatch && this._children.some(child => child instanceof FormatString && Boolean(child.elseValue))) {\n            ret = this._replace([]);\n        }\n        return ret;\n    }\n    _replace(groups) {\n        let ret = '';\n        for (const marker of this._children) {\n            if (marker instanceof FormatString) {\n                let value = groups[marker.index] || '';\n                value = marker.resolve(value);\n                ret += value;\n            }\n            else {\n                ret += marker.toString();\n            }\n        }\n        return ret;\n    }\n    toString() {\n        return '';\n    }\n    clone() {\n        const ret = new Transform();\n        ret.regexp = new RegExp(this.regexp.source, '' + (this.regexp.ignoreCase ? 'i' : '') + (this.regexp.global ? 'g' : ''));\n        ret._children = this.children.map(child => child.clone());\n        return ret;\n    }\n}\nexport class FormatString extends Marker {\n    constructor(index, shorthandName, ifValue, elseValue) {\n        super();\n        this.index = index;\n        this.shorthandName = shorthandName;\n        this.ifValue = ifValue;\n        this.elseValue = elseValue;\n    }\n    resolve(value) {\n        if (this.shorthandName === 'upcase') {\n            return !value ? '' : value.toLocaleUpperCase();\n        }\n        else if (this.shorthandName === 'downcase') {\n            return !value ? '' : value.toLocaleLowerCase();\n        }\n        else if (this.shorthandName === 'capitalize') {\n            return !value ? '' : (value[0].toLocaleUpperCase() + value.substr(1));\n        }\n        else if (this.shorthandName === 'pascalcase') {\n            return !value ? '' : this._toPascalCase(value);\n        }\n        else if (this.shorthandName === 'camelcase') {\n            return !value ? '' : this._toCamelCase(value);\n        }\n        else if (Boolean(value) && typeof this.ifValue === 'string') {\n            return this.ifValue;\n        }\n        else if (!Boolean(value) && typeof this.elseValue === 'string') {\n            return this.elseValue;\n        }\n        else {\n            return value || '';\n        }\n    }\n    _toPascalCase(value) {\n        const match = value.match(/[a-z0-9]+/gi);\n        if (!match) {\n            return value;\n        }\n        return match.map(word => {\n            return word.charAt(0).toUpperCase() + word.substr(1);\n        })\n            .join('');\n    }\n    _toCamelCase(value) {\n        const match = value.match(/[a-z0-9]+/gi);\n        if (!match) {\n            return value;\n        }\n        return match.map((word, index) => {\n            if (index === 0) {\n                return word.charAt(0).toLowerCase() + word.substr(1);\n            }\n            return word.charAt(0).toUpperCase() + word.substr(1);\n        })\n            .join('');\n    }\n    clone() {\n        const ret = new FormatString(this.index, this.shorthandName, this.ifValue, this.elseValue);\n        return ret;\n    }\n}\nexport class Variable extends TransformableMarker {\n    constructor(name) {\n        super();\n        this.name = name;\n    }\n    resolve(resolver) {\n        let value = resolver.resolve(this);\n        if (this.transform) {\n            value = this.transform.resolve(value || '');\n        }\n        if (value !== undefined) {\n            this._children = [new Text(value)];\n            return true;\n        }\n        return false;\n    }\n    clone() {\n        const ret = new Variable(this.name);\n        if (this.transform) {\n            ret.transform = this.transform.clone();\n        }\n        ret._children = this.children.map(child => child.clone());\n        return ret;\n    }\n}\nfunction walk(marker, visitor) {\n    const stack = [...marker];\n    while (stack.length > 0) {\n        const marker = stack.shift();\n        const recurse = visitor(marker);\n        if (!recurse) {\n            break;\n        }\n        stack.unshift(...marker.children);\n    }\n}\nexport class TextmateSnippet extends Marker {\n    get placeholderInfo() {\n        if (!this._placeholders) {\n            // fill in placeholders\n            const all = [];\n            let last;\n            this.walk(function (candidate) {\n                if (candidate instanceof Placeholder) {\n                    all.push(candidate);\n                    last = !last || last.index < candidate.index ? candidate : last;\n                }\n                return true;\n            });\n            this._placeholders = { all, last };\n        }\n        return this._placeholders;\n    }\n    get placeholders() {\n        const { all } = this.placeholderInfo;\n        return all;\n    }\n    offset(marker) {\n        let pos = 0;\n        let found = false;\n        this.walk(candidate => {\n            if (candidate === marker) {\n                found = true;\n                return false;\n            }\n            pos += candidate.len();\n            return true;\n        });\n        if (!found) {\n            return -1;\n        }\n        return pos;\n    }\n    fullLen(marker) {\n        let ret = 0;\n        walk([marker], marker => {\n            ret += marker.len();\n            return true;\n        });\n        return ret;\n    }\n    enclosingPlaceholders(placeholder) {\n        const ret = [];\n        let { parent } = placeholder;\n        while (parent) {\n            if (parent instanceof Placeholder) {\n                ret.push(parent);\n            }\n            parent = parent.parent;\n        }\n        return ret;\n    }\n    resolveVariables(resolver) {\n        this.walk(candidate => {\n            if (candidate instanceof Variable) {\n                if (candidate.resolve(resolver)) {\n                    this._placeholders = undefined;\n                }\n            }\n            return true;\n        });\n        return this;\n    }\n    appendChild(child) {\n        this._placeholders = undefined;\n        return super.appendChild(child);\n    }\n    replace(child, others) {\n        this._placeholders = undefined;\n        return super.replace(child, others);\n    }\n    clone() {\n        const ret = new TextmateSnippet();\n        this._children = this.children.map(child => child.clone());\n        return ret;\n    }\n    walk(visitor) {\n        walk(this.children, visitor);\n    }\n}\nexport class SnippetParser {\n    constructor() {\n        this._scanner = new Scanner();\n        this._token = { type: 14 /* TokenType.EOF */, pos: 0, len: 0 };\n    }\n    static escape(value) {\n        return value.replace(/\\$|}|\\\\/g, '\\\\$&');\n    }\n    static guessNeedsClipboard(template) {\n        return /\\${?CLIPBOARD/.test(template);\n    }\n    parse(value, insertFinalTabstop, enforceFinalTabstop) {\n        const snippet = new TextmateSnippet();\n        this.parseFragment(value, snippet);\n        this.ensureFinalTabstop(snippet, enforceFinalTabstop !== null && enforceFinalTabstop !== void 0 ? enforceFinalTabstop : false, insertFinalTabstop !== null && insertFinalTabstop !== void 0 ? insertFinalTabstop : false);\n        return snippet;\n    }\n    parseFragment(value, snippet) {\n        const offset = snippet.children.length;\n        this._scanner.text(value);\n        this._token = this._scanner.next();\n        while (this._parse(snippet)) {\n            // nothing\n        }\n        // fill in values for placeholders. the first placeholder of an index\n        // that has a value defines the value for all placeholders with that index\n        const placeholderDefaultValues = new Map();\n        const incompletePlaceholders = [];\n        snippet.walk(marker => {\n            if (marker instanceof Placeholder) {\n                if (marker.isFinalTabstop) {\n                    placeholderDefaultValues.set(0, undefined);\n                }\n                else if (!placeholderDefaultValues.has(marker.index) && marker.children.length > 0) {\n                    placeholderDefaultValues.set(marker.index, marker.children);\n                }\n                else {\n                    incompletePlaceholders.push(marker);\n                }\n            }\n            return true;\n        });\n        const fillInIncompletePlaceholder = (placeholder, stack) => {\n            const defaultValues = placeholderDefaultValues.get(placeholder.index);\n            if (!defaultValues) {\n                return;\n            }\n            const clone = new Placeholder(placeholder.index);\n            clone.transform = placeholder.transform;\n            for (const child of defaultValues) {\n                const newChild = child.clone();\n                clone.appendChild(newChild);\n                // \"recurse\" on children that are again placeholders\n                if (newChild instanceof Placeholder && placeholderDefaultValues.has(newChild.index) && !stack.has(newChild.index)) {\n                    stack.add(newChild.index);\n                    fillInIncompletePlaceholder(newChild, stack);\n                    stack.delete(newChild.index);\n                }\n            }\n            snippet.replace(placeholder, [clone]);\n        };\n        const stack = new Set();\n        for (const placeholder of incompletePlaceholders) {\n            fillInIncompletePlaceholder(placeholder, stack);\n        }\n        return snippet.children.slice(offset);\n    }\n    ensureFinalTabstop(snippet, enforceFinalTabstop, insertFinalTabstop) {\n        if (enforceFinalTabstop || insertFinalTabstop && snippet.placeholders.length > 0) {\n            const finalTabstop = snippet.placeholders.find(p => p.index === 0);\n            if (!finalTabstop) {\n                // the snippet uses placeholders but has no\n                // final tabstop defined -> insert at the end\n                snippet.appendChild(new Placeholder(0));\n            }\n        }\n    }\n    _accept(type, value) {\n        if (type === undefined || this._token.type === type) {\n            const ret = !value ? true : this._scanner.tokenText(this._token);\n            this._token = this._scanner.next();\n            return ret;\n        }\n        return false;\n    }\n    _backTo(token) {\n        this._scanner.pos = token.pos + token.len;\n        this._token = token;\n        return false;\n    }\n    _until(type) {\n        const start = this._token;\n        while (this._token.type !== type) {\n            if (this._token.type === 14 /* TokenType.EOF */) {\n                return false;\n            }\n            else if (this._token.type === 5 /* TokenType.Backslash */) {\n                const nextToken = this._scanner.next();\n                if (nextToken.type !== 0 /* TokenType.Dollar */\n                    && nextToken.type !== 4 /* TokenType.CurlyClose */\n                    && nextToken.type !== 5 /* TokenType.Backslash */) {\n                    return false;\n                }\n            }\n            this._token = this._scanner.next();\n        }\n        const value = this._scanner.value.substring(start.pos, this._token.pos).replace(/\\\\(\\$|}|\\\\)/g, '$1');\n        this._token = this._scanner.next();\n        return value;\n    }\n    _parse(marker) {\n        return this._parseEscaped(marker)\n            || this._parseTabstopOrVariableName(marker)\n            || this._parseComplexPlaceholder(marker)\n            || this._parseComplexVariable(marker)\n            || this._parseAnything(marker);\n    }\n    // \\$, \\\\, \\} -> just text\n    _parseEscaped(marker) {\n        let value;\n        if (value = this._accept(5 /* TokenType.Backslash */, true)) {\n            // saw a backslash, append escaped token or that backslash\n            value = this._accept(0 /* TokenType.Dollar */, true)\n                || this._accept(4 /* TokenType.CurlyClose */, true)\n                || this._accept(5 /* TokenType.Backslash */, true)\n                || value;\n            marker.appendChild(new Text(value));\n            return true;\n        }\n        return false;\n    }\n    // $foo -> variable, $1 -> tabstop\n    _parseTabstopOrVariableName(parent) {\n        let value;\n        const token = this._token;\n        const match = this._accept(0 /* TokenType.Dollar */)\n            && (value = this._accept(9 /* TokenType.VariableName */, true) || this._accept(8 /* TokenType.Int */, true));\n        if (!match) {\n            return this._backTo(token);\n        }\n        parent.appendChild(/^\\d+$/.test(value)\n            ? new Placeholder(Number(value))\n            : new Variable(value));\n        return true;\n    }\n    // ${1:<children>}, ${1} -> placeholder\n    _parseComplexPlaceholder(parent) {\n        let index;\n        const token = this._token;\n        const match = this._accept(0 /* TokenType.Dollar */)\n            && this._accept(3 /* TokenType.CurlyOpen */)\n            && (index = this._accept(8 /* TokenType.Int */, true));\n        if (!match) {\n            return this._backTo(token);\n        }\n        const placeholder = new Placeholder(Number(index));\n        if (this._accept(1 /* TokenType.Colon */)) {\n            // ${1:<children>}\n            while (true) {\n                // ...} -> done\n                if (this._accept(4 /* TokenType.CurlyClose */)) {\n                    parent.appendChild(placeholder);\n                    return true;\n                }\n                if (this._parse(placeholder)) {\n                    continue;\n                }\n                // fallback\n                parent.appendChild(new Text('${' + index + ':'));\n                placeholder.children.forEach(parent.appendChild, parent);\n                return true;\n            }\n        }\n        else if (placeholder.index > 0 && this._accept(7 /* TokenType.Pipe */)) {\n            // ${1|one,two,three|}\n            const choice = new Choice();\n            while (true) {\n                if (this._parseChoiceElement(choice)) {\n                    if (this._accept(2 /* TokenType.Comma */)) {\n                        // opt, -> more\n                        continue;\n                    }\n                    if (this._accept(7 /* TokenType.Pipe */)) {\n                        placeholder.appendChild(choice);\n                        if (this._accept(4 /* TokenType.CurlyClose */)) {\n                            // ..|} -> done\n                            parent.appendChild(placeholder);\n                            return true;\n                        }\n                    }\n                }\n                this._backTo(token);\n                return false;\n            }\n        }\n        else if (this._accept(6 /* TokenType.Forwardslash */)) {\n            // ${1/<regex>/<format>/<options>}\n            if (this._parseTransform(placeholder)) {\n                parent.appendChild(placeholder);\n                return true;\n            }\n            this._backTo(token);\n            return false;\n        }\n        else if (this._accept(4 /* TokenType.CurlyClose */)) {\n            // ${1}\n            parent.appendChild(placeholder);\n            return true;\n        }\n        else {\n            // ${1 <- missing curly or colon\n            return this._backTo(token);\n        }\n    }\n    _parseChoiceElement(parent) {\n        const token = this._token;\n        const values = [];\n        while (true) {\n            if (this._token.type === 2 /* TokenType.Comma */ || this._token.type === 7 /* TokenType.Pipe */) {\n                break;\n            }\n            let value;\n            if (value = this._accept(5 /* TokenType.Backslash */, true)) {\n                // \\, \\|, or \\\\\n                value = this._accept(2 /* TokenType.Comma */, true)\n                    || this._accept(7 /* TokenType.Pipe */, true)\n                    || this._accept(5 /* TokenType.Backslash */, true)\n                    || value;\n            }\n            else {\n                value = this._accept(undefined, true);\n            }\n            if (!value) {\n                // EOF\n                this._backTo(token);\n                return false;\n            }\n            values.push(value);\n        }\n        if (values.length === 0) {\n            this._backTo(token);\n            return false;\n        }\n        parent.appendChild(new Text(values.join('')));\n        return true;\n    }\n    // ${foo:<children>}, ${foo} -> variable\n    _parseComplexVariable(parent) {\n        let name;\n        const token = this._token;\n        const match = this._accept(0 /* TokenType.Dollar */)\n            && this._accept(3 /* TokenType.CurlyOpen */)\n            && (name = this._accept(9 /* TokenType.VariableName */, true));\n        if (!match) {\n            return this._backTo(token);\n        }\n        const variable = new Variable(name);\n        if (this._accept(1 /* TokenType.Colon */)) {\n            // ${foo:<children>}\n            while (true) {\n                // ...} -> done\n                if (this._accept(4 /* TokenType.CurlyClose */)) {\n                    parent.appendChild(variable);\n                    return true;\n                }\n                if (this._parse(variable)) {\n                    continue;\n                }\n                // fallback\n                parent.appendChild(new Text('${' + name + ':'));\n                variable.children.forEach(parent.appendChild, parent);\n                return true;\n            }\n        }\n        else if (this._accept(6 /* TokenType.Forwardslash */)) {\n            // ${foo/<regex>/<format>/<options>}\n            if (this._parseTransform(variable)) {\n                parent.appendChild(variable);\n                return true;\n            }\n            this._backTo(token);\n            return false;\n        }\n        else if (this._accept(4 /* TokenType.CurlyClose */)) {\n            // ${foo}\n            parent.appendChild(variable);\n            return true;\n        }\n        else {\n            // ${foo <- missing curly or colon\n            return this._backTo(token);\n        }\n    }\n    _parseTransform(parent) {\n        // ...<regex>/<format>/<options>}\n        const transform = new Transform();\n        let regexValue = '';\n        let regexOptions = '';\n        // (1) /regex\n        while (true) {\n            if (this._accept(6 /* TokenType.Forwardslash */)) {\n                break;\n            }\n            let escaped;\n            if (escaped = this._accept(5 /* TokenType.Backslash */, true)) {\n                escaped = this._accept(6 /* TokenType.Forwardslash */, true) || escaped;\n                regexValue += escaped;\n                continue;\n            }\n            if (this._token.type !== 14 /* TokenType.EOF */) {\n                regexValue += this._accept(undefined, true);\n                continue;\n            }\n            return false;\n        }\n        // (2) /format\n        while (true) {\n            if (this._accept(6 /* TokenType.Forwardslash */)) {\n                break;\n            }\n            let escaped;\n            if (escaped = this._accept(5 /* TokenType.Backslash */, true)) {\n                escaped = this._accept(5 /* TokenType.Backslash */, true) || this._accept(6 /* TokenType.Forwardslash */, true) || escaped;\n                transform.appendChild(new Text(escaped));\n                continue;\n            }\n            if (this._parseFormatString(transform) || this._parseAnything(transform)) {\n                continue;\n            }\n            return false;\n        }\n        // (3) /option\n        while (true) {\n            if (this._accept(4 /* TokenType.CurlyClose */)) {\n                break;\n            }\n            if (this._token.type !== 14 /* TokenType.EOF */) {\n                regexOptions += this._accept(undefined, true);\n                continue;\n            }\n            return false;\n        }\n        try {\n            transform.regexp = new RegExp(regexValue, regexOptions);\n        }\n        catch (e) {\n            // invalid regexp\n            return false;\n        }\n        parent.transform = transform;\n        return true;\n    }\n    _parseFormatString(parent) {\n        const token = this._token;\n        if (!this._accept(0 /* TokenType.Dollar */)) {\n            return false;\n        }\n        let complex = false;\n        if (this._accept(3 /* TokenType.CurlyOpen */)) {\n            complex = true;\n        }\n        const index = this._accept(8 /* TokenType.Int */, true);\n        if (!index) {\n            this._backTo(token);\n            return false;\n        }\n        else if (!complex) {\n            // $1\n            parent.appendChild(new FormatString(Number(index)));\n            return true;\n        }\n        else if (this._accept(4 /* TokenType.CurlyClose */)) {\n            // ${1}\n            parent.appendChild(new FormatString(Number(index)));\n            return true;\n        }\n        else if (!this._accept(1 /* TokenType.Colon */)) {\n            this._backTo(token);\n            return false;\n        }\n        if (this._accept(6 /* TokenType.Forwardslash */)) {\n            // ${1:/upcase}\n            const shorthand = this._accept(9 /* TokenType.VariableName */, true);\n            if (!shorthand || !this._accept(4 /* TokenType.CurlyClose */)) {\n                this._backTo(token);\n                return false;\n            }\n            else {\n                parent.appendChild(new FormatString(Number(index), shorthand));\n                return true;\n            }\n        }\n        else if (this._accept(11 /* TokenType.Plus */)) {\n            // ${1:+<if>}\n            const ifValue = this._until(4 /* TokenType.CurlyClose */);\n            if (ifValue) {\n                parent.appendChild(new FormatString(Number(index), undefined, ifValue, undefined));\n                return true;\n            }\n        }\n        else if (this._accept(12 /* TokenType.Dash */)) {\n            // ${2:-<else>}\n            const elseValue = this._until(4 /* TokenType.CurlyClose */);\n            if (elseValue) {\n                parent.appendChild(new FormatString(Number(index), undefined, undefined, elseValue));\n                return true;\n            }\n        }\n        else if (this._accept(13 /* TokenType.QuestionMark */)) {\n            // ${2:?<if>:<else>}\n            const ifValue = this._until(1 /* TokenType.Colon */);\n            if (ifValue) {\n                const elseValue = this._until(4 /* TokenType.CurlyClose */);\n                if (elseValue) {\n                    parent.appendChild(new FormatString(Number(index), undefined, ifValue, elseValue));\n                    return true;\n                }\n            }\n        }\n        else {\n            // ${1:<else>}\n            const elseValue = this._until(4 /* TokenType.CurlyClose */);\n            if (elseValue) {\n                parent.appendChild(new FormatString(Number(index), undefined, undefined, elseValue));\n                return true;\n            }\n        }\n        this._backTo(token);\n        return false;\n    }\n    _parseAnything(marker) {\n        if (this._token.type !== 14 /* TokenType.EOF */) {\n            marker.appendChild(new Text(this._scanner.tokenText(this._token)));\n            this._accept(undefined);\n            return true;\n        }\n        return false;\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 { ResourceTextEdit } from '../../../browser/services/bulkEditService.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\n/**\n * Given a {@link DropOrPasteEdit} and set of ranges, creates a {@link WorkspaceEdit} that applies the insert text from\n * the {@link DropOrPasteEdit} at each range plus any additional edits.\n */\nexport function createCombinedWorkspaceEdit(uri, ranges, edit) {\n    var _a, _b, _c, _d;\n    // If the edit insert text is empty, skip applying at each range\n    if (typeof edit.insertText === 'string' ? edit.insertText === '' : edit.insertText.snippet === '') {\n        return {\n            edits: (_b = (_a = edit.additionalEdit) === null || _a === void 0 ? void 0 : _a.edits) !== null && _b !== void 0 ? _b : []\n        };\n    }\n    return {\n        edits: [\n            ...ranges.map(range => new ResourceTextEdit(uri, { range, text: typeof edit.insertText === 'string' ? SnippetParser.escape(edit.insertText) + '$0' : edit.insertText.snippet, insertAsSnippet: true })),\n            ...((_d = (_c = edit.additionalEdit) === null || _c === void 0 ? void 0 : _c.edits) !== null && _d !== void 0 ? _d : [])\n        ]\n    };\n}\nexport function sortEditsByYieldTo(edits) {\n    var _a;\n    function yieldsTo(yTo, other) {\n        if ('mimeType' in yTo) {\n            return yTo.mimeType === other.handledMimeType;\n        }\n        return !!other.kind && yTo.kind.contains(other.kind);\n    }\n    // Build list of nodes each node yields to\n    const yieldsToMap = new Map();\n    for (const edit of edits) {\n        for (const yTo of (_a = edit.yieldTo) !== null && _a !== void 0 ? _a : []) {\n            for (const other of edits) {\n                if (other === edit) {\n                    continue;\n                }\n                if (yieldsTo(yTo, other)) {\n                    let arr = yieldsToMap.get(edit);\n                    if (!arr) {\n                        arr = [];\n                        yieldsToMap.set(edit, arr);\n                    }\n                    arr.push(other);\n                }\n            }\n        }\n    }\n    if (!yieldsToMap.size) {\n        return Array.from(edits);\n    }\n    // Topological sort\n    const visited = new Set();\n    const tempStack = [];\n    function visit(nodes) {\n        if (!nodes.length) {\n            return [];\n        }\n        const node = nodes[0];\n        if (tempStack.includes(node)) {\n            console.warn('Yield to cycle detected', node);\n            return nodes;\n        }\n        if (visited.has(node)) {\n            return visit(nodes.slice(1));\n        }\n        let pre = [];\n        const yTo = yieldsToMap.get(node);\n        if (yTo) {\n            tempStack.push(node);\n            pre = visit(yTo);\n            tempStack.pop();\n        }\n        visited.add(node);\n        return [...pre, node, ...visit(nodes.slice(1))];\n    }\n    return visit(Array.from(edits));\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 { disposableTimeout } from '../../../../base/common/async.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { noBreakWhitespace } from '../../../../base/common/strings.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport './inlineProgressWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nconst inlineProgressDecoration = ModelDecorationOptions.register({\n    description: 'inline-progress-widget',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    showIfCollapsed: true,\n    after: {\n        content: noBreakWhitespace,\n        inlineClassName: 'inline-editor-progress-decoration',\n        inlineClassNameAffectsLetterSpacing: true,\n    }\n});\nclass InlineProgressWidget extends Disposable {\n    constructor(typeId, editor, range, title, delegate) {\n        super();\n        this.typeId = typeId;\n        this.editor = editor;\n        this.range = range;\n        this.delegate = delegate;\n        this.allowEditorOverflow = false;\n        this.suppressMouseDown = true;\n        this.create(title);\n        this.editor.addContentWidget(this);\n        this.editor.layoutContentWidget(this);\n    }\n    create(title) {\n        this.domNode = dom.$('.inline-progress-widget');\n        this.domNode.role = 'button';\n        this.domNode.title = title;\n        const iconElement = dom.$('span.icon');\n        this.domNode.append(iconElement);\n        iconElement.classList.add(...ThemeIcon.asClassNameArray(Codicon.loading), 'codicon-modifier-spin');\n        const updateSize = () => {\n            const lineHeight = this.editor.getOption(67 /* EditorOption.lineHeight */);\n            this.domNode.style.height = `${lineHeight}px`;\n            this.domNode.style.width = `${Math.ceil(0.8 * lineHeight)}px`;\n        };\n        updateSize();\n        this._register(this.editor.onDidChangeConfiguration(c => {\n            if (c.hasChanged(52 /* EditorOption.fontSize */) || c.hasChanged(67 /* EditorOption.lineHeight */)) {\n                updateSize();\n            }\n        }));\n        this._register(dom.addDisposableListener(this.domNode, dom.EventType.CLICK, e => {\n            this.delegate.cancel();\n        }));\n    }\n    getId() {\n        return InlineProgressWidget.baseId + '.' + this.typeId;\n    }\n    getDomNode() {\n        return this.domNode;\n    }\n    getPosition() {\n        return {\n            position: { lineNumber: this.range.startLineNumber, column: this.range.startColumn },\n            preference: [0 /* ContentWidgetPositionPreference.EXACT */]\n        };\n    }\n    dispose() {\n        super.dispose();\n        this.editor.removeContentWidget(this);\n    }\n}\nInlineProgressWidget.baseId = 'editor.widget.inlineProgressWidget';\nlet InlineProgressManager = class InlineProgressManager extends Disposable {\n    constructor(id, _editor, _instantiationService) {\n        super();\n        this.id = id;\n        this._editor = _editor;\n        this._instantiationService = _instantiationService;\n        /** Delay before showing the progress widget */\n        this._showDelay = 500; // ms\n        this._showPromise = this._register(new MutableDisposable());\n        this._currentWidget = new MutableDisposable();\n        this._operationIdPool = 0;\n        this._currentDecorations = _editor.createDecorationsCollection();\n    }\n    async showWhile(position, title, promise) {\n        const operationId = this._operationIdPool++;\n        this._currentOperation = operationId;\n        this.clear();\n        this._showPromise.value = disposableTimeout(() => {\n            const range = Range.fromPositions(position);\n            const decorationIds = this._currentDecorations.set([{\n                    range: range,\n                    options: inlineProgressDecoration,\n                }]);\n            if (decorationIds.length > 0) {\n                this._currentWidget.value = this._instantiationService.createInstance(InlineProgressWidget, this.id, this._editor, range, title, promise);\n            }\n        }, this._showDelay);\n        try {\n            return await promise;\n        }\n        finally {\n            if (this._currentOperation === operationId) {\n                this.clear();\n                this._currentOperation = undefined;\n            }\n        }\n    }\n    clear() {\n        this._showPromise.clear();\n        this._currentDecorations.clear();\n        this._currentWidget.clear();\n    }\n};\nInlineProgressManager = __decorate([\n    __param(2, IInstantiationService)\n], InlineProgressManager);\nexport { InlineProgressManager };\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 PostEditWidget_1;\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { toAction } from '../../../../base/common/actions.js';\nimport { toErrorMessage } from '../../../../base/common/errorMessage.js';\nimport { isCancellationError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport './postEditWidget.css';\nimport { IBulkEditService } from '../../../browser/services/bulkEditService.js';\nimport { createCombinedWorkspaceEdit } from './edit.js';\nimport { localize } from '../../../../nls.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 { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nlet PostEditWidget = PostEditWidget_1 = class PostEditWidget extends Disposable {\n    constructor(typeId, editor, visibleContext, showCommand, range, edits, onSelectNewEdit, _contextMenuService, contextKeyService, _keybindingService) {\n        super();\n        this.typeId = typeId;\n        this.editor = editor;\n        this.showCommand = showCommand;\n        this.range = range;\n        this.edits = edits;\n        this.onSelectNewEdit = onSelectNewEdit;\n        this._contextMenuService = _contextMenuService;\n        this._keybindingService = _keybindingService;\n        this.allowEditorOverflow = true;\n        this.suppressMouseDown = true;\n        this.create();\n        this.visibleContext = visibleContext.bindTo(contextKeyService);\n        this.visibleContext.set(true);\n        this._register(toDisposable(() => this.visibleContext.reset()));\n        this.editor.addContentWidget(this);\n        this.editor.layoutContentWidget(this);\n        this._register(toDisposable((() => this.editor.removeContentWidget(this))));\n        this._register(this.editor.onDidChangeCursorPosition(e => {\n            if (!range.containsPosition(e.position)) {\n                this.dispose();\n            }\n        }));\n        this._register(Event.runAndSubscribe(_keybindingService.onDidUpdateKeybindings, () => {\n            this._updateButtonTitle();\n        }));\n    }\n    _updateButtonTitle() {\n        var _a;\n        const binding = (_a = this._keybindingService.lookupKeybinding(this.showCommand.id)) === null || _a === void 0 ? void 0 : _a.getLabel();\n        this.button.element.title = this.showCommand.label + (binding ? ` (${binding})` : '');\n    }\n    create() {\n        this.domNode = dom.$('.post-edit-widget');\n        this.button = this._register(new Button(this.domNode, {\n            supportIcons: true,\n        }));\n        this.button.label = '$(insert)';\n        this._register(dom.addDisposableListener(this.domNode, dom.EventType.CLICK, () => this.showSelector()));\n    }\n    getId() {\n        return PostEditWidget_1.baseId + '.' + this.typeId;\n    }\n    getDomNode() {\n        return this.domNode;\n    }\n    getPosition() {\n        return {\n            position: this.range.getEndPosition(),\n            preference: [2 /* ContentWidgetPositionPreference.BELOW */]\n        };\n    }\n    showSelector() {\n        this._contextMenuService.showContextMenu({\n            getAnchor: () => {\n                const pos = dom.getDomNodePagePosition(this.button.element);\n                return { x: pos.left + pos.width, y: pos.top + pos.height };\n            },\n            getActions: () => {\n                return this.edits.allEdits.map((edit, i) => toAction({\n                    id: '',\n                    label: edit.title,\n                    checked: i === this.edits.activeEditIndex,\n                    run: () => {\n                        if (i !== this.edits.activeEditIndex) {\n                            return this.onSelectNewEdit(i);\n                        }\n                    },\n                }));\n            }\n        });\n    }\n};\nPostEditWidget.baseId = 'editor.widget.postEditWidget';\nPostEditWidget = PostEditWidget_1 = __decorate([\n    __param(7, IContextMenuService),\n    __param(8, IContextKeyService),\n    __param(9, IKeybindingService)\n], PostEditWidget);\nlet PostEditWidgetManager = class PostEditWidgetManager extends Disposable {\n    constructor(_id, _editor, _visibleContext, _showCommand, _instantiationService, _bulkEditService, _notificationService) {\n        super();\n        this._id = _id;\n        this._editor = _editor;\n        this._visibleContext = _visibleContext;\n        this._showCommand = _showCommand;\n        this._instantiationService = _instantiationService;\n        this._bulkEditService = _bulkEditService;\n        this._notificationService = _notificationService;\n        this._currentWidget = this._register(new MutableDisposable());\n        this._register(Event.any(_editor.onDidChangeModel, _editor.onDidChangeModelContent)(() => this.clear()));\n    }\n    async applyEditAndShowIfNeeded(ranges, edits, canShowWidget, resolve, token) {\n        const model = this._editor.getModel();\n        if (!model || !ranges.length) {\n            return;\n        }\n        const edit = edits.allEdits.at(edits.activeEditIndex);\n        if (!edit) {\n            return;\n        }\n        const onDidSelectEdit = async (newEditIndex) => {\n            const model = this._editor.getModel();\n            if (!model) {\n                return;\n            }\n            await model.undo();\n            this.applyEditAndShowIfNeeded(ranges, { activeEditIndex: newEditIndex, allEdits: edits.allEdits }, canShowWidget, resolve, token);\n        };\n        const handleError = (e, message) => {\n            if (isCancellationError(e)) {\n                return;\n            }\n            this._notificationService.error(message);\n            if (canShowWidget) {\n                this.show(ranges[0], edits, onDidSelectEdit);\n            }\n        };\n        let resolvedEdit;\n        try {\n            resolvedEdit = await resolve(edit, token);\n        }\n        catch (e) {\n            return handleError(e, localize('resolveError', \"Error resolving edit '{0}':\\n{1}\", edit.title, toErrorMessage(e)));\n        }\n        if (token.isCancellationRequested) {\n            return;\n        }\n        const combinedWorkspaceEdit = createCombinedWorkspaceEdit(model.uri, ranges, resolvedEdit);\n        // Use a decoration to track edits around the trigger range\n        const primaryRange = ranges[0];\n        const editTrackingDecoration = model.deltaDecorations([], [{\n                range: primaryRange,\n                options: { description: 'paste-line-suffix', stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */ }\n            }]);\n        this._editor.focus();\n        let editResult;\n        let editRange;\n        try {\n            editResult = await this._bulkEditService.apply(combinedWorkspaceEdit, { editor: this._editor, token });\n            editRange = model.getDecorationRange(editTrackingDecoration[0]);\n        }\n        catch (e) {\n            return handleError(e, localize('applyError', \"Error applying edit '{0}':\\n{1}\", edit.title, toErrorMessage(e)));\n        }\n        finally {\n            model.deltaDecorations(editTrackingDecoration, []);\n        }\n        if (token.isCancellationRequested) {\n            return;\n        }\n        if (canShowWidget && editResult.isApplied && edits.allEdits.length > 1) {\n            this.show(editRange !== null && editRange !== void 0 ? editRange : primaryRange, edits, onDidSelectEdit);\n        }\n    }\n    show(range, edits, onDidSelectEdit) {\n        this.clear();\n        if (this._editor.hasModel()) {\n            this._currentWidget.value = this._instantiationService.createInstance((PostEditWidget), this._id, this._editor, this._visibleContext, this._showCommand, range, edits, onDidSelectEdit);\n        }\n    }\n    clear() {\n        this._currentWidget.clear();\n    }\n    tryShowSelector() {\n        var _a;\n        (_a = this._currentWidget.value) === null || _a === void 0 ? void 0 : _a.showSelector();\n    }\n};\nPostEditWidgetManager = __decorate([\n    __param(4, IInstantiationService),\n    __param(5, IBulkEditService),\n    __param(6, INotificationService)\n], PostEditWidgetManager);\nexport { PostEditWidgetManager };\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 arrays from './arrays.js';\nimport * as types from './types.js';\nimport * as nls from '../../nls.js';\nfunction exceptionToErrorMessage(exception, verbose) {\n    if (verbose && (exception.stack || exception.stacktrace)) {\n        return nls.localize('stackTrace.format', \"{0}: {1}\", detectSystemErrorMessage(exception), stackToString(exception.stack) || stackToString(exception.stacktrace));\n    }\n    return detectSystemErrorMessage(exception);\n}\nfunction stackToString(stack) {\n    if (Array.isArray(stack)) {\n        return stack.join('\\n');\n    }\n    return stack;\n}\nfunction detectSystemErrorMessage(exception) {\n    // Custom node.js error from us\n    if (exception.code === 'ERR_UNC_HOST_NOT_ALLOWED') {\n        return `${exception.message}. Please update the 'security.allowedUNCHosts' setting if you want to allow this host.`;\n    }\n    // See https://nodejs.org/api/errors.html#errors_class_system_error\n    if (typeof exception.code === 'string' && typeof exception.errno === 'number' && typeof exception.syscall === 'string') {\n        return nls.localize('nodeExceptionMessage', \"A system error occurred ({0})\", exception.message);\n    }\n    return exception.message || nls.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\n}\n/**\n * Tries to generate a human readable error message out of the error. If the verbose parameter\n * is set to true, the error message will include stacktrace details if provided.\n *\n * @returns A string containing the error message.\n */\nexport function toErrorMessage(error = null, verbose = false) {\n    if (!error) {\n        return nls.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\n    }\n    if (Array.isArray(error)) {\n        const errors = arrays.coalesce(error);\n        const msg = toErrorMessage(errors[0], verbose);\n        if (errors.length > 1) {\n            return nls.localize('error.moreErrors', \"{0} ({1} errors in total)\", msg, errors.length);\n        }\n        return msg;\n    }\n    if (types.isString(error)) {\n        return error;\n    }\n    if (error.detail) {\n        const detail = error.detail;\n        if (detail.error) {\n            return exceptionToErrorMessage(detail.error, verbose);\n        }\n        if (detail.exception) {\n            return exceptionToErrorMessage(detail.exception, verbose);\n        }\n    }\n    if (error.stack) {\n        return exceptionToErrorMessage(error, verbose);\n    }\n    if (error.message) {\n        return error.message;\n    }\n    return nls.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\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 { registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { editorConfigurationBaseNode } from '../../../common/config/editorConfigurationSchema.js';\nimport { AutoFixAction, CodeActionCommand, FixAllAction, OrganizeImportsAction, QuickFixAction, RefactorAction, SourceAction } from './codeActionCommands.js';\nimport { CodeActionController } from './codeActionController.js';\nimport { LightBulbWidget } from './lightBulbWidget.js';\nimport * as nls from '../../../../nls.js';\nimport { Extensions } from '../../../../platform/configuration/common/configurationRegistry.js';\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nregisterEditorContribution(CodeActionController.ID, CodeActionController, 3 /* EditorContributionInstantiation.Eventually */);\nregisterEditorContribution(LightBulbWidget.ID, LightBulbWidget, 4 /* EditorContributionInstantiation.Lazy */);\nregisterEditorAction(QuickFixAction);\nregisterEditorAction(RefactorAction);\nregisterEditorAction(SourceAction);\nregisterEditorAction(OrganizeImportsAction);\nregisterEditorAction(AutoFixAction);\nregisterEditorAction(FixAllAction);\nregisterEditorCommand(new CodeActionCommand());\nRegistry.as(Extensions.Configuration).registerConfiguration({\n    ...editorConfigurationBaseNode,\n    properties: {\n        'editor.codeActionWidget.showHeaders': {\n            type: 'boolean',\n            scope: 5 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,\n            description: nls.localize('showCodeActionHeaders', \"Enable/disable showing group headers in the Code Action menu.\"),\n            default: true,\n        },\n    }\n});\nRegistry.as(Extensions.Configuration).registerConfiguration({\n    ...editorConfigurationBaseNode,\n    properties: {\n        'editor.codeActionWidget.includeNearbyQuickFixes': {\n            type: 'boolean',\n            scope: 5 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,\n            description: nls.localize('includeNearbyQuickFixes', \"Enable/disable showing nearest Quick Fix within a line when not currently on a diagnostic.\"),\n            default: true,\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 { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { escapeRegExpCharacters } from '../../../../base/common/strings.js';\nimport { EditorAction, EditorCommand } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { autoFixCommandId, codeActionCommandId, fixAllCommandId, organizeImportsCommandId, quickFixCommandId, refactorCommandId, sourceActionCommandId } from './codeAction.js';\nimport * as nls from '../../../../nls.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { CodeActionCommandArgs, CodeActionKind, CodeActionTriggerSource } from '../common/types.js';\nimport { CodeActionController } from './codeActionController.js';\nimport { SUPPORTED_CODE_ACTIONS } from './codeActionModel.js';\nfunction contextKeyForSupportedActions(kind) {\n    return ContextKeyExpr.regex(SUPPORTED_CODE_ACTIONS.keys()[0], new RegExp('(\\\\s|^)' + escapeRegExpCharacters(kind.value) + '\\\\b'));\n}\nconst argsSchema = {\n    type: 'object',\n    defaultSnippets: [{ body: { kind: '' } }],\n    properties: {\n        'kind': {\n            type: 'string',\n            description: nls.localize('args.schema.kind', \"Kind of the code action to run.\"),\n        },\n        'apply': {\n            type: 'string',\n            description: nls.localize('args.schema.apply', \"Controls when the returned actions are applied.\"),\n            default: \"ifSingle\" /* CodeActionAutoApply.IfSingle */,\n            enum: [\"first\" /* CodeActionAutoApply.First */, \"ifSingle\" /* CodeActionAutoApply.IfSingle */, \"never\" /* CodeActionAutoApply.Never */],\n            enumDescriptions: [\n                nls.localize('args.schema.apply.first', \"Always apply the first returned code action.\"),\n                nls.localize('args.schema.apply.ifSingle', \"Apply the first returned code action if it is the only one.\"),\n                nls.localize('args.schema.apply.never', \"Do not apply the returned code actions.\"),\n            ]\n        },\n        'preferred': {\n            type: 'boolean',\n            default: false,\n            description: nls.localize('args.schema.preferred', \"Controls if only preferred code actions should be returned.\"),\n        }\n    }\n};\nfunction triggerCodeActionsForEditorSelection(editor, notAvailableMessage, filter, autoApply, triggerAction = CodeActionTriggerSource.Default) {\n    if (editor.hasModel()) {\n        const controller = CodeActionController.get(editor);\n        controller === null || controller === void 0 ? void 0 : controller.manualTriggerAtCurrentPosition(notAvailableMessage, triggerAction, filter, autoApply);\n    }\n}\nexport class QuickFixAction extends EditorAction {\n    constructor() {\n        super({\n            id: quickFixCommandId,\n            label: nls.localize('quickfix.trigger.label', \"Quick Fix...\"),\n            alias: 'Quick Fix...',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 89 /* KeyCode.Period */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(_accessor, editor) {\n        return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.quickFix.noneMessage', \"No code actions available\"), undefined, undefined, CodeActionTriggerSource.QuickFix);\n    }\n}\nexport class CodeActionCommand extends EditorCommand {\n    constructor() {\n        super({\n            id: codeActionCommandId,\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\n            metadata: {\n                description: 'Trigger a code action',\n                args: [{ name: 'args', schema: argsSchema, }]\n            }\n        });\n    }\n    runEditorCommand(_accessor, editor, userArgs) {\n        const args = CodeActionCommandArgs.fromUser(userArgs, {\n            kind: HierarchicalKind.Empty,\n            apply: \"ifSingle\" /* CodeActionAutoApply.IfSingle */,\n        });\n        return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\n            ? args.preferred\n                ? nls.localize('editor.action.codeAction.noneMessage.preferred.kind', \"No preferred code actions for '{0}' available\", userArgs.kind)\n                : nls.localize('editor.action.codeAction.noneMessage.kind', \"No code actions for '{0}' available\", userArgs.kind)\n            : args.preferred\n                ? nls.localize('editor.action.codeAction.noneMessage.preferred', \"No preferred code actions available\")\n                : nls.localize('editor.action.codeAction.noneMessage', \"No code actions available\"), {\n            include: args.kind,\n            includeSourceActions: true,\n            onlyIncludePreferredActions: args.preferred,\n        }, args.apply);\n    }\n}\nexport class RefactorAction extends EditorAction {\n    constructor() {\n        super({\n            id: refactorCommandId,\n            label: nls.localize('refactor.label', \"Refactor...\"),\n            alias: 'Refactor...',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 48 /* KeyCode.KeyR */,\n                mac: {\n                    primary: 256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 48 /* KeyCode.KeyR */\n                },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            contextMenuOpts: {\n                group: '1_modification',\n                order: 2,\n                when: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.Refactor)),\n            },\n            metadata: {\n                description: 'Refactor...',\n                args: [{ name: 'args', schema: argsSchema }]\n            }\n        });\n    }\n    run(_accessor, editor, userArgs) {\n        const args = CodeActionCommandArgs.fromUser(userArgs, {\n            kind: CodeActionKind.Refactor,\n            apply: \"never\" /* CodeActionAutoApply.Never */\n        });\n        return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\n            ? args.preferred\n                ? nls.localize('editor.action.refactor.noneMessage.preferred.kind', \"No preferred refactorings for '{0}' available\", userArgs.kind)\n                : nls.localize('editor.action.refactor.noneMessage.kind', \"No refactorings for '{0}' available\", userArgs.kind)\n            : args.preferred\n                ? nls.localize('editor.action.refactor.noneMessage.preferred', \"No preferred refactorings available\")\n                : nls.localize('editor.action.refactor.noneMessage', \"No refactorings available\"), {\n            include: CodeActionKind.Refactor.contains(args.kind) ? args.kind : HierarchicalKind.None,\n            onlyIncludePreferredActions: args.preferred\n        }, args.apply, CodeActionTriggerSource.Refactor);\n    }\n}\nexport class SourceAction extends EditorAction {\n    constructor() {\n        super({\n            id: sourceActionCommandId,\n            label: nls.localize('source.label', \"Source Action...\"),\n            alias: 'Source Action...',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\n            contextMenuOpts: {\n                group: '1_modification',\n                order: 2.1,\n                when: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.Source)),\n            },\n            metadata: {\n                description: 'Source Action...',\n                args: [{ name: 'args', schema: argsSchema }]\n            }\n        });\n    }\n    run(_accessor, editor, userArgs) {\n        const args = CodeActionCommandArgs.fromUser(userArgs, {\n            kind: CodeActionKind.Source,\n            apply: \"never\" /* CodeActionAutoApply.Never */\n        });\n        return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\n            ? args.preferred\n                ? nls.localize('editor.action.source.noneMessage.preferred.kind', \"No preferred source actions for '{0}' available\", userArgs.kind)\n                : nls.localize('editor.action.source.noneMessage.kind', \"No source actions for '{0}' available\", userArgs.kind)\n            : args.preferred\n                ? nls.localize('editor.action.source.noneMessage.preferred', \"No preferred source actions available\")\n                : nls.localize('editor.action.source.noneMessage', \"No source actions available\"), {\n            include: CodeActionKind.Source.contains(args.kind) ? args.kind : HierarchicalKind.None,\n            includeSourceActions: true,\n            onlyIncludePreferredActions: args.preferred,\n        }, args.apply, CodeActionTriggerSource.SourceAction);\n    }\n}\nexport class OrganizeImportsAction extends EditorAction {\n    constructor() {\n        super({\n            id: organizeImportsCommandId,\n            label: nls.localize('organizeImports.label', \"Organize Imports\"),\n            alias: 'Organize Imports',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.SourceOrganizeImports)),\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 45 /* KeyCode.KeyO */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n        });\n    }\n    run(_accessor, editor) {\n        return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.organize.noneMessage', \"No organize imports action available\"), { include: CodeActionKind.SourceOrganizeImports, includeSourceActions: true }, \"ifSingle\" /* CodeActionAutoApply.IfSingle */, CodeActionTriggerSource.OrganizeImports);\n    }\n}\nexport class FixAllAction extends EditorAction {\n    constructor() {\n        super({\n            id: fixAllCommandId,\n            label: nls.localize('fixAll.label', \"Fix All\"),\n            alias: 'Fix All',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.SourceFixAll))\n        });\n    }\n    run(_accessor, editor) {\n        return triggerCodeActionsForEditorSelection(editor, nls.localize('fixAll.noneMessage', \"No fix all action available\"), { include: CodeActionKind.SourceFixAll, includeSourceActions: true }, \"ifSingle\" /* CodeActionAutoApply.IfSingle */, CodeActionTriggerSource.FixAll);\n    }\n}\nexport class AutoFixAction extends EditorAction {\n    constructor() {\n        super({\n            id: autoFixCommandId,\n            label: nls.localize('autoFix.label', \"Auto Fix...\"),\n            alias: 'Auto Fix...',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.QuickFix)),\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 89 /* KeyCode.Period */,\n                mac: {\n                    primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 89 /* KeyCode.Period */\n                },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(_accessor, editor) {\n        return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.autoFix.noneMessage', \"No auto fixes available\"), {\n            include: CodeActionKind.QuickFix,\n            onlyIncludePreferredActions: true\n        }, \"ifSingle\" /* CodeActionAutoApply.IfSingle */, CodeActionTriggerSource.AutoFix);\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 { coalesce, equals, isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { illegalArgument, isCancellationError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { IBulkEditService } from '../../../browser/services/bulkEditService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { TextModelCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport * as nls from '../../../../nls.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { Progress } from '../../../../platform/progress/common/progress.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { CodeActionItem, CodeActionKind, CodeActionTriggerSource, filtersAction, mayIncludeActionsOfKind } from '../common/types.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nexport const codeActionCommandId = 'editor.action.codeAction';\nexport const quickFixCommandId = 'editor.action.quickFix';\nexport const autoFixCommandId = 'editor.action.autoFix';\nexport const refactorCommandId = 'editor.action.refactor';\nexport const sourceActionCommandId = 'editor.action.sourceAction';\nexport const organizeImportsCommandId = 'editor.action.organizeImports';\nexport const fixAllCommandId = 'editor.action.fixAll';\nclass ManagedCodeActionSet extends Disposable {\n    static codeActionsPreferredComparator(a, b) {\n        if (a.isPreferred && !b.isPreferred) {\n            return -1;\n        }\n        else if (!a.isPreferred && b.isPreferred) {\n            return 1;\n        }\n        else {\n            return 0;\n        }\n    }\n    static codeActionsComparator({ action: a }, { action: b }) {\n        if (a.isAI && !b.isAI) {\n            return 1;\n        }\n        else if (!a.isAI && b.isAI) {\n            return -1;\n        }\n        if (isNonEmptyArray(a.diagnostics)) {\n            return isNonEmptyArray(b.diagnostics) ? ManagedCodeActionSet.codeActionsPreferredComparator(a, b) : -1;\n        }\n        else if (isNonEmptyArray(b.diagnostics)) {\n            return 1;\n        }\n        else {\n            return ManagedCodeActionSet.codeActionsPreferredComparator(a, b); // both have no diagnostics\n        }\n    }\n    constructor(actions, documentation, disposables) {\n        super();\n        this.documentation = documentation;\n        this._register(disposables);\n        this.allActions = [...actions].sort(ManagedCodeActionSet.codeActionsComparator);\n        this.validActions = this.allActions.filter(({ action }) => !action.disabled);\n    }\n    get hasAutoFix() {\n        return this.validActions.some(({ action: fix }) => !!fix.kind && CodeActionKind.QuickFix.contains(new HierarchicalKind(fix.kind)) && !!fix.isPreferred);\n    }\n    get hasAIFix() {\n        return this.validActions.some(({ action: fix }) => !!fix.isAI);\n    }\n    get allAIFixes() {\n        return this.validActions.every(({ action: fix }) => !!fix.isAI);\n    }\n}\nconst emptyCodeActionsResponse = { actions: [], documentation: undefined };\nexport async function getCodeActions(registry, model, rangeOrSelection, trigger, progress, token) {\n    var _a;\n    const filter = trigger.filter || {};\n    const notebookFilter = {\n        ...filter,\n        excludes: [...(filter.excludes || []), CodeActionKind.Notebook],\n    };\n    const codeActionContext = {\n        only: (_a = filter.include) === null || _a === void 0 ? void 0 : _a.value,\n        trigger: trigger.type,\n    };\n    const cts = new TextModelCancellationTokenSource(model, token);\n    // if the trigger is auto (autosave, lightbulb, etc), we should exclude notebook codeActions\n    const excludeNotebookCodeActions = (trigger.type === 2 /* languages.CodeActionTriggerType.Auto */);\n    const providers = getCodeActionProviders(registry, model, (excludeNotebookCodeActions) ? notebookFilter : filter);\n    const disposables = new DisposableStore();\n    const promises = providers.map(async (provider) => {\n        try {\n            progress.report(provider);\n            const providedCodeActions = await provider.provideCodeActions(model, rangeOrSelection, codeActionContext, cts.token);\n            if (providedCodeActions) {\n                disposables.add(providedCodeActions);\n            }\n            if (cts.token.isCancellationRequested) {\n                return emptyCodeActionsResponse;\n            }\n            const filteredActions = ((providedCodeActions === null || providedCodeActions === void 0 ? void 0 : providedCodeActions.actions) || []).filter(action => action && filtersAction(filter, action));\n            const documentation = getDocumentationFromProvider(provider, filteredActions, filter.include);\n            return {\n                actions: filteredActions.map(action => new CodeActionItem(action, provider)),\n                documentation\n            };\n        }\n        catch (err) {\n            if (isCancellationError(err)) {\n                throw err;\n            }\n            onUnexpectedExternalError(err);\n            return emptyCodeActionsResponse;\n        }\n    });\n    const listener = registry.onDidChange(() => {\n        const newProviders = registry.all(model);\n        if (!equals(newProviders, providers)) {\n            cts.cancel();\n        }\n    });\n    try {\n        const actions = await Promise.all(promises);\n        const allActions = actions.map(x => x.actions).flat();\n        const allDocumentation = [\n            ...coalesce(actions.map(x => x.documentation)),\n            ...getAdditionalDocumentationForShowingActions(registry, model, trigger, allActions)\n        ];\n        return new ManagedCodeActionSet(allActions, allDocumentation, disposables);\n    }\n    finally {\n        listener.dispose();\n        cts.dispose();\n    }\n}\nfunction getCodeActionProviders(registry, model, filter) {\n    return registry.all(model)\n        // Don't include providers that we know will not return code actions of interest\n        .filter(provider => {\n        if (!provider.providedCodeActionKinds) {\n            // We don't know what type of actions this provider will return.\n            return true;\n        }\n        return provider.providedCodeActionKinds.some(kind => mayIncludeActionsOfKind(filter, new HierarchicalKind(kind)));\n    });\n}\nfunction* getAdditionalDocumentationForShowingActions(registry, model, trigger, actionsToShow) {\n    var _a, _b, _c;\n    if (model && actionsToShow.length) {\n        for (const provider of registry.all(model)) {\n            if (provider._getAdditionalMenuItems) {\n                yield* (_a = provider._getAdditionalMenuItems) === null || _a === void 0 ? void 0 : _a.call(provider, { trigger: trigger.type, only: (_c = (_b = trigger.filter) === null || _b === void 0 ? void 0 : _b.include) === null || _c === void 0 ? void 0 : _c.value }, actionsToShow.map(item => item.action));\n            }\n        }\n    }\n}\nfunction getDocumentationFromProvider(provider, providedCodeActions, only) {\n    if (!provider.documentation) {\n        return undefined;\n    }\n    const documentation = provider.documentation.map(entry => ({ kind: new HierarchicalKind(entry.kind), command: entry.command }));\n    if (only) {\n        let currentBest;\n        for (const entry of documentation) {\n            if (entry.kind.contains(only)) {\n                if (!currentBest) {\n                    currentBest = entry;\n                }\n                else {\n                    // Take best match\n                    if (currentBest.kind.contains(entry.kind)) {\n                        currentBest = entry;\n                    }\n                }\n            }\n        }\n        if (currentBest) {\n            return currentBest === null || currentBest === void 0 ? void 0 : currentBest.command;\n        }\n    }\n    // Otherwise, check to see if any of the provided actions match.\n    for (const action of providedCodeActions) {\n        if (!action.kind) {\n            continue;\n        }\n        for (const entry of documentation) {\n            if (entry.kind.contains(new HierarchicalKind(action.kind))) {\n                return entry.command;\n            }\n        }\n    }\n    return undefined;\n}\nexport var ApplyCodeActionReason;\n(function (ApplyCodeActionReason) {\n    ApplyCodeActionReason[\"OnSave\"] = \"onSave\";\n    ApplyCodeActionReason[\"FromProblemsView\"] = \"fromProblemsView\";\n    ApplyCodeActionReason[\"FromCodeActions\"] = \"fromCodeActions\";\n    ApplyCodeActionReason[\"FromAILightbulb\"] = \"fromAILightbulb\"; // direct invocation when clicking on the AI lightbulb\n})(ApplyCodeActionReason || (ApplyCodeActionReason = {}));\nexport async function applyCodeAction(accessor, item, codeActionReason, options, token = CancellationToken.None) {\n    var _a;\n    const bulkEditService = accessor.get(IBulkEditService);\n    const commandService = accessor.get(ICommandService);\n    const telemetryService = accessor.get(ITelemetryService);\n    const notificationService = accessor.get(INotificationService);\n    telemetryService.publicLog2('codeAction.applyCodeAction', {\n        codeActionTitle: item.action.title,\n        codeActionKind: item.action.kind,\n        codeActionIsPreferred: !!item.action.isPreferred,\n        reason: codeActionReason,\n    });\n    await item.resolve(token);\n    if (token.isCancellationRequested) {\n        return;\n    }\n    if ((_a = item.action.edit) === null || _a === void 0 ? void 0 : _a.edits.length) {\n        const result = await bulkEditService.apply(item.action.edit, {\n            editor: options === null || options === void 0 ? void 0 : options.editor,\n            label: item.action.title,\n            quotableLabel: item.action.title,\n            code: 'undoredo.codeAction',\n            respectAutoSaveConfig: codeActionReason !== ApplyCodeActionReason.OnSave,\n            showPreview: options === null || options === void 0 ? void 0 : options.preview,\n        });\n        if (!result.isApplied) {\n            return;\n        }\n    }\n    if (item.action.command) {\n        try {\n            await commandService.executeCommand(item.action.command.id, ...(item.action.command.arguments || []));\n        }\n        catch (err) {\n            const message = asMessage(err);\n            notificationService.error(typeof message === 'string'\n                ? message\n                : nls.localize('applyCodeActionFailed', \"An unknown error occurred while applying the code action\"));\n        }\n    }\n}\nfunction asMessage(err) {\n    if (typeof err === 'string') {\n        return err;\n    }\n    else if (err instanceof Error && typeof err.message === 'string') {\n        return err.message;\n    }\n    else {\n        return undefined;\n    }\n}\nCommandsRegistry.registerCommand('_executeCodeActionProvider', async function (accessor, resource, rangeOrSelection, kind, itemResolveCount) {\n    if (!(resource instanceof URI)) {\n        throw illegalArgument();\n    }\n    const { codeActionProvider } = accessor.get(ILanguageFeaturesService);\n    const model = accessor.get(IModelService).getModel(resource);\n    if (!model) {\n        throw illegalArgument();\n    }\n    const validatedRangeOrSelection = Selection.isISelection(rangeOrSelection)\n        ? Selection.liftSelection(rangeOrSelection)\n        : Range.isIRange(rangeOrSelection)\n            ? model.validateRange(rangeOrSelection)\n            : undefined;\n    if (!validatedRangeOrSelection) {\n        throw illegalArgument();\n    }\n    const include = typeof kind === 'string' ? new HierarchicalKind(kind) : undefined;\n    const codeActionSet = await getCodeActions(codeActionProvider, model, validatedRangeOrSelection, { type: 1 /* languages.CodeActionTriggerType.Invoke */, triggerAction: CodeActionTriggerSource.Default, filter: { includeSourceActions: true, include } }, Progress.None, CancellationToken.None);\n    const resolving = [];\n    const resolveCount = Math.min(codeActionSet.validActions.length, typeof itemResolveCount === 'number' ? itemResolveCount : 0);\n    for (let i = 0; i < resolveCount; i++) {\n        resolving.push(codeActionSet.validActions[i].resolve(CancellationToken.None));\n    }\n    try {\n        await Promise.all(resolving);\n        return codeActionSet.validActions.map(item => item.action);\n    }\n    finally {\n        setTimeout(() => codeActionSet.dispose(), 100);\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 { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nexport const CodeActionKind = new class {\n    constructor() {\n        this.QuickFix = new HierarchicalKind('quickfix');\n        this.Refactor = new HierarchicalKind('refactor');\n        this.RefactorExtract = this.Refactor.append('extract');\n        this.RefactorInline = this.Refactor.append('inline');\n        this.RefactorMove = this.Refactor.append('move');\n        this.RefactorRewrite = this.Refactor.append('rewrite');\n        this.Notebook = new HierarchicalKind('notebook');\n        this.Source = new HierarchicalKind('source');\n        this.SourceOrganizeImports = this.Source.append('organizeImports');\n        this.SourceFixAll = this.Source.append('fixAll');\n        this.SurroundWith = this.Refactor.append('surround');\n    }\n};\nexport var CodeActionTriggerSource;\n(function (CodeActionTriggerSource) {\n    CodeActionTriggerSource[\"Refactor\"] = \"refactor\";\n    CodeActionTriggerSource[\"RefactorPreview\"] = \"refactor preview\";\n    CodeActionTriggerSource[\"Lightbulb\"] = \"lightbulb\";\n    CodeActionTriggerSource[\"Default\"] = \"other (default)\";\n    CodeActionTriggerSource[\"SourceAction\"] = \"source action\";\n    CodeActionTriggerSource[\"QuickFix\"] = \"quick fix action\";\n    CodeActionTriggerSource[\"FixAll\"] = \"fix all\";\n    CodeActionTriggerSource[\"OrganizeImports\"] = \"organize imports\";\n    CodeActionTriggerSource[\"AutoFix\"] = \"auto fix\";\n    CodeActionTriggerSource[\"QuickFixHover\"] = \"quick fix hover window\";\n    CodeActionTriggerSource[\"OnSave\"] = \"save participants\";\n    CodeActionTriggerSource[\"ProblemsView\"] = \"problems view\";\n})(CodeActionTriggerSource || (CodeActionTriggerSource = {}));\nexport function mayIncludeActionsOfKind(filter, providedKind) {\n    // A provided kind may be a subset or superset of our filtered kind.\n    if (filter.include && !filter.include.intersects(providedKind)) {\n        return false;\n    }\n    if (filter.excludes) {\n        if (filter.excludes.some(exclude => excludesAction(providedKind, exclude, filter.include))) {\n            return false;\n        }\n    }\n    // Don't return source actions unless they are explicitly requested\n    if (!filter.includeSourceActions && CodeActionKind.Source.contains(providedKind)) {\n        return false;\n    }\n    return true;\n}\nexport function filtersAction(filter, action) {\n    const actionKind = action.kind ? new HierarchicalKind(action.kind) : undefined;\n    // Filter out actions by kind\n    if (filter.include) {\n        if (!actionKind || !filter.include.contains(actionKind)) {\n            return false;\n        }\n    }\n    if (filter.excludes) {\n        if (actionKind && filter.excludes.some(exclude => excludesAction(actionKind, exclude, filter.include))) {\n            return false;\n        }\n    }\n    // Don't return source actions unless they are explicitly requested\n    if (!filter.includeSourceActions) {\n        if (actionKind && CodeActionKind.Source.contains(actionKind)) {\n            return false;\n        }\n    }\n    if (filter.onlyIncludePreferredActions) {\n        if (!action.isPreferred) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction excludesAction(providedKind, exclude, include) {\n    if (!exclude.contains(providedKind)) {\n        return false;\n    }\n    if (include && exclude.contains(include)) {\n        // The include is more specific, don't filter out\n        return false;\n    }\n    return true;\n}\nexport class CodeActionCommandArgs {\n    static fromUser(arg, defaults) {\n        if (!arg || typeof arg !== 'object') {\n            return new CodeActionCommandArgs(defaults.kind, defaults.apply, false);\n        }\n        return new CodeActionCommandArgs(CodeActionCommandArgs.getKindFromUser(arg, defaults.kind), CodeActionCommandArgs.getApplyFromUser(arg, defaults.apply), CodeActionCommandArgs.getPreferredUser(arg));\n    }\n    static getApplyFromUser(arg, defaultAutoApply) {\n        switch (typeof arg.apply === 'string' ? arg.apply.toLowerCase() : '') {\n            case 'first': return \"first\" /* CodeActionAutoApply.First */;\n            case 'never': return \"never\" /* CodeActionAutoApply.Never */;\n            case 'ifsingle': return \"ifSingle\" /* CodeActionAutoApply.IfSingle */;\n            default: return defaultAutoApply;\n        }\n    }\n    static getKindFromUser(arg, defaultKind) {\n        return typeof arg.kind === 'string'\n            ? new HierarchicalKind(arg.kind)\n            : defaultKind;\n    }\n    static getPreferredUser(arg) {\n        return typeof arg.preferred === 'boolean'\n            ? arg.preferred\n            : false;\n    }\n    constructor(kind, apply, preferred) {\n        this.kind = kind;\n        this.apply = apply;\n        this.preferred = preferred;\n    }\n}\nexport class CodeActionItem {\n    constructor(action, provider, highlightRange) {\n        this.action = action;\n        this.provider = provider;\n        this.highlightRange = highlightRange;\n    }\n    async resolve(token) {\n        var _a;\n        if (((_a = this.provider) === null || _a === void 0 ? void 0 : _a.resolveCodeAction) && !this.action.edit) {\n            let action;\n            try {\n                action = await this.provider.resolveCodeAction(this.action, token);\n            }\n            catch (err) {\n                onUnexpectedExternalError(err);\n            }\n            if (action) {\n                this.action.edit = action.edit;\n            }\n        }\n        return this;\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 CodeActionController_1;\nimport { getDomNodePagePosition } from '../../../../base/browser/dom.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Lazy } from '../../../../base/common/lazy.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { Position } from '../../../common/core/position.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ApplyCodeActionReason, applyCodeAction } from './codeAction.js';\nimport { CodeActionKeybindingResolver } from './codeActionKeybindingResolver.js';\nimport { toMenuItems } from './codeActionMenu.js';\nimport { LightBulbWidget } from './lightBulbWidget.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { localize } from '../../../../nls.js';\nimport { IActionWidgetService } from '../../../../platform/actionWidget/browser/actionWidget.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IMarkerService } from '../../../../platform/markers/common/markers.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { editorFindMatchHighlight, editorFindMatchHighlightBorder } from '../../../../platform/theme/common/colorRegistry.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { CodeActionKind, CodeActionTriggerSource } from '../common/types.js';\nimport { CodeActionModel } from './codeActionModel.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nconst DECORATION_CLASS_NAME = 'quickfix-edit-highlight';\nlet CodeActionController = CodeActionController_1 = class CodeActionController extends Disposable {\n    static get(editor) {\n        return editor.getContribution(CodeActionController_1.ID);\n    }\n    constructor(editor, markerService, contextKeyService, instantiationService, languageFeaturesService, progressService, _commandService, _configurationService, _actionWidgetService, _instantiationService, _telemetryService) {\n        super();\n        this._commandService = _commandService;\n        this._configurationService = _configurationService;\n        this._actionWidgetService = _actionWidgetService;\n        this._instantiationService = _instantiationService;\n        this._telemetryService = _telemetryService;\n        this._activeCodeActions = this._register(new MutableDisposable());\n        this._showDisabled = false;\n        this._disposed = false;\n        this._editor = editor;\n        this._model = this._register(new CodeActionModel(this._editor, languageFeaturesService.codeActionProvider, markerService, contextKeyService, progressService, _configurationService));\n        this._register(this._model.onDidChangeState(newState => this.update(newState)));\n        this._lightBulbWidget = new Lazy(() => {\n            const widget = this._editor.getContribution(LightBulbWidget.ID);\n            if (widget) {\n                this._register(widget.onClick(e => this.showCodeActionsFromLightbulb(e.actions, e)));\n            }\n            return widget;\n        });\n        this._resolver = instantiationService.createInstance(CodeActionKeybindingResolver);\n        this._register(this._editor.onDidLayoutChange(() => this._actionWidgetService.hide()));\n    }\n    dispose() {\n        this._disposed = true;\n        super.dispose();\n    }\n    async showCodeActionsFromLightbulb(actions, at) {\n        this._telemetryService.publicLog2('codeAction.showCodeActionsFromLightbulb', {\n            codeActionListLength: actions.validActions.length,\n            codeActions: actions.validActions.map(action => action.action.title),\n            codeActionProviders: actions.validActions.map(action => { var _a, _b; return (_b = (_a = action.provider) === null || _a === void 0 ? void 0 : _a.displayName) !== null && _b !== void 0 ? _b : ''; }),\n        });\n        if (actions.allAIFixes && actions.validActions.length === 1) {\n            const actionItem = actions.validActions[0];\n            const command = actionItem.action.command;\n            if (command && command.id === 'inlineChat.start') {\n                if (command.arguments && command.arguments.length >= 1) {\n                    command.arguments[0] = { ...command.arguments[0], autoSend: false };\n                }\n            }\n            await this._applyCodeAction(actionItem, false, false, ApplyCodeActionReason.FromAILightbulb);\n            return;\n        }\n        await this.showCodeActionList(actions, at, { includeDisabledActions: false, fromLightbulb: true });\n    }\n    showCodeActions(_trigger, actions, at) {\n        return this.showCodeActionList(actions, at, { includeDisabledActions: false, fromLightbulb: false });\n    }\n    manualTriggerAtCurrentPosition(notAvailableMessage, triggerAction, filter, autoApply) {\n        var _a;\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        (_a = MessageController.get(this._editor)) === null || _a === void 0 ? void 0 : _a.closeMessage();\n        const triggerPosition = this._editor.getPosition();\n        this._trigger({ type: 1 /* CodeActionTriggerType.Invoke */, triggerAction, filter, autoApply, context: { notAvailableMessage, position: triggerPosition } });\n    }\n    _trigger(trigger) {\n        return this._model.trigger(trigger);\n    }\n    async _applyCodeAction(action, retrigger, preview, actionReason) {\n        try {\n            await this._instantiationService.invokeFunction(applyCodeAction, action, actionReason, { preview, editor: this._editor });\n        }\n        finally {\n            if (retrigger) {\n                this._trigger({ type: 2 /* CodeActionTriggerType.Auto */, triggerAction: CodeActionTriggerSource.QuickFix, filter: {} });\n            }\n        }\n    }\n    async update(newState) {\n        var _a, _b, _c, _d, _e, _f, _g;\n        if (newState.type !== 1 /* CodeActionsState.Type.Triggered */) {\n            (_a = this._lightBulbWidget.rawValue) === null || _a === void 0 ? void 0 : _a.hide();\n            return;\n        }\n        let actions;\n        try {\n            actions = await newState.actions;\n        }\n        catch (e) {\n            onUnexpectedError(e);\n            return;\n        }\n        if (this._disposed) {\n            return;\n        }\n        (_b = this._lightBulbWidget.value) === null || _b === void 0 ? void 0 : _b.update(actions, newState.trigger, newState.position);\n        if (newState.trigger.type === 1 /* CodeActionTriggerType.Invoke */) {\n            if ((_c = newState.trigger.filter) === null || _c === void 0 ? void 0 : _c.include) { // Triggered for specific scope\n                // Check to see if we want to auto apply.\n                const validActionToApply = this.tryGetValidActionToApply(newState.trigger, actions);\n                if (validActionToApply) {\n                    try {\n                        (_d = this._lightBulbWidget.value) === null || _d === void 0 ? void 0 : _d.hide();\n                        await this._applyCodeAction(validActionToApply, false, false, ApplyCodeActionReason.FromCodeActions);\n                    }\n                    finally {\n                        actions.dispose();\n                    }\n                    return;\n                }\n                // Check to see if there is an action that we would have applied were it not invalid\n                if (newState.trigger.context) {\n                    const invalidAction = this.getInvalidActionThatWouldHaveBeenApplied(newState.trigger, actions);\n                    if (invalidAction && invalidAction.action.disabled) {\n                        (_e = MessageController.get(this._editor)) === null || _e === void 0 ? void 0 : _e.showMessage(invalidAction.action.disabled, newState.trigger.context.position);\n                        actions.dispose();\n                        return;\n                    }\n                }\n            }\n            const includeDisabledActions = !!((_f = newState.trigger.filter) === null || _f === void 0 ? void 0 : _f.include);\n            if (newState.trigger.context) {\n                if (!actions.allActions.length || !includeDisabledActions && !actions.validActions.length) {\n                    (_g = MessageController.get(this._editor)) === null || _g === void 0 ? void 0 : _g.showMessage(newState.trigger.context.notAvailableMessage, newState.trigger.context.position);\n                    this._activeCodeActions.value = actions;\n                    actions.dispose();\n                    return;\n                }\n            }\n            this._activeCodeActions.value = actions;\n            this.showCodeActionList(actions, this.toCoords(newState.position), { includeDisabledActions, fromLightbulb: false });\n        }\n        else {\n            // auto magically triggered\n            if (this._actionWidgetService.isVisible) {\n                // TODO: Figure out if we should update the showing menu?\n                actions.dispose();\n            }\n            else {\n                this._activeCodeActions.value = actions;\n            }\n        }\n    }\n    getInvalidActionThatWouldHaveBeenApplied(trigger, actions) {\n        if (!actions.allActions.length) {\n            return undefined;\n        }\n        if ((trigger.autoApply === \"first\" /* CodeActionAutoApply.First */ && actions.validActions.length === 0)\n            || (trigger.autoApply === \"ifSingle\" /* CodeActionAutoApply.IfSingle */ && actions.allActions.length === 1)) {\n            return actions.allActions.find(({ action }) => action.disabled);\n        }\n        return undefined;\n    }\n    tryGetValidActionToApply(trigger, actions) {\n        if (!actions.validActions.length) {\n            return undefined;\n        }\n        if ((trigger.autoApply === \"first\" /* CodeActionAutoApply.First */ && actions.validActions.length > 0)\n            || (trigger.autoApply === \"ifSingle\" /* CodeActionAutoApply.IfSingle */ && actions.validActions.length === 1)) {\n            return actions.validActions[0];\n        }\n        return undefined;\n    }\n    async showCodeActionList(actions, at, options) {\n        const currentDecorations = this._editor.createDecorationsCollection();\n        const editorDom = this._editor.getDomNode();\n        if (!editorDom) {\n            return;\n        }\n        const actionsToShow = options.includeDisabledActions && (this._showDisabled || actions.validActions.length === 0) ? actions.allActions : actions.validActions;\n        if (!actionsToShow.length) {\n            return;\n        }\n        const anchor = Position.isIPosition(at) ? this.toCoords(at) : at;\n        const delegate = {\n            onSelect: async (action, preview) => {\n                this._applyCodeAction(action, /* retrigger */ true, !!preview, options.fromLightbulb ? ApplyCodeActionReason.FromAILightbulb : ApplyCodeActionReason.FromCodeActions);\n                this._actionWidgetService.hide(false);\n                currentDecorations.clear();\n            },\n            onHide: (didCancel) => {\n                var _a;\n                (_a = this._editor) === null || _a === void 0 ? void 0 : _a.focus();\n                currentDecorations.clear();\n                // Telemetry for showing code actions here. only log on `showLightbulb`. Logs when code action list is quit out.\n                if (options.fromLightbulb && didCancel !== undefined) {\n                    this._telemetryService.publicLog2('codeAction.showCodeActionList.onHide', {\n                        codeActionListLength: actions.validActions.length,\n                        didCancel: didCancel,\n                    });\n                }\n            },\n            onHover: async (action, token) => {\n                var _a;\n                if (token.isCancellationRequested) {\n                    return;\n                }\n                let canPreview = false;\n                const actionKind = action.action.kind;\n                if (actionKind) {\n                    const hierarchicalKind = new HierarchicalKind(actionKind);\n                    const refactorKinds = [\n                        CodeActionKind.RefactorExtract,\n                        CodeActionKind.RefactorInline,\n                        CodeActionKind.RefactorRewrite,\n                        CodeActionKind.RefactorMove,\n                        CodeActionKind.Source\n                    ];\n                    canPreview = refactorKinds.some(refactorKind => refactorKind.contains(hierarchicalKind));\n                }\n                return { canPreview: canPreview || !!((_a = action.action.edit) === null || _a === void 0 ? void 0 : _a.edits.length) };\n            },\n            onFocus: (action) => {\n                var _a, _b;\n                if (action && action.action) {\n                    const ranges = action.action.ranges;\n                    const diagnostics = action.action.diagnostics;\n                    currentDecorations.clear();\n                    if (ranges && ranges.length > 0) {\n                        // Handles case for `fix all` where there are multiple diagnostics.\n                        const decorations = (diagnostics && (diagnostics === null || diagnostics === void 0 ? void 0 : diagnostics.length) > 1)\n                            ? diagnostics.map(diagnostic => ({ range: diagnostic, options: CodeActionController_1.DECORATION }))\n                            : ranges.map(range => ({ range, options: CodeActionController_1.DECORATION }));\n                        currentDecorations.set(decorations);\n                    }\n                    else if (diagnostics && diagnostics.length > 0) {\n                        const decorations = diagnostics.map(diagnostic => ({ range: diagnostic, options: CodeActionController_1.DECORATION }));\n                        currentDecorations.set(decorations);\n                        const diagnostic = diagnostics[0];\n                        if (diagnostic.startLineNumber && diagnostic.startColumn) {\n                            const selectionText = (_b = (_a = this._editor.getModel()) === null || _a === void 0 ? void 0 : _a.getWordAtPosition({ lineNumber: diagnostic.startLineNumber, column: diagnostic.startColumn })) === null || _b === void 0 ? void 0 : _b.word;\n                            aria.status(localize('editingNewSelection', \"Context: {0} at line {1} and column {2}.\", selectionText, diagnostic.startLineNumber, diagnostic.startColumn));\n                        }\n                    }\n                }\n                else {\n                    currentDecorations.clear();\n                }\n            }\n        };\n        this._actionWidgetService.show('codeActionWidget', true, toMenuItems(actionsToShow, this._shouldShowHeaders(), this._resolver.getResolver()), delegate, anchor, editorDom, this._getActionBarActions(actions, at, options));\n    }\n    toCoords(position) {\n        if (!this._editor.hasModel()) {\n            return { x: 0, y: 0 };\n        }\n        this._editor.revealPosition(position, 1 /* ScrollType.Immediate */);\n        this._editor.render();\n        // Translate to absolute editor position\n        const cursorCoords = this._editor.getScrolledVisiblePosition(position);\n        const editorCoords = getDomNodePagePosition(this._editor.getDomNode());\n        const x = editorCoords.left + cursorCoords.left;\n        const y = editorCoords.top + cursorCoords.top + cursorCoords.height;\n        return { x, y };\n    }\n    _shouldShowHeaders() {\n        var _a;\n        const model = (_a = this._editor) === null || _a === void 0 ? void 0 : _a.getModel();\n        return this._configurationService.getValue('editor.codeActionWidget.showHeaders', { resource: model === null || model === void 0 ? void 0 : model.uri });\n    }\n    _getActionBarActions(actions, at, options) {\n        if (options.fromLightbulb) {\n            return [];\n        }\n        const resultActions = actions.documentation.map((command) => {\n            var _a;\n            return ({\n                id: command.id,\n                label: command.title,\n                tooltip: (_a = command.tooltip) !== null && _a !== void 0 ? _a : '',\n                class: undefined,\n                enabled: true,\n                run: () => { var _a; return this._commandService.executeCommand(command.id, ...((_a = command.arguments) !== null && _a !== void 0 ? _a : [])); },\n            });\n        });\n        if (options.includeDisabledActions && actions.validActions.length > 0 && actions.allActions.length !== actions.validActions.length) {\n            resultActions.push(this._showDisabled ? {\n                id: 'hideMoreActions',\n                label: localize('hideMoreActions', 'Hide Disabled'),\n                enabled: true,\n                tooltip: '',\n                class: undefined,\n                run: () => {\n                    this._showDisabled = false;\n                    return this.showCodeActionList(actions, at, options);\n                }\n            } : {\n                id: 'showMoreActions',\n                label: localize('showMoreActions', 'Show Disabled'),\n                enabled: true,\n                tooltip: '',\n                class: undefined,\n                run: () => {\n                    this._showDisabled = true;\n                    return this.showCodeActionList(actions, at, options);\n                }\n            });\n        }\n        return resultActions;\n    }\n};\nCodeActionController.ID = 'editor.contrib.codeActionController';\nCodeActionController.DECORATION = ModelDecorationOptions.register({\n    description: 'quickfix-highlight',\n    className: DECORATION_CLASS_NAME\n});\nCodeActionController = CodeActionController_1 = __decorate([\n    __param(1, IMarkerService),\n    __param(2, IContextKeyService),\n    __param(3, IInstantiationService),\n    __param(4, ILanguageFeaturesService),\n    __param(5, IEditorProgressService),\n    __param(6, ICommandService),\n    __param(7, IConfigurationService),\n    __param(8, IActionWidgetService),\n    __param(9, IInstantiationService),\n    __param(10, ITelemetryService)\n], CodeActionController);\nexport { CodeActionController };\nregisterThemingParticipant((theme, collector) => {\n    const addBackgroundColorRule = (selector, color) => {\n        if (color) {\n            collector.addRule(`.monaco-editor ${selector} { background-color: ${color}; }`);\n        }\n    };\n    addBackgroundColorRule('.quickfix-edit-highlight', theme.getColor(editorFindMatchHighlight));\n    const findMatchHighlightBorder = theme.getColor(editorFindMatchHighlightBorder);\n    if (findMatchHighlightBorder) {\n        collector.addRule(`.monaco-editor .quickfix-edit-highlight { border: 1px ${isHighContrast(theme.type) ? 'dotted' : 'solid'} ${findMatchHighlightBorder}; box-sizing: border-box; }`);\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 CodeActionKeybindingResolver_1;\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Lazy } from '../../../../base/common/lazy.js';\nimport { codeActionCommandId, fixAllCommandId, organizeImportsCommandId, refactorCommandId, sourceActionCommandId } from './codeAction.js';\nimport { CodeActionCommandArgs, CodeActionKind } from '../common/types.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nlet CodeActionKeybindingResolver = CodeActionKeybindingResolver_1 = class CodeActionKeybindingResolver {\n    constructor(keybindingService) {\n        this.keybindingService = keybindingService;\n    }\n    getResolver() {\n        // Lazy since we may not actually ever read the value\n        const allCodeActionBindings = new Lazy(() => this.keybindingService.getKeybindings()\n            .filter(item => CodeActionKeybindingResolver_1.codeActionCommands.indexOf(item.command) >= 0)\n            .filter(item => item.resolvedKeybinding)\n            .map((item) => {\n            // Special case these commands since they come built-in with VS Code and don't use 'commandArgs'\n            let commandArgs = item.commandArgs;\n            if (item.command === organizeImportsCommandId) {\n                commandArgs = { kind: CodeActionKind.SourceOrganizeImports.value };\n            }\n            else if (item.command === fixAllCommandId) {\n                commandArgs = { kind: CodeActionKind.SourceFixAll.value };\n            }\n            return {\n                resolvedKeybinding: item.resolvedKeybinding,\n                ...CodeActionCommandArgs.fromUser(commandArgs, {\n                    kind: HierarchicalKind.None,\n                    apply: \"never\" /* CodeActionAutoApply.Never */\n                })\n            };\n        }));\n        return (action) => {\n            if (action.kind) {\n                const binding = this.bestKeybindingForCodeAction(action, allCodeActionBindings.value);\n                return binding === null || binding === void 0 ? void 0 : binding.resolvedKeybinding;\n            }\n            return undefined;\n        };\n    }\n    bestKeybindingForCodeAction(action, candidates) {\n        if (!action.kind) {\n            return undefined;\n        }\n        const kind = new HierarchicalKind(action.kind);\n        return candidates\n            .filter(candidate => candidate.kind.contains(kind))\n            .filter(candidate => {\n            if (candidate.preferred) {\n                // If the candidate keybinding only applies to preferred actions, the this action must also be preferred\n                return action.isPreferred;\n            }\n            return true;\n        })\n            .reduceRight((currentBest, candidate) => {\n            if (!currentBest) {\n                return candidate;\n            }\n            // Select the more specific binding\n            return currentBest.kind.contains(candidate.kind) ? candidate : currentBest;\n        }, undefined);\n    }\n};\nCodeActionKeybindingResolver.codeActionCommands = [\n    refactorCommandId,\n    codeActionCommandId,\n    sourceActionCommandId,\n    organizeImportsCommandId,\n    fixAllCommandId\n];\nCodeActionKeybindingResolver = CodeActionKeybindingResolver_1 = __decorate([\n    __param(0, IKeybindingService)\n], CodeActionKeybindingResolver);\nexport { CodeActionKeybindingResolver };\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 '../../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { CodeActionKind } from '../common/types.js';\nimport '../../symbolIcons/browser/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors\nimport { localize } from '../../../../nls.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nconst uncategorizedCodeActionGroup = Object.freeze({ kind: HierarchicalKind.Empty, title: localize('codeAction.widget.id.more', 'More Actions...') });\nconst codeActionGroups = Object.freeze([\n    { kind: CodeActionKind.QuickFix, title: localize('codeAction.widget.id.quickfix', 'Quick Fix') },\n    { kind: CodeActionKind.RefactorExtract, title: localize('codeAction.widget.id.extract', 'Extract'), icon: Codicon.wrench },\n    { kind: CodeActionKind.RefactorInline, title: localize('codeAction.widget.id.inline', 'Inline'), icon: Codicon.wrench },\n    { kind: CodeActionKind.RefactorRewrite, title: localize('codeAction.widget.id.convert', 'Rewrite'), icon: Codicon.wrench },\n    { kind: CodeActionKind.RefactorMove, title: localize('codeAction.widget.id.move', 'Move'), icon: Codicon.wrench },\n    { kind: CodeActionKind.SurroundWith, title: localize('codeAction.widget.id.surround', 'Surround With'), icon: Codicon.surroundWith },\n    { kind: CodeActionKind.Source, title: localize('codeAction.widget.id.source', 'Source Action'), icon: Codicon.symbolFile },\n    uncategorizedCodeActionGroup,\n]);\nexport function toMenuItems(inputCodeActions, showHeaders, keybindingResolver) {\n    if (!showHeaders) {\n        return inputCodeActions.map((action) => {\n            var _a;\n            return {\n                kind: \"action\" /* ActionListItemKind.Action */,\n                item: action,\n                group: uncategorizedCodeActionGroup,\n                disabled: !!action.action.disabled,\n                label: action.action.disabled || action.action.title,\n                canPreview: !!((_a = action.action.edit) === null || _a === void 0 ? void 0 : _a.edits.length),\n            };\n        });\n    }\n    // Group code actions\n    const menuEntries = codeActionGroups.map(group => ({ group, actions: [] }));\n    for (const action of inputCodeActions) {\n        const kind = action.action.kind ? new HierarchicalKind(action.action.kind) : HierarchicalKind.None;\n        for (const menuEntry of menuEntries) {\n            if (menuEntry.group.kind.contains(kind)) {\n                menuEntry.actions.push(action);\n                break;\n            }\n        }\n    }\n    const allMenuItems = [];\n    for (const menuEntry of menuEntries) {\n        if (menuEntry.actions.length) {\n            allMenuItems.push({ kind: \"header\" /* ActionListItemKind.Header */, group: menuEntry.group });\n            for (const action of menuEntry.actions) {\n                const group = menuEntry.group;\n                allMenuItems.push({\n                    kind: \"action\" /* ActionListItemKind.Action */,\n                    item: action,\n                    group: action.action.isAI ? { title: group.title, kind: group.kind, icon: Codicon.sparkle } : group,\n                    label: action.action.title,\n                    disabled: !!action.action.disabled,\n                    keybinding: keybindingResolver(action.action),\n                });\n            }\n        }\n    }\n    return allMenuItems;\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 './symbolIcons.css';\nimport { localize } from '../../../../nls.js';\nimport { foreground, registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nexport const SYMBOL_ICON_ARRAY_FOREGROUND = registerColor('symbolIcon.arrayForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground,\n}, localize('symbolIcon.arrayForeground', 'The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_BOOLEAN_FOREGROUND = registerColor('symbolIcon.booleanForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground,\n}, localize('symbolIcon.booleanForeground', 'The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_CLASS_FOREGROUND = registerColor('symbolIcon.classForeground', {\n    dark: '#EE9D28',\n    light: '#D67E00',\n    hcDark: '#EE9D28',\n    hcLight: '#D67E00'\n}, localize('symbolIcon.classForeground', 'The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_COLOR_FOREGROUND = registerColor('symbolIcon.colorForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.colorForeground', 'The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_CONSTANT_FOREGROUND = registerColor('symbolIcon.constantForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.constantForeground', 'The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_CONSTRUCTOR_FOREGROUND = registerColor('symbolIcon.constructorForeground', {\n    dark: '#B180D7',\n    light: '#652D90',\n    hcDark: '#B180D7',\n    hcLight: '#652D90'\n}, localize('symbolIcon.constructorForeground', 'The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_ENUMERATOR_FOREGROUND = registerColor('symbolIcon.enumeratorForeground', {\n    dark: '#EE9D28',\n    light: '#D67E00',\n    hcDark: '#EE9D28',\n    hcLight: '#D67E00'\n}, localize('symbolIcon.enumeratorForeground', 'The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND = registerColor('symbolIcon.enumeratorMemberForeground', {\n    dark: '#75BEFF',\n    light: '#007ACC',\n    hcDark: '#75BEFF',\n    hcLight: '#007ACC'\n}, localize('symbolIcon.enumeratorMemberForeground', 'The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_EVENT_FOREGROUND = registerColor('symbolIcon.eventForeground', {\n    dark: '#EE9D28',\n    light: '#D67E00',\n    hcDark: '#EE9D28',\n    hcLight: '#D67E00'\n}, localize('symbolIcon.eventForeground', 'The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_FIELD_FOREGROUND = registerColor('symbolIcon.fieldForeground', {\n    dark: '#75BEFF',\n    light: '#007ACC',\n    hcDark: '#75BEFF',\n    hcLight: '#007ACC'\n}, localize('symbolIcon.fieldForeground', 'The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_FILE_FOREGROUND = registerColor('symbolIcon.fileForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.fileForeground', 'The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_FOLDER_FOREGROUND = registerColor('symbolIcon.folderForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.folderForeground', 'The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_FUNCTION_FOREGROUND = registerColor('symbolIcon.functionForeground', {\n    dark: '#B180D7',\n    light: '#652D90',\n    hcDark: '#B180D7',\n    hcLight: '#652D90'\n}, localize('symbolIcon.functionForeground', 'The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_INTERFACE_FOREGROUND = registerColor('symbolIcon.interfaceForeground', {\n    dark: '#75BEFF',\n    light: '#007ACC',\n    hcDark: '#75BEFF',\n    hcLight: '#007ACC'\n}, localize('symbolIcon.interfaceForeground', 'The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_KEY_FOREGROUND = registerColor('symbolIcon.keyForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.keyForeground', 'The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_KEYWORD_FOREGROUND = registerColor('symbolIcon.keywordForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.keywordForeground', 'The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_METHOD_FOREGROUND = registerColor('symbolIcon.methodForeground', {\n    dark: '#B180D7',\n    light: '#652D90',\n    hcDark: '#B180D7',\n    hcLight: '#652D90'\n}, localize('symbolIcon.methodForeground', 'The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_MODULE_FOREGROUND = registerColor('symbolIcon.moduleForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.moduleForeground', 'The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_NAMESPACE_FOREGROUND = registerColor('symbolIcon.namespaceForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.namespaceForeground', 'The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_NULL_FOREGROUND = registerColor('symbolIcon.nullForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.nullForeground', 'The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_NUMBER_FOREGROUND = registerColor('symbolIcon.numberForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.numberForeground', 'The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_OBJECT_FOREGROUND = registerColor('symbolIcon.objectForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.objectForeground', 'The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_OPERATOR_FOREGROUND = registerColor('symbolIcon.operatorForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.operatorForeground', 'The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_PACKAGE_FOREGROUND = registerColor('symbolIcon.packageForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.packageForeground', 'The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_PROPERTY_FOREGROUND = registerColor('symbolIcon.propertyForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.propertyForeground', 'The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_REFERENCE_FOREGROUND = registerColor('symbolIcon.referenceForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.referenceForeground', 'The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_SNIPPET_FOREGROUND = registerColor('symbolIcon.snippetForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.snippetForeground', 'The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_STRING_FOREGROUND = registerColor('symbolIcon.stringForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.stringForeground', 'The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_STRUCT_FOREGROUND = registerColor('symbolIcon.structForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground,\n}, localize('symbolIcon.structForeground', 'The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_TEXT_FOREGROUND = registerColor('symbolIcon.textForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.textForeground', 'The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_TYPEPARAMETER_FOREGROUND = registerColor('symbolIcon.typeParameterForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.typeParameterForeground', 'The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_UNIT_FOREGROUND = registerColor('symbolIcon.unitForeground', {\n    dark: foreground,\n    light: foreground,\n    hcDark: foreground,\n    hcLight: foreground\n}, localize('symbolIcon.unitForeground', 'The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_VARIABLE_FOREGROUND = registerColor('symbolIcon.variableForeground', {\n    dark: '#75BEFF',\n    light: '#007ACC',\n    hcDark: '#75BEFF',\n    hcLight: '#007ACC',\n}, localize('symbolIcon.variableForeground', 'The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\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 LightBulbWidget_1;\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Gesture } from '../../../../base/browser/touch.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport './lightBulbWidget.css';\nimport { computeIndentLevel } from '../../../common/model/utils.js';\nimport { autoFixCommandId, quickFixCommandId } from './codeAction.js';\nimport { CodeActionKind } from '../common/types.js';\nimport * as nls from '../../../../nls.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nvar LightBulbState;\n(function (LightBulbState) {\n    LightBulbState.Hidden = { type: 0 /* Type.Hidden */ };\n    class Showing {\n        constructor(actions, trigger, editorPosition, widgetPosition) {\n            this.actions = actions;\n            this.trigger = trigger;\n            this.editorPosition = editorPosition;\n            this.widgetPosition = widgetPosition;\n            this.type = 1 /* Type.Showing */;\n        }\n    }\n    LightBulbState.Showing = Showing;\n})(LightBulbState || (LightBulbState = {}));\nlet LightBulbWidget = LightBulbWidget_1 = class LightBulbWidget extends Disposable {\n    constructor(_editor, _keybindingService, commandService, _telemetryService) {\n        super();\n        this._editor = _editor;\n        this._keybindingService = _keybindingService;\n        this._telemetryService = _telemetryService;\n        this._onClick = this._register(new Emitter());\n        this.onClick = this._onClick.event;\n        this._state = LightBulbState.Hidden;\n        this._iconClasses = [];\n        this._domNode = dom.$('div.lightBulbWidget');\n        this._domNode.role = 'listbox';\n        this._register(Gesture.ignoreTarget(this._domNode));\n        this._editor.addContentWidget(this);\n        this._register(this._editor.onDidChangeModelContent(_ => {\n            // cancel when the line in question has been removed\n            const editorModel = this._editor.getModel();\n            if (this.state.type !== 1 /* LightBulbState.Type.Showing */ || !editorModel || this.state.editorPosition.lineNumber >= editorModel.getLineCount()) {\n                this.hide();\n            }\n        }));\n        this._register(dom.addStandardDisposableGenericMouseDownListener(this._domNode, e => {\n            if (this.state.type !== 1 /* LightBulbState.Type.Showing */) {\n                return;\n            }\n            // Make sure that focus / cursor location is not lost when clicking widget icon\n            this._editor.focus();\n            e.preventDefault();\n            // a bit of extra work to make sure the menu\n            // doesn't cover the line-text\n            const { top, height } = dom.getDomNodePagePosition(this._domNode);\n            const lineHeight = this._editor.getOption(67 /* EditorOption.lineHeight */);\n            let pad = Math.floor(lineHeight / 3);\n            if (this.state.widgetPosition.position !== null && this.state.widgetPosition.position.lineNumber < this.state.editorPosition.lineNumber) {\n                pad += lineHeight;\n            }\n            this._onClick.fire({\n                x: e.posx,\n                y: top + height + pad,\n                actions: this.state.actions,\n                trigger: this.state.trigger,\n            });\n        }));\n        this._register(dom.addDisposableListener(this._domNode, 'mouseenter', (e) => {\n            if ((e.buttons & 1) !== 1) {\n                return;\n            }\n            // mouse enters lightbulb while the primary/left button\n            // is being pressed -> hide the lightbulb\n            this.hide();\n        }));\n        this._register(Event.runAndSubscribe(this._keybindingService.onDidUpdateKeybindings, () => {\n            var _a, _b, _c, _d;\n            this._preferredKbLabel = (_b = (_a = this._keybindingService.lookupKeybinding(autoFixCommandId)) === null || _a === void 0 ? void 0 : _a.getLabel()) !== null && _b !== void 0 ? _b : undefined;\n            this._quickFixKbLabel = (_d = (_c = this._keybindingService.lookupKeybinding(quickFixCommandId)) === null || _c === void 0 ? void 0 : _c.getLabel()) !== null && _d !== void 0 ? _d : undefined;\n            this._updateLightBulbTitleAndIcon();\n        }));\n    }\n    dispose() {\n        super.dispose();\n        this._editor.removeContentWidget(this);\n    }\n    getId() {\n        return 'LightBulbWidget';\n    }\n    getDomNode() {\n        return this._domNode;\n    }\n    getPosition() {\n        return this._state.type === 1 /* LightBulbState.Type.Showing */ ? this._state.widgetPosition : null;\n    }\n    update(actions, trigger, atPosition) {\n        if (actions.validActions.length <= 0) {\n            return this.hide();\n        }\n        const options = this._editor.getOptions();\n        if (!options.get(65 /* EditorOption.lightbulb */).enabled) {\n            return this.hide();\n        }\n        const model = this._editor.getModel();\n        if (!model) {\n            return this.hide();\n        }\n        const { lineNumber, column } = model.validatePosition(atPosition);\n        const tabSize = model.getOptions().tabSize;\n        const fontInfo = this._editor.getOptions().get(50 /* EditorOption.fontInfo */);\n        const lineContent = model.getLineContent(lineNumber);\n        const indent = computeIndentLevel(lineContent, tabSize);\n        const lineHasSpace = fontInfo.spaceWidth * indent > 22;\n        const isFolded = (lineNumber) => {\n            return lineNumber > 2 && this._editor.getTopForLineNumber(lineNumber) === this._editor.getTopForLineNumber(lineNumber - 1);\n        };\n        let effectiveLineNumber = lineNumber;\n        let effectiveColumnNumber = 1;\n        if (!lineHasSpace) {\n            if (lineNumber > 1 && !isFolded(lineNumber - 1)) {\n                effectiveLineNumber -= 1;\n            }\n            else if ((lineNumber < model.getLineCount()) && !isFolded(lineNumber + 1)) {\n                effectiveLineNumber += 1;\n            }\n            else if (column * fontInfo.spaceWidth < 22) {\n                // cannot show lightbulb above/below and showing\n                // it inline would overlay the cursor...\n                return this.hide();\n            }\n            effectiveColumnNumber = /^\\S\\s*$/.test(model.getLineContent(effectiveLineNumber)) ? 2 : 1;\n        }\n        this.state = new LightBulbState.Showing(actions, trigger, atPosition, {\n            position: { lineNumber: effectiveLineNumber, column: effectiveColumnNumber },\n            preference: LightBulbWidget_1._posPref\n        });\n        const validActions = actions.validActions;\n        const actionKind = actions.validActions[0].action.kind;\n        if (validActions.length !== 1 || !actionKind) {\n            this._editor.layoutContentWidget(this);\n            return;\n        }\n        const hierarchicalKind = new HierarchicalKind(actionKind);\n        if (CodeActionKind.RefactorMove.contains(hierarchicalKind)) {\n            this._telemetryService.publicLog2('lightbulbWidget.moveToCodeActions', {\n                codeActionListLength: validActions.length,\n            });\n        }\n        this._editor.layoutContentWidget(this);\n    }\n    hide() {\n        if (this.state === LightBulbState.Hidden) {\n            return;\n        }\n        this.state = LightBulbState.Hidden;\n        this._editor.layoutContentWidget(this);\n    }\n    get state() { return this._state; }\n    set state(value) {\n        this._state = value;\n        this._updateLightBulbTitleAndIcon();\n    }\n    _updateLightBulbTitleAndIcon() {\n        this._domNode.classList.remove(...this._iconClasses);\n        this._iconClasses = [];\n        if (this.state.type !== 1 /* LightBulbState.Type.Showing */) {\n            return;\n        }\n        let icon;\n        let autoRun = false;\n        if (this.state.actions.allAIFixes) {\n            icon = Codicon.sparkleFilled;\n            if (this.state.actions.validActions.length === 1) {\n                autoRun = true;\n            }\n        }\n        else if (this.state.actions.hasAutoFix) {\n            if (this.state.actions.hasAIFix) {\n                icon = Codicon.lightbulbSparkleAutofix;\n            }\n            else {\n                icon = Codicon.lightbulbAutofix;\n            }\n        }\n        else if (this.state.actions.hasAIFix) {\n            icon = Codicon.lightbulbSparkle;\n        }\n        else {\n            icon = Codicon.lightBulb;\n        }\n        this._updateLightbulbTitle(this.state.actions.hasAutoFix, autoRun);\n        this._iconClasses = ThemeIcon.asClassNameArray(icon);\n        this._domNode.classList.add(...this._iconClasses);\n    }\n    _updateLightbulbTitle(autoFix, autoRun) {\n        if (this.state.type !== 1 /* LightBulbState.Type.Showing */) {\n            return;\n        }\n        if (autoRun) {\n            this.title = nls.localize('codeActionAutoRun', \"Run: {0}\", this.state.actions.validActions[0].action.title);\n        }\n        else if (autoFix && this._preferredKbLabel) {\n            this.title = nls.localize('preferredcodeActionWithKb', \"Show Code Actions. Preferred Quick Fix Available ({0})\", this._preferredKbLabel);\n        }\n        else if (!autoFix && this._quickFixKbLabel) {\n            this.title = nls.localize('codeActionWithKb', \"Show Code Actions ({0})\", this._quickFixKbLabel);\n        }\n        else if (!autoFix) {\n            this.title = nls.localize('codeAction', \"Show Code Actions\");\n        }\n    }\n    set title(value) {\n        this._domNode.title = value;\n    }\n};\nLightBulbWidget.ID = 'editor.contrib.lightbulbWidget';\nLightBulbWidget._posPref = [0 /* ContentWidgetPositionPreference.EXACT */];\nLightBulbWidget = LightBulbWidget_1 = __decorate([\n    __param(1, IKeybindingService),\n    __param(2, ICommandService),\n    __param(3, ITelemetryService)\n], LightBulbWidget);\nexport { LightBulbWidget };\n", "var __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};\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 { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\nimport { Disposable, DisposableStore, MutableDisposable } from '../../../base/common/lifecycle.js';\nimport './actionWidget.css';\nimport { localize, localize2 } from '../../../nls.js';\nimport { acceptSelectedActionCommand, ActionList, previewSelectedActionCommand } from './actionList.js';\nimport { Action2, registerAction2 } from '../../actions/common/actions.js';\nimport { IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { IContextViewService } from '../../contextview/browser/contextView.js';\nimport { registerSingleton } from '../../instantiation/common/extensions.js';\nimport { createDecorator, IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { inputActiveOptionBackground, registerColor } from '../../theme/common/colorRegistry.js';\nregisterColor('actionBar.toggledBackground', { dark: inputActiveOptionBackground, light: inputActiveOptionBackground, hcDark: inputActiveOptionBackground, hcLight: inputActiveOptionBackground, }, localize('actionBar.toggledBackground', 'Background color for toggled action items in action bar.'));\nconst ActionWidgetContextKeys = {\n    Visible: new RawContextKey('codeActionMenuVisible', false, localize('codeActionMenuVisible', \"Whether the action widget list is visible\"))\n};\nexport const IActionWidgetService = createDecorator('actionWidgetService');\nlet ActionWidgetService = class ActionWidgetService extends Disposable {\n    get isVisible() {\n        return ActionWidgetContextKeys.Visible.getValue(this._contextKeyService) || false;\n    }\n    constructor(_contextViewService, _contextKeyService, _instantiationService) {\n        super();\n        this._contextViewService = _contextViewService;\n        this._contextKeyService = _contextKeyService;\n        this._instantiationService = _instantiationService;\n        this._list = this._register(new MutableDisposable());\n    }\n    show(user, supportsPreview, items, delegate, anchor, container, actionBarActions) {\n        const visibleContext = ActionWidgetContextKeys.Visible.bindTo(this._contextKeyService);\n        const list = this._instantiationService.createInstance(ActionList, user, supportsPreview, items, delegate);\n        this._contextViewService.showContextView({\n            getAnchor: () => anchor,\n            render: (container) => {\n                visibleContext.set(true);\n                return this._renderWidget(container, list, actionBarActions !== null && actionBarActions !== void 0 ? actionBarActions : []);\n            },\n            onHide: (didCancel) => {\n                visibleContext.reset();\n                this._onWidgetClosed(didCancel);\n            },\n        }, container, false);\n    }\n    acceptSelected(preview) {\n        var _a;\n        (_a = this._list.value) === null || _a === void 0 ? void 0 : _a.acceptSelected(preview);\n    }\n    focusPrevious() {\n        var _a, _b;\n        (_b = (_a = this._list) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.focusPrevious();\n    }\n    focusNext() {\n        var _a, _b;\n        (_b = (_a = this._list) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.focusNext();\n    }\n    hide(didCancel) {\n        var _a;\n        (_a = this._list.value) === null || _a === void 0 ? void 0 : _a.hide(didCancel);\n        this._list.clear();\n    }\n    _renderWidget(element, list, actionBarActions) {\n        var _a;\n        const widget = document.createElement('div');\n        widget.classList.add('action-widget');\n        element.appendChild(widget);\n        this._list.value = list;\n        if (this._list.value) {\n            widget.appendChild(this._list.value.domNode);\n        }\n        else {\n            throw new Error('List has no value');\n        }\n        const renderDisposables = new DisposableStore();\n        // Invisible div to block mouse interaction in the rest of the UI\n        const menuBlock = document.createElement('div');\n        const block = element.appendChild(menuBlock);\n        block.classList.add('context-view-block');\n        renderDisposables.add(dom.addDisposableListener(block, dom.EventType.MOUSE_DOWN, e => e.stopPropagation()));\n        // Invisible div to block mouse interaction with the menu\n        const pointerBlockDiv = document.createElement('div');\n        const pointerBlock = element.appendChild(pointerBlockDiv);\n        pointerBlock.classList.add('context-view-pointerBlock');\n        // Removes block on click INSIDE widget or ANY mouse movement\n        renderDisposables.add(dom.addDisposableListener(pointerBlock, dom.EventType.POINTER_MOVE, () => pointerBlock.remove()));\n        renderDisposables.add(dom.addDisposableListener(pointerBlock, dom.EventType.MOUSE_DOWN, () => pointerBlock.remove()));\n        // Action bar\n        let actionBarWidth = 0;\n        if (actionBarActions.length) {\n            const actionBar = this._createActionBar('.action-widget-action-bar', actionBarActions);\n            if (actionBar) {\n                widget.appendChild(actionBar.getContainer().parentElement);\n                renderDisposables.add(actionBar);\n                actionBarWidth = actionBar.getContainer().offsetWidth;\n            }\n        }\n        const width = (_a = this._list.value) === null || _a === void 0 ? void 0 : _a.layout(actionBarWidth);\n        widget.style.width = `${width}px`;\n        const focusTracker = renderDisposables.add(dom.trackFocus(element));\n        renderDisposables.add(focusTracker.onDidBlur(() => this.hide(true)));\n        return renderDisposables;\n    }\n    _createActionBar(className, actions) {\n        if (!actions.length) {\n            return undefined;\n        }\n        const container = dom.$(className);\n        const actionBar = new ActionBar(container);\n        actionBar.push(actions, { icon: false, label: true });\n        return actionBar;\n    }\n    _onWidgetClosed(didCancel) {\n        var _a;\n        (_a = this._list.value) === null || _a === void 0 ? void 0 : _a.hide(didCancel);\n    }\n};\nActionWidgetService = __decorate([\n    __param(0, IContextViewService),\n    __param(1, IContextKeyService),\n    __param(2, IInstantiationService)\n], ActionWidgetService);\nregisterSingleton(IActionWidgetService, ActionWidgetService, 1 /* InstantiationType.Delayed */);\nconst weight = 100 /* KeybindingWeight.EditorContrib */ + 1000;\nregisterAction2(class extends Action2 {\n    constructor() {\n        super({\n            id: 'hideCodeActionWidget',\n            title: localize2('hideCodeActionWidget.title', \"Hide action widget\"),\n            precondition: ActionWidgetContextKeys.Visible,\n            keybinding: {\n                weight,\n                primary: 9 /* KeyCode.Escape */,\n                secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n            },\n        });\n    }\n    run(accessor) {\n        accessor.get(IActionWidgetService).hide(true);\n    }\n});\nregisterAction2(class extends Action2 {\n    constructor() {\n        super({\n            id: 'selectPrevCodeAction',\n            title: localize2('selectPrevCodeAction.title', \"Select previous action\"),\n            precondition: ActionWidgetContextKeys.Visible,\n            keybinding: {\n                weight,\n                primary: 16 /* KeyCode.UpArrow */,\n                secondary: [2048 /* KeyMod.CtrlCmd */ | 16 /* KeyCode.UpArrow */],\n                mac: { primary: 16 /* KeyCode.UpArrow */, secondary: [2048 /* KeyMod.CtrlCmd */ | 16 /* KeyCode.UpArrow */, 256 /* KeyMod.WinCtrl */ | 46 /* KeyCode.KeyP */] },\n            }\n        });\n    }\n    run(accessor) {\n        const widgetService = accessor.get(IActionWidgetService);\n        if (widgetService instanceof ActionWidgetService) {\n            widgetService.focusPrevious();\n        }\n    }\n});\nregisterAction2(class extends Action2 {\n    constructor() {\n        super({\n            id: 'selectNextCodeAction',\n            title: localize2('selectNextCodeAction.title', \"Select next action\"),\n            precondition: ActionWidgetContextKeys.Visible,\n            keybinding: {\n                weight,\n                primary: 18 /* KeyCode.DownArrow */,\n                secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */],\n                mac: { primary: 18 /* KeyCode.DownArrow */, secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */, 256 /* KeyMod.WinCtrl */ | 44 /* KeyCode.KeyN */] }\n            }\n        });\n    }\n    run(accessor) {\n        const widgetService = accessor.get(IActionWidgetService);\n        if (widgetService instanceof ActionWidgetService) {\n            widgetService.focusNext();\n        }\n    }\n});\nregisterAction2(class extends Action2 {\n    constructor() {\n        super({\n            id: acceptSelectedActionCommand,\n            title: localize2('acceptSelected.title', \"Accept selected action\"),\n            precondition: ActionWidgetContextKeys.Visible,\n            keybinding: {\n                weight,\n                primary: 3 /* KeyCode.Enter */,\n                secondary: [2048 /* KeyMod.CtrlCmd */ | 89 /* KeyCode.Period */],\n            }\n        });\n    }\n    run(accessor) {\n        const widgetService = accessor.get(IActionWidgetService);\n        if (widgetService instanceof ActionWidgetService) {\n            widgetService.acceptSelected();\n        }\n    }\n});\nregisterAction2(class extends Action2 {\n    constructor() {\n        super({\n            id: previewSelectedActionCommand,\n            title: localize2('previewSelected.title', \"Preview selected action\"),\n            precondition: ActionWidgetContextKeys.Visible,\n            keybinding: {\n                weight,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 3 /* KeyCode.Enter */,\n            }\n        });\n    }\n    run(accessor) {\n        const widgetService = accessor.get(IActionWidgetService);\n        if (widgetService instanceof ActionWidgetService) {\n            widgetService.acceptSelected(true);\n        }\n    }\n});\n", "var __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};\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 { KeybindingLabel } from '../../../base/browser/ui/keybindingLabel/keybindingLabel.js';\nimport { List } from '../../../base/browser/ui/list/listWidget.js';\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\nimport { Codicon } from '../../../base/common/codicons.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { OS } from '../../../base/common/platform.js';\nimport { ThemeIcon } from '../../../base/common/themables.js';\nimport './actionWidget.css';\nimport { localize } from '../../../nls.js';\nimport { IContextViewService } from '../../contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { defaultListStyles } from '../../theme/browser/defaultStyles.js';\nimport { asCssVariable } from '../../theme/common/colorRegistry.js';\nexport const acceptSelectedActionCommand = 'acceptSelectedCodeAction';\nexport const previewSelectedActionCommand = 'previewSelectedCodeAction';\nclass HeaderRenderer {\n    get templateId() { return \"header\" /* ActionListItemKind.Header */; }\n    renderTemplate(container) {\n        container.classList.add('group-header');\n        const text = document.createElement('span');\n        container.append(text);\n        return { container, text };\n    }\n    renderElement(element, _index, templateData) {\n        var _a, _b;\n        templateData.text.textContent = (_b = (_a = element.group) === null || _a === void 0 ? void 0 : _a.title) !== null && _b !== void 0 ? _b : '';\n    }\n    disposeTemplate(_templateData) {\n        // noop\n    }\n}\nlet ActionItemRenderer = class ActionItemRenderer {\n    get templateId() { return \"action\" /* ActionListItemKind.Action */; }\n    constructor(_supportsPreview, _keybindingService) {\n        this._supportsPreview = _supportsPreview;\n        this._keybindingService = _keybindingService;\n    }\n    renderTemplate(container) {\n        container.classList.add(this.templateId);\n        const icon = document.createElement('div');\n        icon.className = 'icon';\n        container.append(icon);\n        const text = document.createElement('span');\n        text.className = 'title';\n        container.append(text);\n        const keybinding = new KeybindingLabel(container, OS);\n        return { container, icon, text, keybinding };\n    }\n    renderElement(element, _index, data) {\n        var _a, _b, _c;\n        if ((_a = element.group) === null || _a === void 0 ? void 0 : _a.icon) {\n            data.icon.className = ThemeIcon.asClassName(element.group.icon);\n            if (element.group.icon.color) {\n                data.icon.style.color = asCssVariable(element.group.icon.color.id);\n            }\n        }\n        else {\n            data.icon.className = ThemeIcon.asClassName(Codicon.lightBulb);\n            data.icon.style.color = 'var(--vscode-editorLightBulb-foreground)';\n        }\n        if (!element.item || !element.label) {\n            return;\n        }\n        data.text.textContent = stripNewlines(element.label);\n        data.keybinding.set(element.keybinding);\n        dom.setVisibility(!!element.keybinding, data.keybinding.element);\n        const actionTitle = (_b = this._keybindingService.lookupKeybinding(acceptSelectedActionCommand)) === null || _b === void 0 ? void 0 : _b.getLabel();\n        const previewTitle = (_c = this._keybindingService.lookupKeybinding(previewSelectedActionCommand)) === null || _c === void 0 ? void 0 : _c.getLabel();\n        data.container.classList.toggle('option-disabled', element.disabled);\n        if (element.disabled) {\n            data.container.title = element.label;\n        }\n        else if (actionTitle && previewTitle) {\n            if (this._supportsPreview && element.canPreview) {\n                data.container.title = localize({ key: 'label-preview', comment: ['placeholders are keybindings, e.g \"F2 to Apply, Shift+F2 to Preview\"'] }, \"{0} to Apply, {1} to Preview\", actionTitle, previewTitle);\n            }\n            else {\n                data.container.title = localize({ key: 'label', comment: ['placeholder is a keybinding, e.g \"F2 to Apply\"'] }, \"{0} to Apply\", actionTitle);\n            }\n        }\n        else {\n            data.container.title = '';\n        }\n    }\n    disposeTemplate(_templateData) {\n        _templateData.keybinding.dispose();\n    }\n};\nActionItemRenderer = __decorate([\n    __param(1, IKeybindingService)\n], ActionItemRenderer);\nclass AcceptSelectedEvent extends UIEvent {\n    constructor() { super('acceptSelectedAction'); }\n}\nclass PreviewSelectedEvent extends UIEvent {\n    constructor() { super('previewSelectedAction'); }\n}\nfunction getKeyboardNavigationLabel(item) {\n    // Filter out header vs. action\n    if (item.kind === 'action') {\n        return item.label;\n    }\n    return undefined;\n}\nlet ActionList = class ActionList extends Disposable {\n    constructor(user, preview, items, _delegate, _contextViewService, _keybindingService) {\n        super();\n        this._delegate = _delegate;\n        this._contextViewService = _contextViewService;\n        this._keybindingService = _keybindingService;\n        this._actionLineHeight = 24;\n        this._headerLineHeight = 26;\n        this.cts = this._register(new CancellationTokenSource());\n        this.domNode = document.createElement('div');\n        this.domNode.classList.add('actionList');\n        const virtualDelegate = {\n            getHeight: element => element.kind === \"header\" /* ActionListItemKind.Header */ ? this._headerLineHeight : this._actionLineHeight,\n            getTemplateId: element => element.kind\n        };\n        this._list = this._register(new List(user, this.domNode, virtualDelegate, [\n            new ActionItemRenderer(preview, this._keybindingService),\n            new HeaderRenderer(),\n        ], {\n            keyboardSupport: false,\n            typeNavigationEnabled: true,\n            keyboardNavigationLabelProvider: { getKeyboardNavigationLabel },\n            accessibilityProvider: {\n                getAriaLabel: element => {\n                    if (element.kind === \"action\" /* ActionListItemKind.Action */) {\n                        let label = element.label ? stripNewlines(element === null || element === void 0 ? void 0 : element.label) : '';\n                        if (element.disabled) {\n                            label = localize({ key: 'customQuickFixWidget.labels', comment: [`Action widget labels for accessibility.`] }, \"{0}, Disabled Reason: {1}\", label, element.disabled);\n                        }\n                        return label;\n                    }\n                    return null;\n                },\n                getWidgetAriaLabel: () => localize({ key: 'customQuickFixWidget', comment: [`An action widget option`] }, \"Action Widget\"),\n                getRole: (e) => e.kind === \"action\" /* ActionListItemKind.Action */ ? 'option' : 'separator',\n                getWidgetRole: () => 'listbox',\n            },\n        }));\n        this._list.style(defaultListStyles);\n        this._register(this._list.onMouseClick(e => this.onListClick(e)));\n        this._register(this._list.onMouseOver(e => this.onListHover(e)));\n        this._register(this._list.onDidChangeFocus(() => this.onFocus()));\n        this._register(this._list.onDidChangeSelection(e => this.onListSelection(e)));\n        this._allMenuItems = items;\n        this._list.splice(0, this._list.length, this._allMenuItems);\n        if (this._list.length) {\n            this.focusNext();\n        }\n    }\n    focusCondition(element) {\n        return !element.disabled && element.kind === \"action\" /* ActionListItemKind.Action */;\n    }\n    hide(didCancel) {\n        this._delegate.onHide(didCancel);\n        this.cts.cancel();\n        this._contextViewService.hideContextView();\n    }\n    layout(minWidth) {\n        // Updating list height, depending on how many separators and headers there are.\n        const numHeaders = this._allMenuItems.filter(item => item.kind === 'header').length;\n        const itemsHeight = this._allMenuItems.length * this._actionLineHeight;\n        const heightWithHeaders = itemsHeight + numHeaders * this._headerLineHeight - numHeaders * this._actionLineHeight;\n        this._list.layout(heightWithHeaders);\n        let maxWidth = minWidth;\n        if (this._allMenuItems.length >= 50) {\n            maxWidth = 380;\n        }\n        else {\n            // For finding width dynamically (not using resize observer)\n            const itemWidths = this._allMenuItems.map((_, index) => {\n                const element = this.domNode.ownerDocument.getElementById(this._list.getElementID(index));\n                if (element) {\n                    element.style.width = 'auto';\n                    const width = element.getBoundingClientRect().width;\n                    element.style.width = '';\n                    return width;\n                }\n                return 0;\n            });\n            // resize observer - can be used in the future since list widget supports dynamic height but not width\n            maxWidth = Math.max(...itemWidths, minWidth);\n        }\n        const maxVhPrecentage = 0.7;\n        const height = Math.min(heightWithHeaders, this.domNode.ownerDocument.body.clientHeight * maxVhPrecentage);\n        this._list.layout(height, maxWidth);\n        this.domNode.style.height = `${height}px`;\n        this._list.domFocus();\n        return maxWidth;\n    }\n    focusPrevious() {\n        this._list.focusPrevious(1, true, undefined, this.focusCondition);\n    }\n    focusNext() {\n        this._list.focusNext(1, true, undefined, this.focusCondition);\n    }\n    acceptSelected(preview) {\n        const focused = this._list.getFocus();\n        if (focused.length === 0) {\n            return;\n        }\n        const focusIndex = focused[0];\n        const element = this._list.element(focusIndex);\n        if (!this.focusCondition(element)) {\n            return;\n        }\n        const event = preview ? new PreviewSelectedEvent() : new AcceptSelectedEvent();\n        this._list.setSelection([focusIndex], event);\n    }\n    onListSelection(e) {\n        if (!e.elements.length) {\n            return;\n        }\n        const element = e.elements[0];\n        if (element.item && this.focusCondition(element)) {\n            this._delegate.onSelect(element.item, e.browserEvent instanceof PreviewSelectedEvent);\n        }\n        else {\n            this._list.setSelection([]);\n        }\n    }\n    onFocus() {\n        var _a, _b;\n        const focused = this._list.getFocus();\n        if (focused.length === 0) {\n            return;\n        }\n        const focusIndex = focused[0];\n        const element = this._list.element(focusIndex);\n        (_b = (_a = this._delegate).onFocus) === null || _b === void 0 ? void 0 : _b.call(_a, element.item);\n    }\n    async onListHover(e) {\n        const element = e.element;\n        if (element && element.item && this.focusCondition(element)) {\n            if (this._delegate.onHover && !element.disabled && element.kind === \"action\" /* ActionListItemKind.Action */) {\n                const result = await this._delegate.onHover(element.item, this.cts.token);\n                element.canPreview = result ? result.canPreview : undefined;\n            }\n            if (e.index) {\n                this._list.splice(e.index, 1, [element]);\n            }\n        }\n        this._list.setFocus(typeof e.index === 'number' ? [e.index] : []);\n    }\n    onListClick(e) {\n        if (e.element && this.focusCondition(e.element)) {\n            this._list.setFocus([]);\n        }\n    }\n};\nActionList = __decorate([\n    __param(4, IContextViewService),\n    __param(5, IKeybindingService)\n], ActionList);\nexport { ActionList };\nfunction stripNewlines(str) {\n    return str.replace(/\\r\\n|\\r|\\n/g, ' ');\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, TimeoutTimer } from '../../../../base/common/async.js';\nimport { isCancellationError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { isEqual } from '../../../../base/common/resources.js';\nimport { ShowLightbulbIconMode } from '../../../common/config/editorOptions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { Progress } from '../../../../platform/progress/common/progress.js';\nimport { CodeActionKind, CodeActionTriggerSource } from '../common/types.js';\nimport { getCodeActions } from './codeAction.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nexport const SUPPORTED_CODE_ACTIONS = new RawContextKey('supportedCodeAction', '');\nexport const APPLY_FIX_ALL_COMMAND_ID = '_typescript.applyFixAllCodeAction';\nclass CodeActionOracle extends Disposable {\n    constructor(_editor, _markerService, _signalChange, _delay = 250) {\n        super();\n        this._editor = _editor;\n        this._markerService = _markerService;\n        this._signalChange = _signalChange;\n        this._delay = _delay;\n        this._autoTriggerTimer = this._register(new TimeoutTimer());\n        this._register(this._markerService.onMarkerChanged(e => this._onMarkerChanges(e)));\n        this._register(this._editor.onDidChangeCursorPosition(() => this._tryAutoTrigger()));\n    }\n    trigger(trigger) {\n        const selection = this._getRangeOfSelectionUnlessWhitespaceEnclosed(trigger);\n        this._signalChange(selection ? { trigger, selection } : undefined);\n    }\n    _onMarkerChanges(resources) {\n        const model = this._editor.getModel();\n        if (model && resources.some(resource => isEqual(resource, model.uri))) {\n            this._tryAutoTrigger();\n        }\n    }\n    _tryAutoTrigger() {\n        this._autoTriggerTimer.cancelAndSet(() => {\n            this.trigger({ type: 2 /* CodeActionTriggerType.Auto */, triggerAction: CodeActionTriggerSource.Default });\n        }, this._delay);\n    }\n    _getRangeOfSelectionUnlessWhitespaceEnclosed(trigger) {\n        if (!this._editor.hasModel()) {\n            return undefined;\n        }\n        const selection = this._editor.getSelection();\n        if (trigger.type === 1 /* CodeActionTriggerType.Invoke */) {\n            return selection;\n        }\n        const enabled = this._editor.getOption(65 /* EditorOption.lightbulb */).enabled;\n        if (enabled === ShowLightbulbIconMode.Off) {\n            return undefined;\n        }\n        else if (enabled === ShowLightbulbIconMode.On) {\n            return selection;\n        }\n        else if (enabled === ShowLightbulbIconMode.OnCode) {\n            const isSelectionEmpty = selection.isEmpty();\n            if (!isSelectionEmpty) {\n                return selection;\n            }\n            const model = this._editor.getModel();\n            const { lineNumber, column } = selection.getPosition();\n            const line = model.getLineContent(lineNumber);\n            if (line.length === 0) {\n                // empty line\n                return undefined;\n            }\n            else if (column === 1) {\n                // look only right\n                if (/\\s/.test(line[0])) {\n                    return undefined;\n                }\n            }\n            else if (column === model.getLineMaxColumn(lineNumber)) {\n                // look only left\n                if (/\\s/.test(line[line.length - 1])) {\n                    return undefined;\n                }\n            }\n            else {\n                // look left and right\n                if (/\\s/.test(line[column - 2]) && /\\s/.test(line[column - 1])) {\n                    return undefined;\n                }\n            }\n        }\n        return selection;\n    }\n}\nexport var CodeActionsState;\n(function (CodeActionsState) {\n    CodeActionsState.Empty = { type: 0 /* Type.Empty */ };\n    class Triggered {\n        constructor(trigger, position, _cancellablePromise) {\n            this.trigger = trigger;\n            this.position = position;\n            this._cancellablePromise = _cancellablePromise;\n            this.type = 1 /* Type.Triggered */;\n            this.actions = _cancellablePromise.catch((e) => {\n                if (isCancellationError(e)) {\n                    return emptyCodeActionSet;\n                }\n                throw e;\n            });\n        }\n        cancel() {\n            this._cancellablePromise.cancel();\n        }\n    }\n    CodeActionsState.Triggered = Triggered;\n})(CodeActionsState || (CodeActionsState = {}));\nconst emptyCodeActionSet = Object.freeze({\n    allActions: [],\n    validActions: [],\n    dispose: () => { },\n    documentation: [],\n    hasAutoFix: false,\n    hasAIFix: false,\n    allAIFixes: false,\n});\nexport class CodeActionModel extends Disposable {\n    constructor(_editor, _registry, _markerService, contextKeyService, _progressService, _configurationService) {\n        super();\n        this._editor = _editor;\n        this._registry = _registry;\n        this._markerService = _markerService;\n        this._progressService = _progressService;\n        this._configurationService = _configurationService;\n        this._codeActionOracle = this._register(new MutableDisposable());\n        this._state = CodeActionsState.Empty;\n        this._onDidChangeState = this._register(new Emitter());\n        this.onDidChangeState = this._onDidChangeState.event;\n        this._disposed = false;\n        this._supportedCodeActions = SUPPORTED_CODE_ACTIONS.bindTo(contextKeyService);\n        this._register(this._editor.onDidChangeModel(() => this._update()));\n        this._register(this._editor.onDidChangeModelLanguage(() => this._update()));\n        this._register(this._registry.onDidChange(() => this._update()));\n        this._register(this._editor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(65 /* EditorOption.lightbulb */)) {\n                this._update();\n            }\n        }));\n        this._update();\n    }\n    dispose() {\n        if (this._disposed) {\n            return;\n        }\n        this._disposed = true;\n        super.dispose();\n        this.setState(CodeActionsState.Empty, true);\n    }\n    _settingEnabledNearbyQuickfixes() {\n        var _a;\n        const model = (_a = this._editor) === null || _a === void 0 ? void 0 : _a.getModel();\n        return this._configurationService ? this._configurationService.getValue('editor.codeActionWidget.includeNearbyQuickFixes', { resource: model === null || model === void 0 ? void 0 : model.uri }) : false;\n    }\n    _update() {\n        if (this._disposed) {\n            return;\n        }\n        this._codeActionOracle.value = undefined;\n        this.setState(CodeActionsState.Empty);\n        const model = this._editor.getModel();\n        if (model\n            && this._registry.has(model)\n            && !this._editor.getOption(91 /* EditorOption.readOnly */)) {\n            const supportedActions = this._registry.all(model).flatMap(provider => { var _a; return (_a = provider.providedCodeActionKinds) !== null && _a !== void 0 ? _a : []; });\n            this._supportedCodeActions.set(supportedActions.join(' '));\n            this._codeActionOracle.value = new CodeActionOracle(this._editor, this._markerService, trigger => {\n                var _a;\n                if (!trigger) {\n                    this.setState(CodeActionsState.Empty);\n                    return;\n                }\n                const startPosition = trigger.selection.getStartPosition();\n                const actions = createCancelablePromise(async (token) => {\n                    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n                    if (this._settingEnabledNearbyQuickfixes() && trigger.trigger.type === 1 /* CodeActionTriggerType.Invoke */ && (trigger.trigger.triggerAction === CodeActionTriggerSource.QuickFix || ((_b = (_a = trigger.trigger.filter) === null || _a === void 0 ? void 0 : _a.include) === null || _b === void 0 ? void 0 : _b.contains(CodeActionKind.QuickFix)))) {\n                        const codeActionSet = await getCodeActions(this._registry, model, trigger.selection, trigger.trigger, Progress.None, token);\n                        const allCodeActions = [...codeActionSet.allActions];\n                        if (token.isCancellationRequested) {\n                            return emptyCodeActionSet;\n                        }\n                        // Search for quickfixes in the curret code action set.\n                        const foundQuickfix = (_c = codeActionSet.validActions) === null || _c === void 0 ? void 0 : _c.some(action => action.action.kind ? CodeActionKind.QuickFix.contains(new HierarchicalKind(action.action.kind)) : false);\n                        const allMarkers = this._markerService.read({ resource: model.uri });\n                        if (foundQuickfix) {\n                            for (const action of codeActionSet.validActions) {\n                                if ((_e = (_d = action.action.command) === null || _d === void 0 ? void 0 : _d.arguments) === null || _e === void 0 ? void 0 : _e.some(arg => typeof arg === 'string' && arg.includes(APPLY_FIX_ALL_COMMAND_ID))) {\n                                    action.action.diagnostics = [...allMarkers.filter(marker => marker.relatedInformation)];\n                                }\n                            }\n                            return { validActions: codeActionSet.validActions, allActions: allCodeActions, documentation: codeActionSet.documentation, hasAutoFix: codeActionSet.hasAutoFix, hasAIFix: codeActionSet.hasAIFix, allAIFixes: codeActionSet.allAIFixes, dispose: () => { codeActionSet.dispose(); } };\n                        }\n                        else if (!foundQuickfix) {\n                            // If markers exists, and there are no quickfixes found or length is zero, check for quickfixes on that line.\n                            if (allMarkers.length > 0) {\n                                const currPosition = trigger.selection.getPosition();\n                                let trackedPosition = currPosition;\n                                let distance = Number.MAX_VALUE;\n                                const currentActions = [...codeActionSet.validActions];\n                                for (const marker of allMarkers) {\n                                    const col = marker.endColumn;\n                                    const row = marker.endLineNumber;\n                                    const startRow = marker.startLineNumber;\n                                    // Found quickfix on the same line and check relative distance to other markers\n                                    if ((row === currPosition.lineNumber || startRow === currPosition.lineNumber)) {\n                                        trackedPosition = new Position(row, col);\n                                        const newCodeActionTrigger = {\n                                            type: trigger.trigger.type,\n                                            triggerAction: trigger.trigger.triggerAction,\n                                            filter: { include: ((_f = trigger.trigger.filter) === null || _f === void 0 ? void 0 : _f.include) ? (_g = trigger.trigger.filter) === null || _g === void 0 ? void 0 : _g.include : CodeActionKind.QuickFix },\n                                            autoApply: trigger.trigger.autoApply,\n                                            context: { notAvailableMessage: ((_h = trigger.trigger.context) === null || _h === void 0 ? void 0 : _h.notAvailableMessage) || '', position: trackedPosition }\n                                        };\n                                        const selectionAsPosition = new Selection(trackedPosition.lineNumber, trackedPosition.column, trackedPosition.lineNumber, trackedPosition.column);\n                                        const actionsAtMarker = await getCodeActions(this._registry, model, selectionAsPosition, newCodeActionTrigger, Progress.None, token);\n                                        if (actionsAtMarker.validActions.length !== 0) {\n                                            for (const action of actionsAtMarker.validActions) {\n                                                if ((_k = (_j = action.action.command) === null || _j === void 0 ? void 0 : _j.arguments) === null || _k === void 0 ? void 0 : _k.some(arg => typeof arg === 'string' && arg.includes(APPLY_FIX_ALL_COMMAND_ID))) {\n                                                    action.action.diagnostics = [...allMarkers.filter(marker => marker.relatedInformation)];\n                                                }\n                                            }\n                                            if (codeActionSet.allActions.length === 0) {\n                                                allCodeActions.push(...actionsAtMarker.allActions);\n                                            }\n                                            // Already filtered through to only get quickfixes, so no need to filter again.\n                                            if (Math.abs(currPosition.column - col) < distance) {\n                                                currentActions.unshift(...actionsAtMarker.validActions);\n                                            }\n                                            else {\n                                                currentActions.push(...actionsAtMarker.validActions);\n                                            }\n                                        }\n                                        distance = Math.abs(currPosition.column - col);\n                                    }\n                                }\n                                const filteredActions = currentActions.filter((action, index, self) => self.findIndex((a) => a.action.title === action.action.title) === index);\n                                filteredActions.sort((a, b) => {\n                                    if (a.action.isPreferred && !b.action.isPreferred) {\n                                        return -1;\n                                    }\n                                    else if (!a.action.isPreferred && b.action.isPreferred) {\n                                        return 1;\n                                    }\n                                    else if (a.action.isAI && !b.action.isAI) {\n                                        return 1;\n                                    }\n                                    else if (!a.action.isAI && b.action.isAI) {\n                                        return -1;\n                                    }\n                                    else {\n                                        return 0;\n                                    }\n                                });\n                                // Only retriggers if actually found quickfix on the same line as cursor\n                                return { validActions: filteredActions, allActions: allCodeActions, documentation: codeActionSet.documentation, hasAutoFix: codeActionSet.hasAutoFix, hasAIFix: codeActionSet.hasAIFix, allAIFixes: codeActionSet.allAIFixes, dispose: () => { codeActionSet.dispose(); } };\n                            }\n                        }\n                    }\n                    // temporarilly hiding here as this is enabled/disabled behind a setting.\n                    return getCodeActions(this._registry, model, trigger.selection, trigger.trigger, Progress.None, token);\n                });\n                if (trigger.trigger.type === 1 /* CodeActionTriggerType.Invoke */) {\n                    (_a = this._progressService) === null || _a === void 0 ? void 0 : _a.showWhile(actions, 250);\n                }\n                const newState = new CodeActionsState.Triggered(trigger.trigger, startPosition, actions);\n                let isManualToAutoTransition = false;\n                if (this._state.type === 1 /* CodeActionsState.Type.Triggered */) {\n                    // Check if the current state is manual and the new state is automatic\n                    isManualToAutoTransition = this._state.trigger.type === 1 /* CodeActionTriggerType.Invoke */ &&\n                        newState.type === 1 /* CodeActionsState.Type.Triggered */ &&\n                        newState.trigger.type === 2 /* CodeActionTriggerType.Auto */ &&\n                        this._state.position !== newState.position;\n                }\n                // Do not trigger state if current state is manual and incoming state is automatic\n                if (!isManualToAutoTransition) {\n                    this.setState(newState);\n                }\n                else {\n                    // Reset the new state after getting code actions back.\n                    setTimeout(() => {\n                        this.setState(newState);\n                    }, 500);\n                }\n            }, undefined);\n            this._codeActionOracle.value.trigger({ type: 2 /* CodeActionTriggerType.Auto */, triggerAction: CodeActionTriggerSource.Default });\n        }\n        else {\n            this._supportedCodeActions.reset();\n        }\n    }\n    trigger(trigger) {\n        var _a;\n        (_a = this._codeActionOracle.value) === null || _a === void 0 ? void 0 : _a.trigger(trigger);\n    }\n    setState(newState, skipNotify) {\n        if (newState === this._state) {\n            return;\n        }\n        // Cancel old request\n        if (this._state.type === 1 /* CodeActionsState.Type.Triggered */) {\n            this._state.cancel();\n        }\n        this._state = newState;\n        if (!skipNotify && !this._disposed) {\n            this._onDidChangeState.fire(newState);\n        }\n    }\n}\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { createCancelablePromise, disposableTimeout, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EDITOR_FONT_DEFAULTS } from '../../../common/config/editorOptions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { getCodeLensModel } from './codelens.js';\nimport { ICodeLensCache } from './codeLensCache.js';\nimport { CodeLensHelper, CodeLensWidget } from './codelensWidget.js';\nimport { localize } from '../../../../nls.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nlet CodeLensContribution = class CodeLensContribution {\n    constructor(_editor, _languageFeaturesService, debounceService, _commandService, _notificationService, _codeLensCache) {\n        this._editor = _editor;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._commandService = _commandService;\n        this._notificationService = _notificationService;\n        this._codeLensCache = _codeLensCache;\n        this._disposables = new DisposableStore();\n        this._localToDispose = new DisposableStore();\n        this._lenses = [];\n        this._oldCodeLensModels = new DisposableStore();\n        this._provideCodeLensDebounce = debounceService.for(_languageFeaturesService.codeLensProvider, 'CodeLensProvide', { min: 250 });\n        this._resolveCodeLensesDebounce = debounceService.for(_languageFeaturesService.codeLensProvider, 'CodeLensResolve', { min: 250, salt: 'resolve' });\n        this._resolveCodeLensesScheduler = new RunOnceScheduler(() => this._resolveCodeLensesInViewport(), this._resolveCodeLensesDebounce.default());\n        this._disposables.add(this._editor.onDidChangeModel(() => this._onModelChange()));\n        this._disposables.add(this._editor.onDidChangeModelLanguage(() => this._onModelChange()));\n        this._disposables.add(this._editor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(50 /* EditorOption.fontInfo */) || e.hasChanged(19 /* EditorOption.codeLensFontSize */) || e.hasChanged(18 /* EditorOption.codeLensFontFamily */)) {\n                this._updateLensStyle();\n            }\n            if (e.hasChanged(17 /* EditorOption.codeLens */)) {\n                this._onModelChange();\n            }\n        }));\n        this._disposables.add(_languageFeaturesService.codeLensProvider.onDidChange(this._onModelChange, this));\n        this._onModelChange();\n        this._updateLensStyle();\n    }\n    dispose() {\n        var _a;\n        this._localDispose();\n        this._disposables.dispose();\n        this._oldCodeLensModels.dispose();\n        (_a = this._currentCodeLensModel) === null || _a === void 0 ? void 0 : _a.dispose();\n    }\n    _getLayoutInfo() {\n        const lineHeightFactor = Math.max(1.3, this._editor.getOption(67 /* EditorOption.lineHeight */) / this._editor.getOption(52 /* EditorOption.fontSize */));\n        let fontSize = this._editor.getOption(19 /* EditorOption.codeLensFontSize */);\n        if (!fontSize || fontSize < 5) {\n            fontSize = (this._editor.getOption(52 /* EditorOption.fontSize */) * .9) | 0;\n        }\n        return {\n            fontSize,\n            codeLensHeight: (fontSize * lineHeightFactor) | 0,\n        };\n    }\n    _updateLensStyle() {\n        const { codeLensHeight, fontSize } = this._getLayoutInfo();\n        const fontFamily = this._editor.getOption(18 /* EditorOption.codeLensFontFamily */);\n        const editorFontInfo = this._editor.getOption(50 /* EditorOption.fontInfo */);\n        const { style } = this._editor.getContainerDomNode();\n        style.setProperty('--vscode-editorCodeLens-lineHeight', `${codeLensHeight}px`);\n        style.setProperty('--vscode-editorCodeLens-fontSize', `${fontSize}px`);\n        style.setProperty('--vscode-editorCodeLens-fontFeatureSettings', editorFontInfo.fontFeatureSettings);\n        if (fontFamily) {\n            style.setProperty('--vscode-editorCodeLens-fontFamily', fontFamily);\n            style.setProperty('--vscode-editorCodeLens-fontFamilyDefault', EDITOR_FONT_DEFAULTS.fontFamily);\n        }\n        //\n        this._editor.changeViewZones(accessor => {\n            for (const lens of this._lenses) {\n                lens.updateHeight(codeLensHeight, accessor);\n            }\n        });\n    }\n    _localDispose() {\n        var _a, _b, _c;\n        (_a = this._getCodeLensModelPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n        this._getCodeLensModelPromise = undefined;\n        (_b = this._resolveCodeLensesPromise) === null || _b === void 0 ? void 0 : _b.cancel();\n        this._resolveCodeLensesPromise = undefined;\n        this._localToDispose.clear();\n        this._oldCodeLensModels.clear();\n        (_c = this._currentCodeLensModel) === null || _c === void 0 ? void 0 : _c.dispose();\n    }\n    _onModelChange() {\n        this._localDispose();\n        const model = this._editor.getModel();\n        if (!model) {\n            return;\n        }\n        if (!this._editor.getOption(17 /* EditorOption.codeLens */) || model.isTooLargeForTokenization()) {\n            return;\n        }\n        const cachedLenses = this._codeLensCache.get(model);\n        if (cachedLenses) {\n            this._renderCodeLensSymbols(cachedLenses);\n        }\n        if (!this._languageFeaturesService.codeLensProvider.has(model)) {\n            // no provider -> return but check with\n            // cached lenses. they expire after 30 seconds\n            if (cachedLenses) {\n                disposableTimeout(() => {\n                    const cachedLensesNow = this._codeLensCache.get(model);\n                    if (cachedLenses === cachedLensesNow) {\n                        this._codeLensCache.delete(model);\n                        this._onModelChange();\n                    }\n                }, 30 * 1000, this._localToDispose);\n            }\n            return;\n        }\n        for (const provider of this._languageFeaturesService.codeLensProvider.all(model)) {\n            if (typeof provider.onDidChange === 'function') {\n                const registration = provider.onDidChange(() => scheduler.schedule());\n                this._localToDispose.add(registration);\n            }\n        }\n        const scheduler = new RunOnceScheduler(() => {\n            var _a;\n            const t1 = Date.now();\n            (_a = this._getCodeLensModelPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n            this._getCodeLensModelPromise = createCancelablePromise(token => getCodeLensModel(this._languageFeaturesService.codeLensProvider, model, token));\n            this._getCodeLensModelPromise.then(result => {\n                if (this._currentCodeLensModel) {\n                    this._oldCodeLensModels.add(this._currentCodeLensModel);\n                }\n                this._currentCodeLensModel = result;\n                // cache model to reduce flicker\n                this._codeLensCache.put(model, result);\n                // update moving average\n                const newDelay = this._provideCodeLensDebounce.update(model, Date.now() - t1);\n                scheduler.delay = newDelay;\n                // render lenses\n                this._renderCodeLensSymbols(result);\n                // dom.scheduleAtNextAnimationFrame(() => this._resolveCodeLensesInViewport());\n                this._resolveCodeLensesInViewportSoon();\n            }, onUnexpectedError);\n        }, this._provideCodeLensDebounce.get(model));\n        this._localToDispose.add(scheduler);\n        this._localToDispose.add(toDisposable(() => this._resolveCodeLensesScheduler.cancel()));\n        this._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n            var _a;\n            this._editor.changeDecorations(decorationsAccessor => {\n                this._editor.changeViewZones(viewZonesAccessor => {\n                    const toDispose = [];\n                    let lastLensLineNumber = -1;\n                    this._lenses.forEach((lens) => {\n                        if (!lens.isValid() || lastLensLineNumber === lens.getLineNumber()) {\n                            // invalid -> lens collapsed, attach range doesn't exist anymore\n                            // line_number -> lenses should never be on the same line\n                            toDispose.push(lens);\n                        }\n                        else {\n                            lens.update(viewZonesAccessor);\n                            lastLensLineNumber = lens.getLineNumber();\n                        }\n                    });\n                    const helper = new CodeLensHelper();\n                    toDispose.forEach((l) => {\n                        l.dispose(helper, viewZonesAccessor);\n                        this._lenses.splice(this._lenses.indexOf(l), 1);\n                    });\n                    helper.commit(decorationsAccessor);\n                });\n            });\n            // Ask for all references again\n            scheduler.schedule();\n            // Cancel pending and active resolve requests\n            this._resolveCodeLensesScheduler.cancel();\n            (_a = this._resolveCodeLensesPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n            this._resolveCodeLensesPromise = undefined;\n        }));\n        this._localToDispose.add(this._editor.onDidFocusEditorWidget(() => {\n            scheduler.schedule();\n        }));\n        this._localToDispose.add(this._editor.onDidBlurEditorText(() => {\n            scheduler.cancel();\n        }));\n        this._localToDispose.add(this._editor.onDidScrollChange(e => {\n            if (e.scrollTopChanged && this._lenses.length > 0) {\n                this._resolveCodeLensesInViewportSoon();\n            }\n        }));\n        this._localToDispose.add(this._editor.onDidLayoutChange(() => {\n            this._resolveCodeLensesInViewportSoon();\n        }));\n        this._localToDispose.add(toDisposable(() => {\n            if (this._editor.getModel()) {\n                const scrollState = StableEditorScrollState.capture(this._editor);\n                this._editor.changeDecorations(decorationsAccessor => {\n                    this._editor.changeViewZones(viewZonesAccessor => {\n                        this._disposeAllLenses(decorationsAccessor, viewZonesAccessor);\n                    });\n                });\n                scrollState.restore(this._editor);\n            }\n            else {\n                // No accessors available\n                this._disposeAllLenses(undefined, undefined);\n            }\n        }));\n        this._localToDispose.add(this._editor.onMouseDown(e => {\n            if (e.target.type !== 9 /* MouseTargetType.CONTENT_WIDGET */) {\n                return;\n            }\n            let target = e.target.element;\n            if ((target === null || target === void 0 ? void 0 : target.tagName) === 'SPAN') {\n                target = target.parentElement;\n            }\n            if ((target === null || target === void 0 ? void 0 : target.tagName) === 'A') {\n                for (const lens of this._lenses) {\n                    const command = lens.getCommand(target);\n                    if (command) {\n                        this._commandService.executeCommand(command.id, ...(command.arguments || [])).catch(err => this._notificationService.error(err));\n                        break;\n                    }\n                }\n            }\n        }));\n        scheduler.schedule();\n    }\n    _disposeAllLenses(decChangeAccessor, viewZoneChangeAccessor) {\n        const helper = new CodeLensHelper();\n        for (const lens of this._lenses) {\n            lens.dispose(helper, viewZoneChangeAccessor);\n        }\n        if (decChangeAccessor) {\n            helper.commit(decChangeAccessor);\n        }\n        this._lenses.length = 0;\n    }\n    _renderCodeLensSymbols(symbols) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const maxLineNumber = this._editor.getModel().getLineCount();\n        const groups = [];\n        let lastGroup;\n        for (const symbol of symbols.lenses) {\n            const line = symbol.symbol.range.startLineNumber;\n            if (line < 1 || line > maxLineNumber) {\n                // invalid code lens\n                continue;\n            }\n            else if (lastGroup && lastGroup[lastGroup.length - 1].symbol.range.startLineNumber === line) {\n                // on same line as previous\n                lastGroup.push(symbol);\n            }\n            else {\n                // on later line as previous\n                lastGroup = [symbol];\n                groups.push(lastGroup);\n            }\n        }\n        if (!groups.length && !this._lenses.length) {\n            // Nothing to change\n            return;\n        }\n        const scrollState = StableEditorScrollState.capture(this._editor);\n        const layoutInfo = this._getLayoutInfo();\n        this._editor.changeDecorations(decorationsAccessor => {\n            this._editor.changeViewZones(viewZoneAccessor => {\n                const helper = new CodeLensHelper();\n                let codeLensIndex = 0;\n                let groupsIndex = 0;\n                while (groupsIndex < groups.length && codeLensIndex < this._lenses.length) {\n                    const symbolsLineNumber = groups[groupsIndex][0].symbol.range.startLineNumber;\n                    const codeLensLineNumber = this._lenses[codeLensIndex].getLineNumber();\n                    if (codeLensLineNumber < symbolsLineNumber) {\n                        this._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\n                        this._lenses.splice(codeLensIndex, 1);\n                    }\n                    else if (codeLensLineNumber === symbolsLineNumber) {\n                        this._lenses[codeLensIndex].updateCodeLensSymbols(groups[groupsIndex], helper);\n                        groupsIndex++;\n                        codeLensIndex++;\n                    }\n                    else {\n                        this._lenses.splice(codeLensIndex, 0, new CodeLensWidget(groups[groupsIndex], this._editor, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\n                        codeLensIndex++;\n                        groupsIndex++;\n                    }\n                }\n                // Delete extra code lenses\n                while (codeLensIndex < this._lenses.length) {\n                    this._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\n                    this._lenses.splice(codeLensIndex, 1);\n                }\n                // Create extra symbols\n                while (groupsIndex < groups.length) {\n                    this._lenses.push(new CodeLensWidget(groups[groupsIndex], this._editor, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\n                    groupsIndex++;\n                }\n                helper.commit(decorationsAccessor);\n            });\n        });\n        scrollState.restore(this._editor);\n    }\n    _resolveCodeLensesInViewportSoon() {\n        const model = this._editor.getModel();\n        if (model) {\n            this._resolveCodeLensesScheduler.schedule();\n        }\n    }\n    _resolveCodeLensesInViewport() {\n        var _a;\n        (_a = this._resolveCodeLensesPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n        this._resolveCodeLensesPromise = undefined;\n        const model = this._editor.getModel();\n        if (!model) {\n            return;\n        }\n        const toResolve = [];\n        const lenses = [];\n        this._lenses.forEach((lens) => {\n            const request = lens.computeIfNecessary(model);\n            if (request) {\n                toResolve.push(request);\n                lenses.push(lens);\n            }\n        });\n        if (toResolve.length === 0) {\n            return;\n        }\n        const t1 = Date.now();\n        const resolvePromise = createCancelablePromise(token => {\n            const promises = toResolve.map((request, i) => {\n                const resolvedSymbols = new Array(request.length);\n                const promises = request.map((request, i) => {\n                    if (!request.symbol.command && typeof request.provider.resolveCodeLens === 'function') {\n                        return Promise.resolve(request.provider.resolveCodeLens(model, request.symbol, token)).then(symbol => {\n                            resolvedSymbols[i] = symbol;\n                        }, onUnexpectedExternalError);\n                    }\n                    else {\n                        resolvedSymbols[i] = request.symbol;\n                        return Promise.resolve(undefined);\n                    }\n                });\n                return Promise.all(promises).then(() => {\n                    if (!token.isCancellationRequested && !lenses[i].isDisposed()) {\n                        lenses[i].updateCommands(resolvedSymbols);\n                    }\n                });\n            });\n            return Promise.all(promises);\n        });\n        this._resolveCodeLensesPromise = resolvePromise;\n        this._resolveCodeLensesPromise.then(() => {\n            // update moving average\n            const newDelay = this._resolveCodeLensesDebounce.update(model, Date.now() - t1);\n            this._resolveCodeLensesScheduler.delay = newDelay;\n            if (this._currentCodeLensModel) { // update the cached state with new resolved items\n                this._codeLensCache.put(model, this._currentCodeLensModel);\n            }\n            this._oldCodeLensModels.clear(); // dispose old models once we have updated the UI with the current model\n            if (resolvePromise === this._resolveCodeLensesPromise) {\n                this._resolveCodeLensesPromise = undefined;\n            }\n        }, err => {\n            onUnexpectedError(err); // can also be cancellation!\n            if (resolvePromise === this._resolveCodeLensesPromise) {\n                this._resolveCodeLensesPromise = undefined;\n            }\n        });\n    }\n    async getModel() {\n        var _a;\n        await this._getCodeLensModelPromise;\n        await this._resolveCodeLensesPromise;\n        return !((_a = this._currentCodeLensModel) === null || _a === void 0 ? void 0 : _a.isDisposed)\n            ? this._currentCodeLensModel\n            : undefined;\n    }\n};\nCodeLensContribution.ID = 'css.editor.codeLens';\nCodeLensContribution = __decorate([\n    __param(1, ILanguageFeaturesService),\n    __param(2, ILanguageFeatureDebounceService),\n    __param(3, ICommandService),\n    __param(4, INotificationService),\n    __param(5, ICodeLensCache)\n], CodeLensContribution);\nexport { CodeLensContribution };\nregisterEditorContribution(CodeLensContribution.ID, CodeLensContribution, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nregisterEditorAction(class ShowLensesInCurrentLine extends EditorAction {\n    constructor() {\n        super({\n            id: 'codelens.showLensesInCurrentLine',\n            precondition: EditorContextKeys.hasCodeLensProvider,\n            label: localize('showLensOnLine', \"Show CodeLens Commands For Current Line\"),\n            alias: 'Show CodeLens Commands For Current Line',\n        });\n    }\n    async run(accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const quickInputService = accessor.get(IQuickInputService);\n        const commandService = accessor.get(ICommandService);\n        const notificationService = accessor.get(INotificationService);\n        const lineNumber = editor.getSelection().positionLineNumber;\n        const codelensController = editor.getContribution(CodeLensContribution.ID);\n        if (!codelensController) {\n            return;\n        }\n        const model = await codelensController.getModel();\n        if (!model) {\n            // nothing\n            return;\n        }\n        const items = [];\n        for (const lens of model.lenses) {\n            if (lens.symbol.command && lens.symbol.range.startLineNumber === lineNumber) {\n                items.push({\n                    label: lens.symbol.command.title,\n                    command: lens.symbol.command\n                });\n            }\n        }\n        if (items.length === 0) {\n            // We dont want an empty picker\n            return;\n        }\n        const item = await quickInputService.pick(items, {\n            canPickMany: false,\n            placeHolder: localize('placeHolder', \"Select a command\")\n        });\n        if (!item) {\n            // Nothing picked\n            return;\n        }\n        let command = item.command;\n        if (model.isDisposed) {\n            // try to find the same command again in-case the model has been re-created in the meantime\n            // this is a best attempt approach which shouldn't be needed because eager model re-creates\n            // shouldn't happen due to focus in/out anymore\n            const newModel = await codelensController.getModel();\n            const newLens = newModel === null || newModel === void 0 ? void 0 : newModel.lenses.find(lens => { var _a; return lens.symbol.range.startLineNumber === lineNumber && ((_a = lens.symbol.command) === null || _a === void 0 ? void 0 : _a.title) === command.title; });\n            if (!newLens || !newLens.symbol.command) {\n                return;\n            }\n            command = newLens.symbol.command;\n        }\n        try {\n            await commandService.executeCommand(command.id, ...(command.arguments || []));\n        }\n        catch (err) {\n            notificationService.error(err);\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 { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { illegalArgument, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport class CodeLensModel {\n    constructor() {\n        this.lenses = [];\n        this._disposables = new DisposableStore();\n    }\n    dispose() {\n        this._disposables.dispose();\n    }\n    get isDisposed() {\n        return this._disposables.isDisposed;\n    }\n    add(list, provider) {\n        this._disposables.add(list);\n        for (const symbol of list.lenses) {\n            this.lenses.push({ symbol, provider });\n        }\n    }\n}\nexport async function getCodeLensModel(registry, model, token) {\n    const provider = registry.ordered(model);\n    const providerRanks = new Map();\n    const result = new CodeLensModel();\n    const promises = provider.map(async (provider, i) => {\n        providerRanks.set(provider, i);\n        try {\n            const list = await Promise.resolve(provider.provideCodeLenses(model, token));\n            if (list) {\n                result.add(list, provider);\n            }\n        }\n        catch (err) {\n            onUnexpectedExternalError(err);\n        }\n    });\n    await Promise.all(promises);\n    result.lenses = result.lenses.sort((a, b) => {\n        // sort by lineNumber, provider-rank, and column\n        if (a.symbol.range.startLineNumber < b.symbol.range.startLineNumber) {\n            return -1;\n        }\n        else if (a.symbol.range.startLineNumber > b.symbol.range.startLineNumber) {\n            return 1;\n        }\n        else if ((providerRanks.get(a.provider)) < (providerRanks.get(b.provider))) {\n            return -1;\n        }\n        else if ((providerRanks.get(a.provider)) > (providerRanks.get(b.provider))) {\n            return 1;\n        }\n        else if (a.symbol.range.startColumn < b.symbol.range.startColumn) {\n            return -1;\n        }\n        else if (a.symbol.range.startColumn > b.symbol.range.startColumn) {\n            return 1;\n        }\n        else {\n            return 0;\n        }\n    });\n    return result;\n}\nCommandsRegistry.registerCommand('_executeCodeLensProvider', function (accessor, ...args) {\n    let [uri, itemResolveCount] = args;\n    assertType(URI.isUri(uri));\n    assertType(typeof itemResolveCount === 'number' || !itemResolveCount);\n    const { codeLensProvider } = accessor.get(ILanguageFeaturesService);\n    const model = accessor.get(IModelService).getModel(uri);\n    if (!model) {\n        throw illegalArgument();\n    }\n    const result = [];\n    const disposables = new DisposableStore();\n    return getCodeLensModel(codeLensProvider, model, CancellationToken.None).then(value => {\n        disposables.add(value);\n        const resolve = [];\n        for (const item of value.lenses) {\n            if (itemResolveCount === undefined || itemResolveCount === null || Boolean(item.symbol.command)) {\n                result.push(item.symbol);\n            }\n            else if (itemResolveCount-- > 0 && item.provider.resolveCodeLens) {\n                resolve.push(Promise.resolve(item.provider.resolveCodeLens(model, item.symbol, CancellationToken.None)).then(symbol => result.push(symbol || item.symbol)));\n            }\n        }\n        return Promise.all(resolve);\n    }).then(() => {\n        return result;\n    }).finally(() => {\n        // make sure to return results, then (on next tick)\n        // dispose the results\n        setTimeout(() => disposables.dispose(), 100);\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 { Event } from '../../../../base/common/event.js';\nimport { LRUCache } from '../../../../base/common/map.js';\nimport { Range } from '../../../common/core/range.js';\nimport { CodeLensModel } from './codelens.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IStorageService, WillSaveStateReason } from '../../../../platform/storage/common/storage.js';\nimport { mainWindow } from '../../../../base/browser/window.js';\nimport { runWhenWindowIdle } from '../../../../base/browser/dom.js';\nexport const ICodeLensCache = createDecorator('ICodeLensCache');\nclass CacheItem {\n    constructor(lineCount, data) {\n        this.lineCount = lineCount;\n        this.data = data;\n    }\n}\nlet CodeLensCache = class CodeLensCache {\n    constructor(storageService) {\n        this._fakeProvider = new class {\n            provideCodeLenses() {\n                throw new Error('not supported');\n            }\n        };\n        this._cache = new LRUCache(20, 0.75);\n        // remove old data\n        const oldkey = 'codelens/cache';\n        runWhenWindowIdle(mainWindow, () => storageService.remove(oldkey, 1 /* StorageScope.WORKSPACE */));\n        // restore lens data on start\n        const key = 'codelens/cache2';\n        const raw = storageService.get(key, 1 /* StorageScope.WORKSPACE */, '{}');\n        this._deserialize(raw);\n        // store lens data on shutdown\n        Event.once(storageService.onWillSaveState)(e => {\n            if (e.reason === WillSaveStateReason.SHUTDOWN) {\n                storageService.store(key, this._serialize(), 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n            }\n        });\n    }\n    put(model, data) {\n        // create a copy of the model that is without command-ids\n        // but with comand-labels\n        const copyItems = data.lenses.map(item => {\n            var _a;\n            return {\n                range: item.symbol.range,\n                command: item.symbol.command && { id: '', title: (_a = item.symbol.command) === null || _a === void 0 ? void 0 : _a.title },\n            };\n        });\n        const copyModel = new CodeLensModel();\n        copyModel.add({ lenses: copyItems, dispose: () => { } }, this._fakeProvider);\n        const item = new CacheItem(model.getLineCount(), copyModel);\n        this._cache.set(model.uri.toString(), item);\n    }\n    get(model) {\n        const item = this._cache.get(model.uri.toString());\n        return item && item.lineCount === model.getLineCount() ? item.data : undefined;\n    }\n    delete(model) {\n        this._cache.delete(model.uri.toString());\n    }\n    // --- persistence\n    _serialize() {\n        const data = Object.create(null);\n        for (const [key, value] of this._cache) {\n            const lines = new Set();\n            for (const d of value.data.lenses) {\n                lines.add(d.symbol.range.startLineNumber);\n            }\n            data[key] = {\n                lineCount: value.lineCount,\n                lines: [...lines.values()]\n            };\n        }\n        return JSON.stringify(data);\n    }\n    _deserialize(raw) {\n        try {\n            const data = JSON.parse(raw);\n            for (const key in data) {\n                const element = data[key];\n                const lenses = [];\n                for (const line of element.lines) {\n                    lenses.push({ range: new Range(line, 1, line, 11) });\n                }\n                const model = new CodeLensModel();\n                model.add({ lenses, dispose() { } }, this._fakeProvider);\n                this._cache.set(key, new CacheItem(element.lineCount, model));\n            }\n        }\n        catch (_a) {\n            // ignore...\n        }\n    }\n};\nCodeLensCache = __decorate([\n    __param(0, IStorageService)\n], CodeLensCache);\nexport { CodeLensCache };\nregisterSingleton(ICodeLensCache, CodeLensCache, 1 /* InstantiationType.Delayed */);\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 { renderLabelWithIcons } from '../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport './codelensWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nclass CodeLensViewZone {\n    constructor(afterLineNumber, heightInPx, onHeight) {\n        /**\n         * We want that this view zone, which reserves space for a code lens appears\n         * as close as possible to the next line, so we use a very large value here.\n         */\n        this.afterColumn = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n        this.afterLineNumber = afterLineNumber;\n        this.heightInPx = heightInPx;\n        this._onHeight = onHeight;\n        this.suppressMouseDown = true;\n        this.domNode = document.createElement('div');\n    }\n    onComputedHeight(height) {\n        if (this._lastHeight === undefined) {\n            this._lastHeight = height;\n        }\n        else if (this._lastHeight !== height) {\n            this._lastHeight = height;\n            this._onHeight();\n        }\n    }\n    isVisible() {\n        return this._lastHeight !== 0\n            && this.domNode.hasAttribute('monaco-visible-view-zone');\n    }\n}\nclass CodeLensContentWidget {\n    constructor(editor, line) {\n        // Editor.IContentWidget.allowEditorOverflow\n        this.allowEditorOverflow = false;\n        this.suppressMouseDown = true;\n        this._commands = new Map();\n        this._isEmpty = true;\n        this._editor = editor;\n        this._id = `codelens.widget-${(CodeLensContentWidget._idPool++)}`;\n        this.updatePosition(line);\n        this._domNode = document.createElement('span');\n        this._domNode.className = `codelens-decoration`;\n    }\n    withCommands(lenses, animate) {\n        this._commands.clear();\n        const children = [];\n        let hasSymbol = false;\n        for (let i = 0; i < lenses.length; i++) {\n            const lens = lenses[i];\n            if (!lens) {\n                continue;\n            }\n            hasSymbol = true;\n            if (lens.command) {\n                const title = renderLabelWithIcons(lens.command.title.trim());\n                if (lens.command.id) {\n                    const id = `c${(CodeLensContentWidget._idPool++)}`;\n                    children.push(dom.$('a', { id, title: lens.command.tooltip, role: 'button' }, ...title));\n                    this._commands.set(id, lens.command);\n                }\n                else {\n                    children.push(dom.$('span', { title: lens.command.tooltip }, ...title));\n                }\n                if (i + 1 < lenses.length) {\n                    children.push(dom.$('span', undefined, '\\u00a0|\\u00a0'));\n                }\n            }\n        }\n        if (!hasSymbol) {\n            // symbols but no commands\n            dom.reset(this._domNode, dom.$('span', undefined, 'no commands'));\n        }\n        else {\n            // symbols and commands\n            dom.reset(this._domNode, ...children);\n            if (this._isEmpty && animate) {\n                this._domNode.classList.add('fadein');\n            }\n            this._isEmpty = false;\n        }\n    }\n    getCommand(link) {\n        return link.parentElement === this._domNode\n            ? this._commands.get(link.id)\n            : undefined;\n    }\n    getId() {\n        return this._id;\n    }\n    getDomNode() {\n        return this._domNode;\n    }\n    updatePosition(line) {\n        const column = this._editor.getModel().getLineFirstNonWhitespaceColumn(line);\n        this._widgetPosition = {\n            position: { lineNumber: line, column: column },\n            preference: [1 /* ContentWidgetPositionPreference.ABOVE */]\n        };\n    }\n    getPosition() {\n        return this._widgetPosition || null;\n    }\n}\nCodeLensContentWidget._idPool = 0;\nexport class CodeLensHelper {\n    constructor() {\n        this._removeDecorations = [];\n        this._addDecorations = [];\n        this._addDecorationsCallbacks = [];\n    }\n    addDecoration(decoration, callback) {\n        this._addDecorations.push(decoration);\n        this._addDecorationsCallbacks.push(callback);\n    }\n    removeDecoration(decorationId) {\n        this._removeDecorations.push(decorationId);\n    }\n    commit(changeAccessor) {\n        const resultingDecorations = changeAccessor.deltaDecorations(this._removeDecorations, this._addDecorations);\n        for (let i = 0, len = resultingDecorations.length; i < len; i++) {\n            this._addDecorationsCallbacks[i](resultingDecorations[i]);\n        }\n    }\n}\nconst codeLensDecorationOptions = ModelDecorationOptions.register({\n    collapseOnReplaceEdit: true,\n    description: 'codelens'\n});\nexport class CodeLensWidget {\n    constructor(data, editor, helper, viewZoneChangeAccessor, heightInPx, updateCallback) {\n        this._isDisposed = false;\n        this._editor = editor;\n        this._data = data;\n        // create combined range, track all ranges with decorations,\n        // check if there is already something to render\n        this._decorationIds = [];\n        let range;\n        const lenses = [];\n        this._data.forEach((codeLensData, i) => {\n            if (codeLensData.symbol.command) {\n                lenses.push(codeLensData.symbol);\n            }\n            helper.addDecoration({\n                range: codeLensData.symbol.range,\n                options: codeLensDecorationOptions\n            }, id => this._decorationIds[i] = id);\n            // the range contains all lenses on this line\n            if (!range) {\n                range = Range.lift(codeLensData.symbol.range);\n            }\n            else {\n                range = Range.plusRange(range, codeLensData.symbol.range);\n            }\n        });\n        this._viewZone = new CodeLensViewZone(range.startLineNumber - 1, heightInPx, updateCallback);\n        this._viewZoneId = viewZoneChangeAccessor.addZone(this._viewZone);\n        if (lenses.length > 0) {\n            this._createContentWidgetIfNecessary();\n            this._contentWidget.withCommands(lenses, false);\n        }\n    }\n    _createContentWidgetIfNecessary() {\n        if (!this._contentWidget) {\n            this._contentWidget = new CodeLensContentWidget(this._editor, this._viewZone.afterLineNumber + 1);\n            this._editor.addContentWidget(this._contentWidget);\n        }\n        else {\n            this._editor.layoutContentWidget(this._contentWidget);\n        }\n    }\n    dispose(helper, viewZoneChangeAccessor) {\n        this._decorationIds.forEach(helper.removeDecoration, helper);\n        this._decorationIds = [];\n        viewZoneChangeAccessor === null || viewZoneChangeAccessor === void 0 ? void 0 : viewZoneChangeAccessor.removeZone(this._viewZoneId);\n        if (this._contentWidget) {\n            this._editor.removeContentWidget(this._contentWidget);\n            this._contentWidget = undefined;\n        }\n        this._isDisposed = true;\n    }\n    isDisposed() {\n        return this._isDisposed;\n    }\n    isValid() {\n        return this._decorationIds.some((id, i) => {\n            const range = this._editor.getModel().getDecorationRange(id);\n            const symbol = this._data[i].symbol;\n            return !!(range && Range.isEmpty(symbol.range) === range.isEmpty());\n        });\n    }\n    updateCodeLensSymbols(data, helper) {\n        this._decorationIds.forEach(helper.removeDecoration, helper);\n        this._decorationIds = [];\n        this._data = data;\n        this._data.forEach((codeLensData, i) => {\n            helper.addDecoration({\n                range: codeLensData.symbol.range,\n                options: codeLensDecorationOptions\n            }, id => this._decorationIds[i] = id);\n        });\n    }\n    updateHeight(height, viewZoneChangeAccessor) {\n        this._viewZone.heightInPx = height;\n        viewZoneChangeAccessor.layoutZone(this._viewZoneId);\n        if (this._contentWidget) {\n            this._editor.layoutContentWidget(this._contentWidget);\n        }\n    }\n    computeIfNecessary(model) {\n        if (!this._viewZone.isVisible()) {\n            return null;\n        }\n        // Read editor current state\n        for (let i = 0; i < this._decorationIds.length; i++) {\n            const range = model.getDecorationRange(this._decorationIds[i]);\n            if (range) {\n                this._data[i].symbol.range = range;\n            }\n        }\n        return this._data;\n    }\n    updateCommands(symbols) {\n        this._createContentWidgetIfNecessary();\n        this._contentWidget.withCommands(symbols, true);\n        for (let i = 0; i < this._data.length; i++) {\n            const resolved = symbols[i];\n            if (resolved) {\n                const { symbol } = this._data[i];\n                symbol.command = resolved.command || symbol.command;\n            }\n        }\n    }\n    getCommand(link) {\n        var _a;\n        return (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.getCommand(link);\n    }\n    getLineNumber() {\n        const range = this._editor.getModel().getDecorationRange(this._decorationIds[0]);\n        if (range) {\n            return range.startLineNumber;\n        }\n        return -1;\n    }\n    update(viewZoneChangeAccessor) {\n        if (this.isValid()) {\n            const range = this._editor.getModel().getDecorationRange(this._decorationIds[0]);\n            if (range) {\n                this._viewZone.afterLineNumber = range.startLineNumber - 1;\n                viewZoneChangeAccessor.layoutZone(this._viewZoneId);\n                if (this._contentWidget) {\n                    this._contentWidget.updatePosition(range.startLineNumber);\n                    this._editor.layoutContentWidget(this._contentWidget);\n                }\n            }\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 } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ColorDecorationInjectedTextMarker } from './colorDetector.js';\nimport { ColorHoverParticipant } from './colorHoverParticipant.js';\nimport { HoverController } from '../../hover/browser/hoverController.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nexport class ColorContribution extends Disposable {\n    constructor(_editor) {\n        super();\n        this._editor = _editor;\n        this._register(_editor.onMouseDown((e) => this.onMouseDown(e)));\n    }\n    dispose() {\n        super.dispose();\n    }\n    onMouseDown(mouseEvent) {\n        const colorDecoratorsActivatedOn = this._editor.getOption(148 /* EditorOption.colorDecoratorsActivatedOn */);\n        if (colorDecoratorsActivatedOn !== 'click' && colorDecoratorsActivatedOn !== 'clickAndHover') {\n            return;\n        }\n        const target = mouseEvent.target;\n        if (target.type !== 6 /* MouseTargetType.CONTENT_TEXT */) {\n            return;\n        }\n        if (!target.detail.injectedText) {\n            return;\n        }\n        if (target.detail.injectedText.options.attachedData !== ColorDecorationInjectedTextMarker) {\n            return;\n        }\n        if (!target.range) {\n            return;\n        }\n        const hoverController = this._editor.getContribution(HoverController.ID);\n        if (!hoverController) {\n            return;\n        }\n        if (!hoverController.isColorPickerVisible) {\n            const range = new Range(target.range.startLineNumber, target.range.startColumn + 1, target.range.endLineNumber, target.range.endColumn + 1);\n            hoverController.showContentHover(range, 1 /* HoverStartMode.Immediate */, 0 /* HoverStartSource.Mouse */, false, true);\n        }\n    }\n}\nColorContribution.ID = 'editor.contrib.colorContribution'; // ms\nregisterEditorContribution(ColorContribution.ID, ColorContribution, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nHoverParticipantRegistry.register(ColorHoverParticipant);\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 ColorDetector_1;\nimport { createCancelablePromise, TimeoutTimer } from '../../../../base/common/async.js';\nimport { RGBA } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { noBreakWhitespace } from '../../../../base/common/strings.js';\nimport { DynamicCssRules } from '../../../browser/editorDom.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getColors } from './color.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nexport const ColorDecorationInjectedTextMarker = Object.create({});\nlet ColorDetector = ColorDetector_1 = class ColorDetector extends Disposable {\n    constructor(_editor, _configurationService, _languageFeaturesService, languageFeatureDebounceService) {\n        super();\n        this._editor = _editor;\n        this._configurationService = _configurationService;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._localToDispose = this._register(new DisposableStore());\n        this._decorationsIds = [];\n        this._colorDatas = new Map();\n        this._colorDecoratorIds = this._editor.createDecorationsCollection();\n        this._ruleFactory = new DynamicCssRules(this._editor);\n        this._decoratorLimitReporter = new DecoratorLimitReporter();\n        this._colorDecorationClassRefs = this._register(new DisposableStore());\n        this._debounceInformation = languageFeatureDebounceService.for(_languageFeaturesService.colorProvider, 'Document Colors', { min: ColorDetector_1.RECOMPUTE_TIME });\n        this._register(_editor.onDidChangeModel(() => {\n            this._isColorDecoratorsEnabled = this.isEnabled();\n            this.updateColors();\n        }));\n        this._register(_editor.onDidChangeModelLanguage(() => this.updateColors()));\n        this._register(_languageFeaturesService.colorProvider.onDidChange(() => this.updateColors()));\n        this._register(_editor.onDidChangeConfiguration((e) => {\n            const prevIsEnabled = this._isColorDecoratorsEnabled;\n            this._isColorDecoratorsEnabled = this.isEnabled();\n            this._isDefaultColorDecoratorsEnabled = this._editor.getOption(147 /* EditorOption.defaultColorDecorators */);\n            const updatedColorDecoratorsSetting = prevIsEnabled !== this._isColorDecoratorsEnabled || e.hasChanged(21 /* EditorOption.colorDecoratorsLimit */);\n            const updatedDefaultColorDecoratorsSetting = e.hasChanged(147 /* EditorOption.defaultColorDecorators */);\n            if (updatedColorDecoratorsSetting || updatedDefaultColorDecoratorsSetting) {\n                if (this._isColorDecoratorsEnabled) {\n                    this.updateColors();\n                }\n                else {\n                    this.removeAllDecorations();\n                }\n            }\n        }));\n        this._timeoutTimer = null;\n        this._computePromise = null;\n        this._isColorDecoratorsEnabled = this.isEnabled();\n        this._isDefaultColorDecoratorsEnabled = this._editor.getOption(147 /* EditorOption.defaultColorDecorators */);\n        this.updateColors();\n    }\n    isEnabled() {\n        const model = this._editor.getModel();\n        if (!model) {\n            return false;\n        }\n        const languageId = model.getLanguageId();\n        // handle deprecated settings. [languageId].colorDecorators.enable\n        const deprecatedConfig = this._configurationService.getValue(languageId);\n        if (deprecatedConfig && typeof deprecatedConfig === 'object') {\n            const colorDecorators = deprecatedConfig['colorDecorators']; // deprecatedConfig.valueOf('.colorDecorators.enable');\n            if (colorDecorators && colorDecorators['enable'] !== undefined && !colorDecorators['enable']) {\n                return colorDecorators['enable'];\n            }\n        }\n        return this._editor.getOption(20 /* EditorOption.colorDecorators */);\n    }\n    static get(editor) {\n        return editor.getContribution(this.ID);\n    }\n    dispose() {\n        this.stop();\n        this.removeAllDecorations();\n        super.dispose();\n    }\n    updateColors() {\n        this.stop();\n        if (!this._isColorDecoratorsEnabled) {\n            return;\n        }\n        const model = this._editor.getModel();\n        if (!model || !this._languageFeaturesService.colorProvider.has(model)) {\n            return;\n        }\n        this._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n            if (!this._timeoutTimer) {\n                this._timeoutTimer = new TimeoutTimer();\n                this._timeoutTimer.cancelAndSet(() => {\n                    this._timeoutTimer = null;\n                    this.beginCompute();\n                }, this._debounceInformation.get(model));\n            }\n        }));\n        this.beginCompute();\n    }\n    async beginCompute() {\n        this._computePromise = createCancelablePromise(async (token) => {\n            const model = this._editor.getModel();\n            if (!model) {\n                return [];\n            }\n            const sw = new StopWatch(false);\n            const colors = await getColors(this._languageFeaturesService.colorProvider, model, token, this._isDefaultColorDecoratorsEnabled);\n            this._debounceInformation.update(model, sw.elapsed());\n            return colors;\n        });\n        try {\n            const colors = await this._computePromise;\n            this.updateDecorations(colors);\n            this.updateColorDecorators(colors);\n            this._computePromise = null;\n        }\n        catch (e) {\n            onUnexpectedError(e);\n        }\n    }\n    stop() {\n        if (this._timeoutTimer) {\n            this._timeoutTimer.cancel();\n            this._timeoutTimer = null;\n        }\n        if (this._computePromise) {\n            this._computePromise.cancel();\n            this._computePromise = null;\n        }\n        this._localToDispose.clear();\n    }\n    updateDecorations(colorDatas) {\n        const decorations = colorDatas.map(c => ({\n            range: {\n                startLineNumber: c.colorInfo.range.startLineNumber,\n                startColumn: c.colorInfo.range.startColumn,\n                endLineNumber: c.colorInfo.range.endLineNumber,\n                endColumn: c.colorInfo.range.endColumn\n            },\n            options: ModelDecorationOptions.EMPTY\n        }));\n        this._editor.changeDecorations((changeAccessor) => {\n            this._decorationsIds = changeAccessor.deltaDecorations(this._decorationsIds, decorations);\n            this._colorDatas = new Map();\n            this._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));\n        });\n    }\n    updateColorDecorators(colorData) {\n        this._colorDecorationClassRefs.clear();\n        const decorations = [];\n        const limit = this._editor.getOption(21 /* EditorOption.colorDecoratorsLimit */);\n        for (let i = 0; i < colorData.length && decorations.length < limit; i++) {\n            const { red, green, blue, alpha } = colorData[i].colorInfo.color;\n            const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\n            const color = `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n            const ref = this._colorDecorationClassRefs.add(this._ruleFactory.createClassNameRef({\n                backgroundColor: color\n            }));\n            decorations.push({\n                range: {\n                    startLineNumber: colorData[i].colorInfo.range.startLineNumber,\n                    startColumn: colorData[i].colorInfo.range.startColumn,\n                    endLineNumber: colorData[i].colorInfo.range.endLineNumber,\n                    endColumn: colorData[i].colorInfo.range.endColumn\n                },\n                options: {\n                    description: 'colorDetector',\n                    before: {\n                        content: noBreakWhitespace,\n                        inlineClassName: `${ref.className} colorpicker-color-decoration`,\n                        inlineClassNameAffectsLetterSpacing: true,\n                        attachedData: ColorDecorationInjectedTextMarker\n                    }\n                }\n            });\n        }\n        const limited = limit < colorData.length ? limit : false;\n        this._decoratorLimitReporter.update(colorData.length, limited);\n        this._colorDecoratorIds.set(decorations);\n    }\n    removeAllDecorations() {\n        this._editor.removeDecorations(this._decorationsIds);\n        this._decorationsIds = [];\n        this._colorDecoratorIds.clear();\n        this._colorDecorationClassRefs.clear();\n    }\n    getColorData(position) {\n        const model = this._editor.getModel();\n        if (!model) {\n            return null;\n        }\n        const decorations = model\n            .getDecorationsInRange(Range.fromPositions(position, position))\n            .filter(d => this._colorDatas.has(d.id));\n        if (decorations.length === 0) {\n            return null;\n        }\n        return this._colorDatas.get(decorations[0].id);\n    }\n    isColorDecoration(decoration) {\n        return this._colorDecoratorIds.has(decoration);\n    }\n};\nColorDetector.ID = 'editor.contrib.colorDetector';\nColorDetector.RECOMPUTE_TIME = 1000; // ms\nColorDetector = ColorDetector_1 = __decorate([\n    __param(1, IConfigurationService),\n    __param(2, ILanguageFeaturesService),\n    __param(3, ILanguageFeatureDebounceService)\n], ColorDetector);\nexport { ColorDetector };\nexport class DecoratorLimitReporter {\n    constructor() {\n        this._onDidChange = new Emitter();\n        this._computed = 0;\n        this._limited = false;\n    }\n    update(computed, limited) {\n        if (computed !== this._computed || limited !== this._limited) {\n            this._computed = computed;\n            this._limited = limited;\n            this._onDidChange.fire();\n        }\n    }\n}\nregisterEditorContribution(ColorDetector.ID, ColorDetector, 1 /* EditorContributionInstantiation.AfterFirstRender */);\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 { illegalArgument, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { DefaultDocumentColorProvider } from './defaultDocumentColorProvider.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nexport async function getColors(colorProviderRegistry, model, token, isDefaultColorDecoratorsEnabled = true) {\n    return _findColorData(new ColorDataCollector(), colorProviderRegistry, model, token, isDefaultColorDecoratorsEnabled);\n}\nexport function getColorPresentations(model, colorInfo, provider, token) {\n    return Promise.resolve(provider.provideColorPresentations(model, colorInfo, token));\n}\nclass ColorDataCollector {\n    constructor() { }\n    async compute(provider, model, token, colors) {\n        const documentColors = await provider.provideDocumentColors(model, token);\n        if (Array.isArray(documentColors)) {\n            for (const colorInfo of documentColors) {\n                colors.push({ colorInfo, provider });\n            }\n        }\n        return Array.isArray(documentColors);\n    }\n}\nclass ExtColorDataCollector {\n    constructor() { }\n    async compute(provider, model, token, colors) {\n        const documentColors = await provider.provideDocumentColors(model, token);\n        if (Array.isArray(documentColors)) {\n            for (const colorInfo of documentColors) {\n                colors.push({ range: colorInfo.range, color: [colorInfo.color.red, colorInfo.color.green, colorInfo.color.blue, colorInfo.color.alpha] });\n            }\n        }\n        return Array.isArray(documentColors);\n    }\n}\nclass ColorPresentationsCollector {\n    constructor(colorInfo) {\n        this.colorInfo = colorInfo;\n    }\n    async compute(provider, model, _token, colors) {\n        const documentColors = await provider.provideColorPresentations(model, this.colorInfo, CancellationToken.None);\n        if (Array.isArray(documentColors)) {\n            colors.push(...documentColors);\n        }\n        return Array.isArray(documentColors);\n    }\n}\nasync function _findColorData(collector, colorProviderRegistry, model, token, isDefaultColorDecoratorsEnabled) {\n    let validDocumentColorProviderFound = false;\n    let defaultProvider;\n    const colorData = [];\n    const documentColorProviders = colorProviderRegistry.ordered(model);\n    for (let i = documentColorProviders.length - 1; i >= 0; i--) {\n        const provider = documentColorProviders[i];\n        if (provider instanceof DefaultDocumentColorProvider) {\n            defaultProvider = provider;\n        }\n        else {\n            try {\n                if (await collector.compute(provider, model, token, colorData)) {\n                    validDocumentColorProviderFound = true;\n                }\n            }\n            catch (e) {\n                onUnexpectedExternalError(e);\n            }\n        }\n    }\n    if (validDocumentColorProviderFound) {\n        return colorData;\n    }\n    if (defaultProvider && isDefaultColorDecoratorsEnabled) {\n        await collector.compute(defaultProvider, model, token, colorData);\n        return colorData;\n    }\n    return [];\n}\nfunction _setupColorCommand(accessor, resource) {\n    const { colorProvider: colorProviderRegistry } = accessor.get(ILanguageFeaturesService);\n    const model = accessor.get(IModelService).getModel(resource);\n    if (!model) {\n        throw illegalArgument();\n    }\n    const isDefaultColorDecoratorsEnabled = accessor.get(IConfigurationService).getValue('editor.defaultColorDecorators', { resource });\n    return { model, colorProviderRegistry, isDefaultColorDecoratorsEnabled };\n}\nCommandsRegistry.registerCommand('_executeDocumentColorProvider', function (accessor, ...args) {\n    const [resource] = args;\n    if (!(resource instanceof URI)) {\n        throw illegalArgument();\n    }\n    const { model, colorProviderRegistry, isDefaultColorDecoratorsEnabled } = _setupColorCommand(accessor, resource);\n    return _findColorData(new ExtColorDataCollector(), colorProviderRegistry, model, CancellationToken.None, isDefaultColorDecoratorsEnabled);\n});\nCommandsRegistry.registerCommand('_executeColorPresentationProvider', function (accessor, ...args) {\n    const [color, context] = args;\n    const { uri, range } = context;\n    if (!(uri instanceof URI) || !Array.isArray(color) || color.length !== 4 || !Range.isIRange(range)) {\n        throw illegalArgument();\n    }\n    const { model, colorProviderRegistry, isDefaultColorDecoratorsEnabled } = _setupColorCommand(accessor, uri);\n    const [red, green, blue, alpha] = color;\n    return _findColorData(new ColorPresentationsCollector({ range: range, color: { red, green, blue, alpha } }), colorProviderRegistry, model, CancellationToken.None, isDefaultColorDecoratorsEnabled);\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 { Color, RGBA } from '../../../../base/common/color.js';\nimport { EditorWorkerClient } from '../../../browser/services/editorWorkerService.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { registerEditorFeature } from '../../../common/editorFeatures.js';\nexport class DefaultDocumentColorProvider {\n    constructor(modelService, languageConfigurationService) {\n        this._editorWorkerClient = new EditorWorkerClient(modelService, false, 'editorWorkerService', languageConfigurationService);\n    }\n    async provideDocumentColors(model, _token) {\n        return this._editorWorkerClient.computeDefaultDocumentColors(model.uri);\n    }\n    provideColorPresentations(_model, colorInfo, _token) {\n        const range = colorInfo.range;\n        const colorFromInfo = colorInfo.color;\n        const alpha = colorFromInfo.alpha;\n        const color = new Color(new RGBA(Math.round(255 * colorFromInfo.red), Math.round(255 * colorFromInfo.green), Math.round(255 * colorFromInfo.blue), alpha));\n        const rgb = alpha ? Color.Format.CSS.formatRGB(color) : Color.Format.CSS.formatRGBA(color);\n        const hsl = alpha ? Color.Format.CSS.formatHSL(color) : Color.Format.CSS.formatHSLA(color);\n        const hex = alpha ? Color.Format.CSS.formatHex(color) : Color.Format.CSS.formatHexA(color);\n        const colorPresentations = [];\n        colorPresentations.push({ label: rgb, textEdit: { range: range, text: rgb } });\n        colorPresentations.push({ label: hsl, textEdit: { range: range, text: hsl } });\n        colorPresentations.push({ label: hex, textEdit: { range: range, text: hex } });\n        return colorPresentations;\n    }\n}\nlet DefaultDocumentColorProviderFeature = class DefaultDocumentColorProviderFeature extends Disposable {\n    constructor(_modelService, _languageConfigurationService, _languageFeaturesService) {\n        super();\n        this._register(_languageFeaturesService.colorProvider.register('*', new DefaultDocumentColorProvider(_modelService, _languageConfigurationService)));\n    }\n};\nDefaultDocumentColorProviderFeature = __decorate([\n    __param(0, IModelService),\n    __param(1, ILanguageConfigurationService),\n    __param(2, ILanguageFeaturesService)\n], DefaultDocumentColorProviderFeature);\nregisterEditorFeature(DefaultDocumentColorProviderFeature);\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 { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { Color, RGBA } from '../../../../base/common/color.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Range } from '../../../common/core/range.js';\nimport { getColorPresentations, getColors } from './color.js';\nimport { ColorDetector } from './colorDetector.js';\nimport { ColorPickerModel } from './colorPickerModel.js';\nimport { ColorPickerWidget } from './colorPickerWidget.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { Dimension } from '../../../../base/browser/dom.js';\nexport class ColorHover {\n    constructor(owner, range, model, provider) {\n        this.owner = owner;\n        this.range = range;\n        this.model = model;\n        this.provider = provider;\n        /**\n         * Force the hover to always be rendered at this specific range,\n         * even in the case of multiple hover parts.\n         */\n        this.forceShowAtRange = true;\n    }\n    isValidForHoverAnchor(anchor) {\n        return (anchor.type === 1 /* HoverAnchorType.Range */\n            && this.range.startColumn <= anchor.range.startColumn\n            && this.range.endColumn >= anchor.range.endColumn);\n    }\n}\nlet ColorHoverParticipant = class ColorHoverParticipant {\n    constructor(_editor, _themeService) {\n        this._editor = _editor;\n        this._themeService = _themeService;\n        this.hoverOrdinal = 2;\n    }\n    computeSync(_anchor, _lineDecorations) {\n        return [];\n    }\n    computeAsync(anchor, lineDecorations, token) {\n        return AsyncIterableObject.fromPromise(this._computeAsync(anchor, lineDecorations, token));\n    }\n    async _computeAsync(_anchor, lineDecorations, _token) {\n        if (!this._editor.hasModel()) {\n            return [];\n        }\n        const colorDetector = ColorDetector.get(this._editor);\n        if (!colorDetector) {\n            return [];\n        }\n        for (const d of lineDecorations) {\n            if (!colorDetector.isColorDecoration(d)) {\n                continue;\n            }\n            const colorData = colorDetector.getColorData(d.range.getStartPosition());\n            if (colorData) {\n                const colorHover = await _createColorHover(this, this._editor.getModel(), colorData.colorInfo, colorData.provider);\n                return [colorHover];\n            }\n        }\n        return [];\n    }\n    renderHoverParts(context, hoverParts) {\n        return renderHoverParts(this, this._editor, this._themeService, hoverParts, context);\n    }\n};\nColorHoverParticipant = __decorate([\n    __param(1, IThemeService)\n], ColorHoverParticipant);\nexport { ColorHoverParticipant };\nexport class StandaloneColorPickerHover {\n    constructor(owner, range, model, provider) {\n        this.owner = owner;\n        this.range = range;\n        this.model = model;\n        this.provider = provider;\n    }\n}\nlet StandaloneColorPickerParticipant = class StandaloneColorPickerParticipant {\n    constructor(_editor, _themeService) {\n        this._editor = _editor;\n        this._themeService = _themeService;\n        this._color = null;\n    }\n    async createColorHover(defaultColorInfo, defaultColorProvider, colorProviderRegistry) {\n        if (!this._editor.hasModel()) {\n            return null;\n        }\n        const colorDetector = ColorDetector.get(this._editor);\n        if (!colorDetector) {\n            return null;\n        }\n        const colors = await getColors(colorProviderRegistry, this._editor.getModel(), CancellationToken.None);\n        let foundColorInfo = null;\n        let foundColorProvider = null;\n        for (const colorData of colors) {\n            const colorInfo = colorData.colorInfo;\n            if (Range.containsRange(colorInfo.range, defaultColorInfo.range)) {\n                foundColorInfo = colorInfo;\n                foundColorProvider = colorData.provider;\n            }\n        }\n        const colorInfo = foundColorInfo !== null && foundColorInfo !== void 0 ? foundColorInfo : defaultColorInfo;\n        const colorProvider = foundColorProvider !== null && foundColorProvider !== void 0 ? foundColorProvider : defaultColorProvider;\n        const foundInEditor = !!foundColorInfo;\n        return { colorHover: await _createColorHover(this, this._editor.getModel(), colorInfo, colorProvider), foundInEditor: foundInEditor };\n    }\n    async updateEditorModel(colorHoverData) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const colorPickerModel = colorHoverData.model;\n        let range = new Range(colorHoverData.range.startLineNumber, colorHoverData.range.startColumn, colorHoverData.range.endLineNumber, colorHoverData.range.endColumn);\n        if (this._color) {\n            await _updateColorPresentations(this._editor.getModel(), colorPickerModel, this._color, range, colorHoverData);\n            range = _updateEditorModel(this._editor, range, colorPickerModel);\n        }\n    }\n    renderHoverParts(context, hoverParts) {\n        return renderHoverParts(this, this._editor, this._themeService, hoverParts, context);\n    }\n    set color(color) {\n        this._color = color;\n    }\n    get color() {\n        return this._color;\n    }\n};\nStandaloneColorPickerParticipant = __decorate([\n    __param(1, IThemeService)\n], StandaloneColorPickerParticipant);\nexport { StandaloneColorPickerParticipant };\nasync function _createColorHover(participant, editorModel, colorInfo, provider) {\n    const originalText = editorModel.getValueInRange(colorInfo.range);\n    const { red, green, blue, alpha } = colorInfo.color;\n    const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\n    const color = new Color(rgba);\n    const colorPresentations = await getColorPresentations(editorModel, colorInfo, provider, CancellationToken.None);\n    const model = new ColorPickerModel(color, [], 0);\n    model.colorPresentations = colorPresentations || [];\n    model.guessColorPresentation(color, originalText);\n    if (participant instanceof ColorHoverParticipant) {\n        return new ColorHover(participant, Range.lift(colorInfo.range), model, provider);\n    }\n    else {\n        return new StandaloneColorPickerHover(participant, Range.lift(colorInfo.range), model, provider);\n    }\n}\nfunction renderHoverParts(participant, editor, themeService, hoverParts, context) {\n    if (hoverParts.length === 0 || !editor.hasModel()) {\n        return Disposable.None;\n    }\n    if (context.setMinimumDimensions) {\n        const minimumHeight = editor.getOption(67 /* EditorOption.lineHeight */) + 8;\n        context.setMinimumDimensions(new Dimension(302, minimumHeight));\n    }\n    const disposables = new DisposableStore();\n    const colorHover = hoverParts[0];\n    const editorModel = editor.getModel();\n    const model = colorHover.model;\n    const widget = disposables.add(new ColorPickerWidget(context.fragment, model, editor.getOption(143 /* EditorOption.pixelRatio */), themeService, participant instanceof StandaloneColorPickerParticipant));\n    context.setColorPicker(widget);\n    let editorUpdatedByColorPicker = false;\n    let range = new Range(colorHover.range.startLineNumber, colorHover.range.startColumn, colorHover.range.endLineNumber, colorHover.range.endColumn);\n    if (participant instanceof StandaloneColorPickerParticipant) {\n        const color = hoverParts[0].model.color;\n        participant.color = color;\n        _updateColorPresentations(editorModel, model, color, range, colorHover);\n        disposables.add(model.onColorFlushed((color) => {\n            participant.color = color;\n        }));\n    }\n    else {\n        disposables.add(model.onColorFlushed(async (color) => {\n            await _updateColorPresentations(editorModel, model, color, range, colorHover);\n            editorUpdatedByColorPicker = true;\n            range = _updateEditorModel(editor, range, model);\n        }));\n    }\n    disposables.add(model.onDidChangeColor((color) => {\n        _updateColorPresentations(editorModel, model, color, range, colorHover);\n    }));\n    disposables.add(editor.onDidChangeModelContent((e) => {\n        if (editorUpdatedByColorPicker) {\n            editorUpdatedByColorPicker = false;\n        }\n        else {\n            context.hide();\n            editor.focus();\n        }\n    }));\n    return disposables;\n}\nfunction _updateEditorModel(editor, range, model) {\n    var _a, _b;\n    const textEdits = [];\n    const edit = (_a = model.presentation.textEdit) !== null && _a !== void 0 ? _a : { range, text: model.presentation.label, forceMoveMarkers: false };\n    textEdits.push(edit);\n    if (model.presentation.additionalTextEdits) {\n        textEdits.push(...model.presentation.additionalTextEdits);\n    }\n    const replaceRange = Range.lift(edit.range);\n    const trackedRange = editor.getModel()._setTrackedRange(null, replaceRange, 3 /* TrackedRangeStickiness.GrowsOnlyWhenTypingAfter */);\n    editor.executeEdits('colorpicker', textEdits);\n    editor.pushUndoStop();\n    return (_b = editor.getModel()._getTrackedRange(trackedRange)) !== null && _b !== void 0 ? _b : replaceRange;\n}\nasync function _updateColorPresentations(editorModel, colorPickerModel, color, range, colorHover) {\n    const colorPresentations = await getColorPresentations(editorModel, {\n        range: range,\n        color: {\n            red: color.rgba.r / 255,\n            green: color.rgba.g / 255,\n            blue: color.rgba.b / 255,\n            alpha: color.rgba.a\n        }\n    }, colorHover.provider, CancellationToken.None);\n    colorPickerModel.colorPresentations = colorPresentations || [];\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 { Emitter } from '../../../../base/common/event.js';\nexport class ColorPickerModel {\n    get color() {\n        return this._color;\n    }\n    set color(color) {\n        if (this._color.equals(color)) {\n            return;\n        }\n        this._color = color;\n        this._onDidChangeColor.fire(color);\n    }\n    get presentation() { return this.colorPresentations[this.presentationIndex]; }\n    get colorPresentations() {\n        return this._colorPresentations;\n    }\n    set colorPresentations(colorPresentations) {\n        this._colorPresentations = colorPresentations;\n        if (this.presentationIndex > colorPresentations.length - 1) {\n            this.presentationIndex = 0;\n        }\n        this._onDidChangePresentation.fire(this.presentation);\n    }\n    constructor(color, availableColorPresentations, presentationIndex) {\n        this.presentationIndex = presentationIndex;\n        this._onColorFlushed = new Emitter();\n        this.onColorFlushed = this._onColorFlushed.event;\n        this._onDidChangeColor = new Emitter();\n        this.onDidChangeColor = this._onDidChangeColor.event;\n        this._onDidChangePresentation = new Emitter();\n        this.onDidChangePresentation = this._onDidChangePresentation.event;\n        this.originalColor = color;\n        this._color = color;\n        this._colorPresentations = availableColorPresentations;\n    }\n    selectNextColorPresentation() {\n        this.presentationIndex = (this.presentationIndex + 1) % this.colorPresentations.length;\n        this.flushColor();\n        this._onDidChangePresentation.fire(this.presentation);\n    }\n    guessColorPresentation(color, originalText) {\n        let presentationIndex = -1;\n        for (let i = 0; i < this.colorPresentations.length; i++) {\n            if (originalText.toLowerCase() === this.colorPresentations[i].label) {\n                presentationIndex = i;\n                break;\n            }\n        }\n        if (presentationIndex === -1) {\n            // check which color presentation text has same prefix as original text's prefix\n            const originalTextPrefix = originalText.split('(')[0].toLowerCase();\n            for (let i = 0; i < this.colorPresentations.length; i++) {\n                if (this.colorPresentations[i].label.toLowerCase().startsWith(originalTextPrefix)) {\n                    presentationIndex = i;\n                    break;\n                }\n            }\n        }\n        if (presentationIndex !== -1 && presentationIndex !== this.presentationIndex) {\n            this.presentationIndex = presentationIndex;\n            this._onDidChangePresentation.fire(this.presentation);\n        }\n    }\n    flushColor() {\n        this._onColorFlushed.fire(this._color);\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 { PixelRatio } from '../../../../base/browser/pixelRatio.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { GlobalPointerMoveMonitor } from '../../../../base/browser/globalPointerMoveMonitor.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Color, HSVA, RGBA } from '../../../../base/common/color.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport './colorPicker.css';\nimport { localize } from '../../../../nls.js';\nimport { editorHoverBackground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nconst $ = dom.$;\nexport class ColorPickerHeader extends Disposable {\n    constructor(container, model, themeService, showingStandaloneColorPicker = false) {\n        super();\n        this.model = model;\n        this.showingStandaloneColorPicker = showingStandaloneColorPicker;\n        this._closeButton = null;\n        this._domNode = $('.colorpicker-header');\n        dom.append(container, this._domNode);\n        this._pickedColorNode = dom.append(this._domNode, $('.picked-color'));\n        dom.append(this._pickedColorNode, $('span.codicon.codicon-color-mode'));\n        this._pickedColorPresentation = dom.append(this._pickedColorNode, document.createElement('span'));\n        this._pickedColorPresentation.classList.add('picked-color-presentation');\n        const tooltip = localize('clickToToggleColorOptions', \"Click to toggle color options (rgb/hsl/hex)\");\n        this._pickedColorNode.setAttribute('title', tooltip);\n        this._originalColorNode = dom.append(this._domNode, $('.original-color'));\n        this._originalColorNode.style.backgroundColor = Color.Format.CSS.format(this.model.originalColor) || '';\n        this.backgroundColor = themeService.getColorTheme().getColor(editorHoverBackground) || Color.white;\n        this._register(themeService.onDidColorThemeChange(theme => {\n            this.backgroundColor = theme.getColor(editorHoverBackground) || Color.white;\n        }));\n        this._register(dom.addDisposableListener(this._pickedColorNode, dom.EventType.CLICK, () => this.model.selectNextColorPresentation()));\n        this._register(dom.addDisposableListener(this._originalColorNode, dom.EventType.CLICK, () => {\n            this.model.color = this.model.originalColor;\n            this.model.flushColor();\n        }));\n        this._register(model.onDidChangeColor(this.onDidChangeColor, this));\n        this._register(model.onDidChangePresentation(this.onDidChangePresentation, this));\n        this._pickedColorNode.style.backgroundColor = Color.Format.CSS.format(model.color) || '';\n        this._pickedColorNode.classList.toggle('light', model.color.rgba.a < 0.5 ? this.backgroundColor.isLighter() : model.color.isLighter());\n        this.onDidChangeColor(this.model.color);\n        // When the color picker widget is a standalone color picker widget, then add a close button\n        if (this.showingStandaloneColorPicker) {\n            this._domNode.classList.add('standalone-colorpicker');\n            this._closeButton = this._register(new CloseButton(this._domNode));\n        }\n    }\n    get closeButton() {\n        return this._closeButton;\n    }\n    get pickedColorNode() {\n        return this._pickedColorNode;\n    }\n    get originalColorNode() {\n        return this._originalColorNode;\n    }\n    onDidChangeColor(color) {\n        this._pickedColorNode.style.backgroundColor = Color.Format.CSS.format(color) || '';\n        this._pickedColorNode.classList.toggle('light', color.rgba.a < 0.5 ? this.backgroundColor.isLighter() : color.isLighter());\n        this.onDidChangePresentation();\n    }\n    onDidChangePresentation() {\n        this._pickedColorPresentation.textContent = this.model.presentation ? this.model.presentation.label : '';\n    }\n}\nclass CloseButton extends Disposable {\n    constructor(container) {\n        super();\n        this._onClicked = this._register(new Emitter());\n        this.onClicked = this._onClicked.event;\n        this._button = document.createElement('div');\n        this._button.classList.add('close-button');\n        dom.append(container, this._button);\n        const innerDiv = document.createElement('div');\n        innerDiv.classList.add('close-button-inner-div');\n        dom.append(this._button, innerDiv);\n        const closeButton = dom.append(innerDiv, $('.button' + ThemeIcon.asCSSSelector(registerIcon('color-picker-close', Codicon.close, localize('closeIcon', 'Icon to close the color picker')))));\n        closeButton.classList.add('close-icon');\n        this._register(dom.addDisposableListener(this._button, dom.EventType.CLICK, () => {\n            this._onClicked.fire();\n        }));\n    }\n}\nexport class ColorPickerBody extends Disposable {\n    constructor(container, model, pixelRatio, isStandaloneColorPicker = false) {\n        super();\n        this.model = model;\n        this.pixelRatio = pixelRatio;\n        this._insertButton = null;\n        this._domNode = $('.colorpicker-body');\n        dom.append(container, this._domNode);\n        this._saturationBox = new SaturationBox(this._domNode, this.model, this.pixelRatio);\n        this._register(this._saturationBox);\n        this._register(this._saturationBox.onDidChange(this.onDidSaturationValueChange, this));\n        this._register(this._saturationBox.onColorFlushed(this.flushColor, this));\n        this._opacityStrip = new OpacityStrip(this._domNode, this.model, isStandaloneColorPicker);\n        this._register(this._opacityStrip);\n        this._register(this._opacityStrip.onDidChange(this.onDidOpacityChange, this));\n        this._register(this._opacityStrip.onColorFlushed(this.flushColor, this));\n        this._hueStrip = new HueStrip(this._domNode, this.model, isStandaloneColorPicker);\n        this._register(this._hueStrip);\n        this._register(this._hueStrip.onDidChange(this.onDidHueChange, this));\n        this._register(this._hueStrip.onColorFlushed(this.flushColor, this));\n        if (isStandaloneColorPicker) {\n            this._insertButton = this._register(new InsertButton(this._domNode));\n            this._domNode.classList.add('standalone-colorpicker');\n        }\n    }\n    flushColor() {\n        this.model.flushColor();\n    }\n    onDidSaturationValueChange({ s, v }) {\n        const hsva = this.model.color.hsva;\n        this.model.color = new Color(new HSVA(hsva.h, s, v, hsva.a));\n    }\n    onDidOpacityChange(a) {\n        const hsva = this.model.color.hsva;\n        this.model.color = new Color(new HSVA(hsva.h, hsva.s, hsva.v, a));\n    }\n    onDidHueChange(value) {\n        const hsva = this.model.color.hsva;\n        const h = (1 - value) * 360;\n        this.model.color = new Color(new HSVA(h === 360 ? 0 : h, hsva.s, hsva.v, hsva.a));\n    }\n    get domNode() {\n        return this._domNode;\n    }\n    get saturationBox() {\n        return this._saturationBox;\n    }\n    get enterButton() {\n        return this._insertButton;\n    }\n    layout() {\n        this._saturationBox.layout();\n        this._opacityStrip.layout();\n        this._hueStrip.layout();\n    }\n}\nclass SaturationBox extends Disposable {\n    constructor(container, model, pixelRatio) {\n        super();\n        this.model = model;\n        this.pixelRatio = pixelRatio;\n        this._onDidChange = new Emitter();\n        this.onDidChange = this._onDidChange.event;\n        this._onColorFlushed = new Emitter();\n        this.onColorFlushed = this._onColorFlushed.event;\n        this._domNode = $('.saturation-wrap');\n        dom.append(container, this._domNode);\n        // Create canvas, draw selected color\n        this._canvas = document.createElement('canvas');\n        this._canvas.className = 'saturation-box';\n        dom.append(this._domNode, this._canvas);\n        // Add selection circle\n        this.selection = $('.saturation-selection');\n        dom.append(this._domNode, this.selection);\n        this.layout();\n        this._register(dom.addDisposableListener(this._domNode, dom.EventType.POINTER_DOWN, e => this.onPointerDown(e)));\n        this._register(this.model.onDidChangeColor(this.onDidChangeColor, this));\n        this.monitor = null;\n    }\n    get domNode() {\n        return this._domNode;\n    }\n    onPointerDown(e) {\n        if (!e.target || !(e.target instanceof Element)) {\n            return;\n        }\n        this.monitor = this._register(new GlobalPointerMoveMonitor());\n        const origin = dom.getDomNodePagePosition(this._domNode);\n        if (e.target !== this.selection) {\n            this.onDidChangePosition(e.offsetX, e.offsetY);\n        }\n        this.monitor.startMonitoring(e.target, e.pointerId, e.buttons, event => this.onDidChangePosition(event.pageX - origin.left, event.pageY - origin.top), () => null);\n        const pointerUpListener = dom.addDisposableListener(e.target.ownerDocument, dom.EventType.POINTER_UP, () => {\n            this._onColorFlushed.fire();\n            pointerUpListener.dispose();\n            if (this.monitor) {\n                this.monitor.stopMonitoring(true);\n                this.monitor = null;\n            }\n        }, true);\n    }\n    onDidChangePosition(left, top) {\n        const s = Math.max(0, Math.min(1, left / this.width));\n        const v = Math.max(0, Math.min(1, 1 - (top / this.height)));\n        this.paintSelection(s, v);\n        this._onDidChange.fire({ s, v });\n    }\n    layout() {\n        this.width = this._domNode.offsetWidth;\n        this.height = this._domNode.offsetHeight;\n        this._canvas.width = this.width * this.pixelRatio;\n        this._canvas.height = this.height * this.pixelRatio;\n        this.paint();\n        const hsva = this.model.color.hsva;\n        this.paintSelection(hsva.s, hsva.v);\n    }\n    paint() {\n        const hsva = this.model.color.hsva;\n        const saturatedColor = new Color(new HSVA(hsva.h, 1, 1, 1));\n        const ctx = this._canvas.getContext('2d');\n        const whiteGradient = ctx.createLinearGradient(0, 0, this._canvas.width, 0);\n        whiteGradient.addColorStop(0, 'rgba(255, 255, 255, 1)');\n        whiteGradient.addColorStop(0.5, 'rgba(255, 255, 255, 0.5)');\n        whiteGradient.addColorStop(1, 'rgba(255, 255, 255, 0)');\n        const blackGradient = ctx.createLinearGradient(0, 0, 0, this._canvas.height);\n        blackGradient.addColorStop(0, 'rgba(0, 0, 0, 0)');\n        blackGradient.addColorStop(1, 'rgba(0, 0, 0, 1)');\n        ctx.rect(0, 0, this._canvas.width, this._canvas.height);\n        ctx.fillStyle = Color.Format.CSS.format(saturatedColor);\n        ctx.fill();\n        ctx.fillStyle = whiteGradient;\n        ctx.fill();\n        ctx.fillStyle = blackGradient;\n        ctx.fill();\n    }\n    paintSelection(s, v) {\n        this.selection.style.left = `${s * this.width}px`;\n        this.selection.style.top = `${this.height - v * this.height}px`;\n    }\n    onDidChangeColor(color) {\n        if (this.monitor && this.monitor.isMonitoring()) {\n            return;\n        }\n        this.paint();\n        const hsva = color.hsva;\n        this.paintSelection(hsva.s, hsva.v);\n    }\n}\nclass Strip extends Disposable {\n    constructor(container, model, showingStandaloneColorPicker = false) {\n        super();\n        this.model = model;\n        this._onDidChange = new Emitter();\n        this.onDidChange = this._onDidChange.event;\n        this._onColorFlushed = new Emitter();\n        this.onColorFlushed = this._onColorFlushed.event;\n        if (showingStandaloneColorPicker) {\n            this.domNode = dom.append(container, $('.standalone-strip'));\n            this.overlay = dom.append(this.domNode, $('.standalone-overlay'));\n        }\n        else {\n            this.domNode = dom.append(container, $('.strip'));\n            this.overlay = dom.append(this.domNode, $('.overlay'));\n        }\n        this.slider = dom.append(this.domNode, $('.slider'));\n        this.slider.style.top = `0px`;\n        this._register(dom.addDisposableListener(this.domNode, dom.EventType.POINTER_DOWN, e => this.onPointerDown(e)));\n        this._register(model.onDidChangeColor(this.onDidChangeColor, this));\n        this.layout();\n    }\n    layout() {\n        this.height = this.domNode.offsetHeight - this.slider.offsetHeight;\n        const value = this.getValue(this.model.color);\n        this.updateSliderPosition(value);\n    }\n    onDidChangeColor(color) {\n        const value = this.getValue(color);\n        this.updateSliderPosition(value);\n    }\n    onPointerDown(e) {\n        if (!e.target || !(e.target instanceof Element)) {\n            return;\n        }\n        const monitor = this._register(new GlobalPointerMoveMonitor());\n        const origin = dom.getDomNodePagePosition(this.domNode);\n        this.domNode.classList.add('grabbing');\n        if (e.target !== this.slider) {\n            this.onDidChangeTop(e.offsetY);\n        }\n        monitor.startMonitoring(e.target, e.pointerId, e.buttons, event => this.onDidChangeTop(event.pageY - origin.top), () => null);\n        const pointerUpListener = dom.addDisposableListener(e.target.ownerDocument, dom.EventType.POINTER_UP, () => {\n            this._onColorFlushed.fire();\n            pointerUpListener.dispose();\n            monitor.stopMonitoring(true);\n            this.domNode.classList.remove('grabbing');\n        }, true);\n    }\n    onDidChangeTop(top) {\n        const value = Math.max(0, Math.min(1, 1 - (top / this.height)));\n        this.updateSliderPosition(value);\n        this._onDidChange.fire(value);\n    }\n    updateSliderPosition(value) {\n        this.slider.style.top = `${(1 - value) * this.height}px`;\n    }\n}\nclass OpacityStrip extends Strip {\n    constructor(container, model, showingStandaloneColorPicker = false) {\n        super(container, model, showingStandaloneColorPicker);\n        this.domNode.classList.add('opacity-strip');\n        this.onDidChangeColor(this.model.color);\n    }\n    onDidChangeColor(color) {\n        super.onDidChangeColor(color);\n        const { r, g, b } = color.rgba;\n        const opaque = new Color(new RGBA(r, g, b, 1));\n        const transparent = new Color(new RGBA(r, g, b, 0));\n        this.overlay.style.background = `linear-gradient(to bottom, ${opaque} 0%, ${transparent} 100%)`;\n    }\n    getValue(color) {\n        return color.hsva.a;\n    }\n}\nclass HueStrip extends Strip {\n    constructor(container, model, showingStandaloneColorPicker = false) {\n        super(container, model, showingStandaloneColorPicker);\n        this.domNode.classList.add('hue-strip');\n    }\n    getValue(color) {\n        return 1 - (color.hsva.h / 360);\n    }\n}\nexport class InsertButton extends Disposable {\n    constructor(container) {\n        super();\n        this._onClicked = this._register(new Emitter());\n        this.onClicked = this._onClicked.event;\n        this._button = dom.append(container, document.createElement('button'));\n        this._button.classList.add('insert-button');\n        this._button.textContent = 'Insert';\n        this._register(dom.addDisposableListener(this._button, dom.EventType.CLICK, () => {\n            this._onClicked.fire();\n        }));\n    }\n    get button() {\n        return this._button;\n    }\n}\nexport class ColorPickerWidget extends Widget {\n    constructor(container, model, pixelRatio, themeService, standaloneColorPicker = false) {\n        super();\n        this.model = model;\n        this.pixelRatio = pixelRatio;\n        this._register(PixelRatio.getInstance(dom.getWindow(container)).onDidChange(() => this.layout()));\n        const element = $('.colorpicker-widget');\n        container.appendChild(element);\n        this.header = this._register(new ColorPickerHeader(element, this.model, themeService, standaloneColorPicker));\n        this.body = this._register(new ColorPickerBody(element, this.model, this.pixelRatio, standaloneColorPicker));\n    }\n    layout() {\n        this.body.layout();\n    }\n}\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport const SHOW_OR_FOCUS_HOVER_ACTION_ID = 'editor.action.showHover';\nexport const SHOW_DEFINITION_PREVIEW_HOVER_ACTION_ID = 'editor.action.showDefinitionPreviewHover';\nexport const SCROLL_UP_HOVER_ACTION_ID = 'editor.action.scrollUpHover';\nexport const SCROLL_DOWN_HOVER_ACTION_ID = 'editor.action.scrollDownHover';\nexport const SCROLL_LEFT_HOVER_ACTION_ID = 'editor.action.scrollLeftHover';\nexport const SCROLL_RIGHT_HOVER_ACTION_ID = 'editor.action.scrollRightHover';\nexport const PAGE_UP_HOVER_ACTION_ID = 'editor.action.pageUpHover';\nexport const PAGE_DOWN_HOVER_ACTION_ID = 'editor.action.pageDownHover';\nexport const GO_TO_TOP_HOVER_ACTION_ID = 'editor.action.goToTopHover';\nexport const GO_TO_BOTTOM_HOVER_ACTION_ID = 'editor.action.goToBottomHover';\nexport const INCREASE_HOVER_VERBOSITY_ACTION_ID = 'editor.action.increaseHoverVerbosityLevel';\nexport const DECREASE_HOVER_VERBOSITY_ACTION_ID = 'editor.action.decreaseHoverVerbosityLevel';\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 HoverController_1;\nimport { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID, SHOW_OR_FOCUS_HOVER_ACTION_ID } from './hoverActionIds.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { InlineSuggestionHintsContentWidget } from '../../inlineCompletions/browser/inlineCompletionsHintsWidget.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { ContentHoverWidget } from './contentHoverWidget.js';\nimport { ContentHoverController } from './contentHoverController.js';\nimport './hover.css';\nimport { MarginHoverWidget } from './marginHoverWidget.js';\n// sticky hover widget which doesn't disappear on focus out and such\nconst _sticky = false;\nlet HoverController = HoverController_1 = class HoverController extends Disposable {\n    constructor(_editor, _instantiationService, _keybindingService) {\n        super();\n        this._editor = _editor;\n        this._instantiationService = _instantiationService;\n        this._keybindingService = _keybindingService;\n        this._listenersStore = new DisposableStore();\n        this._hoverState = {\n            mouseDown: false,\n            activatedByDecoratorClick: false\n        };\n        this._reactToEditorMouseMoveRunner = this._register(new RunOnceScheduler(() => this._reactToEditorMouseMove(this._mouseMoveEvent), 0));\n        this._hookListeners();\n        this._register(this._editor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(60 /* EditorOption.hover */)) {\n                this._unhookListeners();\n                this._hookListeners();\n            }\n        }));\n    }\n    static get(editor) {\n        return editor.getContribution(HoverController_1.ID);\n    }\n    _hookListeners() {\n        const hoverOpts = this._editor.getOption(60 /* EditorOption.hover */);\n        this._hoverSettings = {\n            enabled: hoverOpts.enabled,\n            sticky: hoverOpts.sticky,\n            hidingDelay: hoverOpts.delay\n        };\n        if (hoverOpts.enabled) {\n            this._listenersStore.add(this._editor.onMouseDown((e) => this._onEditorMouseDown(e)));\n            this._listenersStore.add(this._editor.onMouseUp(() => this._onEditorMouseUp()));\n            this._listenersStore.add(this._editor.onMouseMove((e) => this._onEditorMouseMove(e)));\n            this._listenersStore.add(this._editor.onKeyDown((e) => this._onKeyDown(e)));\n        }\n        else {\n            this._listenersStore.add(this._editor.onMouseMove((e) => this._onEditorMouseMove(e)));\n            this._listenersStore.add(this._editor.onKeyDown((e) => this._onKeyDown(e)));\n        }\n        this._listenersStore.add(this._editor.onMouseLeave((e) => this._onEditorMouseLeave(e)));\n        this._listenersStore.add(this._editor.onDidChangeModel(() => {\n            this._cancelScheduler();\n            this._hideWidgets();\n        }));\n        this._listenersStore.add(this._editor.onDidChangeModelContent(() => this._cancelScheduler()));\n        this._listenersStore.add(this._editor.onDidScrollChange((e) => this._onEditorScrollChanged(e)));\n    }\n    _unhookListeners() {\n        this._listenersStore.clear();\n    }\n    _cancelScheduler() {\n        this._mouseMoveEvent = undefined;\n        this._reactToEditorMouseMoveRunner.cancel();\n    }\n    _onEditorScrollChanged(e) {\n        if (e.scrollTopChanged || e.scrollLeftChanged) {\n            this._hideWidgets();\n        }\n    }\n    _onEditorMouseDown(mouseEvent) {\n        this._hoverState.mouseDown = true;\n        const shouldNotHideCurrentHoverWidget = this._shouldNotHideCurrentHoverWidget(mouseEvent);\n        if (shouldNotHideCurrentHoverWidget) {\n            return;\n        }\n        this._hideWidgets();\n    }\n    _shouldNotHideCurrentHoverWidget(mouseEvent) {\n        if (this._isMouseOnContentHoverWidget(mouseEvent)\n            || this._isMouseOnMarginHoverWidget(mouseEvent)\n            || this._isContentWidgetResizing()) {\n            return true;\n        }\n        return false;\n    }\n    _isMouseOnMarginHoverWidget(mouseEvent) {\n        const target = mouseEvent.target;\n        if (!target) {\n            return false;\n        }\n        return target.type === 12 /* MouseTargetType.OVERLAY_WIDGET */ && target.detail === MarginHoverWidget.ID;\n    }\n    _isMouseOnContentHoverWidget(mouseEvent) {\n        const target = mouseEvent.target;\n        if (!target) {\n            return false;\n        }\n        return target.type === 9 /* MouseTargetType.CONTENT_WIDGET */ && target.detail === ContentHoverWidget.ID;\n    }\n    _onEditorMouseUp() {\n        this._hoverState.mouseDown = false;\n    }\n    _onEditorMouseLeave(mouseEvent) {\n        this._cancelScheduler();\n        const shouldNotHideCurrentHoverWidget = this._shouldNotHideCurrentHoverWidget(mouseEvent);\n        if (shouldNotHideCurrentHoverWidget) {\n            return;\n        }\n        if (_sticky) {\n            return;\n        }\n        this._hideWidgets();\n    }\n    _shouldNotRecomputeCurrentHoverWidget(mouseEvent) {\n        const isHoverSticky = this._hoverSettings.sticky;\n        const isMouseOnStickyMarginHoverWidget = (mouseEvent, isHoverSticky) => {\n            const isMouseOnMarginHoverWidget = this._isMouseOnMarginHoverWidget(mouseEvent);\n            return isHoverSticky && isMouseOnMarginHoverWidget;\n        };\n        const isMouseOnStickyContentHoverWidget = (mouseEvent, isHoverSticky) => {\n            const isMouseOnContentHoverWidget = this._isMouseOnContentHoverWidget(mouseEvent);\n            return isHoverSticky && isMouseOnContentHoverWidget;\n        };\n        const isMouseOnColorPicker = (mouseEvent) => {\n            var _a;\n            const isMouseOnContentHoverWidget = this._isMouseOnContentHoverWidget(mouseEvent);\n            const isColorPickerVisible = (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.isColorPickerVisible;\n            return isMouseOnContentHoverWidget && isColorPickerVisible;\n        };\n        // TODO@aiday-mar verify if the following is necessary code\n        const isTextSelectedWithinContentHoverWidget = (mouseEvent, sticky) => {\n            var _a, _b, _c, _d;\n            return sticky\n                && ((_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.containsNode((_b = mouseEvent.event.browserEvent.view) === null || _b === void 0 ? void 0 : _b.document.activeElement))\n                && !((_d = (_c = mouseEvent.event.browserEvent.view) === null || _c === void 0 ? void 0 : _c.getSelection()) === null || _d === void 0 ? void 0 : _d.isCollapsed);\n        };\n        if (isMouseOnStickyMarginHoverWidget(mouseEvent, isHoverSticky)\n            || isMouseOnStickyContentHoverWidget(mouseEvent, isHoverSticky)\n            || isMouseOnColorPicker(mouseEvent)\n            || isTextSelectedWithinContentHoverWidget(mouseEvent, isHoverSticky)) {\n            return true;\n        }\n        return false;\n    }\n    _onEditorMouseMove(mouseEvent) {\n        var _a, _b, _c, _d;\n        this._mouseMoveEvent = mouseEvent;\n        if (((_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.isFocused) || ((_b = this._contentWidget) === null || _b === void 0 ? void 0 : _b.isResizing)) {\n            return;\n        }\n        const sticky = this._hoverSettings.sticky;\n        if (sticky && ((_c = this._contentWidget) === null || _c === void 0 ? void 0 : _c.isVisibleFromKeyboard)) {\n            // Sticky mode is on and the hover has been shown via keyboard\n            // so moving the mouse has no effect\n            return;\n        }\n        const shouldNotRecomputeCurrentHoverWidget = this._shouldNotRecomputeCurrentHoverWidget(mouseEvent);\n        if (shouldNotRecomputeCurrentHoverWidget) {\n            this._reactToEditorMouseMoveRunner.cancel();\n            return;\n        }\n        const hidingDelay = this._hoverSettings.hidingDelay;\n        const isContentHoverWidgetVisible = (_d = this._contentWidget) === null || _d === void 0 ? void 0 : _d.isVisible;\n        // If the mouse is not over the widget, and if sticky is on,\n        // then give it a grace period before reacting to the mouse event\n        const shouldRescheduleHoverComputation = isContentHoverWidgetVisible && sticky && hidingDelay > 0;\n        if (shouldRescheduleHoverComputation) {\n            if (!this._reactToEditorMouseMoveRunner.isScheduled()) {\n                this._reactToEditorMouseMoveRunner.schedule(hidingDelay);\n            }\n            return;\n        }\n        this._reactToEditorMouseMove(mouseEvent);\n    }\n    _reactToEditorMouseMove(mouseEvent) {\n        var _a;\n        if (!mouseEvent) {\n            return;\n        }\n        const target = mouseEvent.target;\n        const mouseOnDecorator = (_a = target.element) === null || _a === void 0 ? void 0 : _a.classList.contains('colorpicker-color-decoration');\n        const decoratorActivatedOn = this._editor.getOption(148 /* EditorOption.colorDecoratorsActivatedOn */);\n        const enabled = this._hoverSettings.enabled;\n        const activatedByDecoratorClick = this._hoverState.activatedByDecoratorClick;\n        if ((mouseOnDecorator && ((decoratorActivatedOn === 'click' && !activatedByDecoratorClick) ||\n            (decoratorActivatedOn === 'hover' && !enabled && !_sticky) ||\n            (decoratorActivatedOn === 'clickAndHover' && !enabled && !activatedByDecoratorClick))) || (!mouseOnDecorator && !enabled && !activatedByDecoratorClick)) {\n            this._hideWidgets();\n            return;\n        }\n        const contentHoverShowsOrWillShow = this._tryShowHoverWidget(mouseEvent, 0 /* HoverWidgetType.Content */);\n        if (contentHoverShowsOrWillShow) {\n            return;\n        }\n        const glyphWidgetShowsOrWillShow = this._tryShowHoverWidget(mouseEvent, 1 /* HoverWidgetType.Glyph */);\n        if (glyphWidgetShowsOrWillShow) {\n            return;\n        }\n        if (_sticky) {\n            return;\n        }\n        this._hideWidgets();\n    }\n    _tryShowHoverWidget(mouseEvent, hoverWidgetType) {\n        const contentWidget = this._getOrCreateContentWidget();\n        const glyphWidget = this._getOrCreateGlyphWidget();\n        let currentWidget;\n        let otherWidget;\n        switch (hoverWidgetType) {\n            case 0 /* HoverWidgetType.Content */:\n                currentWidget = contentWidget;\n                otherWidget = glyphWidget;\n                break;\n            case 1 /* HoverWidgetType.Glyph */:\n                currentWidget = glyphWidget;\n                otherWidget = contentWidget;\n                break;\n            default:\n                throw new Error(`HoverWidgetType ${hoverWidgetType} is unrecognized`);\n        }\n        const showsOrWillShow = currentWidget.showsOrWillShow(mouseEvent);\n        if (showsOrWillShow) {\n            otherWidget.hide();\n        }\n        return showsOrWillShow;\n    }\n    _onKeyDown(e) {\n        var _a;\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const resolvedKeyboardEvent = this._keybindingService.softDispatch(e, this._editor.getDomNode());\n        // If the beginning of a multi-chord keybinding is pressed,\n        // or the command aims to focus the hover,\n        // set the variable to true, otherwise false\n        const shouldKeepHoverVisible = (resolvedKeyboardEvent.kind === 1 /* ResultKind.MoreChordsNeeded */ ||\n            (resolvedKeyboardEvent.kind === 2 /* ResultKind.KbFound */\n                && (resolvedKeyboardEvent.commandId === SHOW_OR_FOCUS_HOVER_ACTION_ID\n                    || resolvedKeyboardEvent.commandId === INCREASE_HOVER_VERBOSITY_ACTION_ID\n                    || resolvedKeyboardEvent.commandId === DECREASE_HOVER_VERBOSITY_ACTION_ID)\n                && ((_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.isVisible)));\n        if (e.keyCode === 5 /* KeyCode.Ctrl */\n            || e.keyCode === 6 /* KeyCode.Alt */\n            || e.keyCode === 57 /* KeyCode.Meta */\n            || e.keyCode === 4 /* KeyCode.Shift */\n            || shouldKeepHoverVisible) {\n            // Do not hide hover when a modifier key is pressed\n            return;\n        }\n        this._hideWidgets();\n    }\n    _hideWidgets() {\n        var _a, _b, _c;\n        if (_sticky) {\n            return;\n        }\n        if ((this._hoverState.mouseDown\n            && ((_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.isColorPickerVisible)) || InlineSuggestionHintsContentWidget.dropDownVisible) {\n            return;\n        }\n        this._hoverState.activatedByDecoratorClick = false;\n        (_b = this._glyphWidget) === null || _b === void 0 ? void 0 : _b.hide();\n        (_c = this._contentWidget) === null || _c === void 0 ? void 0 : _c.hide();\n    }\n    _getOrCreateContentWidget() {\n        if (!this._contentWidget) {\n            this._contentWidget = this._instantiationService.createInstance(ContentHoverController, this._editor);\n        }\n        return this._contentWidget;\n    }\n    _getOrCreateGlyphWidget() {\n        if (!this._glyphWidget) {\n            this._glyphWidget = this._instantiationService.createInstance(MarginHoverWidget, this._editor);\n        }\n        return this._glyphWidget;\n    }\n    showContentHover(range, mode, source, focus, activatedByColorDecoratorClick = false) {\n        this._hoverState.activatedByDecoratorClick = activatedByColorDecoratorClick;\n        this._getOrCreateContentWidget().startShowingAtRange(range, mode, source, focus);\n    }\n    _isContentWidgetResizing() {\n        var _a;\n        return ((_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.widget.isResizing) || false;\n    }\n    updateFocusedMarkdownHoverVerbosityLevel(action) {\n        this._getOrCreateContentWidget().updateFocusedMarkdownHoverVerbosityLevel(action);\n    }\n    focus() {\n        var _a;\n        (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.focus();\n    }\n    scrollUp() {\n        var _a;\n        (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.scrollUp();\n    }\n    scrollDown() {\n        var _a;\n        (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.scrollDown();\n    }\n    scrollLeft() {\n        var _a;\n        (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.scrollLeft();\n    }\n    scrollRight() {\n        var _a;\n        (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.scrollRight();\n    }\n    pageUp() {\n        var _a;\n        (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.pageUp();\n    }\n    pageDown() {\n        var _a;\n        (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.pageDown();\n    }\n    goToTop() {\n        var _a;\n        (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.goToTop();\n    }\n    goToBottom() {\n        var _a;\n        (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.goToBottom();\n    }\n    get isColorPickerVisible() {\n        var _a;\n        return (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.isColorPickerVisible;\n    }\n    get isHoverVisible() {\n        var _a;\n        return (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.isVisible;\n    }\n    dispose() {\n        var _a, _b;\n        super.dispose();\n        this._unhookListeners();\n        this._listenersStore.dispose();\n        (_a = this._glyphWidget) === null || _a === void 0 ? void 0 : _a.dispose();\n        (_b = this._contentWidget) === null || _b === void 0 ? void 0 : _b.dispose();\n    }\n};\nHoverController.ID = 'editor.contrib.hover';\nHoverController = HoverController_1 = __decorate([\n    __param(1, IInstantiationService),\n    __param(2, IKeybindingService)\n], HoverController);\nexport { HoverController };\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 InlineSuggestionHintsContentWidget_1;\nimport { h } from '../../../../base/browser/dom.js';\nimport { ActionViewItem } from '../../../../base/browser/ui/actionbar/actionViewItems.js';\nimport { KeybindingLabel, unthemedKeybindingLabelOptions } from '../../../../base/browser/ui/keybindingLabel/keybindingLabel.js';\nimport { Action, Separator } from '../../../../base/common/actions.js';\nimport { equals } from '../../../../base/common/arrays.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Disposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { autorun, autorunWithStore, derived, observableFromEvent } from '../../../../base/common/observable.js';\nimport { OS } from '../../../../base/common/platform.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport './inlineCompletionsHintsWidget.css';\nimport { Position } from '../../../common/core/position.js';\nimport { InlineCompletionTriggerKind } from '../../../common/languages.js';\nimport { showNextInlineSuggestionActionId, showPreviousInlineSuggestionActionId } from './commandIds.js';\nimport { localize } from '../../../../nls.js';\nimport { MenuEntryActionViewItem, createAndFillInActionBarActions } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { WorkbenchToolBar } from '../../../../platform/actions/browser/toolbar.js';\nimport { IMenuService, MenuId, MenuItemAction } 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 { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nlet InlineCompletionsHintsWidget = class InlineCompletionsHintsWidget extends Disposable {\n    constructor(editor, model, instantiationService) {\n        super();\n        this.editor = editor;\n        this.model = model;\n        this.instantiationService = instantiationService;\n        this.alwaysShowToolbar = observableFromEvent(this.editor.onDidChangeConfiguration, () => this.editor.getOption(62 /* EditorOption.inlineSuggest */).showToolbar === 'always');\n        this.sessionPosition = undefined;\n        this.position = derived(this, reader => {\n            var _a, _b, _c;\n            const ghostText = (_a = this.model.read(reader)) === null || _a === void 0 ? void 0 : _a.primaryGhostText.read(reader);\n            if (!this.alwaysShowToolbar.read(reader) || !ghostText || ghostText.parts.length === 0) {\n                this.sessionPosition = undefined;\n                return null;\n            }\n            const firstColumn = ghostText.parts[0].column;\n            if (this.sessionPosition && this.sessionPosition.lineNumber !== ghostText.lineNumber) {\n                this.sessionPosition = undefined;\n            }\n            const position = new Position(ghostText.lineNumber, Math.min(firstColumn, (_c = (_b = this.sessionPosition) === null || _b === void 0 ? void 0 : _b.column) !== null && _c !== void 0 ? _c : Number.MAX_SAFE_INTEGER));\n            this.sessionPosition = position;\n            return position;\n        });\n        this._register(autorunWithStore((reader, store) => {\n            /** @description setup content widget */\n            const model = this.model.read(reader);\n            if (!model || !this.alwaysShowToolbar.read(reader)) {\n                return;\n            }\n            const contentWidget = store.add(this.instantiationService.createInstance(InlineSuggestionHintsContentWidget, this.editor, true, this.position, model.selectedInlineCompletionIndex, model.inlineCompletionsCount, model.activeCommands));\n            editor.addContentWidget(contentWidget);\n            store.add(toDisposable(() => editor.removeContentWidget(contentWidget)));\n            store.add(autorun(reader => {\n                /** @description request explicit */\n                const position = this.position.read(reader);\n                if (!position) {\n                    return;\n                }\n                if (model.lastTriggerKind.read(reader) !== InlineCompletionTriggerKind.Explicit) {\n                    model.triggerExplicitly();\n                }\n            }));\n        }));\n    }\n};\nInlineCompletionsHintsWidget = __decorate([\n    __param(2, IInstantiationService)\n], InlineCompletionsHintsWidget);\nexport { InlineCompletionsHintsWidget };\nconst inlineSuggestionHintsNextIcon = registerIcon('inline-suggestion-hints-next', Codicon.chevronRight, localize('parameterHintsNextIcon', 'Icon for show next parameter hint.'));\nconst inlineSuggestionHintsPreviousIcon = registerIcon('inline-suggestion-hints-previous', Codicon.chevronLeft, localize('parameterHintsPreviousIcon', 'Icon for show previous parameter hint.'));\nlet InlineSuggestionHintsContentWidget = InlineSuggestionHintsContentWidget_1 = class InlineSuggestionHintsContentWidget extends Disposable {\n    static get dropDownVisible() { return this._dropDownVisible; }\n    createCommandAction(commandId, label, iconClassName) {\n        const action = new Action(commandId, label, iconClassName, true, () => this._commandService.executeCommand(commandId));\n        const kb = this.keybindingService.lookupKeybinding(commandId, this._contextKeyService);\n        let tooltip = label;\n        if (kb) {\n            tooltip = localize({ key: 'content', comment: ['A label', 'A keybinding'] }, '{0} ({1})', label, kb.getLabel());\n        }\n        action.tooltip = tooltip;\n        return action;\n    }\n    constructor(editor, withBorder, _position, _currentSuggestionIdx, _suggestionCount, _extraCommands, _commandService, instantiationService, keybindingService, _contextKeyService, _menuService) {\n        super();\n        this.editor = editor;\n        this.withBorder = withBorder;\n        this._position = _position;\n        this._currentSuggestionIdx = _currentSuggestionIdx;\n        this._suggestionCount = _suggestionCount;\n        this._extraCommands = _extraCommands;\n        this._commandService = _commandService;\n        this.keybindingService = keybindingService;\n        this._contextKeyService = _contextKeyService;\n        this._menuService = _menuService;\n        this.id = `InlineSuggestionHintsContentWidget${InlineSuggestionHintsContentWidget_1.id++}`;\n        this.allowEditorOverflow = true;\n        this.suppressMouseDown = false;\n        this.nodes = h('div.inlineSuggestionsHints', { className: this.withBorder ? '.withBorder' : '' }, [\n            h('div@toolBar'),\n        ]);\n        this.previousAction = this.createCommandAction(showPreviousInlineSuggestionActionId, localize('previous', 'Previous'), ThemeIcon.asClassName(inlineSuggestionHintsPreviousIcon));\n        this.availableSuggestionCountAction = new Action('inlineSuggestionHints.availableSuggestionCount', '', undefined, false);\n        this.nextAction = this.createCommandAction(showNextInlineSuggestionActionId, localize('next', 'Next'), ThemeIcon.asClassName(inlineSuggestionHintsNextIcon));\n        // TODO@hediet: deprecate MenuId.InlineCompletionsActions\n        this.inlineCompletionsActionsMenus = this._register(this._menuService.createMenu(MenuId.InlineCompletionsActions, this._contextKeyService));\n        this.clearAvailableSuggestionCountLabelDebounced = this._register(new RunOnceScheduler(() => {\n            this.availableSuggestionCountAction.label = '';\n        }, 100));\n        this.disableButtonsDebounced = this._register(new RunOnceScheduler(() => {\n            this.previousAction.enabled = this.nextAction.enabled = false;\n        }, 100));\n        this.toolBar = this._register(instantiationService.createInstance(CustomizedMenuWorkbenchToolBar, this.nodes.toolBar, MenuId.InlineSuggestionToolbar, {\n            menuOptions: { renderShortTitle: true },\n            toolbarOptions: { primaryGroup: g => g.startsWith('primary') },\n            actionViewItemProvider: (action, options) => {\n                if (action instanceof MenuItemAction) {\n                    return instantiationService.createInstance(StatusBarViewItem, action, undefined);\n                }\n                if (action === this.availableSuggestionCountAction) {\n                    const a = new ActionViewItemWithClassName(undefined, action, { label: true, icon: false });\n                    a.setClass('availableSuggestionCount');\n                    return a;\n                }\n                return undefined;\n            },\n            telemetrySource: 'InlineSuggestionToolbar',\n        }));\n        this.toolBar.setPrependedPrimaryActions([\n            this.previousAction,\n            this.availableSuggestionCountAction,\n            this.nextAction,\n        ]);\n        this._register(this.toolBar.onDidChangeDropdownVisibility(e => {\n            InlineSuggestionHintsContentWidget_1._dropDownVisible = e;\n        }));\n        this._register(autorun(reader => {\n            /** @description update position */\n            this._position.read(reader);\n            this.editor.layoutContentWidget(this);\n        }));\n        this._register(autorun(reader => {\n            /** @description counts */\n            const suggestionCount = this._suggestionCount.read(reader);\n            const currentSuggestionIdx = this._currentSuggestionIdx.read(reader);\n            if (suggestionCount !== undefined) {\n                this.clearAvailableSuggestionCountLabelDebounced.cancel();\n                this.availableSuggestionCountAction.label = `${currentSuggestionIdx + 1}/${suggestionCount}`;\n            }\n            else {\n                this.clearAvailableSuggestionCountLabelDebounced.schedule();\n            }\n            if (suggestionCount !== undefined && suggestionCount > 1) {\n                this.disableButtonsDebounced.cancel();\n                this.previousAction.enabled = this.nextAction.enabled = true;\n            }\n            else {\n                this.disableButtonsDebounced.schedule();\n            }\n        }));\n        this._register(autorun(reader => {\n            /** @description extra commands */\n            const extraCommands = this._extraCommands.read(reader);\n            const extraActions = extraCommands.map(c => ({\n                class: undefined,\n                id: c.id,\n                enabled: true,\n                tooltip: c.tooltip || '',\n                label: c.title,\n                run: (event) => {\n                    return this._commandService.executeCommand(c.id);\n                },\n            }));\n            for (const [_, group] of this.inlineCompletionsActionsMenus.getActions()) {\n                for (const action of group) {\n                    if (action instanceof MenuItemAction) {\n                        extraActions.push(action);\n                    }\n                }\n            }\n            if (extraActions.length > 0) {\n                extraActions.unshift(new Separator());\n            }\n            this.toolBar.setAdditionalSecondaryActions(extraActions);\n        }));\n    }\n    getId() { return this.id; }\n    getDomNode() {\n        return this.nodes.root;\n    }\n    getPosition() {\n        return {\n            position: this._position.get(),\n            preference: [1 /* ContentWidgetPositionPreference.ABOVE */, 2 /* ContentWidgetPositionPreference.BELOW */],\n            positionAffinity: 3 /* PositionAffinity.LeftOfInjectedText */,\n        };\n    }\n};\nInlineSuggestionHintsContentWidget._dropDownVisible = false;\nInlineSuggestionHintsContentWidget.id = 0;\nInlineSuggestionHintsContentWidget = InlineSuggestionHintsContentWidget_1 = __decorate([\n    __param(6, ICommandService),\n    __param(7, IInstantiationService),\n    __param(8, IKeybindingService),\n    __param(9, IContextKeyService),\n    __param(10, IMenuService)\n], InlineSuggestionHintsContentWidget);\nexport { InlineSuggestionHintsContentWidget };\nclass ActionViewItemWithClassName extends ActionViewItem {\n    constructor() {\n        super(...arguments);\n        this._className = undefined;\n    }\n    setClass(className) {\n        this._className = className;\n    }\n    render(container) {\n        super.render(container);\n        if (this._className) {\n            container.classList.add(this._className);\n        }\n    }\n    updateTooltip() {\n        // NOOP, disable tooltip\n    }\n}\nclass StatusBarViewItem extends MenuEntryActionViewItem {\n    updateLabel() {\n        const kb = this._keybindingService.lookupKeybinding(this._action.id, this._contextKeyService);\n        if (!kb) {\n            return super.updateLabel();\n        }\n        if (this.label) {\n            const div = h('div.keybinding').root;\n            const k = this._register(new KeybindingLabel(div, OS, { disableTitle: true, ...unthemedKeybindingLabelOptions }));\n            k.set(kb);\n            this.label.textContent = this._action.label;\n            this.label.appendChild(div);\n            this.label.classList.add('inlineSuggestionStatusBarItemLabel');\n        }\n    }\n    updateTooltip() {\n        // NOOP, disable tooltip\n    }\n}\nlet CustomizedMenuWorkbenchToolBar = class CustomizedMenuWorkbenchToolBar extends WorkbenchToolBar {\n    constructor(container, menuId, options2, menuService, contextKeyService, contextMenuService, keybindingService, commandService, telemetryService) {\n        super(container, { resetMenu: menuId, ...options2 }, menuService, contextKeyService, contextMenuService, keybindingService, commandService, telemetryService);\n        this.menuId = menuId;\n        this.options2 = options2;\n        this.menuService = menuService;\n        this.contextKeyService = contextKeyService;\n        this.menu = this._store.add(this.menuService.createMenu(this.menuId, this.contextKeyService, { emitEventsForSubmenuChanges: true }));\n        this.additionalActions = [];\n        this.prependedPrimaryActions = [];\n        this._store.add(this.menu.onDidChange(() => this.updateToolbar()));\n        this.updateToolbar();\n    }\n    updateToolbar() {\n        var _a, _b, _c, _d, _e, _f, _g;\n        const primary = [];\n        const secondary = [];\n        createAndFillInActionBarActions(this.menu, (_a = this.options2) === null || _a === void 0 ? void 0 : _a.menuOptions, { primary, secondary }, (_c = (_b = this.options2) === null || _b === void 0 ? void 0 : _b.toolbarOptions) === null || _c === void 0 ? void 0 : _c.primaryGroup, (_e = (_d = this.options2) === null || _d === void 0 ? void 0 : _d.toolbarOptions) === null || _e === void 0 ? void 0 : _e.shouldInlineSubmenu, (_g = (_f = this.options2) === null || _f === void 0 ? void 0 : _f.toolbarOptions) === null || _g === void 0 ? void 0 : _g.useSeparatorsInPrimaryActions);\n        secondary.push(...this.additionalActions);\n        primary.unshift(...this.prependedPrimaryActions);\n        this.setActions(primary, secondary);\n    }\n    setPrependedPrimaryActions(actions) {\n        if (equals(this.prependedPrimaryActions, actions, (a, b) => a === b)) {\n            return;\n        }\n        this.prependedPrimaryActions = actions;\n        this.updateToolbar();\n    }\n    setAdditionalSecondaryActions(actions) {\n        if (equals(this.additionalActions, actions, (a, b) => a === b)) {\n            return;\n        }\n        this.additionalActions = actions;\n        this.updateToolbar();\n    }\n};\nCustomizedMenuWorkbenchToolBar = __decorate([\n    __param(3, IMenuService),\n    __param(4, IContextKeyService),\n    __param(5, IContextMenuService),\n    __param(6, IKeybindingService),\n    __param(7, ICommandService),\n    __param(8, ITelemetryService)\n], CustomizedMenuWorkbenchToolBar);\nexport { CustomizedMenuWorkbenchToolBar };\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 const inlineSuggestCommitId = 'editor.action.inlineSuggest.commit';\nexport const showPreviousInlineSuggestionActionId = 'editor.action.inlineSuggest.showPrevious';\nexport const showNextInlineSuggestionActionId = 'editor.action.inlineSuggest.showNext';\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 ContentHoverWidget_1;\nimport * as dom from '../../../../base/browser/dom.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ResizableContentWidget } from './resizableContentWidget.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { getHoverAccessibleViewHint, HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nconst HORIZONTAL_SCROLLING_BY = 30;\nconst CONTAINER_HEIGHT_PADDING = 6;\nlet ContentHoverWidget = ContentHoverWidget_1 = class ContentHoverWidget extends ResizableContentWidget {\n    get isColorPickerVisible() {\n        var _a;\n        return Boolean((_a = this._visibleData) === null || _a === void 0 ? void 0 : _a.colorPicker);\n    }\n    get isVisibleFromKeyboard() {\n        var _a;\n        return (((_a = this._visibleData) === null || _a === void 0 ? void 0 : _a.source) === 1 /* HoverStartSource.Keyboard */);\n    }\n    get isVisible() {\n        var _a;\n        return (_a = this._hoverVisibleKey.get()) !== null && _a !== void 0 ? _a : false;\n    }\n    get isFocused() {\n        var _a;\n        return (_a = this._hoverFocusedKey.get()) !== null && _a !== void 0 ? _a : false;\n    }\n    constructor(editor, contextKeyService, _configurationService, _accessibilityService, _keybindingService) {\n        const minimumHeight = editor.getOption(67 /* EditorOption.lineHeight */) + 8;\n        const minimumWidth = 150;\n        const minimumSize = new dom.Dimension(minimumWidth, minimumHeight);\n        super(editor, minimumSize);\n        this._configurationService = _configurationService;\n        this._accessibilityService = _accessibilityService;\n        this._keybindingService = _keybindingService;\n        this._hover = this._register(new HoverWidget());\n        this._minimumSize = minimumSize;\n        this._hoverVisibleKey = EditorContextKeys.hoverVisible.bindTo(contextKeyService);\n        this._hoverFocusedKey = EditorContextKeys.hoverFocused.bindTo(contextKeyService);\n        dom.append(this._resizableNode.domNode, this._hover.containerDomNode);\n        this._resizableNode.domNode.style.zIndex = '50';\n        this._register(this._editor.onDidLayoutChange(() => {\n            if (this.isVisible) {\n                this._updateMaxDimensions();\n            }\n        }));\n        this._register(this._editor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(50 /* EditorOption.fontInfo */)) {\n                this._updateFont();\n            }\n        }));\n        const focusTracker = this._register(dom.trackFocus(this._resizableNode.domNode));\n        this._register(focusTracker.onDidFocus(() => {\n            this._hoverFocusedKey.set(true);\n        }));\n        this._register(focusTracker.onDidBlur(() => {\n            this._hoverFocusedKey.set(false);\n        }));\n        this._setHoverData(undefined);\n        this._editor.addContentWidget(this);\n    }\n    dispose() {\n        var _a;\n        super.dispose();\n        (_a = this._visibleData) === null || _a === void 0 ? void 0 : _a.disposables.dispose();\n        this._editor.removeContentWidget(this);\n    }\n    getId() {\n        return ContentHoverWidget_1.ID;\n    }\n    static _applyDimensions(container, width, height) {\n        const transformedWidth = typeof width === 'number' ? `${width}px` : width;\n        const transformedHeight = typeof height === 'number' ? `${height}px` : height;\n        container.style.width = transformedWidth;\n        container.style.height = transformedHeight;\n    }\n    _setContentsDomNodeDimensions(width, height) {\n        const contentsDomNode = this._hover.contentsDomNode;\n        return ContentHoverWidget_1._applyDimensions(contentsDomNode, width, height);\n    }\n    _setContainerDomNodeDimensions(width, height) {\n        const containerDomNode = this._hover.containerDomNode;\n        return ContentHoverWidget_1._applyDimensions(containerDomNode, width, height);\n    }\n    _setHoverWidgetDimensions(width, height) {\n        this._setContentsDomNodeDimensions(width, height);\n        this._setContainerDomNodeDimensions(width, height);\n        this._layoutContentWidget();\n    }\n    static _applyMaxDimensions(container, width, height) {\n        const transformedWidth = typeof width === 'number' ? `${width}px` : width;\n        const transformedHeight = typeof height === 'number' ? `${height}px` : height;\n        container.style.maxWidth = transformedWidth;\n        container.style.maxHeight = transformedHeight;\n    }\n    _setHoverWidgetMaxDimensions(width, height) {\n        ContentHoverWidget_1._applyMaxDimensions(this._hover.contentsDomNode, width, height);\n        ContentHoverWidget_1._applyMaxDimensions(this._hover.containerDomNode, width, height);\n        this._hover.containerDomNode.style.setProperty('--vscode-hover-maxWidth', typeof width === 'number' ? `${width}px` : width);\n        this._layoutContentWidget();\n    }\n    _setAdjustedHoverWidgetDimensions(size) {\n        this._setHoverWidgetMaxDimensions('none', 'none');\n        const width = size.width;\n        const height = size.height;\n        this._setHoverWidgetDimensions(width, height);\n    }\n    _updateResizableNodeMaxDimensions() {\n        var _a, _b;\n        const maxRenderingWidth = (_a = this._findMaximumRenderingWidth()) !== null && _a !== void 0 ? _a : Infinity;\n        const maxRenderingHeight = (_b = this._findMaximumRenderingHeight()) !== null && _b !== void 0 ? _b : Infinity;\n        this._resizableNode.maxSize = new dom.Dimension(maxRenderingWidth, maxRenderingHeight);\n        this._setHoverWidgetMaxDimensions(maxRenderingWidth, maxRenderingHeight);\n    }\n    _resize(size) {\n        var _a, _b;\n        ContentHoverWidget_1._lastDimensions = new dom.Dimension(size.width, size.height);\n        this._setAdjustedHoverWidgetDimensions(size);\n        this._resizableNode.layout(size.height, size.width);\n        this._updateResizableNodeMaxDimensions();\n        this._hover.scrollbar.scanDomNode();\n        this._editor.layoutContentWidget(this);\n        (_b = (_a = this._visibleData) === null || _a === void 0 ? void 0 : _a.colorPicker) === null || _b === void 0 ? void 0 : _b.layout();\n    }\n    _findAvailableSpaceVertically() {\n        var _a;\n        const position = (_a = this._visibleData) === null || _a === void 0 ? void 0 : _a.showAtPosition;\n        if (!position) {\n            return;\n        }\n        return this._positionPreference === 1 /* ContentWidgetPositionPreference.ABOVE */ ?\n            this._availableVerticalSpaceAbove(position)\n            : this._availableVerticalSpaceBelow(position);\n    }\n    _findMaximumRenderingHeight() {\n        const availableSpace = this._findAvailableSpaceVertically();\n        if (!availableSpace) {\n            return;\n        }\n        // Padding needed in order to stop the resizing down to a smaller height\n        let maximumHeight = CONTAINER_HEIGHT_PADDING;\n        Array.from(this._hover.contentsDomNode.children).forEach((hoverPart) => {\n            maximumHeight += hoverPart.clientHeight;\n        });\n        return Math.min(availableSpace, maximumHeight);\n    }\n    _isHoverTextOverflowing() {\n        // To find out if the text is overflowing, we will disable wrapping, check the widths, and then re-enable wrapping\n        this._hover.containerDomNode.style.setProperty('--vscode-hover-whiteSpace', 'nowrap');\n        this._hover.containerDomNode.style.setProperty('--vscode-hover-sourceWhiteSpace', 'nowrap');\n        const overflowing = Array.from(this._hover.contentsDomNode.children).some((hoverElement) => {\n            return hoverElement.scrollWidth > hoverElement.clientWidth;\n        });\n        this._hover.containerDomNode.style.removeProperty('--vscode-hover-whiteSpace');\n        this._hover.containerDomNode.style.removeProperty('--vscode-hover-sourceWhiteSpace');\n        return overflowing;\n    }\n    _findMaximumRenderingWidth() {\n        if (!this._editor || !this._editor.hasModel()) {\n            return;\n        }\n        const overflowing = this._isHoverTextOverflowing();\n        const initialWidth = (typeof this._contentWidth === 'undefined'\n            ? 0\n            : this._contentWidth - 2 // - 2 for the borders\n        );\n        if (overflowing || this._hover.containerDomNode.clientWidth < initialWidth) {\n            const bodyBoxWidth = dom.getClientArea(this._hover.containerDomNode.ownerDocument.body).width;\n            const horizontalPadding = 14;\n            return bodyBoxWidth - horizontalPadding;\n        }\n        else {\n            return this._hover.containerDomNode.clientWidth + 2;\n        }\n    }\n    isMouseGettingCloser(posx, posy) {\n        if (!this._visibleData) {\n            return false;\n        }\n        if (typeof this._visibleData.initialMousePosX === 'undefined'\n            || typeof this._visibleData.initialMousePosY === 'undefined') {\n            this._visibleData.initialMousePosX = posx;\n            this._visibleData.initialMousePosY = posy;\n            return false;\n        }\n        const widgetRect = dom.getDomNodePagePosition(this.getDomNode());\n        if (typeof this._visibleData.closestMouseDistance === 'undefined') {\n            this._visibleData.closestMouseDistance = computeDistanceFromPointToRectangle(this._visibleData.initialMousePosX, this._visibleData.initialMousePosY, widgetRect.left, widgetRect.top, widgetRect.width, widgetRect.height);\n        }\n        const distance = computeDistanceFromPointToRectangle(posx, posy, widgetRect.left, widgetRect.top, widgetRect.width, widgetRect.height);\n        if (distance > this._visibleData.closestMouseDistance + 4 /* tolerance of 4 pixels */) {\n            // The mouse is getting farther away\n            return false;\n        }\n        this._visibleData.closestMouseDistance = Math.min(this._visibleData.closestMouseDistance, distance);\n        return true;\n    }\n    _setHoverData(hoverData) {\n        var _a;\n        (_a = this._visibleData) === null || _a === void 0 ? void 0 : _a.disposables.dispose();\n        this._visibleData = hoverData;\n        this._hoverVisibleKey.set(!!hoverData);\n        this._hover.containerDomNode.classList.toggle('hidden', !hoverData);\n    }\n    _updateFont() {\n        const { fontSize, lineHeight } = this._editor.getOption(50 /* EditorOption.fontInfo */);\n        const contentsDomNode = this._hover.contentsDomNode;\n        contentsDomNode.style.fontSize = `${fontSize}px`;\n        contentsDomNode.style.lineHeight = `${lineHeight / fontSize}`;\n        const codeClasses = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n        codeClasses.forEach(node => this._editor.applyFontInfo(node));\n    }\n    _updateContent(node) {\n        const contentsDomNode = this._hover.contentsDomNode;\n        contentsDomNode.style.paddingBottom = '';\n        contentsDomNode.textContent = '';\n        contentsDomNode.appendChild(node);\n    }\n    _layoutContentWidget() {\n        this._editor.layoutContentWidget(this);\n        this._hover.onContentsChanged();\n    }\n    _updateMaxDimensions() {\n        const height = Math.max(this._editor.getLayoutInfo().height / 4, 250, ContentHoverWidget_1._lastDimensions.height);\n        const width = Math.max(this._editor.getLayoutInfo().width * 0.66, 500, ContentHoverWidget_1._lastDimensions.width);\n        this._setHoverWidgetMaxDimensions(width, height);\n    }\n    _render(node, hoverData) {\n        this._setHoverData(hoverData);\n        this._updateFont();\n        this._updateContent(node);\n        this._updateMaxDimensions();\n        this.onContentsChanged();\n        // Simply force a synchronous render on the editor\n        // such that the widget does not really render with left = '0px'\n        this._editor.render();\n    }\n    getPosition() {\n        var _a;\n        if (!this._visibleData) {\n            return null;\n        }\n        return {\n            position: this._visibleData.showAtPosition,\n            secondaryPosition: this._visibleData.showAtSecondaryPosition,\n            positionAffinity: this._visibleData.isBeforeContent ? 3 /* PositionAffinity.LeftOfInjectedText */ : undefined,\n            preference: [(_a = this._positionPreference) !== null && _a !== void 0 ? _a : 1 /* ContentWidgetPositionPreference.ABOVE */]\n        };\n    }\n    showAt(node, hoverData) {\n        var _a, _b, _c, _d;\n        if (!this._editor || !this._editor.hasModel()) {\n            return;\n        }\n        this._render(node, hoverData);\n        const widgetHeight = dom.getTotalHeight(this._hover.containerDomNode);\n        const widgetPosition = hoverData.showAtPosition;\n        this._positionPreference = (_a = this._findPositionPreference(widgetHeight, widgetPosition)) !== null && _a !== void 0 ? _a : 1 /* ContentWidgetPositionPreference.ABOVE */;\n        // See https://github.com/microsoft/vscode/issues/140339\n        // TODO: Doing a second layout of the hover after force rendering the editor\n        this.onContentsChanged();\n        if (hoverData.stoleFocus) {\n            this._hover.containerDomNode.focus();\n        }\n        (_b = hoverData.colorPicker) === null || _b === void 0 ? void 0 : _b.layout();\n        // The aria label overrides the label, so if we add to it, add the contents of the hover\n        const hoverFocused = this._hover.containerDomNode.ownerDocument.activeElement === this._hover.containerDomNode;\n        const accessibleViewHint = hoverFocused && getHoverAccessibleViewHint(this._configurationService.getValue('accessibility.verbosity.hover') === true && this._accessibilityService.isScreenReaderOptimized(), (_d = (_c = this._keybindingService.lookupKeybinding('editor.action.accessibleView')) === null || _c === void 0 ? void 0 : _c.getAriaLabel()) !== null && _d !== void 0 ? _d : '');\n        if (accessibleViewHint) {\n            this._hover.contentsDomNode.ariaLabel = this._hover.contentsDomNode.textContent + ', ' + accessibleViewHint;\n        }\n    }\n    hide() {\n        if (!this._visibleData) {\n            return;\n        }\n        const stoleFocus = this._visibleData.stoleFocus || this._hoverFocusedKey.get();\n        this._setHoverData(undefined);\n        this._resizableNode.maxSize = new dom.Dimension(Infinity, Infinity);\n        this._resizableNode.clearSashHoverState();\n        this._hoverFocusedKey.set(false);\n        this._editor.layoutContentWidget(this);\n        if (stoleFocus) {\n            this._editor.focus();\n        }\n    }\n    _removeConstraintsRenderNormally() {\n        // Added because otherwise the initial size of the hover content is smaller than should be\n        const layoutInfo = this._editor.getLayoutInfo();\n        this._resizableNode.layout(layoutInfo.height, layoutInfo.width);\n        this._setHoverWidgetDimensions('auto', 'auto');\n    }\n    setMinimumDimensions(dimensions) {\n        // We combine the new minimum dimensions with the previous ones\n        this._minimumSize = new dom.Dimension(Math.max(this._minimumSize.width, dimensions.width), Math.max(this._minimumSize.height, dimensions.height));\n        this._updateMinimumWidth();\n    }\n    _updateMinimumWidth() {\n        const width = (typeof this._contentWidth === 'undefined'\n            ? this._minimumSize.width\n            : Math.min(this._contentWidth, this._minimumSize.width));\n        // We want to avoid that the hover is artificially large, so we use the content width as minimum width\n        this._resizableNode.minSize = new dom.Dimension(width, this._minimumSize.height);\n    }\n    onContentsChanged() {\n        var _a;\n        this._removeConstraintsRenderNormally();\n        const containerDomNode = this._hover.containerDomNode;\n        let height = dom.getTotalHeight(containerDomNode);\n        let width = dom.getTotalWidth(containerDomNode);\n        this._resizableNode.layout(height, width);\n        this._setHoverWidgetDimensions(width, height);\n        height = dom.getTotalHeight(containerDomNode);\n        width = dom.getTotalWidth(containerDomNode);\n        this._contentWidth = width;\n        this._updateMinimumWidth();\n        this._resizableNode.layout(height, width);\n        if ((_a = this._visibleData) === null || _a === void 0 ? void 0 : _a.showAtPosition) {\n            const widgetHeight = dom.getTotalHeight(this._hover.containerDomNode);\n            this._positionPreference = this._findPositionPreference(widgetHeight, this._visibleData.showAtPosition);\n        }\n        this._layoutContentWidget();\n    }\n    focus() {\n        this._hover.containerDomNode.focus();\n    }\n    scrollUp() {\n        const scrollTop = this._hover.scrollbar.getScrollPosition().scrollTop;\n        const fontInfo = this._editor.getOption(50 /* EditorOption.fontInfo */);\n        this._hover.scrollbar.setScrollPosition({ scrollTop: scrollTop - fontInfo.lineHeight });\n    }\n    scrollDown() {\n        const scrollTop = this._hover.scrollbar.getScrollPosition().scrollTop;\n        const fontInfo = this._editor.getOption(50 /* EditorOption.fontInfo */);\n        this._hover.scrollbar.setScrollPosition({ scrollTop: scrollTop + fontInfo.lineHeight });\n    }\n    scrollLeft() {\n        const scrollLeft = this._hover.scrollbar.getScrollPosition().scrollLeft;\n        this._hover.scrollbar.setScrollPosition({ scrollLeft: scrollLeft - HORIZONTAL_SCROLLING_BY });\n    }\n    scrollRight() {\n        const scrollLeft = this._hover.scrollbar.getScrollPosition().scrollLeft;\n        this._hover.scrollbar.setScrollPosition({ scrollLeft: scrollLeft + HORIZONTAL_SCROLLING_BY });\n    }\n    pageUp() {\n        const scrollTop = this._hover.scrollbar.getScrollPosition().scrollTop;\n        const scrollHeight = this._hover.scrollbar.getScrollDimensions().height;\n        this._hover.scrollbar.setScrollPosition({ scrollTop: scrollTop - scrollHeight });\n    }\n    pageDown() {\n        const scrollTop = this._hover.scrollbar.getScrollPosition().scrollTop;\n        const scrollHeight = this._hover.scrollbar.getScrollDimensions().height;\n        this._hover.scrollbar.setScrollPosition({ scrollTop: scrollTop + scrollHeight });\n    }\n    goToTop() {\n        this._hover.scrollbar.setScrollPosition({ scrollTop: 0 });\n    }\n    goToBottom() {\n        this._hover.scrollbar.setScrollPosition({ scrollTop: this._hover.scrollbar.getScrollDimensions().scrollHeight });\n    }\n};\nContentHoverWidget.ID = 'editor.contrib.resizableContentHoverWidget';\nContentHoverWidget._lastDimensions = new dom.Dimension(0, 0);\nContentHoverWidget = ContentHoverWidget_1 = __decorate([\n    __param(1, IContextKeyService),\n    __param(2, IConfigurationService),\n    __param(3, IAccessibilityService),\n    __param(4, IKeybindingService)\n], ContentHoverWidget);\nexport { ContentHoverWidget };\nfunction computeDistanceFromPointToRectangle(pointX, pointY, left, top, width, height) {\n    const x = (left + width / 2); // x center of rectangle\n    const y = (top + height / 2); // y center of rectangle\n    const dx = Math.max(Math.abs(pointX - x) - width / 2, 0);\n    const dy = Math.max(Math.abs(pointY - y) - height / 2, 0);\n    return Math.sqrt(dx * dx + dy * dy);\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 { Dimension } from '../../dom.js';\nimport { OrthogonalEdge, Sash } from '../sash/sash.js';\nimport { Emitter, Event } from '../../../common/event.js';\nimport { DisposableStore } from '../../../common/lifecycle.js';\nexport class ResizableHTMLElement {\n    constructor() {\n        this._onDidWillResize = new Emitter();\n        this.onDidWillResize = this._onDidWillResize.event;\n        this._onDidResize = new Emitter();\n        this.onDidResize = this._onDidResize.event;\n        this._sashListener = new DisposableStore();\n        this._size = new Dimension(0, 0);\n        this._minSize = new Dimension(0, 0);\n        this._maxSize = new Dimension(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n        this.domNode = document.createElement('div');\n        this._eastSash = new Sash(this.domNode, { getVerticalSashLeft: () => this._size.width }, { orientation: 0 /* Orientation.VERTICAL */ });\n        this._westSash = new Sash(this.domNode, { getVerticalSashLeft: () => 0 }, { orientation: 0 /* Orientation.VERTICAL */ });\n        this._northSash = new Sash(this.domNode, { getHorizontalSashTop: () => 0 }, { orientation: 1 /* Orientation.HORIZONTAL */, orthogonalEdge: OrthogonalEdge.North });\n        this._southSash = new Sash(this.domNode, { getHorizontalSashTop: () => this._size.height }, { orientation: 1 /* Orientation.HORIZONTAL */, orthogonalEdge: OrthogonalEdge.South });\n        this._northSash.orthogonalStartSash = this._westSash;\n        this._northSash.orthogonalEndSash = this._eastSash;\n        this._southSash.orthogonalStartSash = this._westSash;\n        this._southSash.orthogonalEndSash = this._eastSash;\n        let currentSize;\n        let deltaY = 0;\n        let deltaX = 0;\n        this._sashListener.add(Event.any(this._northSash.onDidStart, this._eastSash.onDidStart, this._southSash.onDidStart, this._westSash.onDidStart)(() => {\n            if (currentSize === undefined) {\n                this._onDidWillResize.fire();\n                currentSize = this._size;\n                deltaY = 0;\n                deltaX = 0;\n            }\n        }));\n        this._sashListener.add(Event.any(this._northSash.onDidEnd, this._eastSash.onDidEnd, this._southSash.onDidEnd, this._westSash.onDidEnd)(() => {\n            if (currentSize !== undefined) {\n                currentSize = undefined;\n                deltaY = 0;\n                deltaX = 0;\n                this._onDidResize.fire({ dimension: this._size, done: true });\n            }\n        }));\n        this._sashListener.add(this._eastSash.onDidChange(e => {\n            if (currentSize) {\n                deltaX = e.currentX - e.startX;\n                this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n                this._onDidResize.fire({ dimension: this._size, done: false, east: true });\n            }\n        }));\n        this._sashListener.add(this._westSash.onDidChange(e => {\n            if (currentSize) {\n                deltaX = -(e.currentX - e.startX);\n                this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n                this._onDidResize.fire({ dimension: this._size, done: false, west: true });\n            }\n        }));\n        this._sashListener.add(this._northSash.onDidChange(e => {\n            if (currentSize) {\n                deltaY = -(e.currentY - e.startY);\n                this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n                this._onDidResize.fire({ dimension: this._size, done: false, north: true });\n            }\n        }));\n        this._sashListener.add(this._southSash.onDidChange(e => {\n            if (currentSize) {\n                deltaY = e.currentY - e.startY;\n                this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n                this._onDidResize.fire({ dimension: this._size, done: false, south: true });\n            }\n        }));\n        this._sashListener.add(Event.any(this._eastSash.onDidReset, this._westSash.onDidReset)(e => {\n            if (this._preferredSize) {\n                this.layout(this._size.height, this._preferredSize.width);\n                this._onDidResize.fire({ dimension: this._size, done: true });\n            }\n        }));\n        this._sashListener.add(Event.any(this._northSash.onDidReset, this._southSash.onDidReset)(e => {\n            if (this._preferredSize) {\n                this.layout(this._preferredSize.height, this._size.width);\n                this._onDidResize.fire({ dimension: this._size, done: true });\n            }\n        }));\n    }\n    dispose() {\n        this._northSash.dispose();\n        this._southSash.dispose();\n        this._eastSash.dispose();\n        this._westSash.dispose();\n        this._sashListener.dispose();\n        this._onDidResize.dispose();\n        this._onDidWillResize.dispose();\n        this.domNode.remove();\n    }\n    enableSashes(north, east, south, west) {\n        this._northSash.state = north ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n        this._eastSash.state = east ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n        this._southSash.state = south ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n        this._westSash.state = west ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n    }\n    layout(height = this.size.height, width = this.size.width) {\n        const { height: minHeight, width: minWidth } = this._minSize;\n        const { height: maxHeight, width: maxWidth } = this._maxSize;\n        height = Math.max(minHeight, Math.min(maxHeight, height));\n        width = Math.max(minWidth, Math.min(maxWidth, width));\n        const newSize = new Dimension(width, height);\n        if (!Dimension.equals(newSize, this._size)) {\n            this.domNode.style.height = height + 'px';\n            this.domNode.style.width = width + 'px';\n            this._size = newSize;\n            this._northSash.layout();\n            this._eastSash.layout();\n            this._southSash.layout();\n            this._westSash.layout();\n        }\n    }\n    clearSashHoverState() {\n        this._eastSash.clearSashHoverState();\n        this._westSash.clearSashHoverState();\n        this._northSash.clearSashHoverState();\n        this._southSash.clearSashHoverState();\n    }\n    get size() {\n        return this._size;\n    }\n    set maxSize(value) {\n        this._maxSize = value;\n    }\n    get maxSize() {\n        return this._maxSize;\n    }\n    set minSize(value) {\n        this._minSize = value;\n    }\n    get minSize() {\n        return this._minSize;\n    }\n    set preferredSize(value) {\n        this._preferredSize = value;\n    }\n    get preferredSize() {\n        return this._preferredSize;\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 { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Position } from '../../../common/core/position.js';\nimport * as dom from '../../../../base/browser/dom.js';\nconst TOP_HEIGHT = 30;\nconst BOTTOM_HEIGHT = 24;\nexport class ResizableContentWidget extends Disposable {\n    constructor(_editor, minimumSize = new dom.Dimension(10, 10)) {\n        super();\n        this._editor = _editor;\n        this.allowEditorOverflow = true;\n        this.suppressMouseDown = false;\n        this._resizableNode = this._register(new ResizableHTMLElement());\n        this._contentPosition = null;\n        this._isResizing = false;\n        this._resizableNode.domNode.style.position = 'absolute';\n        this._resizableNode.minSize = dom.Dimension.lift(minimumSize);\n        this._resizableNode.layout(minimumSize.height, minimumSize.width);\n        this._resizableNode.enableSashes(true, true, true, true);\n        this._register(this._resizableNode.onDidResize(e => {\n            this._resize(new dom.Dimension(e.dimension.width, e.dimension.height));\n            if (e.done) {\n                this._isResizing = false;\n            }\n        }));\n        this._register(this._resizableNode.onDidWillResize(() => {\n            this._isResizing = true;\n        }));\n    }\n    get isResizing() {\n        return this._isResizing;\n    }\n    getDomNode() {\n        return this._resizableNode.domNode;\n    }\n    getPosition() {\n        return this._contentPosition;\n    }\n    get position() {\n        var _a;\n        return ((_a = this._contentPosition) === null || _a === void 0 ? void 0 : _a.position) ? Position.lift(this._contentPosition.position) : undefined;\n    }\n    _availableVerticalSpaceAbove(position) {\n        const editorDomNode = this._editor.getDomNode();\n        const mouseBox = this._editor.getScrolledVisiblePosition(position);\n        if (!editorDomNode || !mouseBox) {\n            return;\n        }\n        const editorBox = dom.getDomNodePagePosition(editorDomNode);\n        return editorBox.top + mouseBox.top - TOP_HEIGHT;\n    }\n    _availableVerticalSpaceBelow(position) {\n        const editorDomNode = this._editor.getDomNode();\n        const mouseBox = this._editor.getScrolledVisiblePosition(position);\n        if (!editorDomNode || !mouseBox) {\n            return;\n        }\n        const editorBox = dom.getDomNodePagePosition(editorDomNode);\n        const bodyBox = dom.getClientArea(editorDomNode.ownerDocument.body);\n        const mouseBottom = editorBox.top + mouseBox.top + mouseBox.height;\n        return bodyBox.height - mouseBottom - BOTTOM_HEIGHT;\n    }\n    _findPositionPreference(widgetHeight, showAtPosition) {\n        var _a, _b;\n        const maxHeightBelow = Math.min((_a = this._availableVerticalSpaceBelow(showAtPosition)) !== null && _a !== void 0 ? _a : Infinity, widgetHeight);\n        const maxHeightAbove = Math.min((_b = this._availableVerticalSpaceAbove(showAtPosition)) !== null && _b !== void 0 ? _b : Infinity, widgetHeight);\n        const maxHeight = Math.min(Math.max(maxHeightAbove, maxHeightBelow), widgetHeight);\n        const height = Math.min(widgetHeight, maxHeight);\n        let renderingAbove;\n        if (this._editor.getOption(60 /* EditorOption.hover */).above) {\n            renderingAbove = height <= maxHeightAbove ? 1 /* ContentWidgetPositionPreference.ABOVE */ : 2 /* ContentWidgetPositionPreference.BELOW */;\n        }\n        else {\n            renderingAbove = height <= maxHeightBelow ? 2 /* ContentWidgetPositionPreference.BELOW */ : 1 /* ContentWidgetPositionPreference.ABOVE */;\n        }\n        if (renderingAbove === 1 /* ContentWidgetPositionPreference.ABOVE */) {\n            this._resizableNode.enableSashes(true, true, false, false);\n        }\n        else {\n            this._resizableNode.enableSashes(false, true, true, false);\n        }\n        return renderingAbove;\n    }\n    _resize(dimension) {\n        this._resizableNode.layout(dimension.height, dimension.width);\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 ContentHoverController_1;\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { TokenizationRegistry } from '../../../common/languages.js';\nimport { HoverOperation } from './hoverOperation.js';\nimport { HoverParticipantRegistry, HoverRangeAnchor } from './hoverTypes.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { MarkdownHoverParticipant } from './markdownHoverParticipant.js';\nimport { InlayHintsHover } from '../../inlayHints/browser/inlayHintsHover.js';\nimport { ContentHoverWidget } from './contentHoverWidget.js';\nimport { ContentHoverComputer } from './contentHoverComputer.js';\nimport { ContentHoverVisibleData, HoverResult } from './contentHoverTypes.js';\nimport { EditorHoverStatusBar } from './contentHoverStatusBar.js';\nlet ContentHoverController = ContentHoverController_1 = class ContentHoverController extends Disposable {\n    constructor(_editor, _instantiationService, _keybindingService) {\n        super();\n        this._editor = _editor;\n        this._instantiationService = _instantiationService;\n        this._keybindingService = _keybindingService;\n        this._currentResult = null;\n        this._widget = this._register(this._instantiationService.createInstance(ContentHoverWidget, this._editor));\n        // Instantiate participants and sort them by `hoverOrdinal` which is relevant for rendering order.\n        this._participants = [];\n        for (const participant of HoverParticipantRegistry.getAll()) {\n            const participantInstance = this._instantiationService.createInstance(participant, this._editor);\n            if (participantInstance instanceof MarkdownHoverParticipant && !(participantInstance instanceof InlayHintsHover)) {\n                this._markdownHoverParticipant = participantInstance;\n            }\n            this._participants.push(participantInstance);\n        }\n        this._participants.sort((p1, p2) => p1.hoverOrdinal - p2.hoverOrdinal);\n        this._computer = new ContentHoverComputer(this._editor, this._participants);\n        this._hoverOperation = this._register(new HoverOperation(this._editor, this._computer));\n        this._register(this._hoverOperation.onResult((result) => {\n            if (!this._computer.anchor) {\n                // invalid state, ignore result\n                return;\n            }\n            const messages = (result.hasLoadingMessage ? this._addLoadingMessage(result.value) : result.value);\n            this._withResult(new HoverResult(this._computer.anchor, messages, result.isComplete));\n        }));\n        this._register(dom.addStandardDisposableListener(this._widget.getDomNode(), 'keydown', (e) => {\n            if (e.equals(9 /* KeyCode.Escape */)) {\n                this.hide();\n            }\n        }));\n        this._register(TokenizationRegistry.onDidChange(() => {\n            if (this._widget.position && this._currentResult) {\n                this._setCurrentResult(this._currentResult); // render again\n            }\n        }));\n    }\n    /**\n     * Returns true if the hover shows now or will show.\n     */\n    _startShowingOrUpdateHover(anchor, mode, source, focus, mouseEvent) {\n        if (!this._widget.position || !this._currentResult) {\n            // The hover is not visible\n            if (anchor) {\n                this._startHoverOperationIfNecessary(anchor, mode, source, focus, false);\n                return true;\n            }\n            return false;\n        }\n        // The hover is currently visible\n        const isHoverSticky = this._editor.getOption(60 /* EditorOption.hover */).sticky;\n        const isGettingCloser = (isHoverSticky\n            && mouseEvent\n            && this._widget.isMouseGettingCloser(mouseEvent.event.posx, mouseEvent.event.posy));\n        if (isGettingCloser) {\n            // The mouse is getting closer to the hover, so we will keep the hover untouched\n            // But we will kick off a hover update at the new anchor, insisting on keeping the hover visible.\n            if (anchor) {\n                this._startHoverOperationIfNecessary(anchor, mode, source, focus, true);\n            }\n            return true;\n        }\n        if (!anchor) {\n            this._setCurrentResult(null);\n            return false;\n        }\n        if (anchor && this._currentResult.anchor.equals(anchor)) {\n            // The widget is currently showing results for the exact same anchor, so no update is needed\n            return true;\n        }\n        if (!anchor.canAdoptVisibleHover(this._currentResult.anchor, this._widget.position)) {\n            // The new anchor is not compatible with the previous anchor\n            this._setCurrentResult(null);\n            this._startHoverOperationIfNecessary(anchor, mode, source, focus, false);\n            return true;\n        }\n        // We aren't getting any closer to the hover, so we will filter existing results\n        // and keep those which also apply to the new anchor.\n        this._setCurrentResult(this._currentResult.filter(anchor));\n        this._startHoverOperationIfNecessary(anchor, mode, source, focus, false);\n        return true;\n    }\n    _startHoverOperationIfNecessary(anchor, mode, source, focus, insistOnKeepingHoverVisible) {\n        if (this._computer.anchor && this._computer.anchor.equals(anchor)) {\n            // We have to start a hover operation at the exact same anchor as before, so no work is needed\n            return;\n        }\n        this._hoverOperation.cancel();\n        this._computer.anchor = anchor;\n        this._computer.shouldFocus = focus;\n        this._computer.source = source;\n        this._computer.insistOnKeepingHoverVisible = insistOnKeepingHoverVisible;\n        this._hoverOperation.start(mode);\n    }\n    _setCurrentResult(hoverResult) {\n        if (this._currentResult === hoverResult) {\n            // avoid updating the DOM to avoid resetting the user selection\n            return;\n        }\n        if (hoverResult && hoverResult.messages.length === 0) {\n            hoverResult = null;\n        }\n        this._currentResult = hoverResult;\n        if (this._currentResult) {\n            this._renderMessages(this._currentResult.anchor, this._currentResult.messages);\n        }\n        else {\n            this._widget.hide();\n        }\n    }\n    _addLoadingMessage(result) {\n        if (this._computer.anchor) {\n            for (const participant of this._participants) {\n                if (participant.createLoadingMessage) {\n                    const loadingMessage = participant.createLoadingMessage(this._computer.anchor);\n                    if (loadingMessage) {\n                        return result.slice(0).concat([loadingMessage]);\n                    }\n                }\n            }\n        }\n        return result;\n    }\n    _withResult(hoverResult) {\n        if (this._widget.position && this._currentResult && this._currentResult.isComplete) {\n            // The hover is visible with a previous complete result.\n            if (!hoverResult.isComplete) {\n                // Instead of rendering the new partial result, we wait for the result to be complete.\n                return;\n            }\n            if (this._computer.insistOnKeepingHoverVisible && hoverResult.messages.length === 0) {\n                // The hover would now hide normally, so we'll keep the previous messages\n                return;\n            }\n        }\n        this._setCurrentResult(hoverResult);\n    }\n    _renderMessages(anchor, messages) {\n        const { showAtPosition, showAtSecondaryPosition, highlightRange } = ContentHoverController_1.computeHoverRanges(this._editor, anchor.range, messages);\n        const disposables = new DisposableStore();\n        const statusBar = disposables.add(new EditorHoverStatusBar(this._keybindingService));\n        const fragment = document.createDocumentFragment();\n        let colorPicker = null;\n        const context = {\n            fragment,\n            statusBar,\n            setColorPicker: (widget) => colorPicker = widget,\n            onContentsChanged: () => this._widget.onContentsChanged(),\n            setMinimumDimensions: (dimensions) => this._widget.setMinimumDimensions(dimensions),\n            hide: () => this.hide()\n        };\n        for (const participant of this._participants) {\n            const hoverParts = messages.filter(msg => msg.owner === participant);\n            if (hoverParts.length > 0) {\n                disposables.add(participant.renderHoverParts(context, hoverParts));\n            }\n        }\n        const isBeforeContent = messages.some(m => m.isBeforeContent);\n        if (statusBar.hasContent) {\n            fragment.appendChild(statusBar.hoverElement);\n        }\n        if (fragment.hasChildNodes()) {\n            if (highlightRange) {\n                const highlightDecoration = this._editor.createDecorationsCollection();\n                highlightDecoration.set([{\n                        range: highlightRange,\n                        options: ContentHoverController_1._DECORATION_OPTIONS\n                    }]);\n                disposables.add(toDisposable(() => {\n                    highlightDecoration.clear();\n                }));\n            }\n            this._widget.showAt(fragment, new ContentHoverVisibleData(anchor.initialMousePosX, anchor.initialMousePosY, colorPicker, showAtPosition, showAtSecondaryPosition, this._editor.getOption(60 /* EditorOption.hover */).above, this._computer.shouldFocus, this._computer.source, isBeforeContent, disposables));\n        }\n        else {\n            disposables.dispose();\n        }\n    }\n    static computeHoverRanges(editor, anchorRange, messages) {\n        let startColumnBoundary = 1;\n        if (editor.hasModel()) {\n            // Ensure the range is on the current view line\n            const viewModel = editor._getViewModel();\n            const coordinatesConverter = viewModel.coordinatesConverter;\n            const anchorViewRange = coordinatesConverter.convertModelRangeToViewRange(anchorRange);\n            const anchorViewRangeStart = new Position(anchorViewRange.startLineNumber, viewModel.getLineMinColumn(anchorViewRange.startLineNumber));\n            startColumnBoundary = coordinatesConverter.convertViewPositionToModelPosition(anchorViewRangeStart).column;\n        }\n        // The anchor range is always on a single line\n        const anchorLineNumber = anchorRange.startLineNumber;\n        let renderStartColumn = anchorRange.startColumn;\n        let highlightRange = messages[0].range;\n        let forceShowAtRange = null;\n        for (const msg of messages) {\n            highlightRange = Range.plusRange(highlightRange, msg.range);\n            if (msg.range.startLineNumber === anchorLineNumber && msg.range.endLineNumber === anchorLineNumber) {\n                // this message has a range that is completely sitting on the line of the anchor\n                renderStartColumn = Math.max(Math.min(renderStartColumn, msg.range.startColumn), startColumnBoundary);\n            }\n            if (msg.forceShowAtRange) {\n                forceShowAtRange = msg.range;\n            }\n        }\n        const showAtPosition = forceShowAtRange ? forceShowAtRange.getStartPosition() : new Position(anchorLineNumber, anchorRange.startColumn);\n        const showAtSecondaryPosition = forceShowAtRange ? forceShowAtRange.getStartPosition() : new Position(anchorLineNumber, renderStartColumn);\n        return {\n            showAtPosition,\n            showAtSecondaryPosition,\n            highlightRange\n        };\n    }\n    showsOrWillShow(mouseEvent) {\n        if (this._widget.isResizing) {\n            return true;\n        }\n        const anchorCandidates = [];\n        for (const participant of this._participants) {\n            if (participant.suggestHoverAnchor) {\n                const anchor = participant.suggestHoverAnchor(mouseEvent);\n                if (anchor) {\n                    anchorCandidates.push(anchor);\n                }\n            }\n        }\n        const target = mouseEvent.target;\n        if (target.type === 6 /* MouseTargetType.CONTENT_TEXT */) {\n            anchorCandidates.push(new HoverRangeAnchor(0, target.range, mouseEvent.event.posx, mouseEvent.event.posy));\n        }\n        if (target.type === 7 /* MouseTargetType.CONTENT_EMPTY */) {\n            const epsilon = this._editor.getOption(50 /* EditorOption.fontInfo */).typicalHalfwidthCharacterWidth / 2;\n            if (!target.detail.isAfterLines\n                && typeof target.detail.horizontalDistanceToText === 'number'\n                && target.detail.horizontalDistanceToText < epsilon) {\n                // Let hover kick in even when the mouse is technically in the empty area after a line, given the distance is small enough\n                anchorCandidates.push(new HoverRangeAnchor(0, target.range, mouseEvent.event.posx, mouseEvent.event.posy));\n            }\n        }\n        if (anchorCandidates.length === 0) {\n            return this._startShowingOrUpdateHover(null, 0 /* HoverStartMode.Delayed */, 0 /* HoverStartSource.Mouse */, false, mouseEvent);\n        }\n        anchorCandidates.sort((a, b) => b.priority - a.priority);\n        return this._startShowingOrUpdateHover(anchorCandidates[0], 0 /* HoverStartMode.Delayed */, 0 /* HoverStartSource.Mouse */, false, mouseEvent);\n    }\n    startShowingAtRange(range, mode, source, focus) {\n        this._startShowingOrUpdateHover(new HoverRangeAnchor(0, range, undefined, undefined), mode, source, focus, null);\n    }\n    async updateFocusedMarkdownHoverVerbosityLevel(action) {\n        var _a;\n        (_a = this._markdownHoverParticipant) === null || _a === void 0 ? void 0 : _a.updateFocusedMarkdownHoverPartVerbosityLevel(action);\n    }\n    containsNode(node) {\n        return (node ? this._widget.getDomNode().contains(node) : false);\n    }\n    focus() {\n        this._widget.focus();\n    }\n    scrollUp() {\n        this._widget.scrollUp();\n    }\n    scrollDown() {\n        this._widget.scrollDown();\n    }\n    scrollLeft() {\n        this._widget.scrollLeft();\n    }\n    scrollRight() {\n        this._widget.scrollRight();\n    }\n    pageUp() {\n        this._widget.pageUp();\n    }\n    pageDown() {\n        this._widget.pageDown();\n    }\n    goToTop() {\n        this._widget.goToTop();\n    }\n    goToBottom() {\n        this._widget.goToBottom();\n    }\n    hide() {\n        this._computer.anchor = null;\n        this._hoverOperation.cancel();\n        this._setCurrentResult(null);\n    }\n    get isColorPickerVisible() {\n        return this._widget.isColorPickerVisible;\n    }\n    get isVisibleFromKeyboard() {\n        return this._widget.isVisibleFromKeyboard;\n    }\n    get isVisible() {\n        return this._widget.isVisible;\n    }\n    get isFocused() {\n        return this._widget.isFocused;\n    }\n    get isResizing() {\n        return this._widget.isResizing;\n    }\n    get widget() {\n        return this._widget;\n    }\n};\nContentHoverController._DECORATION_OPTIONS = ModelDecorationOptions.register({\n    description: 'content-hover-highlight',\n    className: 'hoverHighlight'\n});\nContentHoverController = ContentHoverController_1 = __decorate([\n    __param(1, IInstantiationService),\n    __param(2, IKeybindingService)\n], ContentHoverController);\nexport { ContentHoverController };\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 { createCancelableAsyncIterable, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nexport class HoverResult {\n    constructor(value, isComplete, hasLoadingMessage) {\n        this.value = value;\n        this.isComplete = isComplete;\n        this.hasLoadingMessage = hasLoadingMessage;\n    }\n}\n/**\n * Computing the hover is very fine tuned.\n *\n * Suppose the hover delay is 300ms (the default). Then, when resting the mouse at an anchor:\n * - at 150ms, the async computation is triggered (i.e. semantic hover)\n *   - if async results already come in, they are not rendered yet.\n * - at 300ms, the sync computation is triggered (i.e. decorations, markers)\n *   - if there are sync or async results, they are rendered.\n * - at 900ms, if the async computation hasn't finished, a \"Loading...\" result is added.\n */\nexport class HoverOperation extends Disposable {\n    constructor(_editor, _computer) {\n        super();\n        this._editor = _editor;\n        this._computer = _computer;\n        this._onResult = this._register(new Emitter());\n        this.onResult = this._onResult.event;\n        this._firstWaitScheduler = this._register(new RunOnceScheduler(() => this._triggerAsyncComputation(), 0));\n        this._secondWaitScheduler = this._register(new RunOnceScheduler(() => this._triggerSyncComputation(), 0));\n        this._loadingMessageScheduler = this._register(new RunOnceScheduler(() => this._triggerLoadingMessage(), 0));\n        this._state = 0 /* HoverOperationState.Idle */;\n        this._asyncIterable = null;\n        this._asyncIterableDone = false;\n        this._result = [];\n    }\n    dispose() {\n        if (this._asyncIterable) {\n            this._asyncIterable.cancel();\n            this._asyncIterable = null;\n        }\n        super.dispose();\n    }\n    get _hoverTime() {\n        return this._editor.getOption(60 /* EditorOption.hover */).delay;\n    }\n    get _firstWaitTime() {\n        return this._hoverTime / 2;\n    }\n    get _secondWaitTime() {\n        return this._hoverTime - this._firstWaitTime;\n    }\n    get _loadingMessageTime() {\n        return 3 * this._hoverTime;\n    }\n    _setState(state, fireResult = true) {\n        this._state = state;\n        if (fireResult) {\n            this._fireResult();\n        }\n    }\n    _triggerAsyncComputation() {\n        this._setState(2 /* HoverOperationState.SecondWait */);\n        this._secondWaitScheduler.schedule(this._secondWaitTime);\n        if (this._computer.computeAsync) {\n            this._asyncIterableDone = false;\n            this._asyncIterable = createCancelableAsyncIterable(token => this._computer.computeAsync(token));\n            (async () => {\n                try {\n                    for await (const item of this._asyncIterable) {\n                        if (item) {\n                            this._result.push(item);\n                            this._fireResult();\n                        }\n                    }\n                    this._asyncIterableDone = true;\n                    if (this._state === 3 /* HoverOperationState.WaitingForAsync */ || this._state === 4 /* HoverOperationState.WaitingForAsyncShowingLoading */) {\n                        this._setState(0 /* HoverOperationState.Idle */);\n                    }\n                }\n                catch (e) {\n                    onUnexpectedError(e);\n                }\n            })();\n        }\n        else {\n            this._asyncIterableDone = true;\n        }\n    }\n    _triggerSyncComputation() {\n        if (this._computer.computeSync) {\n            this._result = this._result.concat(this._computer.computeSync());\n        }\n        this._setState(this._asyncIterableDone ? 0 /* HoverOperationState.Idle */ : 3 /* HoverOperationState.WaitingForAsync */);\n    }\n    _triggerLoadingMessage() {\n        if (this._state === 3 /* HoverOperationState.WaitingForAsync */) {\n            this._setState(4 /* HoverOperationState.WaitingForAsyncShowingLoading */);\n        }\n    }\n    _fireResult() {\n        if (this._state === 1 /* HoverOperationState.FirstWait */ || this._state === 2 /* HoverOperationState.SecondWait */) {\n            // Do not send out results before the hover time\n            return;\n        }\n        const isComplete = (this._state === 0 /* HoverOperationState.Idle */);\n        const hasLoadingMessage = (this._state === 4 /* HoverOperationState.WaitingForAsyncShowingLoading */);\n        this._onResult.fire(new HoverResult(this._result.slice(0), isComplete, hasLoadingMessage));\n    }\n    start(mode) {\n        if (mode === 0 /* HoverStartMode.Delayed */) {\n            if (this._state === 0 /* HoverOperationState.Idle */) {\n                this._setState(1 /* HoverOperationState.FirstWait */);\n                this._firstWaitScheduler.schedule(this._firstWaitTime);\n                this._loadingMessageScheduler.schedule(this._loadingMessageTime);\n            }\n        }\n        else {\n            switch (this._state) {\n                case 0 /* HoverOperationState.Idle */:\n                    this._triggerAsyncComputation();\n                    this._secondWaitScheduler.cancel();\n                    this._triggerSyncComputation();\n                    break;\n                case 2 /* HoverOperationState.SecondWait */:\n                    this._secondWaitScheduler.cancel();\n                    this._triggerSyncComputation();\n                    break;\n            }\n        }\n    }\n    cancel() {\n        this._firstWaitScheduler.cancel();\n        this._secondWaitScheduler.cancel();\n        this._loadingMessageScheduler.cancel();\n        if (this._asyncIterable) {\n            this._asyncIterable.cancel();\n            this._asyncIterable = null;\n        }\n        this._result = [];\n        this._setState(0 /* HoverOperationState.Idle */, false);\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 *--------------------------------------------------------------------------------------------*/\nexport class HoverRangeAnchor {\n    constructor(priority, range, initialMousePosX, initialMousePosY) {\n        this.priority = priority;\n        this.range = range;\n        this.initialMousePosX = initialMousePosX;\n        this.initialMousePosY = initialMousePosY;\n        this.type = 1 /* HoverAnchorType.Range */;\n    }\n    equals(other) {\n        return (other.type === 1 /* HoverAnchorType.Range */ && this.range.equalsRange(other.range));\n    }\n    canAdoptVisibleHover(lastAnchor, showAtPosition) {\n        return (lastAnchor.type === 1 /* HoverAnchorType.Range */ && showAtPosition.lineNumber === this.range.startLineNumber);\n    }\n}\nexport class HoverForeignElementAnchor {\n    constructor(priority, owner, range, initialMousePosX, initialMousePosY, supportsMarkerHover) {\n        this.priority = priority;\n        this.owner = owner;\n        this.range = range;\n        this.initialMousePosX = initialMousePosX;\n        this.initialMousePosY = initialMousePosY;\n        this.supportsMarkerHover = supportsMarkerHover;\n        this.type = 2 /* HoverAnchorType.ForeignElement */;\n    }\n    equals(other) {\n        return (other.type === 2 /* HoverAnchorType.ForeignElement */ && this.owner === other.owner);\n    }\n    canAdoptVisibleHover(lastAnchor, showAtPosition) {\n        return (lastAnchor.type === 2 /* HoverAnchorType.ForeignElement */ && this.owner === lastAnchor.owner);\n    }\n}\nexport const HoverParticipantRegistry = (new class HoverParticipantRegistry {\n    constructor() {\n        this._participants = [];\n    }\n    register(ctor) {\n        this._participants.push(ctor);\n    }\n    getAll() {\n        return this._participants;\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 { asArray, compareBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID } from './hoverActionIds.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport * as nls from '../../../../nls.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 { HoverVerbosityAction } from '../../../common/languages.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ClickAction, KeyDownAction } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { IHoverService, WorkbenchHoverDelegate } from '../../../../platform/hover/browser/hover.js';\nimport { AsyncIterableObject } from '../../../../base/common/async.js';\nimport { getHoverProviderResultsAsAsyncIterable } from './getHover.js';\nconst $ = dom.$;\nconst increaseHoverVerbosityIcon = registerIcon('hover-increase-verbosity', Codicon.add, nls.localize('increaseHoverVerbosity', 'Icon for increaseing hover verbosity.'));\nconst decreaseHoverVerbosityIcon = registerIcon('hover-decrease-verbosity', Codicon.remove, nls.localize('decreaseHoverVerbosity', 'Icon for decreasing hover verbosity.'));\nexport class MarkdownHover {\n    constructor(owner, range, contents, isBeforeContent, ordinal, source = undefined) {\n        this.owner = owner;\n        this.range = range;\n        this.contents = contents;\n        this.isBeforeContent = isBeforeContent;\n        this.ordinal = ordinal;\n        this.source = source;\n    }\n    isValidForHoverAnchor(anchor) {\n        return (anchor.type === 1 /* HoverAnchorType.Range */\n            && this.range.startColumn <= anchor.range.startColumn\n            && this.range.endColumn >= anchor.range.endColumn);\n    }\n}\nclass HoverSource {\n    constructor(hover, hoverProvider, hoverPosition) {\n        this.hover = hover;\n        this.hoverProvider = hoverProvider;\n        this.hoverPosition = hoverPosition;\n    }\n    supportsVerbosityAction(hoverVerbosityAction) {\n        var _a, _b;\n        switch (hoverVerbosityAction) {\n            case HoverVerbosityAction.Increase:\n                return (_a = this.hover.canIncreaseVerbosity) !== null && _a !== void 0 ? _a : false;\n            case HoverVerbosityAction.Decrease:\n                return (_b = this.hover.canDecreaseVerbosity) !== null && _b !== void 0 ? _b : false;\n        }\n    }\n}\nlet MarkdownHoverParticipant = class MarkdownHoverParticipant {\n    constructor(_editor, _languageService, _openerService, _configurationService, _languageFeaturesService, _keybindingService, _hoverService) {\n        this._editor = _editor;\n        this._languageService = _languageService;\n        this._openerService = _openerService;\n        this._configurationService = _configurationService;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._keybindingService = _keybindingService;\n        this._hoverService = _hoverService;\n        this.hoverOrdinal = 3;\n    }\n    createLoadingMessage(anchor) {\n        return new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(nls.localize('modesContentHover.loading', \"Loading...\"))], false, 2000);\n    }\n    computeSync(anchor, lineDecorations) {\n        if (!this._editor.hasModel() || anchor.type !== 1 /* HoverAnchorType.Range */) {\n            return [];\n        }\n        const model = this._editor.getModel();\n        const lineNumber = anchor.range.startLineNumber;\n        const maxColumn = model.getLineMaxColumn(lineNumber);\n        const result = [];\n        let index = 1000;\n        const lineLength = model.getLineLength(lineNumber);\n        const languageId = model.getLanguageIdAtPosition(anchor.range.startLineNumber, anchor.range.startColumn);\n        const stopRenderingLineAfter = this._editor.getOption(117 /* EditorOption.stopRenderingLineAfter */);\n        const maxTokenizationLineLength = this._configurationService.getValue('editor.maxTokenizationLineLength', {\n            overrideIdentifier: languageId\n        });\n        let stopRenderingMessage = false;\n        if (stopRenderingLineAfter >= 0 && lineLength > stopRenderingLineAfter && anchor.range.startColumn >= stopRenderingLineAfter) {\n            stopRenderingMessage = true;\n            result.push(new MarkdownHover(this, anchor.range, [{\n                    value: nls.localize('stopped rendering', \"Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.\")\n                }], false, index++));\n        }\n        if (!stopRenderingMessage && typeof maxTokenizationLineLength === 'number' && lineLength >= maxTokenizationLineLength) {\n            result.push(new MarkdownHover(this, anchor.range, [{\n                    value: nls.localize('too many characters', \"Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.\")\n                }], false, index++));\n        }\n        let isBeforeContent = false;\n        for (const d of lineDecorations) {\n            const startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\n            const endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\n            const hoverMessage = d.options.hoverMessage;\n            if (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\n                continue;\n            }\n            if (d.options.beforeContentClassName) {\n                isBeforeContent = true;\n            }\n            const range = new Range(anchor.range.startLineNumber, startColumn, anchor.range.startLineNumber, endColumn);\n            result.push(new MarkdownHover(this, range, asArray(hoverMessage), isBeforeContent, index++));\n        }\n        return result;\n    }\n    computeAsync(anchor, lineDecorations, token) {\n        if (!this._editor.hasModel() || anchor.type !== 1 /* HoverAnchorType.Range */) {\n            return AsyncIterableObject.EMPTY;\n        }\n        const model = this._editor.getModel();\n        const hoverProviderRegistry = this._languageFeaturesService.hoverProvider;\n        if (!hoverProviderRegistry.has(model)) {\n            return AsyncIterableObject.EMPTY;\n        }\n        const markdownHovers = this._getMarkdownHovers(hoverProviderRegistry, model, anchor, token);\n        return markdownHovers;\n    }\n    _getMarkdownHovers(hoverProviderRegistry, model, anchor, token) {\n        const position = anchor.range.getStartPosition();\n        const hoverProviderResults = getHoverProviderResultsAsAsyncIterable(hoverProviderRegistry, model, position, token);\n        const markdownHovers = hoverProviderResults.filter(item => !isEmptyMarkdownString(item.hover.contents))\n            .map(item => {\n            const range = item.hover.range ? Range.lift(item.hover.range) : anchor.range;\n            const hoverSource = new HoverSource(item.hover, item.provider, position);\n            return new MarkdownHover(this, range, item.hover.contents, false, item.ordinal, hoverSource);\n        });\n        return markdownHovers;\n    }\n    renderHoverParts(context, hoverParts) {\n        this._renderedHoverParts = new MarkdownRenderedHoverParts(hoverParts, context.fragment, this._editor, this._languageService, this._openerService, this._keybindingService, this._hoverService, this._configurationService, context.onContentsChanged);\n        return this._renderedHoverParts;\n    }\n    updateFocusedMarkdownHoverPartVerbosityLevel(action) {\n        var _a;\n        (_a = this._renderedHoverParts) === null || _a === void 0 ? void 0 : _a.updateFocusedHoverPartVerbosityLevel(action);\n    }\n};\nMarkdownHoverParticipant = __decorate([\n    __param(1, ILanguageService),\n    __param(2, IOpenerService),\n    __param(3, IConfigurationService),\n    __param(4, ILanguageFeaturesService),\n    __param(5, IKeybindingService),\n    __param(6, IHoverService)\n], MarkdownHoverParticipant);\nexport { MarkdownHoverParticipant };\nclass MarkdownRenderedHoverParts extends Disposable {\n    constructor(hoverParts, // we own!\n    hoverPartsContainer, _editor, _languageService, _openerService, _keybindingService, _hoverService, _configurationService, _onFinishedRendering) {\n        super();\n        this._editor = _editor;\n        this._languageService = _languageService;\n        this._openerService = _openerService;\n        this._keybindingService = _keybindingService;\n        this._hoverService = _hoverService;\n        this._configurationService = _configurationService;\n        this._onFinishedRendering = _onFinishedRendering;\n        this._hoverFocusInfo = { hoverPartIndex: -1, focusRemains: false };\n        this._renderedHoverParts = this._renderHoverParts(hoverParts, hoverPartsContainer, this._onFinishedRendering);\n        this._register(toDisposable(() => {\n            this._renderedHoverParts.forEach(renderedHoverPart => {\n                renderedHoverPart.disposables.dispose();\n            });\n        }));\n    }\n    _renderHoverParts(hoverParts, hoverPartsContainer, onFinishedRendering) {\n        hoverParts.sort(compareBy(hover => hover.ordinal, numberComparator));\n        return hoverParts.map((hoverPart, hoverIndex) => {\n            const renderedHoverPart = this._renderHoverPart(hoverIndex, hoverPart.contents, hoverPart.source, onFinishedRendering);\n            hoverPartsContainer.appendChild(renderedHoverPart.renderedMarkdown);\n            return renderedHoverPart;\n        });\n    }\n    _renderHoverPart(hoverPartIndex, hoverContents, hoverSource, onFinishedRendering) {\n        const { renderedMarkdown, disposables } = this._renderMarkdownContent(hoverContents, onFinishedRendering);\n        if (!hoverSource) {\n            return { renderedMarkdown, disposables };\n        }\n        const canIncreaseVerbosity = hoverSource.supportsVerbosityAction(HoverVerbosityAction.Increase);\n        const canDecreaseVerbosity = hoverSource.supportsVerbosityAction(HoverVerbosityAction.Decrease);\n        if (!canIncreaseVerbosity && !canDecreaseVerbosity) {\n            return { renderedMarkdown, disposables, hoverSource };\n        }\n        const actionsContainer = $('div.verbosity-actions');\n        renderedMarkdown.prepend(actionsContainer);\n        disposables.add(this._renderHoverExpansionAction(actionsContainer, HoverVerbosityAction.Increase, canIncreaseVerbosity));\n        disposables.add(this._renderHoverExpansionAction(actionsContainer, HoverVerbosityAction.Decrease, canDecreaseVerbosity));\n        const focusTracker = disposables.add(dom.trackFocus(renderedMarkdown));\n        disposables.add(focusTracker.onDidFocus(() => {\n            this._hoverFocusInfo = {\n                hoverPartIndex,\n                focusRemains: true\n            };\n        }));\n        disposables.add(focusTracker.onDidBlur(() => {\n            var _a;\n            if ((_a = this._hoverFocusInfo) === null || _a === void 0 ? void 0 : _a.focusRemains) {\n                this._hoverFocusInfo.focusRemains = false;\n                return;\n            }\n        }));\n        return { renderedMarkdown, disposables, hoverSource };\n    }\n    _renderMarkdownContent(markdownContent, onFinishedRendering) {\n        const renderedMarkdown = $('div.hover-row');\n        renderedMarkdown.tabIndex = 0;\n        const renderedMarkdownContents = $('div.hover-row-contents');\n        renderedMarkdown.appendChild(renderedMarkdownContents);\n        const disposables = new DisposableStore();\n        disposables.add(renderMarkdownInContainer(this._editor, renderedMarkdownContents, markdownContent, this._languageService, this._openerService, onFinishedRendering));\n        return { renderedMarkdown, disposables };\n    }\n    _renderHoverExpansionAction(container, action, actionEnabled) {\n        const store = new DisposableStore();\n        const isActionIncrease = action === HoverVerbosityAction.Increase;\n        const actionElement = dom.append(container, $(ThemeIcon.asCSSSelector(isActionIncrease ? increaseHoverVerbosityIcon : decreaseHoverVerbosityIcon)));\n        actionElement.tabIndex = 0;\n        const hoverDelegate = new WorkbenchHoverDelegate('mouse', false, { target: container, position: { hoverPosition: 0 /* HoverPosition.LEFT */ } }, this._configurationService, this._hoverService);\n        if (isActionIncrease) {\n            const kb = this._keybindingService.lookupKeybinding(INCREASE_HOVER_VERBOSITY_ACTION_ID);\n            store.add(this._hoverService.setupUpdatableHover(hoverDelegate, actionElement, kb ?\n                nls.localize('increaseVerbosityWithKb', \"Increase Verbosity ({0})\", kb.getLabel()) :\n                nls.localize('increaseVerbosity', \"Increase Verbosity\")));\n        }\n        else {\n            const kb = this._keybindingService.lookupKeybinding(DECREASE_HOVER_VERBOSITY_ACTION_ID);\n            store.add(this._hoverService.setupUpdatableHover(hoverDelegate, actionElement, kb ?\n                nls.localize('decreaseVerbosityWithKb', \"Decrease Verbosity ({0})\", kb.getLabel()) :\n                nls.localize('decreaseVerbosity', \"Decrease Verbosity\")));\n        }\n        if (!actionEnabled) {\n            actionElement.classList.add('disabled');\n            return store;\n        }\n        actionElement.classList.add('enabled');\n        const actionFunction = () => this.updateFocusedHoverPartVerbosityLevel(action);\n        store.add(new ClickAction(actionElement, actionFunction));\n        store.add(new KeyDownAction(actionElement, actionFunction, [3 /* KeyCode.Enter */, 10 /* KeyCode.Space */]));\n        return store;\n    }\n    async updateFocusedHoverPartVerbosityLevel(action) {\n        var _a;\n        const model = this._editor.getModel();\n        if (!model) {\n            return;\n        }\n        const hoverFocusedPartIndex = this._hoverFocusInfo.hoverPartIndex;\n        const hoverRenderedPart = this._getRenderedHoverPartAtIndex(hoverFocusedPartIndex);\n        if (!hoverRenderedPart || !((_a = hoverRenderedPart.hoverSource) === null || _a === void 0 ? void 0 : _a.supportsVerbosityAction(action))) {\n            return;\n        }\n        const hoverPosition = hoverRenderedPart.hoverSource.hoverPosition;\n        const hoverProvider = hoverRenderedPart.hoverSource.hoverProvider;\n        const hover = hoverRenderedPart.hoverSource.hover;\n        const hoverContext = { verbosityRequest: { action, previousHover: hover } };\n        let newHover;\n        try {\n            newHover = await Promise.resolve(hoverProvider.provideHover(model, hoverPosition, CancellationToken.None, hoverContext));\n        }\n        catch (e) {\n            onUnexpectedExternalError(e);\n        }\n        if (!newHover) {\n            return;\n        }\n        const hoverSource = new HoverSource(newHover, hoverProvider, hoverPosition);\n        const renderedHoverPart = this._renderHoverPart(hoverFocusedPartIndex, newHover.contents, hoverSource, this._onFinishedRendering);\n        this._replaceRenderedHoverPartAtIndex(hoverFocusedPartIndex, renderedHoverPart);\n        this._focusOnHoverPartWithIndex(hoverFocusedPartIndex);\n        this._onFinishedRendering();\n    }\n    _replaceRenderedHoverPartAtIndex(index, renderedHoverPart) {\n        if (index >= this._renderHoverParts.length || index < 0) {\n            return;\n        }\n        const currentRenderedHoverPart = this._renderedHoverParts[index];\n        const currentRenderedMarkdown = currentRenderedHoverPart.renderedMarkdown;\n        currentRenderedMarkdown.replaceWith(renderedHoverPart.renderedMarkdown);\n        currentRenderedHoverPart.disposables.dispose();\n        this._renderedHoverParts[index] = renderedHoverPart;\n    }\n    _focusOnHoverPartWithIndex(index) {\n        this._renderedHoverParts[index].renderedMarkdown.focus();\n        this._hoverFocusInfo.focusRemains = true;\n    }\n    _getRenderedHoverPartAtIndex(index) {\n        return this._renderedHoverParts[index];\n    }\n}\nexport function renderMarkdownHovers(context, hoverParts, editor, languageService, openerService) {\n    // Sort hover parts to keep them stable since they might come in async, out-of-order\n    hoverParts.sort(compareBy(hover => hover.ordinal, numberComparator));\n    const disposables = new DisposableStore();\n    for (const hoverPart of hoverParts) {\n        disposables.add(renderMarkdownInContainer(editor, context.fragment, hoverPart.contents, languageService, openerService, context.onContentsChanged));\n    }\n    return disposables;\n}\nfunction renderMarkdownInContainer(editor, container, markdownStrings, languageService, openerService, onFinishedRendering) {\n    const store = new DisposableStore();\n    for (const contents of markdownStrings) {\n        if (isEmptyMarkdownString(contents)) {\n            continue;\n        }\n        const markdownHoverElement = $('div.markdown-hover');\n        const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n        const renderer = store.add(new MarkdownRenderer({ editor }, languageService, openerService));\n        store.add(renderer.onDidRenderAsync(() => {\n            hoverContentsElement.className = 'hover-contents code-hover-contents';\n            onFinishedRendering();\n        }));\n        const renderedContents = store.add(renderer.render(contents));\n        hoverContentsElement.appendChild(renderedContents.element);\n        container.appendChild(markdownHoverElement);\n    }\n    return store;\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 { AsyncIterableObject } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { registerModelAndPositionCommand } from '../../../browser/editorExtensions.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport class HoverProviderResult {\n    constructor(provider, hover, ordinal) {\n        this.provider = provider;\n        this.hover = hover;\n        this.ordinal = ordinal;\n    }\n}\n/**\n * Does not throw or return a rejected promise (returns undefined instead).\n */\nasync function executeProvider(provider, ordinal, model, position, token) {\n    const result = await Promise\n        .resolve(provider.provideHover(model, position, token))\n        .catch(onUnexpectedExternalError);\n    if (!result || !isValid(result)) {\n        return undefined;\n    }\n    return new HoverProviderResult(provider, result, ordinal);\n}\nexport function getHoverProviderResultsAsAsyncIterable(registry, model, position, token) {\n    const providers = registry.ordered(model);\n    const promises = providers.map((provider, index) => executeProvider(provider, index, model, position, token));\n    return AsyncIterableObject.fromPromises(promises).coalesce();\n}\nexport function getHoversPromise(registry, model, position, token) {\n    return getHoverProviderResultsAsAsyncIterable(registry, model, position, token).map(item => item.hover).toPromise();\n}\nregisterModelAndPositionCommand('_executeHoverProvider', (accessor, model, position) => {\n    const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n    return getHoversPromise(languageFeaturesService.hoverProvider, model, position, CancellationToken.None);\n});\nfunction isValid(result) {\n    const hasRange = (typeof result.range !== 'undefined');\n    const hasHtmlContent = typeof result.contents !== 'undefined' && result.contents && result.contents.length > 0;\n    return hasRange && hasHtmlContent;\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 *--------------------------------------------------------------------------------------------*/\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 { 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 (!(e.event.target instanceof HTMLElement)) {\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) + '\u2026';\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 *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../../base/common/platform.js';\nfunction hasModifier(e, modifier) {\n    return !!e[modifier];\n}\n/**\n * An event that encapsulates the various trigger modifiers logic needed for go to definition.\n */\nexport class ClickLinkMouseEvent {\n    constructor(source, opts) {\n        this.target = source.target;\n        this.isLeftClick = source.event.leftButton;\n        this.isMiddleClick = source.event.middleButton;\n        this.isRightClick = source.event.rightButton;\n        this.hasTriggerModifier = hasModifier(source.event, opts.triggerModifier);\n        this.hasSideBySideModifier = hasModifier(source.event, opts.triggerSideBySideModifier);\n        this.isNoneOrSingleMouseDown = (source.event.detail <= 1);\n    }\n}\n/**\n * An event that encapsulates the various trigger modifiers logic needed for go to definition.\n */\nexport class ClickLinkKeyboardEvent {\n    constructor(source, opts) {\n        this.keyCodeIsTriggerKey = (source.keyCode === opts.triggerKey);\n        this.keyCodeIsSideBySideKey = (source.keyCode === opts.triggerSideBySideKey);\n        this.hasTriggerModifier = hasModifier(source, opts.triggerModifier);\n    }\n}\nexport class ClickLinkOptions {\n    constructor(triggerKey, triggerModifier, triggerSideBySideKey, triggerSideBySideModifier) {\n        this.triggerKey = triggerKey;\n        this.triggerModifier = triggerModifier;\n        this.triggerSideBySideKey = triggerSideBySideKey;\n        this.triggerSideBySideModifier = triggerSideBySideModifier;\n    }\n    equals(other) {\n        return (this.triggerKey === other.triggerKey\n            && this.triggerModifier === other.triggerModifier\n            && this.triggerSideBySideKey === other.triggerSideBySideKey\n            && this.triggerSideBySideModifier === other.triggerSideBySideModifier);\n    }\n}\nfunction createOptions(multiCursorModifier) {\n    if (multiCursorModifier === 'altKey') {\n        if (platform.isMacintosh) {\n            return new ClickLinkOptions(57 /* KeyCode.Meta */, 'metaKey', 6 /* KeyCode.Alt */, 'altKey');\n        }\n        return new ClickLinkOptions(5 /* KeyCode.Ctrl */, 'ctrlKey', 6 /* KeyCode.Alt */, 'altKey');\n    }\n    if (platform.isMacintosh) {\n        return new ClickLinkOptions(6 /* KeyCode.Alt */, 'altKey', 57 /* KeyCode.Meta */, 'metaKey');\n    }\n    return new ClickLinkOptions(6 /* KeyCode.Alt */, 'altKey', 5 /* KeyCode.Ctrl */, 'ctrlKey');\n}\nexport class ClickLinkGesture extends Disposable {\n    constructor(editor, opts) {\n        var _a;\n        super();\n        this._onMouseMoveOrRelevantKeyDown = this._register(new Emitter());\n        this.onMouseMoveOrRelevantKeyDown = this._onMouseMoveOrRelevantKeyDown.event;\n        this._onExecute = this._register(new Emitter());\n        this.onExecute = this._onExecute.event;\n        this._onCancel = this._register(new Emitter());\n        this.onCancel = this._onCancel.event;\n        this._editor = editor;\n        this._extractLineNumberFromMouseEvent = (_a = opts === null || opts === void 0 ? void 0 : opts.extractLineNumberFromMouseEvent) !== null && _a !== void 0 ? _a : ((e) => e.target.position ? e.target.position.lineNumber : 0);\n        this._opts = createOptions(this._editor.getOption(78 /* EditorOption.multiCursorModifier */));\n        this._lastMouseMoveEvent = null;\n        this._hasTriggerKeyOnMouseDown = false;\n        this._lineNumberOnMouseDown = 0;\n        this._register(this._editor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(78 /* EditorOption.multiCursorModifier */)) {\n                const newOpts = createOptions(this._editor.getOption(78 /* EditorOption.multiCursorModifier */));\n                if (this._opts.equals(newOpts)) {\n                    return;\n                }\n                this._opts = newOpts;\n                this._lastMouseMoveEvent = null;\n                this._hasTriggerKeyOnMouseDown = false;\n                this._lineNumberOnMouseDown = 0;\n                this._onCancel.fire();\n            }\n        }));\n        this._register(this._editor.onMouseMove((e) => this._onEditorMouseMove(new ClickLinkMouseEvent(e, this._opts))));\n        this._register(this._editor.onMouseDown((e) => this._onEditorMouseDown(new ClickLinkMouseEvent(e, this._opts))));\n        this._register(this._editor.onMouseUp((e) => this._onEditorMouseUp(new ClickLinkMouseEvent(e, this._opts))));\n        this._register(this._editor.onKeyDown((e) => this._onEditorKeyDown(new ClickLinkKeyboardEvent(e, this._opts))));\n        this._register(this._editor.onKeyUp((e) => this._onEditorKeyUp(new ClickLinkKeyboardEvent(e, this._opts))));\n        this._register(this._editor.onMouseDrag(() => this._resetHandler()));\n        this._register(this._editor.onDidChangeCursorSelection((e) => this._onDidChangeCursorSelection(e)));\n        this._register(this._editor.onDidChangeModel((e) => this._resetHandler()));\n        this._register(this._editor.onDidChangeModelContent(() => this._resetHandler()));\n        this._register(this._editor.onDidScrollChange((e) => {\n            if (e.scrollTopChanged || e.scrollLeftChanged) {\n                this._resetHandler();\n            }\n        }));\n    }\n    _onDidChangeCursorSelection(e) {\n        if (e.selection && e.selection.startColumn !== e.selection.endColumn) {\n            this._resetHandler(); // immediately stop this feature if the user starts to select (https://github.com/microsoft/vscode/issues/7827)\n        }\n    }\n    _onEditorMouseMove(mouseEvent) {\n        this._lastMouseMoveEvent = mouseEvent;\n        this._onMouseMoveOrRelevantKeyDown.fire([mouseEvent, null]);\n    }\n    _onEditorMouseDown(mouseEvent) {\n        // We need to record if we had the trigger key on mouse down because someone might select something in the editor\n        // holding the mouse down and then while mouse is down start to press Ctrl/Cmd to start a copy operation and then\n        // release the mouse button without wanting to do the navigation.\n        // With this flag we prevent goto definition if the mouse was down before the trigger key was pressed.\n        this._hasTriggerKeyOnMouseDown = mouseEvent.hasTriggerModifier;\n        this._lineNumberOnMouseDown = this._extractLineNumberFromMouseEvent(mouseEvent);\n    }\n    _onEditorMouseUp(mouseEvent) {\n        const currentLineNumber = this._extractLineNumberFromMouseEvent(mouseEvent);\n        if (this._hasTriggerKeyOnMouseDown && this._lineNumberOnMouseDown && this._lineNumberOnMouseDown === currentLineNumber) {\n            this._onExecute.fire(mouseEvent);\n        }\n    }\n    _onEditorKeyDown(e) {\n        if (this._lastMouseMoveEvent\n            && (e.keyCodeIsTriggerKey // User just pressed Ctrl/Cmd (normal goto definition)\n                || (e.keyCodeIsSideBySideKey && e.hasTriggerModifier) // User pressed Ctrl/Cmd+Alt (goto definition to the side)\n            )) {\n            this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent, e]);\n        }\n        else if (e.hasTriggerModifier) {\n            this._onCancel.fire(); // remove decorations if user holds another key with ctrl/cmd to prevent accident goto declaration\n        }\n    }\n    _onEditorKeyUp(e) {\n        if (e.keyCodeIsTriggerKey) {\n            this._onCancel.fire();\n        }\n    }\n    _resetHandler() {\n        this._lastMouseMoveEvent = null;\n        this._hasTriggerKeyOnMouseDown = false;\n        this._onCancel.fire();\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 { 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 * 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", "/*---------------------------------------------------------------------------------------------\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 _a, _b, _c, _d, _e, _f, _g, _h;\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { createCancelablePromise, raceCancellation } from '../../../../base/common/async.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { isCodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction2 } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport * as corePosition from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { isLocationLink } from '../../../common/languages.js';\nimport { ReferencesController } from './peek/referencesController.js';\nimport { ReferencesModel } from './referencesModel.js';\nimport { ISymbolNavigationService } from './symbolNavigation.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { PeekContext } from '../../peekView/browser/peekView.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, MenuRegistry, registerAction2 } from '../../../../platform/actions/common/actions.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { getDeclarationsAtPosition, getDefinitionsAtPosition, getImplementationsAtPosition, getReferencesAtPosition, getTypeDefinitionsAtPosition } from './goToSymbol.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { IsWebContext } from '../../../../platform/contextkey/common/contextkeys.js';\nMenuRegistry.appendMenuItem(MenuId.EditorContext, {\n    submenu: MenuId.EditorContextPeek,\n    title: nls.localize('peek.submenu', \"Peek\"),\n    group: 'navigation',\n    order: 100\n});\nexport class SymbolNavigationAnchor {\n    static is(thing) {\n        if (!thing || typeof thing !== 'object') {\n            return false;\n        }\n        if (thing instanceof SymbolNavigationAnchor) {\n            return true;\n        }\n        if (corePosition.Position.isIPosition(thing.position) && thing.model) {\n            return true;\n        }\n        return false;\n    }\n    constructor(model, position) {\n        this.model = model;\n        this.position = position;\n    }\n}\nexport class SymbolNavigationAction extends EditorAction2 {\n    static all() {\n        return SymbolNavigationAction._allSymbolNavigationCommands.values();\n    }\n    static _patchConfig(opts) {\n        const result = { ...opts, f1: true };\n        // patch context menu when clause\n        if (result.menu) {\n            for (const item of Iterable.wrap(result.menu)) {\n                if (item.id === MenuId.EditorContext || item.id === MenuId.EditorContextPeek) {\n                    item.when = ContextKeyExpr.and(opts.precondition, item.when);\n                }\n            }\n        }\n        return result;\n    }\n    constructor(configuration, opts) {\n        super(SymbolNavigationAction._patchConfig(opts));\n        this.configuration = configuration;\n        SymbolNavigationAction._allSymbolNavigationCommands.set(opts.id, this);\n    }\n    runEditorCommand(accessor, editor, arg, range) {\n        if (!editor.hasModel()) {\n            return Promise.resolve(undefined);\n        }\n        const notificationService = accessor.get(INotificationService);\n        const editorService = accessor.get(ICodeEditorService);\n        const progressService = accessor.get(IEditorProgressService);\n        const symbolNavService = accessor.get(ISymbolNavigationService);\n        const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n        const instaService = accessor.get(IInstantiationService);\n        const model = editor.getModel();\n        const position = editor.getPosition();\n        const anchor = SymbolNavigationAnchor.is(arg) ? arg : new SymbolNavigationAnchor(model, position);\n        const cts = new EditorStateCancellationTokenSource(editor, 1 /* CodeEditorStateFlag.Value */ | 4 /* CodeEditorStateFlag.Position */);\n        const promise = raceCancellation(this._getLocationModel(languageFeaturesService, anchor.model, anchor.position, cts.token), cts.token).then(async (references) => {\n            var _j;\n            if (!references || cts.token.isCancellationRequested) {\n                return;\n            }\n            alert(references.ariaMessage);\n            let altAction;\n            if (references.referenceAt(model.uri, position)) {\n                const altActionId = this._getAlternativeCommand(editor);\n                if (!SymbolNavigationAction._activeAlternativeCommands.has(altActionId) && SymbolNavigationAction._allSymbolNavigationCommands.has(altActionId)) {\n                    altAction = SymbolNavigationAction._allSymbolNavigationCommands.get(altActionId);\n                }\n            }\n            const referenceCount = references.references.length;\n            if (referenceCount === 0) {\n                // no result -> show message\n                if (!this.configuration.muteMessage) {\n                    const info = model.getWordAtPosition(position);\n                    (_j = MessageController.get(editor)) === null || _j === void 0 ? void 0 : _j.showMessage(this._getNoResultFoundMessage(info), position);\n                }\n            }\n            else if (referenceCount === 1 && altAction) {\n                // already at the only result, run alternative\n                SymbolNavigationAction._activeAlternativeCommands.add(this.desc.id);\n                instaService.invokeFunction((accessor) => altAction.runEditorCommand(accessor, editor, arg, range).finally(() => {\n                    SymbolNavigationAction._activeAlternativeCommands.delete(this.desc.id);\n                }));\n            }\n            else {\n                // normal results handling\n                return this._onResult(editorService, symbolNavService, editor, references, range);\n            }\n        }, (err) => {\n            // report an error\n            notificationService.error(err);\n        }).finally(() => {\n            cts.dispose();\n        });\n        progressService.showWhile(promise, 250);\n        return promise;\n    }\n    async _onResult(editorService, symbolNavService, editor, model, range) {\n        const gotoLocation = this._getGoToPreference(editor);\n        if (!(editor instanceof EmbeddedCodeEditorWidget) && (this.configuration.openInPeek || (gotoLocation === 'peek' && model.references.length > 1))) {\n            this._openInPeek(editor, model, range);\n        }\n        else {\n            const next = model.firstReference();\n            const peek = model.references.length > 1 && gotoLocation === 'gotoAndPeek';\n            const targetEditor = await this._openReference(editor, editorService, next, this.configuration.openToSide, !peek);\n            if (peek && targetEditor) {\n                this._openInPeek(targetEditor, model, range);\n            }\n            else {\n                model.dispose();\n            }\n            // keep remaining locations around when using\n            // 'goto'-mode\n            if (gotoLocation === 'goto') {\n                symbolNavService.put(next);\n            }\n        }\n    }\n    async _openReference(editor, editorService, reference, sideBySide, highlight) {\n        // range is the target-selection-range when we have one\n        // and the fallback is the 'full' range\n        let range = undefined;\n        if (isLocationLink(reference)) {\n            range = reference.targetSelectionRange;\n        }\n        if (!range) {\n            range = reference.range;\n        }\n        if (!range) {\n            return undefined;\n        }\n        const targetEditor = await editorService.openCodeEditor({\n            resource: reference.uri,\n            options: {\n                selection: Range.collapseToStart(range),\n                selectionRevealType: 3 /* TextEditorSelectionRevealType.NearTopIfOutsideViewport */,\n                selectionSource: \"code.jump\" /* TextEditorSelectionSource.JUMP */\n            }\n        }, editor, sideBySide);\n        if (!targetEditor) {\n            return undefined;\n        }\n        if (highlight) {\n            const modelNow = targetEditor.getModel();\n            const decorations = targetEditor.createDecorationsCollection([{ range, options: { description: 'symbol-navigate-action-highlight', className: 'symbolHighlight' } }]);\n            setTimeout(() => {\n                if (targetEditor.getModel() === modelNow) {\n                    decorations.clear();\n                }\n            }, 350);\n        }\n        return targetEditor;\n    }\n    _openInPeek(target, model, range) {\n        const controller = ReferencesController.get(target);\n        if (controller && target.hasModel()) {\n            controller.toggleWidget(range !== null && range !== void 0 ? range : target.getSelection(), createCancelablePromise(_ => Promise.resolve(model)), this.configuration.openInPeek);\n        }\n        else {\n            model.dispose();\n        }\n    }\n}\nSymbolNavigationAction._allSymbolNavigationCommands = new Map();\nSymbolNavigationAction._activeAlternativeCommands = new Set();\n//#region --- DEFINITION\nexport class DefinitionAction extends SymbolNavigationAction {\n    async _getLocationModel(languageFeaturesService, model, position, token) {\n        return new ReferencesModel(await getDefinitionsAtPosition(languageFeaturesService.definitionProvider, model, position, token), nls.localize('def.title', 'Definitions'));\n    }\n    _getNoResultFoundMessage(info) {\n        return info && info.word\n            ? nls.localize('noResultWord', \"No definition found for '{0}'\", info.word)\n            : nls.localize('generic.noResults', \"No definition found\");\n    }\n    _getAlternativeCommand(editor) {\n        return editor.getOption(58 /* EditorOption.gotoLocation */).alternativeDefinitionCommand;\n    }\n    _getGoToPreference(editor) {\n        return editor.getOption(58 /* EditorOption.gotoLocation */).multipleDefinitions;\n    }\n}\nregisterAction2((_a = class GoToDefinitionAction extends DefinitionAction {\n        constructor() {\n            super({\n                openToSide: false,\n                openInPeek: false,\n                muteMessage: false\n            }, {\n                id: _a.id,\n                title: {\n                    ...nls.localize2('actions.goToDecl.label', \"Go to Definition\"),\n                    mnemonicTitle: nls.localize({ key: 'miGotoDefinition', comment: ['&& denotes a mnemonic'] }, \"Go to &&Definition\"),\n                },\n                precondition: EditorContextKeys.hasDefinitionProvider,\n                keybinding: [{\n                        when: EditorContextKeys.editorTextFocus,\n                        primary: 70 /* KeyCode.F12 */,\n                        weight: 100 /* KeybindingWeight.EditorContrib */\n                    }, {\n                        when: ContextKeyExpr.and(EditorContextKeys.editorTextFocus, IsWebContext),\n                        primary: 2048 /* KeyMod.CtrlCmd */ | 70 /* KeyCode.F12 */,\n                        weight: 100 /* KeybindingWeight.EditorContrib */\n                    }],\n                menu: [{\n                        id: MenuId.EditorContext,\n                        group: 'navigation',\n                        order: 1.1\n                    }, {\n                        id: MenuId.MenubarGoMenu,\n                        precondition: null,\n                        group: '4_symbol_nav',\n                        order: 2,\n                    }]\n            });\n            CommandsRegistry.registerCommandAlias('editor.action.goToDeclaration', _a.id);\n        }\n    },\n    _a.id = 'editor.action.revealDefinition',\n    _a));\nregisterAction2((_b = class OpenDefinitionToSideAction extends DefinitionAction {\n        constructor() {\n            super({\n                openToSide: true,\n                openInPeek: false,\n                muteMessage: false\n            }, {\n                id: _b.id,\n                title: nls.localize2('actions.goToDeclToSide.label', \"Open Definition to the Side\"),\n                precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, EditorContextKeys.isInEmbeddedEditor.toNegated()),\n                keybinding: [{\n                        when: EditorContextKeys.editorTextFocus,\n                        primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 70 /* KeyCode.F12 */),\n                        weight: 100 /* KeybindingWeight.EditorContrib */\n                    }, {\n                        when: ContextKeyExpr.and(EditorContextKeys.editorTextFocus, IsWebContext),\n                        primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 70 /* KeyCode.F12 */),\n                        weight: 100 /* KeybindingWeight.EditorContrib */\n                    }]\n            });\n            CommandsRegistry.registerCommandAlias('editor.action.openDeclarationToTheSide', _b.id);\n        }\n    },\n    _b.id = 'editor.action.revealDefinitionAside',\n    _b));\nregisterAction2((_c = class PeekDefinitionAction extends DefinitionAction {\n        constructor() {\n            super({\n                openToSide: false,\n                openInPeek: true,\n                muteMessage: false\n            }, {\n                id: _c.id,\n                title: nls.localize2('actions.previewDecl.label', \"Peek Definition\"),\n                precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInEmbeddedEditor.toNegated()),\n                keybinding: {\n                    when: EditorContextKeys.editorTextFocus,\n                    primary: 512 /* KeyMod.Alt */ | 70 /* KeyCode.F12 */,\n                    linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 68 /* KeyCode.F10 */ },\n                    weight: 100 /* KeybindingWeight.EditorContrib */\n                },\n                menu: {\n                    id: MenuId.EditorContextPeek,\n                    group: 'peek',\n                    order: 2\n                }\n            });\n            CommandsRegistry.registerCommandAlias('editor.action.previewDeclaration', _c.id);\n        }\n    },\n    _c.id = 'editor.action.peekDefinition',\n    _c));\n//#endregion\n//#region --- DECLARATION\nclass DeclarationAction extends SymbolNavigationAction {\n    async _getLocationModel(languageFeaturesService, model, position, token) {\n        return new ReferencesModel(await getDeclarationsAtPosition(languageFeaturesService.declarationProvider, model, position, token), nls.localize('decl.title', 'Declarations'));\n    }\n    _getNoResultFoundMessage(info) {\n        return info && info.word\n            ? nls.localize('decl.noResultWord', \"No declaration found for '{0}'\", info.word)\n            : nls.localize('decl.generic.noResults', \"No declaration found\");\n    }\n    _getAlternativeCommand(editor) {\n        return editor.getOption(58 /* EditorOption.gotoLocation */).alternativeDeclarationCommand;\n    }\n    _getGoToPreference(editor) {\n        return editor.getOption(58 /* EditorOption.gotoLocation */).multipleDeclarations;\n    }\n}\nregisterAction2((_d = class GoToDeclarationAction extends DeclarationAction {\n        constructor() {\n            super({\n                openToSide: false,\n                openInPeek: false,\n                muteMessage: false\n            }, {\n                id: _d.id,\n                title: {\n                    ...nls.localize2('actions.goToDeclaration.label', \"Go to Declaration\"),\n                    mnemonicTitle: nls.localize({ key: 'miGotoDeclaration', comment: ['&& denotes a mnemonic'] }, \"Go to &&Declaration\"),\n                },\n                precondition: ContextKeyExpr.and(EditorContextKeys.hasDeclarationProvider, EditorContextKeys.isInEmbeddedEditor.toNegated()),\n                menu: [{\n                        id: MenuId.EditorContext,\n                        group: 'navigation',\n                        order: 1.3\n                    }, {\n                        id: MenuId.MenubarGoMenu,\n                        precondition: null,\n                        group: '4_symbol_nav',\n                        order: 3,\n                    }],\n            });\n        }\n        _getNoResultFoundMessage(info) {\n            return info && info.word\n                ? nls.localize('decl.noResultWord', \"No declaration found for '{0}'\", info.word)\n                : nls.localize('decl.generic.noResults', \"No declaration found\");\n        }\n    },\n    _d.id = 'editor.action.revealDeclaration',\n    _d));\nregisterAction2(class PeekDeclarationAction extends DeclarationAction {\n    constructor() {\n        super({\n            openToSide: false,\n            openInPeek: true,\n            muteMessage: false\n        }, {\n            id: 'editor.action.peekDeclaration',\n            title: nls.localize2('actions.peekDecl.label', \"Peek Declaration\"),\n            precondition: ContextKeyExpr.and(EditorContextKeys.hasDeclarationProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInEmbeddedEditor.toNegated()),\n            menu: {\n                id: MenuId.EditorContextPeek,\n                group: 'peek',\n                order: 3\n            }\n        });\n    }\n});\n//#endregion\n//#region --- TYPE DEFINITION\nclass TypeDefinitionAction extends SymbolNavigationAction {\n    async _getLocationModel(languageFeaturesService, model, position, token) {\n        return new ReferencesModel(await getTypeDefinitionsAtPosition(languageFeaturesService.typeDefinitionProvider, model, position, token), nls.localize('typedef.title', 'Type Definitions'));\n    }\n    _getNoResultFoundMessage(info) {\n        return info && info.word\n            ? nls.localize('goToTypeDefinition.noResultWord', \"No type definition found for '{0}'\", info.word)\n            : nls.localize('goToTypeDefinition.generic.noResults', \"No type definition found\");\n    }\n    _getAlternativeCommand(editor) {\n        return editor.getOption(58 /* EditorOption.gotoLocation */).alternativeTypeDefinitionCommand;\n    }\n    _getGoToPreference(editor) {\n        return editor.getOption(58 /* EditorOption.gotoLocation */).multipleTypeDefinitions;\n    }\n}\nregisterAction2((_e = class GoToTypeDefinitionAction extends TypeDefinitionAction {\n        constructor() {\n            super({\n                openToSide: false,\n                openInPeek: false,\n                muteMessage: false\n            }, {\n                id: _e.ID,\n                title: {\n                    ...nls.localize2('actions.goToTypeDefinition.label', \"Go to Type Definition\"),\n                    mnemonicTitle: nls.localize({ key: 'miGotoTypeDefinition', comment: ['&& denotes a mnemonic'] }, \"Go to &&Type Definition\"),\n                },\n                precondition: EditorContextKeys.hasTypeDefinitionProvider,\n                keybinding: {\n                    when: EditorContextKeys.editorTextFocus,\n                    primary: 0,\n                    weight: 100 /* KeybindingWeight.EditorContrib */\n                },\n                menu: [{\n                        id: MenuId.EditorContext,\n                        group: 'navigation',\n                        order: 1.4\n                    }, {\n                        id: MenuId.MenubarGoMenu,\n                        precondition: null,\n                        group: '4_symbol_nav',\n                        order: 3,\n                    }]\n            });\n        }\n    },\n    _e.ID = 'editor.action.goToTypeDefinition',\n    _e));\nregisterAction2((_f = class PeekTypeDefinitionAction extends TypeDefinitionAction {\n        constructor() {\n            super({\n                openToSide: false,\n                openInPeek: true,\n                muteMessage: false\n            }, {\n                id: _f.ID,\n                title: nls.localize2('actions.peekTypeDefinition.label', \"Peek Type Definition\"),\n                precondition: ContextKeyExpr.and(EditorContextKeys.hasTypeDefinitionProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInEmbeddedEditor.toNegated()),\n                menu: {\n                    id: MenuId.EditorContextPeek,\n                    group: 'peek',\n                    order: 4\n                }\n            });\n        }\n    },\n    _f.ID = 'editor.action.peekTypeDefinition',\n    _f));\n//#endregion\n//#region --- IMPLEMENTATION\nclass ImplementationAction extends SymbolNavigationAction {\n    async _getLocationModel(languageFeaturesService, model, position, token) {\n        return new ReferencesModel(await getImplementationsAtPosition(languageFeaturesService.implementationProvider, model, position, token), nls.localize('impl.title', 'Implementations'));\n    }\n    _getNoResultFoundMessage(info) {\n        return info && info.word\n            ? nls.localize('goToImplementation.noResultWord', \"No implementation found for '{0}'\", info.word)\n            : nls.localize('goToImplementation.generic.noResults', \"No implementation found\");\n    }\n    _getAlternativeCommand(editor) {\n        return editor.getOption(58 /* EditorOption.gotoLocation */).alternativeImplementationCommand;\n    }\n    _getGoToPreference(editor) {\n        return editor.getOption(58 /* EditorOption.gotoLocation */).multipleImplementations;\n    }\n}\nregisterAction2((_g = class GoToImplementationAction extends ImplementationAction {\n        constructor() {\n            super({\n                openToSide: false,\n                openInPeek: false,\n                muteMessage: false\n            }, {\n                id: _g.ID,\n                title: {\n                    ...nls.localize2('actions.goToImplementation.label', \"Go to Implementations\"),\n                    mnemonicTitle: nls.localize({ key: 'miGotoImplementation', comment: ['&& denotes a mnemonic'] }, \"Go to &&Implementations\"),\n                },\n                precondition: EditorContextKeys.hasImplementationProvider,\n                keybinding: {\n                    when: EditorContextKeys.editorTextFocus,\n                    primary: 2048 /* KeyMod.CtrlCmd */ | 70 /* KeyCode.F12 */,\n                    weight: 100 /* KeybindingWeight.EditorContrib */\n                },\n                menu: [{\n                        id: MenuId.EditorContext,\n                        group: 'navigation',\n                        order: 1.45\n                    }, {\n                        id: MenuId.MenubarGoMenu,\n                        precondition: null,\n                        group: '4_symbol_nav',\n                        order: 4,\n                    }]\n            });\n        }\n    },\n    _g.ID = 'editor.action.goToImplementation',\n    _g));\nregisterAction2((_h = class PeekImplementationAction extends ImplementationAction {\n        constructor() {\n            super({\n                openToSide: false,\n                openInPeek: true,\n                muteMessage: false\n            }, {\n                id: _h.ID,\n                title: nls.localize2('actions.peekImplementation.label', \"Peek Implementations\"),\n                precondition: ContextKeyExpr.and(EditorContextKeys.hasImplementationProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInEmbeddedEditor.toNegated()),\n                keybinding: {\n                    when: EditorContextKeys.editorTextFocus,\n                    primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 70 /* KeyCode.F12 */,\n                    weight: 100 /* KeybindingWeight.EditorContrib */\n                },\n                menu: {\n                    id: MenuId.EditorContextPeek,\n                    group: 'peek',\n                    order: 5\n                }\n            });\n        }\n    },\n    _h.ID = 'editor.action.peekImplementation',\n    _h));\n//#endregion\n//#region --- REFERENCES\nclass ReferencesAction extends SymbolNavigationAction {\n    _getNoResultFoundMessage(info) {\n        return info\n            ? nls.localize('references.no', \"No references found for '{0}'\", info.word)\n            : nls.localize('references.noGeneric', \"No references found\");\n    }\n    _getAlternativeCommand(editor) {\n        return editor.getOption(58 /* EditorOption.gotoLocation */).alternativeReferenceCommand;\n    }\n    _getGoToPreference(editor) {\n        return editor.getOption(58 /* EditorOption.gotoLocation */).multipleReferences;\n    }\n}\nregisterAction2(class GoToReferencesAction extends ReferencesAction {\n    constructor() {\n        super({\n            openToSide: false,\n            openInPeek: false,\n            muteMessage: false\n        }, {\n            id: 'editor.action.goToReferences',\n            title: {\n                ...nls.localize2('goToReferences.label', \"Go to References\"),\n                mnemonicTitle: nls.localize({ key: 'miGotoReference', comment: ['&& denotes a mnemonic'] }, \"Go to &&References\"),\n            },\n            precondition: ContextKeyExpr.and(EditorContextKeys.hasReferenceProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInEmbeddedEditor.toNegated()),\n            keybinding: {\n                when: EditorContextKeys.editorTextFocus,\n                primary: 1024 /* KeyMod.Shift */ | 70 /* KeyCode.F12 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menu: [{\n                    id: MenuId.EditorContext,\n                    group: 'navigation',\n                    order: 1.45\n                }, {\n                    id: MenuId.MenubarGoMenu,\n                    precondition: null,\n                    group: '4_symbol_nav',\n                    order: 5,\n                }]\n        });\n    }\n    async _getLocationModel(languageFeaturesService, model, position, token) {\n        return new ReferencesModel(await getReferencesAtPosition(languageFeaturesService.referenceProvider, model, position, true, token), nls.localize('ref.title', 'References'));\n    }\n});\nregisterAction2(class PeekReferencesAction extends ReferencesAction {\n    constructor() {\n        super({\n            openToSide: false,\n            openInPeek: true,\n            muteMessage: false\n        }, {\n            id: 'editor.action.referenceSearch.trigger',\n            title: nls.localize2('references.action.label', \"Peek References\"),\n            precondition: ContextKeyExpr.and(EditorContextKeys.hasReferenceProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInEmbeddedEditor.toNegated()),\n            menu: {\n                id: MenuId.EditorContextPeek,\n                group: 'peek',\n                order: 6\n            }\n        });\n    }\n    async _getLocationModel(languageFeaturesService, model, position, token) {\n        return new ReferencesModel(await getReferencesAtPosition(languageFeaturesService.referenceProvider, model, position, false, token), nls.localize('ref.title', 'References'));\n    }\n});\n//#endregion\n//#region --- GENERIC goto symbols command\nclass GenericGoToLocationAction extends SymbolNavigationAction {\n    constructor(config, _references, _gotoMultipleBehaviour) {\n        super(config, {\n            id: 'editor.action.goToLocation',\n            title: nls.localize2('label.generic', \"Go to Any Symbol\"),\n            precondition: ContextKeyExpr.and(PeekContext.notInPeekEditor, EditorContextKeys.isInEmbeddedEditor.toNegated()),\n        });\n        this._references = _references;\n        this._gotoMultipleBehaviour = _gotoMultipleBehaviour;\n    }\n    async _getLocationModel(languageFeaturesService, _model, _position, _token) {\n        return new ReferencesModel(this._references, nls.localize('generic.title', 'Locations'));\n    }\n    _getNoResultFoundMessage(info) {\n        return info && nls.localize('generic.noResult', \"No results for '{0}'\", info.word) || '';\n    }\n    _getGoToPreference(editor) {\n        var _j;\n        return (_j = this._gotoMultipleBehaviour) !== null && _j !== void 0 ? _j : editor.getOption(58 /* EditorOption.gotoLocation */).multipleReferences;\n    }\n    _getAlternativeCommand() { return ''; }\n}\nCommandsRegistry.registerCommand({\n    id: 'editor.action.goToLocations',\n    metadata: {\n        description: 'Go to locations from a position in a file',\n        args: [\n            { name: 'uri', description: 'The text document in which to start', constraint: URI },\n            { name: 'position', description: 'The position at which to start', constraint: corePosition.Position.isIPosition },\n            { name: 'locations', description: 'An array of locations.', constraint: Array },\n            { name: 'multiple', description: 'Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`' },\n            { name: 'noResultsMessage', description: 'Human readable message that shows when locations is empty.' },\n        ]\n    },\n    handler: async (accessor, resource, position, references, multiple, noResultsMessage, openInPeek) => {\n        assertType(URI.isUri(resource));\n        assertType(corePosition.Position.isIPosition(position));\n        assertType(Array.isArray(references));\n        assertType(typeof multiple === 'undefined' || typeof multiple === 'string');\n        assertType(typeof openInPeek === 'undefined' || typeof openInPeek === 'boolean');\n        const editorService = accessor.get(ICodeEditorService);\n        const editor = await editorService.openCodeEditor({ resource }, editorService.getFocusedCodeEditor());\n        if (isCodeEditor(editor)) {\n            editor.setPosition(position);\n            editor.revealPositionInCenterIfOutsideViewport(position, 0 /* ScrollType.Smooth */);\n            return editor.invokeWithinContext(accessor => {\n                const command = new class extends GenericGoToLocationAction {\n                    _getNoResultFoundMessage(info) {\n                        return noResultsMessage || super._getNoResultFoundMessage(info);\n                    }\n                }({\n                    muteMessage: !Boolean(noResultsMessage),\n                    openInPeek: Boolean(openInPeek),\n                    openToSide: false\n                }, references, multiple);\n                accessor.get(IInstantiationService).invokeFunction(command.run.bind(command), editor);\n            });\n        }\n    }\n});\nCommandsRegistry.registerCommand({\n    id: 'editor.action.peekLocations',\n    metadata: {\n        description: 'Peek locations from a position in a file',\n        args: [\n            { name: 'uri', description: 'The text document in which to start', constraint: URI },\n            { name: 'position', description: 'The position at which to start', constraint: corePosition.Position.isIPosition },\n            { name: 'locations', description: 'An array of locations.', constraint: Array },\n            { name: 'multiple', description: 'Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto`' },\n        ]\n    },\n    handler: async (accessor, resource, position, references, multiple) => {\n        accessor.get(ICommandService).executeCommand('editor.action.goToLocations', resource, position, references, multiple, undefined, true);\n    }\n});\n//#endregion\n//#region --- REFERENCE search special commands\nCommandsRegistry.registerCommand({\n    id: 'editor.action.findReferences',\n    handler: (accessor, resource, position) => {\n        assertType(URI.isUri(resource));\n        assertType(corePosition.Position.isIPosition(position));\n        const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n        const codeEditorService = accessor.get(ICodeEditorService);\n        return codeEditorService.openCodeEditor({ resource }, codeEditorService.getFocusedCodeEditor()).then(control => {\n            if (!isCodeEditor(control) || !control.hasModel()) {\n                return undefined;\n            }\n            const controller = ReferencesController.get(control);\n            if (!controller) {\n                return undefined;\n            }\n            const references = createCancelablePromise(token => getReferencesAtPosition(languageFeaturesService.referenceProvider, control.getModel(), corePosition.Position.lift(position), false, token).then(references => new ReferencesModel(references, nls.localize('ref.title', 'References'))));\n            const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\n            return Promise.resolve(controller.toggleWidget(range, references, false));\n        });\n    }\n});\n// use NEW command\nCommandsRegistry.registerCommandAlias('editor.action.showReferences', 'editor.action.peekLocations');\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 *--------------------------------------------------------------------------------------------*/\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 objects from '../../../../base/common/objects.js';\nimport { ICodeEditorService } from '../../services/codeEditorService.js';\nimport { CodeEditorWidget } from './codeEditorWidget.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nlet EmbeddedCodeEditorWidget = class EmbeddedCodeEditorWidget extends CodeEditorWidget {\n    constructor(domElement, options, codeEditorWidgetOptions, parentEditor, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService, languageConfigurationService, languageFeaturesService) {\n        super(domElement, { ...parentEditor.getRawOptions(), overflowWidgetsDomNode: parentEditor.getOverflowWidgetsDomNode() }, codeEditorWidgetOptions, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService, languageConfigurationService, languageFeaturesService);\n        this._parentEditor = parentEditor;\n        this._overwriteOptions = options;\n        // Overwrite parent's options\n        super.updateOptions(this._overwriteOptions);\n        this._register(parentEditor.onDidChangeConfiguration((e) => this._onParentConfigurationChanged(e)));\n    }\n    getParentEditor() {\n        return this._parentEditor;\n    }\n    _onParentConfigurationChanged(e) {\n        super.updateOptions(this._parentEditor.getRawOptions());\n        super.updateOptions(this._overwriteOptions);\n    }\n    updateOptions(newOptions) {\n        objects.mixin(this._overwriteOptions, newOptions, true);\n        super.updateOptions(this._overwriteOptions);\n    }\n};\nEmbeddedCodeEditorWidget = __decorate([\n    __param(4, IInstantiationService),\n    __param(5, ICodeEditorService),\n    __param(6, ICommandService),\n    __param(7, IContextKeyService),\n    __param(8, IThemeService),\n    __param(9, INotificationService),\n    __param(10, IAccessibilityService),\n    __param(11, ILanguageConfigurationService),\n    __param(12, ILanguageFeaturesService)\n], EmbeddedCodeEditorWidget);\nexport { EmbeddedCodeEditorWidget };\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 ReferencesController_1;\nimport { createCancelablePromise } from '../../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../../base/common/errors.js';\nimport { KeyChord } from '../../../../../base/common/keyCodes.js';\nimport { DisposableStore } from '../../../../../base/common/lifecycle.js';\nimport { ICodeEditorService } from '../../../../browser/services/codeEditorService.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { getOuterEditor, PeekContext } from '../../../peekView/browser/peekView.js';\nimport * as nls from '../../../../../nls.js';\nimport { CommandsRegistry } from '../../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { KeybindingsRegistry } from '../../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { IListService, WorkbenchListFocusContextKey, WorkbenchTreeElementCanCollapse, WorkbenchTreeElementCanExpand } from '../../../../../platform/list/browser/listService.js';\nimport { INotificationService } from '../../../../../platform/notification/common/notification.js';\nimport { IStorageService } from '../../../../../platform/storage/common/storage.js';\nimport { OneReference } from '../referencesModel.js';\nimport { LayoutData, ReferenceWidget } from './referencesWidget.js';\nimport { EditorContextKeys } from '../../../../common/editorContextKeys.js';\nimport { InputFocusedContext } from '../../../../../platform/contextkey/common/contextkeys.js';\nexport const ctxReferenceSearchVisible = new RawContextKey('referenceSearchVisible', false, nls.localize('referenceSearchVisible', \"Whether reference peek is visible, like 'Peek References' or 'Peek Definition'\"));\nlet ReferencesController = ReferencesController_1 = class ReferencesController {\n    static get(editor) {\n        return editor.getContribution(ReferencesController_1.ID);\n    }\n    constructor(_defaultTreeKeyboardSupport, _editor, contextKeyService, _editorService, _notificationService, _instantiationService, _storageService, _configurationService) {\n        this._defaultTreeKeyboardSupport = _defaultTreeKeyboardSupport;\n        this._editor = _editor;\n        this._editorService = _editorService;\n        this._notificationService = _notificationService;\n        this._instantiationService = _instantiationService;\n        this._storageService = _storageService;\n        this._configurationService = _configurationService;\n        this._disposables = new DisposableStore();\n        this._requestIdPool = 0;\n        this._ignoreModelChangeEvent = false;\n        this._referenceSearchVisible = ctxReferenceSearchVisible.bindTo(contextKeyService);\n    }\n    dispose() {\n        var _a, _b;\n        this._referenceSearchVisible.reset();\n        this._disposables.dispose();\n        (_a = this._widget) === null || _a === void 0 ? void 0 : _a.dispose();\n        (_b = this._model) === null || _b === void 0 ? void 0 : _b.dispose();\n        this._widget = undefined;\n        this._model = undefined;\n    }\n    toggleWidget(range, modelPromise, peekMode) {\n        // close current widget and return early is position didn't change\n        let widgetPosition;\n        if (this._widget) {\n            widgetPosition = this._widget.position;\n        }\n        this.closeWidget();\n        if (!!widgetPosition && range.containsPosition(widgetPosition)) {\n            return;\n        }\n        this._peekMode = peekMode;\n        this._referenceSearchVisible.set(true);\n        // close the widget on model/mode changes\n        this._disposables.add(this._editor.onDidChangeModelLanguage(() => { this.closeWidget(); }));\n        this._disposables.add(this._editor.onDidChangeModel(() => {\n            if (!this._ignoreModelChangeEvent) {\n                this.closeWidget();\n            }\n        }));\n        const storageKey = 'peekViewLayout';\n        const data = LayoutData.fromJSON(this._storageService.get(storageKey, 0 /* StorageScope.PROFILE */, '{}'));\n        this._widget = this._instantiationService.createInstance(ReferenceWidget, this._editor, this._defaultTreeKeyboardSupport, data);\n        this._widget.setTitle(nls.localize('labelLoading', \"Loading...\"));\n        this._widget.show(range);\n        this._disposables.add(this._widget.onDidClose(() => {\n            modelPromise.cancel();\n            if (this._widget) {\n                this._storageService.store(storageKey, JSON.stringify(this._widget.layoutData), 0 /* StorageScope.PROFILE */, 1 /* StorageTarget.MACHINE */);\n                this._widget = undefined;\n            }\n            this.closeWidget();\n        }));\n        this._disposables.add(this._widget.onDidSelectReference(event => {\n            const { element, kind } = event;\n            if (!element) {\n                return;\n            }\n            switch (kind) {\n                case 'open':\n                    if (event.source !== 'editor' || !this._configurationService.getValue('editor.stablePeek')) {\n                        // when stable peek is configured we don't close\n                        // the peek window on selecting the editor\n                        this.openReference(element, false, false);\n                    }\n                    break;\n                case 'side':\n                    this.openReference(element, true, false);\n                    break;\n                case 'goto':\n                    if (peekMode) {\n                        this._gotoReference(element, true);\n                    }\n                    else {\n                        this.openReference(element, false, true);\n                    }\n                    break;\n            }\n        }));\n        const requestId = ++this._requestIdPool;\n        modelPromise.then(model => {\n            var _a;\n            // still current request? widget still open?\n            if (requestId !== this._requestIdPool || !this._widget) {\n                model.dispose();\n                return undefined;\n            }\n            (_a = this._model) === null || _a === void 0 ? void 0 : _a.dispose();\n            this._model = model;\n            // show widget\n            return this._widget.setModel(this._model).then(() => {\n                if (this._widget && this._model && this._editor.hasModel()) { // might have been closed\n                    // set title\n                    if (!this._model.isEmpty) {\n                        this._widget.setMetaTitle(nls.localize('metaTitle.N', \"{0} ({1})\", this._model.title, this._model.references.length));\n                    }\n                    else {\n                        this._widget.setMetaTitle('');\n                    }\n                    // set 'best' selection\n                    const uri = this._editor.getModel().uri;\n                    const pos = new Position(range.startLineNumber, range.startColumn);\n                    const selection = this._model.nearestReference(uri, pos);\n                    if (selection) {\n                        return this._widget.setSelection(selection).then(() => {\n                            if (this._widget && this._editor.getOption(87 /* EditorOption.peekWidgetDefaultFocus */) === 'editor') {\n                                this._widget.focusOnPreviewEditor();\n                            }\n                        });\n                    }\n                }\n                return undefined;\n            });\n        }, error => {\n            this._notificationService.error(error);\n        });\n    }\n    changeFocusBetweenPreviewAndReferences() {\n        if (!this._widget) {\n            // can be called while still resolving...\n            return;\n        }\n        if (this._widget.isPreviewEditorFocused()) {\n            this._widget.focusOnReferenceTree();\n        }\n        else {\n            this._widget.focusOnPreviewEditor();\n        }\n    }\n    async goToNextOrPreviousReference(fwd) {\n        if (!this._editor.hasModel() || !this._model || !this._widget) {\n            // can be called while still resolving...\n            return;\n        }\n        const currentPosition = this._widget.position;\n        if (!currentPosition) {\n            return;\n        }\n        const source = this._model.nearestReference(this._editor.getModel().uri, currentPosition);\n        if (!source) {\n            return;\n        }\n        const target = this._model.nextOrPreviousReference(source, fwd);\n        const editorFocus = this._editor.hasTextFocus();\n        const previewEditorFocus = this._widget.isPreviewEditorFocused();\n        await this._widget.setSelection(target);\n        await this._gotoReference(target, false);\n        if (editorFocus) {\n            this._editor.focus();\n        }\n        else if (this._widget && previewEditorFocus) {\n            this._widget.focusOnPreviewEditor();\n        }\n    }\n    async revealReference(reference) {\n        if (!this._editor.hasModel() || !this._model || !this._widget) {\n            // can be called while still resolving...\n            return;\n        }\n        await this._widget.revealReference(reference);\n    }\n    closeWidget(focusEditor = true) {\n        var _a, _b;\n        (_a = this._widget) === null || _a === void 0 ? void 0 : _a.dispose();\n        (_b = this._model) === null || _b === void 0 ? void 0 : _b.dispose();\n        this._referenceSearchVisible.reset();\n        this._disposables.clear();\n        this._widget = undefined;\n        this._model = undefined;\n        if (focusEditor) {\n            this._editor.focus();\n        }\n        this._requestIdPool += 1; // Cancel pending requests\n    }\n    _gotoReference(ref, pinned) {\n        var _a;\n        (_a = this._widget) === null || _a === void 0 ? void 0 : _a.hide();\n        this._ignoreModelChangeEvent = true;\n        const range = Range.lift(ref.range).collapseToStart();\n        return this._editorService.openCodeEditor({\n            resource: ref.uri,\n            options: { selection: range, selectionSource: \"code.jump\" /* TextEditorSelectionSource.JUMP */, pinned }\n        }, this._editor).then(openedEditor => {\n            var _a;\n            this._ignoreModelChangeEvent = false;\n            if (!openedEditor || !this._widget) {\n                // something went wrong...\n                this.closeWidget();\n                return;\n            }\n            if (this._editor === openedEditor) {\n                //\n                this._widget.show(range);\n                this._widget.focusOnReferenceTree();\n            }\n            else {\n                // we opened a different editor instance which means a different controller instance.\n                // therefore we stop with this controller and continue with the other\n                const other = ReferencesController_1.get(openedEditor);\n                const model = this._model.clone();\n                this.closeWidget();\n                openedEditor.focus();\n                other === null || other === void 0 ? void 0 : other.toggleWidget(range, createCancelablePromise(_ => Promise.resolve(model)), (_a = this._peekMode) !== null && _a !== void 0 ? _a : false);\n            }\n        }, (err) => {\n            this._ignoreModelChangeEvent = false;\n            onUnexpectedError(err);\n        });\n    }\n    openReference(ref, sideBySide, pinned) {\n        // clear stage\n        if (!sideBySide) {\n            this.closeWidget();\n        }\n        const { uri, range } = ref;\n        this._editorService.openCodeEditor({\n            resource: uri,\n            options: { selection: range, selectionSource: \"code.jump\" /* TextEditorSelectionSource.JUMP */, pinned }\n        }, this._editor, sideBySide);\n    }\n};\nReferencesController.ID = 'editor.contrib.referencesController';\nReferencesController = ReferencesController_1 = __decorate([\n    __param(2, IContextKeyService),\n    __param(3, ICodeEditorService),\n    __param(4, INotificationService),\n    __param(5, IInstantiationService),\n    __param(6, IStorageService),\n    __param(7, IConfigurationService)\n], ReferencesController);\nexport { ReferencesController };\nfunction withController(accessor, fn) {\n    const outerEditor = getOuterEditor(accessor);\n    if (!outerEditor) {\n        return;\n    }\n    const controller = ReferencesController.get(outerEditor);\n    if (controller) {\n        fn(controller);\n    }\n}\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n    id: 'togglePeekWidgetFocus',\n    weight: 100 /* KeybindingWeight.EditorContrib */,\n    primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 60 /* KeyCode.F2 */),\n    when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\n    handler(accessor) {\n        withController(accessor, controller => {\n            controller.changeFocusBetweenPreviewAndReferences();\n        });\n    }\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n    id: 'goToNextReference',\n    weight: 100 /* KeybindingWeight.EditorContrib */ - 10,\n    primary: 62 /* KeyCode.F4 */,\n    secondary: [70 /* KeyCode.F12 */],\n    when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\n    handler(accessor) {\n        withController(accessor, controller => {\n            controller.goToNextOrPreviousReference(true);\n        });\n    }\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n    id: 'goToPreviousReference',\n    weight: 100 /* KeybindingWeight.EditorContrib */ - 10,\n    primary: 1024 /* KeyMod.Shift */ | 62 /* KeyCode.F4 */,\n    secondary: [1024 /* KeyMod.Shift */ | 70 /* KeyCode.F12 */],\n    when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\n    handler(accessor) {\n        withController(accessor, controller => {\n            controller.goToNextOrPreviousReference(false);\n        });\n    }\n});\n// commands that aren't needed anymore because there is now ContextKeyExpr.OR\nCommandsRegistry.registerCommandAlias('goToNextReferenceFromEmbeddedEditor', 'goToNextReference');\nCommandsRegistry.registerCommandAlias('goToPreviousReferenceFromEmbeddedEditor', 'goToPreviousReference');\n// close\nCommandsRegistry.registerCommandAlias('closeReferenceSearchEditor', 'closeReferenceSearch');\nCommandsRegistry.registerCommand('closeReferenceSearch', accessor => withController(accessor, controller => controller.closeWidget()));\nKeybindingsRegistry.registerKeybindingRule({\n    id: 'closeReferenceSearch',\n    weight: 100 /* KeybindingWeight.EditorContrib */ - 101,\n    primary: 9 /* KeyCode.Escape */,\n    secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */],\n    when: ContextKeyExpr.and(PeekContext.inPeekEditor, ContextKeyExpr.not('config.editor.stablePeek'))\n});\nKeybindingsRegistry.registerKeybindingRule({\n    id: 'closeReferenceSearch',\n    weight: 200 /* KeybindingWeight.WorkbenchContrib */ + 50,\n    primary: 9 /* KeyCode.Escape */,\n    secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */],\n    when: ContextKeyExpr.and(ctxReferenceSearchVisible, ContextKeyExpr.not('config.editor.stablePeek'), ContextKeyExpr.or(EditorContextKeys.editorTextFocus, InputFocusedContext.negate()))\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n    id: 'revealReference',\n    weight: 200 /* KeybindingWeight.WorkbenchContrib */,\n    primary: 3 /* KeyCode.Enter */,\n    mac: {\n        primary: 3 /* KeyCode.Enter */,\n        secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */]\n    },\n    when: ContextKeyExpr.and(ctxReferenceSearchVisible, WorkbenchListFocusContextKey, WorkbenchTreeElementCanCollapse.negate(), WorkbenchTreeElementCanExpand.negate()),\n    handler(accessor) {\n        var _a;\n        const listService = accessor.get(IListService);\n        const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\n        if (Array.isArray(focus) && focus[0] instanceof OneReference) {\n            withController(accessor, controller => controller.revealReference(focus[0]));\n        }\n    }\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n    id: 'openReferenceToSide',\n    weight: 100 /* KeybindingWeight.EditorContrib */,\n    primary: 2048 /* KeyMod.CtrlCmd */ | 3 /* KeyCode.Enter */,\n    mac: {\n        primary: 256 /* KeyMod.WinCtrl */ | 3 /* KeyCode.Enter */\n    },\n    when: ContextKeyExpr.and(ctxReferenceSearchVisible, WorkbenchListFocusContextKey, WorkbenchTreeElementCanCollapse.negate(), WorkbenchTreeElementCanExpand.negate()),\n    handler(accessor) {\n        var _a;\n        const listService = accessor.get(IListService);\n        const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\n        if (Array.isArray(focus) && focus[0] instanceof OneReference) {\n            withController(accessor, controller => controller.openReference(focus[0], true, true));\n        }\n    }\n});\nCommandsRegistry.registerCommand('openReference', (accessor) => {\n    var _a;\n    const listService = accessor.get(IListService);\n    const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\n    if (Array.isArray(focus) && focus[0] instanceof OneReference) {\n        withController(accessor, controller => controller.openReference(focus[0], false, true));\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 * as dom from '../../../../base/browser/dom.js';\nimport { Sash } from '../../../../base/browser/ui/sash/sash.js';\nimport { Color, RGBA } from '../../../../base/common/color.js';\nimport { IdGenerator } from '../../../../base/common/idGenerator.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport * as objects from '../../../../base/common/objects.js';\nimport './zoneWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nconst defaultColor = new Color(new RGBA(0, 122, 204));\nconst defaultOptions = {\n    showArrow: true,\n    showFrame: true,\n    className: '',\n    frameColor: defaultColor,\n    arrowColor: defaultColor,\n    keepEditorSelection: false\n};\nconst WIDGET_ID = 'vs.editor.contrib.zoneWidget';\nclass ViewZoneDelegate {\n    constructor(domNode, afterLineNumber, afterColumn, heightInLines, onDomNodeTop, onComputedHeight, showInHiddenAreas, ordinal) {\n        this.id = ''; // A valid zone id should be greater than 0\n        this.domNode = domNode;\n        this.afterLineNumber = afterLineNumber;\n        this.afterColumn = afterColumn;\n        this.heightInLines = heightInLines;\n        this.showInHiddenAreas = showInHiddenAreas;\n        this.ordinal = ordinal;\n        this._onDomNodeTop = onDomNodeTop;\n        this._onComputedHeight = onComputedHeight;\n    }\n    onDomNodeTop(top) {\n        this._onDomNodeTop(top);\n    }\n    onComputedHeight(height) {\n        this._onComputedHeight(height);\n    }\n}\nexport class OverlayWidgetDelegate {\n    constructor(id, domNode) {\n        this._id = id;\n        this._domNode = domNode;\n    }\n    getId() {\n        return this._id;\n    }\n    getDomNode() {\n        return this._domNode;\n    }\n    getPosition() {\n        return null;\n    }\n}\nclass Arrow {\n    constructor(_editor) {\n        this._editor = _editor;\n        this._ruleName = Arrow._IdGenerator.nextId();\n        this._decorations = this._editor.createDecorationsCollection();\n        this._color = null;\n        this._height = -1;\n    }\n    dispose() {\n        this.hide();\n        dom.removeCSSRulesContainingSelector(this._ruleName);\n    }\n    set color(value) {\n        if (this._color !== value) {\n            this._color = value;\n            this._updateStyle();\n        }\n    }\n    set height(value) {\n        if (this._height !== value) {\n            this._height = value;\n            this._updateStyle();\n        }\n    }\n    _updateStyle() {\n        dom.removeCSSRulesContainingSelector(this._ruleName);\n        dom.createCSSRule(`.monaco-editor ${this._ruleName}`, `border-style: solid; border-color: transparent; border-bottom-color: ${this._color}; border-width: ${this._height}px; bottom: -${this._height}px !important; margin-left: -${this._height}px; `);\n    }\n    show(where) {\n        if (where.column === 1) {\n            // the arrow isn't pretty at column 1 and we need to push it out a little\n            where = { lineNumber: where.lineNumber, column: 2 };\n        }\n        this._decorations.set([{\n                range: Range.fromPositions(where),\n                options: {\n                    description: 'zone-widget-arrow',\n                    className: this._ruleName,\n                    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */\n                }\n            }]);\n    }\n    hide() {\n        this._decorations.clear();\n    }\n}\nArrow._IdGenerator = new IdGenerator('.arrow-decoration-');\nexport class ZoneWidget {\n    constructor(editor, options = {}) {\n        this._arrow = null;\n        this._overlayWidget = null;\n        this._resizeSash = null;\n        this._viewZone = null;\n        this._disposables = new DisposableStore();\n        this.container = null;\n        this._isShowing = false;\n        this.editor = editor;\n        this._positionMarkerId = this.editor.createDecorationsCollection();\n        this.options = objects.deepClone(options);\n        objects.mixin(this.options, defaultOptions, false);\n        this.domNode = document.createElement('div');\n        if (!this.options.isAccessible) {\n            this.domNode.setAttribute('aria-hidden', 'true');\n            this.domNode.setAttribute('role', 'presentation');\n        }\n        this._disposables.add(this.editor.onDidLayoutChange((info) => {\n            const width = this._getWidth(info);\n            this.domNode.style.width = width + 'px';\n            this.domNode.style.left = this._getLeft(info) + 'px';\n            this._onWidth(width);\n        }));\n    }\n    dispose() {\n        if (this._overlayWidget) {\n            this.editor.removeOverlayWidget(this._overlayWidget);\n            this._overlayWidget = null;\n        }\n        if (this._viewZone) {\n            this.editor.changeViewZones(accessor => {\n                if (this._viewZone) {\n                    accessor.removeZone(this._viewZone.id);\n                }\n                this._viewZone = null;\n            });\n        }\n        this._positionMarkerId.clear();\n        this._disposables.dispose();\n    }\n    create() {\n        this.domNode.classList.add('zone-widget');\n        if (this.options.className) {\n            this.domNode.classList.add(this.options.className);\n        }\n        this.container = document.createElement('div');\n        this.container.classList.add('zone-widget-container');\n        this.domNode.appendChild(this.container);\n        if (this.options.showArrow) {\n            this._arrow = new Arrow(this.editor);\n            this._disposables.add(this._arrow);\n        }\n        this._fillContainer(this.container);\n        this._initSash();\n        this._applyStyles();\n    }\n    style(styles) {\n        if (styles.frameColor) {\n            this.options.frameColor = styles.frameColor;\n        }\n        if (styles.arrowColor) {\n            this.options.arrowColor = styles.arrowColor;\n        }\n        this._applyStyles();\n    }\n    _applyStyles() {\n        if (this.container && this.options.frameColor) {\n            const frameColor = this.options.frameColor.toString();\n            this.container.style.borderTopColor = frameColor;\n            this.container.style.borderBottomColor = frameColor;\n        }\n        if (this._arrow && this.options.arrowColor) {\n            const arrowColor = this.options.arrowColor.toString();\n            this._arrow.color = arrowColor;\n        }\n    }\n    _getWidth(info) {\n        return info.width - info.minimap.minimapWidth - info.verticalScrollbarWidth;\n    }\n    _getLeft(info) {\n        // If minimap is to the left, we move beyond it\n        if (info.minimap.minimapWidth > 0 && info.minimap.minimapLeft === 0) {\n            return info.minimap.minimapWidth;\n        }\n        return 0;\n    }\n    _onViewZoneTop(top) {\n        this.domNode.style.top = top + 'px';\n    }\n    _onViewZoneHeight(height) {\n        var _a;\n        this.domNode.style.height = `${height}px`;\n        if (this.container) {\n            const containerHeight = height - this._decoratingElementsHeight();\n            this.container.style.height = `${containerHeight}px`;\n            const layoutInfo = this.editor.getLayoutInfo();\n            this._doLayout(containerHeight, this._getWidth(layoutInfo));\n        }\n        (_a = this._resizeSash) === null || _a === void 0 ? void 0 : _a.layout();\n    }\n    get position() {\n        const range = this._positionMarkerId.getRange(0);\n        if (!range) {\n            return undefined;\n        }\n        return range.getStartPosition();\n    }\n    show(rangeOrPos, heightInLines) {\n        const range = Range.isIRange(rangeOrPos) ? Range.lift(rangeOrPos) : Range.fromPositions(rangeOrPos);\n        this._isShowing = true;\n        this._showImpl(range, heightInLines);\n        this._isShowing = false;\n        this._positionMarkerId.set([{ range, options: ModelDecorationOptions.EMPTY }]);\n    }\n    hide() {\n        var _a;\n        if (this._viewZone) {\n            this.editor.changeViewZones(accessor => {\n                if (this._viewZone) {\n                    accessor.removeZone(this._viewZone.id);\n                }\n            });\n            this._viewZone = null;\n        }\n        if (this._overlayWidget) {\n            this.editor.removeOverlayWidget(this._overlayWidget);\n            this._overlayWidget = null;\n        }\n        (_a = this._arrow) === null || _a === void 0 ? void 0 : _a.hide();\n        this._positionMarkerId.clear();\n    }\n    _decoratingElementsHeight() {\n        const lineHeight = this.editor.getOption(67 /* EditorOption.lineHeight */);\n        let result = 0;\n        if (this.options.showArrow) {\n            const arrowHeight = Math.round(lineHeight / 3);\n            result += 2 * arrowHeight;\n        }\n        if (this.options.showFrame) {\n            const frameThickness = Math.round(lineHeight / 9);\n            result += 2 * frameThickness;\n        }\n        return result;\n    }\n    _showImpl(where, heightInLines) {\n        const position = where.getStartPosition();\n        const layoutInfo = this.editor.getLayoutInfo();\n        const width = this._getWidth(layoutInfo);\n        this.domNode.style.width = `${width}px`;\n        this.domNode.style.left = this._getLeft(layoutInfo) + 'px';\n        // Render the widget as zone (rendering) and widget (lifecycle)\n        const viewZoneDomNode = document.createElement('div');\n        viewZoneDomNode.style.overflow = 'hidden';\n        const lineHeight = this.editor.getOption(67 /* EditorOption.lineHeight */);\n        // adjust heightInLines to viewport\n        if (!this.options.allowUnlimitedHeight) {\n            const maxHeightInLines = Math.max(12, (this.editor.getLayoutInfo().height / lineHeight) * 0.8);\n            heightInLines = Math.min(heightInLines, maxHeightInLines);\n        }\n        let arrowHeight = 0;\n        let frameThickness = 0;\n        // Render the arrow one 1/3 of an editor line height\n        if (this._arrow && this.options.showArrow) {\n            arrowHeight = Math.round(lineHeight / 3);\n            this._arrow.height = arrowHeight;\n            this._arrow.show(position);\n        }\n        // Render the frame as 1/9 of an editor line height\n        if (this.options.showFrame) {\n            frameThickness = Math.round(lineHeight / 9);\n        }\n        // insert zone widget\n        this.editor.changeViewZones((accessor) => {\n            if (this._viewZone) {\n                accessor.removeZone(this._viewZone.id);\n            }\n            if (this._overlayWidget) {\n                this.editor.removeOverlayWidget(this._overlayWidget);\n                this._overlayWidget = null;\n            }\n            this.domNode.style.top = '-1000px';\n            this._viewZone = new ViewZoneDelegate(viewZoneDomNode, position.lineNumber, position.column, heightInLines, (top) => this._onViewZoneTop(top), (height) => this._onViewZoneHeight(height), this.options.showInHiddenAreas, this.options.ordinal);\n            this._viewZone.id = accessor.addZone(this._viewZone);\n            this._overlayWidget = new OverlayWidgetDelegate(WIDGET_ID + this._viewZone.id, this.domNode);\n            this.editor.addOverlayWidget(this._overlayWidget);\n        });\n        if (this.container && this.options.showFrame) {\n            const width = this.options.frameWidth ? this.options.frameWidth : frameThickness;\n            this.container.style.borderTopWidth = width + 'px';\n            this.container.style.borderBottomWidth = width + 'px';\n        }\n        const containerHeight = heightInLines * lineHeight - this._decoratingElementsHeight();\n        if (this.container) {\n            this.container.style.top = arrowHeight + 'px';\n            this.container.style.height = containerHeight + 'px';\n            this.container.style.overflow = 'hidden';\n        }\n        this._doLayout(containerHeight, width);\n        if (!this.options.keepEditorSelection) {\n            this.editor.setSelection(where);\n        }\n        const model = this.editor.getModel();\n        if (model) {\n            const range = model.validateRange(new Range(where.startLineNumber, 1, where.endLineNumber + 1, 1));\n            this.revealRange(range, range.startLineNumber === model.getLineCount());\n        }\n    }\n    revealRange(range, isLastLine) {\n        if (isLastLine) {\n            this.editor.revealLineNearTop(range.endLineNumber, 0 /* ScrollType.Smooth */);\n        }\n        else {\n            this.editor.revealRange(range, 0 /* ScrollType.Smooth */);\n        }\n    }\n    setCssClass(className, classToReplace) {\n        if (!this.container) {\n            return;\n        }\n        if (classToReplace) {\n            this.container.classList.remove(classToReplace);\n        }\n        this.container.classList.add(className);\n    }\n    _onWidth(widthInPixel) {\n        // implement in subclass\n    }\n    _doLayout(heightInPixel, widthInPixel) {\n        // implement in subclass\n    }\n    _relayout(newHeightInLines) {\n        if (this._viewZone && this._viewZone.heightInLines !== newHeightInLines) {\n            this.editor.changeViewZones(accessor => {\n                if (this._viewZone) {\n                    this._viewZone.heightInLines = newHeightInLines;\n                    accessor.layoutZone(this._viewZone.id);\n                }\n            });\n        }\n    }\n    // --- sash\n    _initSash() {\n        if (this._resizeSash) {\n            return;\n        }\n        this._resizeSash = this._disposables.add(new Sash(this.domNode, this, { orientation: 1 /* Orientation.HORIZONTAL */ }));\n        if (!this.options.isResizeable) {\n            this._resizeSash.state = 0 /* SashState.Disabled */;\n        }\n        let data;\n        this._disposables.add(this._resizeSash.onDidStart((e) => {\n            if (this._viewZone) {\n                data = {\n                    startY: e.startY,\n                    heightInLines: this._viewZone.heightInLines,\n                };\n            }\n        }));\n        this._disposables.add(this._resizeSash.onDidEnd(() => {\n            data = undefined;\n        }));\n        this._disposables.add(this._resizeSash.onDidChange((evt) => {\n            if (data) {\n                const lineDelta = (evt.currentY - data.startY) / this.editor.getOption(67 /* EditorOption.lineHeight */);\n                const roundedLineDelta = lineDelta < 0 ? Math.ceil(lineDelta) : Math.floor(lineDelta);\n                const newHeightInLines = data.heightInLines + roundedLineDelta;\n                if (newHeightInLines > 5 && newHeightInLines < 35) {\n                    this._relayout(newHeightInLines);\n                }\n            }\n        }));\n    }\n    getHorizontalSashLeft() {\n        return 0;\n    }\n    getHorizontalSashTop() {\n        return (this.domNode.style.height === null ? 0 : parseInt(this.domNode.style.height)) - (this._decoratingElementsHeight() / 2);\n    }\n    getHorizontalSashWidth() {\n        const layoutInfo = this.editor.getLayoutInfo();\n        return layoutInfo.width - layoutInfo.minimap.minimapWidth;\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 { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { defaultGenerator } from '../../../../base/common/idGenerator.js';\nimport { dispose } from '../../../../base/common/lifecycle.js';\nimport { ResourceMap } from '../../../../base/common/map.js';\nimport { basename, extUri } from '../../../../base/common/resources.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { Range } from '../../../common/core/range.js';\nimport { localize } from '../../../../nls.js';\nexport class OneReference {\n    constructor(isProviderFirst, parent, link, _rangeCallback) {\n        this.isProviderFirst = isProviderFirst;\n        this.parent = parent;\n        this.link = link;\n        this._rangeCallback = _rangeCallback;\n        this.id = defaultGenerator.nextId();\n    }\n    get uri() {\n        return this.link.uri;\n    }\n    get range() {\n        var _a, _b;\n        return (_b = (_a = this._range) !== null && _a !== void 0 ? _a : this.link.targetSelectionRange) !== null && _b !== void 0 ? _b : this.link.range;\n    }\n    set range(value) {\n        this._range = value;\n        this._rangeCallback(this);\n    }\n    get ariaMessage() {\n        var _a;\n        const preview = (_a = this.parent.getPreview(this)) === null || _a === void 0 ? void 0 : _a.preview(this.range);\n        if (!preview) {\n            return localize('aria.oneReference', \"in {0} on line {1} at column {2}\", basename(this.uri), this.range.startLineNumber, this.range.startColumn);\n        }\n        else {\n            return localize({ key: 'aria.oneReference.preview', comment: ['Placeholders are: 0: filename, 1:line number, 2: column number, 3: preview snippet of source code'] }, \"{0} in {1} on line {2} at column {3}\", preview.value, basename(this.uri), this.range.startLineNumber, this.range.startColumn);\n        }\n    }\n}\nexport class FilePreview {\n    constructor(_modelReference) {\n        this._modelReference = _modelReference;\n    }\n    dispose() {\n        this._modelReference.dispose();\n    }\n    preview(range, n = 8) {\n        const model = this._modelReference.object.textEditorModel;\n        if (!model) {\n            return undefined;\n        }\n        const { startLineNumber, startColumn, endLineNumber, endColumn } = range;\n        const word = model.getWordUntilPosition({ lineNumber: startLineNumber, column: startColumn - n });\n        const beforeRange = new Range(startLineNumber, word.startColumn, startLineNumber, startColumn);\n        const afterRange = new Range(endLineNumber, endColumn, endLineNumber, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n        const before = model.getValueInRange(beforeRange).replace(/^\\s+/, '');\n        const inside = model.getValueInRange(range);\n        const after = model.getValueInRange(afterRange).replace(/\\s+$/, '');\n        return {\n            value: before + inside + after,\n            highlight: { start: before.length, end: before.length + inside.length }\n        };\n    }\n}\nexport class FileReferences {\n    constructor(parent, uri) {\n        this.parent = parent;\n        this.uri = uri;\n        this.children = [];\n        this._previews = new ResourceMap();\n    }\n    dispose() {\n        dispose(this._previews.values());\n        this._previews.clear();\n    }\n    getPreview(child) {\n        return this._previews.get(child.uri);\n    }\n    get ariaMessage() {\n        const len = this.children.length;\n        if (len === 1) {\n            return localize('aria.fileReferences.1', \"1 symbol in {0}, full path {1}\", basename(this.uri), this.uri.fsPath);\n        }\n        else {\n            return localize('aria.fileReferences.N', \"{0} symbols in {1}, full path {2}\", len, basename(this.uri), this.uri.fsPath);\n        }\n    }\n    async resolve(textModelResolverService) {\n        if (this._previews.size !== 0) {\n            return this;\n        }\n        for (const child of this.children) {\n            if (this._previews.has(child.uri)) {\n                continue;\n            }\n            try {\n                const ref = await textModelResolverService.createModelReference(child.uri);\n                this._previews.set(child.uri, new FilePreview(ref));\n            }\n            catch (err) {\n                onUnexpectedError(err);\n            }\n        }\n        return this;\n    }\n}\nexport class ReferencesModel {\n    constructor(links, title) {\n        this.groups = [];\n        this.references = [];\n        this._onDidChangeReferenceRange = new Emitter();\n        this.onDidChangeReferenceRange = this._onDidChangeReferenceRange.event;\n        this._links = links;\n        this._title = title;\n        // grouping and sorting\n        const [providersFirst] = links;\n        links.sort(ReferencesModel._compareReferences);\n        let current;\n        for (const link of links) {\n            if (!current || !extUri.isEqual(current.uri, link.uri, true)) {\n                // new group\n                current = new FileReferences(this, link.uri);\n                this.groups.push(current);\n            }\n            // append, check for equality first!\n            if (current.children.length === 0 || ReferencesModel._compareReferences(link, current.children[current.children.length - 1]) !== 0) {\n                const oneRef = new OneReference(providersFirst === link, current, link, ref => this._onDidChangeReferenceRange.fire(ref));\n                this.references.push(oneRef);\n                current.children.push(oneRef);\n            }\n        }\n    }\n    dispose() {\n        dispose(this.groups);\n        this._onDidChangeReferenceRange.dispose();\n        this.groups.length = 0;\n    }\n    clone() {\n        return new ReferencesModel(this._links, this._title);\n    }\n    get title() {\n        return this._title;\n    }\n    get isEmpty() {\n        return this.groups.length === 0;\n    }\n    get ariaMessage() {\n        if (this.isEmpty) {\n            return localize('aria.result.0', \"No results found\");\n        }\n        else if (this.references.length === 1) {\n            return localize('aria.result.1', \"Found 1 symbol in {0}\", this.references[0].uri.fsPath);\n        }\n        else if (this.groups.length === 1) {\n            return localize('aria.result.n1', \"Found {0} symbols in {1}\", this.references.length, this.groups[0].uri.fsPath);\n        }\n        else {\n            return localize('aria.result.nm', \"Found {0} symbols in {1} files\", this.references.length, this.groups.length);\n        }\n    }\n    nextOrPreviousReference(reference, next) {\n        const { parent } = reference;\n        let idx = parent.children.indexOf(reference);\n        const childCount = parent.children.length;\n        const groupCount = parent.parent.groups.length;\n        if (groupCount === 1 || next && idx + 1 < childCount || !next && idx > 0) {\n            // cycling within one file\n            if (next) {\n                idx = (idx + 1) % childCount;\n            }\n            else {\n                idx = (idx + childCount - 1) % childCount;\n            }\n            return parent.children[idx];\n        }\n        idx = parent.parent.groups.indexOf(parent);\n        if (next) {\n            idx = (idx + 1) % groupCount;\n            return parent.parent.groups[idx].children[0];\n        }\n        else {\n            idx = (idx + groupCount - 1) % groupCount;\n            return parent.parent.groups[idx].children[parent.parent.groups[idx].children.length - 1];\n        }\n    }\n    nearestReference(resource, position) {\n        const nearest = this.references.map((ref, idx) => {\n            return {\n                idx,\n                prefixLen: strings.commonPrefixLength(ref.uri.toString(), resource.toString()),\n                offsetDist: Math.abs(ref.range.startLineNumber - position.lineNumber) * 100 + Math.abs(ref.range.startColumn - position.column)\n            };\n        }).sort((a, b) => {\n            if (a.prefixLen > b.prefixLen) {\n                return -1;\n            }\n            else if (a.prefixLen < b.prefixLen) {\n                return 1;\n            }\n            else if (a.offsetDist < b.offsetDist) {\n                return -1;\n            }\n            else if (a.offsetDist > b.offsetDist) {\n                return 1;\n            }\n            else {\n                return 0;\n            }\n        })[0];\n        if (nearest) {\n            return this.references[nearest.idx];\n        }\n        return undefined;\n    }\n    referenceAt(resource, position) {\n        for (const ref of this.references) {\n            if (ref.uri.toString() === resource.toString()) {\n                if (Range.containsPosition(ref.range, position)) {\n                    return ref;\n                }\n            }\n        }\n        return undefined;\n    }\n    firstReference() {\n        for (const ref of this.references) {\n            if (ref.isProviderFirst) {\n                return ref;\n            }\n        }\n        return this.references[0];\n    }\n    static _compareReferences(a, b) {\n        return extUri.compare(a.uri, b.uri) || Range.compareRangesUsingStarts(a.range, b.range);\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 { Sizing, SplitView } from '../../../../../base/browser/ui/splitview/splitview.js';\nimport { Color } from '../../../../../base/common/color.js';\nimport { Emitter, Event } from '../../../../../base/common/event.js';\nimport { DisposableStore, dispose } from '../../../../../base/common/lifecycle.js';\nimport { Schemas } from '../../../../../base/common/network.js';\nimport { basenameOrAuthority, dirname } from '../../../../../base/common/resources.js';\nimport './referencesWidget.css';\nimport { EmbeddedCodeEditorWidget } from '../../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { ModelDecorationOptions, TextModel } from '../../../../common/model/textModel.js';\nimport { ILanguageConfigurationService } from '../../../../common/languages/languageConfigurationRegistry.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../../../../common/languages/modesRegistry.js';\nimport { ILanguageService } from '../../../../common/languages/language.js';\nimport { ITextModelService } from '../../../../common/services/resolverService.js';\nimport { AccessibilityProvider, DataSource, Delegate, FileReferencesRenderer, IdentityProvider, OneReferenceRenderer, StringRepresentationProvider } from './referencesTree.js';\nimport * as peekView from '../../../peekView/browser/peekView.js';\nimport * as nls from '../../../../../nls.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../../platform/keybinding/common/keybinding.js';\nimport { ILabelService } from '../../../../../platform/label/common/label.js';\nimport { WorkbenchAsyncDataTree } from '../../../../../platform/list/browser/listService.js';\nimport { IThemeService } from '../../../../../platform/theme/common/themeService.js';\nimport { IUndoRedoService } from '../../../../../platform/undoRedo/common/undoRedo.js';\nimport { FileReferences, OneReference } from '../referencesModel.js';\nclass DecorationsManager {\n    constructor(_editor, _model) {\n        this._editor = _editor;\n        this._model = _model;\n        this._decorations = new Map();\n        this._decorationIgnoreSet = new Set();\n        this._callOnDispose = new DisposableStore();\n        this._callOnModelChange = new DisposableStore();\n        this._callOnDispose.add(this._editor.onDidChangeModel(() => this._onModelChanged()));\n        this._onModelChanged();\n    }\n    dispose() {\n        this._callOnModelChange.dispose();\n        this._callOnDispose.dispose();\n        this.removeDecorations();\n    }\n    _onModelChanged() {\n        this._callOnModelChange.clear();\n        const model = this._editor.getModel();\n        if (!model) {\n            return;\n        }\n        for (const ref of this._model.references) {\n            if (ref.uri.toString() === model.uri.toString()) {\n                this._addDecorations(ref.parent);\n                return;\n            }\n        }\n    }\n    _addDecorations(reference) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(() => this._onDecorationChanged()));\n        const newDecorations = [];\n        const newDecorationsActualIndex = [];\n        for (let i = 0, len = reference.children.length; i < len; i++) {\n            const oneReference = reference.children[i];\n            if (this._decorationIgnoreSet.has(oneReference.id)) {\n                continue;\n            }\n            if (oneReference.uri.toString() !== this._editor.getModel().uri.toString()) {\n                continue;\n            }\n            newDecorations.push({\n                range: oneReference.range,\n                options: DecorationsManager.DecorationOptions\n            });\n            newDecorationsActualIndex.push(i);\n        }\n        this._editor.changeDecorations((changeAccessor) => {\n            const decorations = changeAccessor.deltaDecorations([], newDecorations);\n            for (let i = 0; i < decorations.length; i++) {\n                this._decorations.set(decorations[i], reference.children[newDecorationsActualIndex[i]]);\n            }\n        });\n    }\n    _onDecorationChanged() {\n        const toRemove = [];\n        const model = this._editor.getModel();\n        if (!model) {\n            return;\n        }\n        for (const [decorationId, reference] of this._decorations) {\n            const newRange = model.getDecorationRange(decorationId);\n            if (!newRange) {\n                continue;\n            }\n            let ignore = false;\n            if (Range.equalsRange(newRange, reference.range)) {\n                continue;\n            }\n            if (Range.spansMultipleLines(newRange)) {\n                ignore = true;\n            }\n            else {\n                const lineLength = reference.range.endColumn - reference.range.startColumn;\n                const newLineLength = newRange.endColumn - newRange.startColumn;\n                if (lineLength !== newLineLength) {\n                    ignore = true;\n                }\n            }\n            if (ignore) {\n                this._decorationIgnoreSet.add(reference.id);\n                toRemove.push(decorationId);\n            }\n            else {\n                reference.range = newRange;\n            }\n        }\n        for (let i = 0, len = toRemove.length; i < len; i++) {\n            this._decorations.delete(toRemove[i]);\n        }\n        this._editor.removeDecorations(toRemove);\n    }\n    removeDecorations() {\n        this._editor.removeDecorations([...this._decorations.keys()]);\n        this._decorations.clear();\n    }\n}\nDecorationsManager.DecorationOptions = ModelDecorationOptions.register({\n    description: 'reference-decoration',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    className: 'reference-decoration'\n});\nexport class LayoutData {\n    constructor() {\n        this.ratio = 0.7;\n        this.heightInLines = 18;\n    }\n    static fromJSON(raw) {\n        let ratio;\n        let heightInLines;\n        try {\n            const data = JSON.parse(raw);\n            ratio = data.ratio;\n            heightInLines = data.heightInLines;\n        }\n        catch (_a) {\n            //\n        }\n        return {\n            ratio: ratio || 0.7,\n            heightInLines: heightInLines || 18\n        };\n    }\n}\nclass ReferencesTree extends WorkbenchAsyncDataTree {\n}\n/**\n * ZoneWidget that is shown inside the editor\n */\nlet ReferenceWidget = class ReferenceWidget extends peekView.PeekViewWidget {\n    constructor(editor, _defaultTreeKeyboardSupport, layoutData, themeService, _textModelResolverService, _instantiationService, _peekViewService, _uriLabel, _undoRedoService, _keybindingService, _languageService, _languageConfigurationService) {\n        super(editor, { showFrame: false, showArrow: true, isResizeable: true, isAccessible: true, supportOnTitleClick: true }, _instantiationService);\n        this._defaultTreeKeyboardSupport = _defaultTreeKeyboardSupport;\n        this.layoutData = layoutData;\n        this._textModelResolverService = _textModelResolverService;\n        this._instantiationService = _instantiationService;\n        this._peekViewService = _peekViewService;\n        this._uriLabel = _uriLabel;\n        this._undoRedoService = _undoRedoService;\n        this._keybindingService = _keybindingService;\n        this._languageService = _languageService;\n        this._languageConfigurationService = _languageConfigurationService;\n        this._disposeOnNewModel = new DisposableStore();\n        this._callOnDispose = new DisposableStore();\n        this._onDidSelectReference = new Emitter();\n        this.onDidSelectReference = this._onDidSelectReference.event;\n        this._dim = new dom.Dimension(0, 0);\n        this._applyTheme(themeService.getColorTheme());\n        this._callOnDispose.add(themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\n        this._peekViewService.addExclusiveWidget(editor, this);\n        this.create();\n    }\n    dispose() {\n        this.setModel(undefined);\n        this._callOnDispose.dispose();\n        this._disposeOnNewModel.dispose();\n        dispose(this._preview);\n        dispose(this._previewNotAvailableMessage);\n        dispose(this._tree);\n        dispose(this._previewModelReference);\n        this._splitView.dispose();\n        super.dispose();\n    }\n    _applyTheme(theme) {\n        const borderColor = theme.getColor(peekView.peekViewBorder) || Color.transparent;\n        this.style({\n            arrowColor: borderColor,\n            frameColor: borderColor,\n            headerBackgroundColor: theme.getColor(peekView.peekViewTitleBackground) || Color.transparent,\n            primaryHeadingColor: theme.getColor(peekView.peekViewTitleForeground),\n            secondaryHeadingColor: theme.getColor(peekView.peekViewTitleInfoForeground)\n        });\n    }\n    show(where) {\n        super.show(where, this.layoutData.heightInLines || 18);\n    }\n    focusOnReferenceTree() {\n        this._tree.domFocus();\n    }\n    focusOnPreviewEditor() {\n        this._preview.focus();\n    }\n    isPreviewEditorFocused() {\n        return this._preview.hasTextFocus();\n    }\n    _onTitleClick(e) {\n        if (this._preview && this._preview.getModel()) {\n            this._onDidSelectReference.fire({\n                element: this._getFocusedReference(),\n                kind: e.ctrlKey || e.metaKey || e.altKey ? 'side' : 'open',\n                source: 'title'\n            });\n        }\n    }\n    _fillBody(containerElement) {\n        this.setCssClass('reference-zone-widget');\n        // message pane\n        this._messageContainer = dom.append(containerElement, dom.$('div.messages'));\n        dom.hide(this._messageContainer);\n        this._splitView = new SplitView(containerElement, { orientation: 1 /* Orientation.HORIZONTAL */ });\n        // editor\n        this._previewContainer = dom.append(containerElement, dom.$('div.preview.inline'));\n        const options = {\n            scrollBeyondLastLine: false,\n            scrollbar: {\n                verticalScrollbarSize: 14,\n                horizontal: 'auto',\n                useShadows: true,\n                verticalHasArrows: false,\n                horizontalHasArrows: false,\n                alwaysConsumeMouseWheel: true\n            },\n            overviewRulerLanes: 2,\n            fixedOverflowWidgets: true,\n            minimap: {\n                enabled: false\n            }\n        };\n        this._preview = this._instantiationService.createInstance(EmbeddedCodeEditorWidget, this._previewContainer, options, {}, this.editor);\n        dom.hide(this._previewContainer);\n        this._previewNotAvailableMessage = new TextModel(nls.localize('missingPreviewMessage', \"no preview available\"), PLAINTEXT_LANGUAGE_ID, TextModel.DEFAULT_CREATION_OPTIONS, null, this._undoRedoService, this._languageService, this._languageConfigurationService);\n        // tree\n        this._treeContainer = dom.append(containerElement, dom.$('div.ref-tree.inline'));\n        const treeOptions = {\n            keyboardSupport: this._defaultTreeKeyboardSupport,\n            accessibilityProvider: new AccessibilityProvider(),\n            keyboardNavigationLabelProvider: this._instantiationService.createInstance(StringRepresentationProvider),\n            identityProvider: new IdentityProvider(),\n            openOnSingleClick: true,\n            selectionNavigation: true,\n            overrideStyles: {\n                listBackground: peekView.peekViewResultsBackground\n            }\n        };\n        if (this._defaultTreeKeyboardSupport) {\n            // the tree will consume `Escape` and prevent the widget from closing\n            this._callOnDispose.add(dom.addStandardDisposableListener(this._treeContainer, 'keydown', (e) => {\n                if (e.equals(9 /* KeyCode.Escape */)) {\n                    this._keybindingService.dispatchEvent(e, e.target);\n                    e.stopPropagation();\n                }\n            }, true));\n        }\n        this._tree = this._instantiationService.createInstance(ReferencesTree, 'ReferencesWidget', this._treeContainer, new Delegate(), [\n            this._instantiationService.createInstance(FileReferencesRenderer),\n            this._instantiationService.createInstance(OneReferenceRenderer),\n        ], this._instantiationService.createInstance(DataSource), treeOptions);\n        // split stuff\n        this._splitView.addView({\n            onDidChange: Event.None,\n            element: this._previewContainer,\n            minimumSize: 200,\n            maximumSize: Number.MAX_VALUE,\n            layout: (width) => {\n                this._preview.layout({ height: this._dim.height, width });\n            }\n        }, Sizing.Distribute);\n        this._splitView.addView({\n            onDidChange: Event.None,\n            element: this._treeContainer,\n            minimumSize: 100,\n            maximumSize: Number.MAX_VALUE,\n            layout: (width) => {\n                this._treeContainer.style.height = `${this._dim.height}px`;\n                this._treeContainer.style.width = `${width}px`;\n                this._tree.layout(this._dim.height, width);\n            }\n        }, Sizing.Distribute);\n        this._disposables.add(this._splitView.onDidSashChange(() => {\n            if (this._dim.width) {\n                this.layoutData.ratio = this._splitView.getViewSize(0) / this._dim.width;\n            }\n        }, undefined));\n        // listen on selection and focus\n        const onEvent = (element, kind) => {\n            if (element instanceof OneReference) {\n                if (kind === 'show') {\n                    this._revealReference(element, false);\n                }\n                this._onDidSelectReference.fire({ element, kind, source: 'tree' });\n            }\n        };\n        this._tree.onDidOpen(e => {\n            if (e.sideBySide) {\n                onEvent(e.element, 'side');\n            }\n            else if (e.editorOptions.pinned) {\n                onEvent(e.element, 'goto');\n            }\n            else {\n                onEvent(e.element, 'show');\n            }\n        });\n        dom.hide(this._treeContainer);\n    }\n    _onWidth(width) {\n        if (this._dim) {\n            this._doLayoutBody(this._dim.height, width);\n        }\n    }\n    _doLayoutBody(heightInPixel, widthInPixel) {\n        super._doLayoutBody(heightInPixel, widthInPixel);\n        this._dim = new dom.Dimension(widthInPixel, heightInPixel);\n        this.layoutData.heightInLines = this._viewZone ? this._viewZone.heightInLines : this.layoutData.heightInLines;\n        this._splitView.layout(widthInPixel);\n        this._splitView.resizeView(0, widthInPixel * this.layoutData.ratio);\n    }\n    setSelection(selection) {\n        return this._revealReference(selection, true).then(() => {\n            if (!this._model) {\n                // disposed\n                return;\n            }\n            // show in tree\n            this._tree.setSelection([selection]);\n            this._tree.setFocus([selection]);\n        });\n    }\n    setModel(newModel) {\n        // clean up\n        this._disposeOnNewModel.clear();\n        this._model = newModel;\n        if (this._model) {\n            return this._onNewModel();\n        }\n        return Promise.resolve();\n    }\n    _onNewModel() {\n        if (!this._model) {\n            return Promise.resolve(undefined);\n        }\n        if (this._model.isEmpty) {\n            this.setTitle('');\n            this._messageContainer.innerText = nls.localize('noResults', \"No results\");\n            dom.show(this._messageContainer);\n            return Promise.resolve(undefined);\n        }\n        dom.hide(this._messageContainer);\n        this._decorationsManager = new DecorationsManager(this._preview, this._model);\n        this._disposeOnNewModel.add(this._decorationsManager);\n        // listen on model changes\n        this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(reference => this._tree.rerender(reference)));\n        // listen on editor\n        this._disposeOnNewModel.add(this._preview.onMouseDown(e => {\n            const { event, target } = e;\n            if (event.detail !== 2) {\n                return;\n            }\n            const element = this._getFocusedReference();\n            if (!element) {\n                return;\n            }\n            this._onDidSelectReference.fire({\n                element: { uri: element.uri, range: target.range },\n                kind: (event.ctrlKey || event.metaKey || event.altKey) ? 'side' : 'open',\n                source: 'editor'\n            });\n        }));\n        // make sure things are rendered\n        this.container.classList.add('results-loaded');\n        dom.show(this._treeContainer);\n        dom.show(this._previewContainer);\n        this._splitView.layout(this._dim.width);\n        this.focusOnReferenceTree();\n        // pick input and a reference to begin with\n        return this._tree.setInput(this._model.groups.length === 1 ? this._model.groups[0] : this._model);\n    }\n    _getFocusedReference() {\n        const [element] = this._tree.getFocus();\n        if (element instanceof OneReference) {\n            return element;\n        }\n        else if (element instanceof FileReferences) {\n            if (element.children.length > 0) {\n                return element.children[0];\n            }\n        }\n        return undefined;\n    }\n    async revealReference(reference) {\n        await this._revealReference(reference, false);\n        this._onDidSelectReference.fire({ element: reference, kind: 'goto', source: 'tree' });\n    }\n    async _revealReference(reference, revealParent) {\n        // check if there is anything to do...\n        if (this._revealedReference === reference) {\n            return;\n        }\n        this._revealedReference = reference;\n        // Update widget header\n        if (reference.uri.scheme !== Schemas.inMemory) {\n            this.setTitle(basenameOrAuthority(reference.uri), this._uriLabel.getUriLabel(dirname(reference.uri)));\n        }\n        else {\n            this.setTitle(nls.localize('peekView.alternateTitle', \"References\"));\n        }\n        const promise = this._textModelResolverService.createModelReference(reference.uri);\n        if (this._tree.getInput() === reference.parent) {\n            this._tree.reveal(reference);\n        }\n        else {\n            if (revealParent) {\n                this._tree.reveal(reference.parent);\n            }\n            await this._tree.expand(reference.parent);\n            this._tree.reveal(reference);\n        }\n        const ref = await promise;\n        if (!this._model) {\n            // disposed\n            ref.dispose();\n            return;\n        }\n        dispose(this._previewModelReference);\n        // show in editor\n        const model = ref.object;\n        if (model) {\n            const scrollType = this._preview.getModel() === model.textEditorModel ? 0 /* ScrollType.Smooth */ : 1 /* ScrollType.Immediate */;\n            const sel = Range.lift(reference.range).collapseToStart();\n            this._previewModelReference = ref;\n            this._preview.setModel(model.textEditorModel);\n            this._preview.setSelection(sel);\n            this._preview.revealRangeInCenter(sel, scrollType);\n        }\n        else {\n            this._preview.setModel(this._previewNotAvailableMessage);\n            ref.dispose();\n        }\n    }\n};\nReferenceWidget = __decorate([\n    __param(3, IThemeService),\n    __param(4, ITextModelService),\n    __param(5, IInstantiationService),\n    __param(6, peekView.IPeekViewService),\n    __param(7, ILabelService),\n    __param(8, IUndoRedoService),\n    __param(9, IKeybindingService),\n    __param(10, ILanguageService),\n    __param(11, ILanguageConfigurationService)\n], ReferenceWidget);\nexport { ReferenceWidget };\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 FileReferencesRenderer_1;\nimport * as dom from '../../../../../base/browser/dom.js';\nimport { CountBadge } from '../../../../../base/browser/ui/countBadge/countBadge.js';\nimport { HighlightedLabel } from '../../../../../base/browser/ui/highlightedlabel/highlightedLabel.js';\nimport { IconLabel } from '../../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { createMatches, FuzzyScore } from '../../../../../base/common/filters.js';\nimport { Disposable } from '../../../../../base/common/lifecycle.js';\nimport { basename, dirname } from '../../../../../base/common/resources.js';\nimport { ITextModelService } from '../../../../common/services/resolverService.js';\nimport { localize } from '../../../../../nls.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../../platform/keybinding/common/keybinding.js';\nimport { ILabelService } from '../../../../../platform/label/common/label.js';\nimport { defaultCountBadgeStyles } from '../../../../../platform/theme/browser/defaultStyles.js';\nimport { FileReferences, OneReference, ReferencesModel } from '../referencesModel.js';\nlet DataSource = class DataSource {\n    constructor(_resolverService) {\n        this._resolverService = _resolverService;\n    }\n    hasChildren(element) {\n        if (element instanceof ReferencesModel) {\n            return true;\n        }\n        if (element instanceof FileReferences) {\n            return true;\n        }\n        return false;\n    }\n    getChildren(element) {\n        if (element instanceof ReferencesModel) {\n            return element.groups;\n        }\n        if (element instanceof FileReferences) {\n            return element.resolve(this._resolverService).then(val => {\n                // if (element.failure) {\n                // \t// refresh the element on failure so that\n                // \t// we can update its rendering\n                // \treturn tree.refresh(element).then(() => val.children);\n                // }\n                return val.children;\n            });\n        }\n        throw new Error('bad tree');\n    }\n};\nDataSource = __decorate([\n    __param(0, ITextModelService)\n], DataSource);\nexport { DataSource };\n//#endregion\nexport class Delegate {\n    getHeight() {\n        return 23;\n    }\n    getTemplateId(element) {\n        if (element instanceof FileReferences) {\n            return FileReferencesRenderer.id;\n        }\n        else {\n            return OneReferenceRenderer.id;\n        }\n    }\n}\nlet StringRepresentationProvider = class StringRepresentationProvider {\n    constructor(_keybindingService) {\n        this._keybindingService = _keybindingService;\n    }\n    getKeyboardNavigationLabel(element) {\n        var _a;\n        if (element instanceof OneReference) {\n            const parts = (_a = element.parent.getPreview(element)) === null || _a === void 0 ? void 0 : _a.preview(element.range);\n            if (parts) {\n                return parts.value;\n            }\n        }\n        // FileReferences or unresolved OneReference\n        return basename(element.uri);\n    }\n};\nStringRepresentationProvider = __decorate([\n    __param(0, IKeybindingService)\n], StringRepresentationProvider);\nexport { StringRepresentationProvider };\nexport class IdentityProvider {\n    getId(element) {\n        return element instanceof OneReference ? element.id : element.uri;\n    }\n}\n//#region render: File\nlet FileReferencesTemplate = class FileReferencesTemplate extends Disposable {\n    constructor(container, _labelService) {\n        super();\n        this._labelService = _labelService;\n        const parent = document.createElement('div');\n        parent.classList.add('reference-file');\n        this.file = this._register(new IconLabel(parent, { supportHighlights: true }));\n        this.badge = new CountBadge(dom.append(parent, dom.$('.count')), {}, defaultCountBadgeStyles);\n        container.appendChild(parent);\n    }\n    set(element, matches) {\n        const parent = dirname(element.uri);\n        this.file.setLabel(this._labelService.getUriBasenameLabel(element.uri), this._labelService.getUriLabel(parent, { relative: true }), { title: this._labelService.getUriLabel(element.uri), matches });\n        const len = element.children.length;\n        this.badge.setCount(len);\n        if (len > 1) {\n            this.badge.setTitleFormat(localize('referencesCount', \"{0} references\", len));\n        }\n        else {\n            this.badge.setTitleFormat(localize('referenceCount', \"{0} reference\", len));\n        }\n    }\n};\nFileReferencesTemplate = __decorate([\n    __param(1, ILabelService)\n], FileReferencesTemplate);\nlet FileReferencesRenderer = FileReferencesRenderer_1 = class FileReferencesRenderer {\n    constructor(_instantiationService) {\n        this._instantiationService = _instantiationService;\n        this.templateId = FileReferencesRenderer_1.id;\n    }\n    renderTemplate(container) {\n        return this._instantiationService.createInstance(FileReferencesTemplate, container);\n    }\n    renderElement(node, index, template) {\n        template.set(node.element, createMatches(node.filterData));\n    }\n    disposeTemplate(templateData) {\n        templateData.dispose();\n    }\n};\nFileReferencesRenderer.id = 'FileReferencesRenderer';\nFileReferencesRenderer = FileReferencesRenderer_1 = __decorate([\n    __param(0, IInstantiationService)\n], FileReferencesRenderer);\nexport { FileReferencesRenderer };\n//#endregion\n//#region render: Reference\nclass OneReferenceTemplate extends Disposable {\n    constructor(container) {\n        super();\n        this.label = this._register(new HighlightedLabel(container));\n    }\n    set(element, score) {\n        var _a;\n        const preview = (_a = element.parent.getPreview(element)) === null || _a === void 0 ? void 0 : _a.preview(element.range);\n        if (!preview || !preview.value) {\n            // this means we FAILED to resolve the document or the value is the empty string\n            this.label.set(`${basename(element.uri)}:${element.range.startLineNumber + 1}:${element.range.startColumn + 1}`);\n        }\n        else {\n            // render search match as highlight unless\n            // we have score, then render the score\n            const { value, highlight } = preview;\n            if (score && !FuzzyScore.isDefault(score)) {\n                this.label.element.classList.toggle('referenceMatch', false);\n                this.label.set(value, createMatches(score));\n            }\n            else {\n                this.label.element.classList.toggle('referenceMatch', true);\n                this.label.set(value, [highlight]);\n            }\n        }\n    }\n}\nexport class OneReferenceRenderer {\n    constructor() {\n        this.templateId = OneReferenceRenderer.id;\n    }\n    renderTemplate(container) {\n        return new OneReferenceTemplate(container);\n    }\n    renderElement(node, index, templateData) {\n        templateData.set(node.element, node.filterData);\n    }\n    disposeTemplate(templateData) {\n        templateData.dispose();\n    }\n}\nOneReferenceRenderer.id = 'OneReferenceRenderer';\n//#endregion\nexport class AccessibilityProvider {\n    getWidgetAriaLabel() {\n        return localize('treeAriaLabel', \"References\");\n    }\n    getAriaLabel(element) {\n        return element.ariaMessage;\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 { Emitter } from '../../../../base/common/event.js';\nimport { combinedDisposable, DisposableStore, dispose } from '../../../../base/common/lifecycle.js';\nimport { isEqual } from '../../../../base/common/resources.js';\nimport { EditorCommand, registerEditorCommand } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { localize } from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { KeybindingsRegistry } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nexport const ctxHasSymbols = new RawContextKey('hasSymbols', false, localize('hasSymbols', \"Whether there are symbol locations that can be navigated via keyboard-only.\"));\nexport const ISymbolNavigationService = createDecorator('ISymbolNavigationService');\nlet SymbolNavigationService = class SymbolNavigationService {\n    constructor(contextKeyService, _editorService, _notificationService, _keybindingService) {\n        this._editorService = _editorService;\n        this._notificationService = _notificationService;\n        this._keybindingService = _keybindingService;\n        this._currentModel = undefined;\n        this._currentIdx = -1;\n        this._ignoreEditorChange = false;\n        this._ctxHasSymbols = ctxHasSymbols.bindTo(contextKeyService);\n    }\n    reset() {\n        var _a, _b;\n        this._ctxHasSymbols.reset();\n        (_a = this._currentState) === null || _a === void 0 ? void 0 : _a.dispose();\n        (_b = this._currentMessage) === null || _b === void 0 ? void 0 : _b.dispose();\n        this._currentModel = undefined;\n        this._currentIdx = -1;\n    }\n    put(anchor) {\n        const refModel = anchor.parent.parent;\n        if (refModel.references.length <= 1) {\n            this.reset();\n            return;\n        }\n        this._currentModel = refModel;\n        this._currentIdx = refModel.references.indexOf(anchor);\n        this._ctxHasSymbols.set(true);\n        this._showMessage();\n        const editorState = new EditorState(this._editorService);\n        const listener = editorState.onDidChange(_ => {\n            if (this._ignoreEditorChange) {\n                return;\n            }\n            const editor = this._editorService.getActiveCodeEditor();\n            if (!editor) {\n                return;\n            }\n            const model = editor.getModel();\n            const position = editor.getPosition();\n            if (!model || !position) {\n                return;\n            }\n            let seenUri = false;\n            let seenPosition = false;\n            for (const reference of refModel.references) {\n                if (isEqual(reference.uri, model.uri)) {\n                    seenUri = true;\n                    seenPosition = seenPosition || Range.containsPosition(reference.range, position);\n                }\n                else if (seenUri) {\n                    break;\n                }\n            }\n            if (!seenUri || !seenPosition) {\n                this.reset();\n            }\n        });\n        this._currentState = combinedDisposable(editorState, listener);\n    }\n    revealNext(source) {\n        if (!this._currentModel) {\n            return Promise.resolve();\n        }\n        // get next result and advance\n        this._currentIdx += 1;\n        this._currentIdx %= this._currentModel.references.length;\n        const reference = this._currentModel.references[this._currentIdx];\n        // status\n        this._showMessage();\n        // open editor, ignore events while that happens\n        this._ignoreEditorChange = true;\n        return this._editorService.openCodeEditor({\n            resource: reference.uri,\n            options: {\n                selection: Range.collapseToStart(reference.range),\n                selectionRevealType: 3 /* TextEditorSelectionRevealType.NearTopIfOutsideViewport */\n            }\n        }, source).finally(() => {\n            this._ignoreEditorChange = false;\n        });\n    }\n    _showMessage() {\n        var _a;\n        (_a = this._currentMessage) === null || _a === void 0 ? void 0 : _a.dispose();\n        const kb = this._keybindingService.lookupKeybinding('editor.gotoNextSymbolFromResult');\n        const message = kb\n            ? localize('location.kb', \"Symbol {0} of {1}, {2} for next\", this._currentIdx + 1, this._currentModel.references.length, kb.getLabel())\n            : localize('location', \"Symbol {0} of {1}\", this._currentIdx + 1, this._currentModel.references.length);\n        this._currentMessage = this._notificationService.status(message);\n    }\n};\nSymbolNavigationService = __decorate([\n    __param(0, IContextKeyService),\n    __param(1, ICodeEditorService),\n    __param(2, INotificationService),\n    __param(3, IKeybindingService)\n], SymbolNavigationService);\nregisterSingleton(ISymbolNavigationService, SymbolNavigationService, 1 /* InstantiationType.Delayed */);\nregisterEditorCommand(new class extends EditorCommand {\n    constructor() {\n        super({\n            id: 'editor.gotoNextSymbolFromResult',\n            precondition: ctxHasSymbols,\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */,\n                primary: 70 /* KeyCode.F12 */\n            }\n        });\n    }\n    runEditorCommand(accessor, editor) {\n        return accessor.get(ISymbolNavigationService).revealNext(editor);\n    }\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n    id: 'editor.gotoNextSymbolFromResult.cancel',\n    weight: 100 /* KeybindingWeight.EditorContrib */,\n    when: ctxHasSymbols,\n    primary: 9 /* KeyCode.Escape */,\n    handler(accessor) {\n        accessor.get(ISymbolNavigationService).reset();\n    }\n});\n//\nlet EditorState = class EditorState {\n    constructor(editorService) {\n        this._listener = new Map();\n        this._disposables = new DisposableStore();\n        this._onDidChange = new Emitter();\n        this.onDidChange = this._onDidChange.event;\n        this._disposables.add(editorService.onCodeEditorRemove(this._onDidRemoveEditor, this));\n        this._disposables.add(editorService.onCodeEditorAdd(this._onDidAddEditor, this));\n        editorService.listCodeEditors().forEach(this._onDidAddEditor, this);\n    }\n    dispose() {\n        this._disposables.dispose();\n        this._onDidChange.dispose();\n        dispose(this._listener.values());\n    }\n    _onDidAddEditor(editor) {\n        this._listener.set(editor, combinedDisposable(editor.onDidChangeCursorPosition(_ => this._onDidChange.fire({ editor })), editor.onDidChangeModelContent(_ => this._onDidChange.fire({ editor }))));\n    }\n    _onDidRemoveEditor(editor) {\n        var _a;\n        (_a = this._listener.get(editor)) === null || _a === void 0 ? void 0 : _a.dispose();\n        this._listener.delete(editor);\n    }\n};\nEditorState = __decorate([\n    __param(0, ICodeEditorService)\n], EditorState);\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { coalesce } from '../../../../base/common/arrays.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { matchesSomeScheme, Schemas } from '../../../../base/common/network.js';\nimport { registerModelAndPositionCommand } from '../../../browser/editorExtensions.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ReferencesModel } from './referencesModel.js';\nfunction shouldIncludeLocationLink(sourceModel, loc) {\n    // Always allow the location if the request comes from a document with the same scheme.\n    if (loc.uri.scheme === sourceModel.uri.scheme) {\n        return true;\n    }\n    // Otherwise filter out locations from internal schemes\n    if (matchesSomeScheme(loc.uri, Schemas.walkThroughSnippet, Schemas.vscodeChatCodeBlock, Schemas.vscodeChatCodeCompareBlock)) {\n        return false;\n    }\n    return true;\n}\nasync function getLocationLinks(model, position, registry, provide) {\n    const provider = registry.ordered(model);\n    // get results\n    const promises = provider.map((provider) => {\n        return Promise.resolve(provide(provider, model, position)).then(undefined, err => {\n            onUnexpectedExternalError(err);\n            return undefined;\n        });\n    });\n    const values = await Promise.all(promises);\n    return coalesce(values.flat()).filter(loc => shouldIncludeLocationLink(model, loc));\n}\nexport function getDefinitionsAtPosition(registry, model, position, token) {\n    return getLocationLinks(model, position, registry, (provider, model, position) => {\n        return provider.provideDefinition(model, position, token);\n    });\n}\nexport function getDeclarationsAtPosition(registry, model, position, token) {\n    return getLocationLinks(model, position, registry, (provider, model, position) => {\n        return provider.provideDeclaration(model, position, token);\n    });\n}\nexport function getImplementationsAtPosition(registry, model, position, token) {\n    return getLocationLinks(model, position, registry, (provider, model, position) => {\n        return provider.provideImplementation(model, position, token);\n    });\n}\nexport function getTypeDefinitionsAtPosition(registry, model, position, token) {\n    return getLocationLinks(model, position, registry, (provider, model, position) => {\n        return provider.provideTypeDefinition(model, position, token);\n    });\n}\nexport function getReferencesAtPosition(registry, model, position, compact, token) {\n    return getLocationLinks(model, position, registry, async (provider, model, position) => {\n        var _a, _b;\n        const result = (_a = (await provider.provideReferences(model, position, { includeDeclaration: true }, token))) === null || _a === void 0 ? void 0 : _a.filter(ref => shouldIncludeLocationLink(model, ref));\n        if (!compact || !result || result.length !== 2) {\n            return result;\n        }\n        const resultWithoutDeclaration = (_b = (await provider.provideReferences(model, position, { includeDeclaration: false }, token))) === null || _b === void 0 ? void 0 : _b.filter(ref => shouldIncludeLocationLink(model, ref));\n        if (resultWithoutDeclaration && resultWithoutDeclaration.length === 1) {\n            return resultWithoutDeclaration;\n        }\n        return result;\n    });\n}\n// -- API commands ----\nasync function _sortedAndDeduped(callback) {\n    const rawLinks = await callback();\n    const model = new ReferencesModel(rawLinks, '');\n    const modelLinks = model.references.map(ref => ref.link);\n    model.dispose();\n    return modelLinks;\n}\nregisterModelAndPositionCommand('_executeDefinitionProvider', (accessor, model, position) => {\n    const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n    const promise = getDefinitionsAtPosition(languageFeaturesService.definitionProvider, model, position, CancellationToken.None);\n    return _sortedAndDeduped(() => promise);\n});\nregisterModelAndPositionCommand('_executeTypeDefinitionProvider', (accessor, model, position) => {\n    const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n    const promise = getTypeDefinitionsAtPosition(languageFeaturesService.typeDefinitionProvider, model, position, CancellationToken.None);\n    return _sortedAndDeduped(() => promise);\n});\nregisterModelAndPositionCommand('_executeDeclarationProvider', (accessor, model, position) => {\n    const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n    const promise = getDeclarationsAtPosition(languageFeaturesService.declarationProvider, model, position, CancellationToken.None);\n    return _sortedAndDeduped(() => promise);\n});\nregisterModelAndPositionCommand('_executeReferenceProvider', (accessor, model, position) => {\n    const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n    const promise = getReferencesAtPosition(languageFeaturesService.referenceProvider, model, position, false, CancellationToken.None);\n    return _sortedAndDeduped(() => promise);\n});\nregisterModelAndPositionCommand('_executeImplementationProvider', (accessor, model, position) => {\n    const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n    const promise = getImplementationsAtPosition(languageFeaturesService.implementationProvider, model, position, CancellationToken.None);\n    return _sortedAndDeduped(() => promise);\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 { coalesce } from '../../../../base/common/arrays.js';\nimport { AsyncIterableObject } from '../../../../base/common/async.js';\nexport class ContentHoverComputer {\n    get anchor() { return this._anchor; }\n    set anchor(value) { this._anchor = value; }\n    get shouldFocus() { return this._shouldFocus; }\n    set shouldFocus(value) { this._shouldFocus = value; }\n    get source() { return this._source; }\n    set source(value) { this._source = value; }\n    get insistOnKeepingHoverVisible() { return this._insistOnKeepingHoverVisible; }\n    set insistOnKeepingHoverVisible(value) { this._insistOnKeepingHoverVisible = value; }\n    constructor(_editor, _participants) {\n        this._editor = _editor;\n        this._participants = _participants;\n        this._anchor = null;\n        this._shouldFocus = false;\n        this._source = 0 /* HoverStartSource.Mouse */;\n        this._insistOnKeepingHoverVisible = false;\n    }\n    static _getLineDecorations(editor, anchor) {\n        if (anchor.type !== 1 /* HoverAnchorType.Range */ && !anchor.supportsMarkerHover) {\n            return [];\n        }\n        const model = editor.getModel();\n        const lineNumber = anchor.range.startLineNumber;\n        if (lineNumber > model.getLineCount()) {\n            // invalid line\n            return [];\n        }\n        const maxColumn = model.getLineMaxColumn(lineNumber);\n        return editor.getLineDecorations(lineNumber).filter((d) => {\n            if (d.options.isWholeLine) {\n                return true;\n            }\n            const startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\n            const endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\n            if (d.options.showIfCollapsed) {\n                // Relax check around `showIfCollapsed` decorations to also include +/- 1 character\n                if (startColumn > anchor.range.startColumn + 1 || anchor.range.endColumn - 1 > endColumn) {\n                    return false;\n                }\n            }\n            else {\n                if (startColumn > anchor.range.startColumn || anchor.range.endColumn > endColumn) {\n                    return false;\n                }\n            }\n            return true;\n        });\n    }\n    computeAsync(token) {\n        const anchor = this._anchor;\n        if (!this._editor.hasModel() || !anchor) {\n            return AsyncIterableObject.EMPTY;\n        }\n        const lineDecorations = ContentHoverComputer._getLineDecorations(this._editor, anchor);\n        return AsyncIterableObject.merge(this._participants.map((participant) => {\n            if (!participant.computeAsync) {\n                return AsyncIterableObject.EMPTY;\n            }\n            return participant.computeAsync(anchor, lineDecorations, token);\n        }));\n    }\n    computeSync() {\n        if (!this._editor.hasModel() || !this._anchor) {\n            return [];\n        }\n        const lineDecorations = ContentHoverComputer._getLineDecorations(this._editor, this._anchor);\n        let result = [];\n        for (const participant of this._participants) {\n            result = result.concat(participant.computeSync(this._anchor, lineDecorations));\n        }\n        return coalesce(result);\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 *--------------------------------------------------------------------------------------------*/\nexport class HoverResult {\n    constructor(anchor, messages, isComplete) {\n        this.anchor = anchor;\n        this.messages = messages;\n        this.isComplete = isComplete;\n    }\n    filter(anchor) {\n        const filteredMessages = this.messages.filter((m) => m.isValidForHoverAnchor(anchor));\n        if (filteredMessages.length === this.messages.length) {\n            return this;\n        }\n        return new FilteredHoverResult(this, this.anchor, filteredMessages, this.isComplete);\n    }\n}\nexport class FilteredHoverResult extends HoverResult {\n    constructor(original, anchor, messages, isComplete) {\n        super(anchor, messages, isComplete);\n        this.original = original;\n    }\n    filter(anchor) {\n        return this.original.filter(anchor);\n    }\n}\nexport class ContentHoverVisibleData {\n    constructor(initialMousePosX, initialMousePosY, colorPicker, showAtPosition, showAtSecondaryPosition, preferAbove, stoleFocus, source, isBeforeContent, disposables) {\n        this.initialMousePosX = initialMousePosX;\n        this.initialMousePosY = initialMousePosY;\n        this.colorPicker = colorPicker;\n        this.showAtPosition = showAtPosition;\n        this.showAtSecondaryPosition = showAtSecondaryPosition;\n        this.preferAbove = preferAbove;\n        this.stoleFocus = stoleFocus;\n        this.source = source;\n        this.isBeforeContent = isBeforeContent;\n        this.disposables = disposables;\n        this.closestMouseDistance = undefined;\n    }\n}\n", "var __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};\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 { HoverAction } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nconst $ = dom.$;\nlet EditorHoverStatusBar = class EditorHoverStatusBar extends Disposable {\n    get hasContent() {\n        return this._hasContent;\n    }\n    constructor(_keybindingService) {\n        super();\n        this._keybindingService = _keybindingService;\n        this._hasContent = false;\n        this.hoverElement = $('div.hover-row.status-bar');\n        this.hoverElement.tabIndex = 0;\n        this.actionsElement = dom.append(this.hoverElement, $('div.actions'));\n    }\n    addAction(actionOptions) {\n        const keybinding = this._keybindingService.lookupKeybinding(actionOptions.commandId);\n        const keybindingLabel = keybinding ? keybinding.getLabel() : null;\n        this._hasContent = true;\n        return this._register(HoverAction.render(this.actionsElement, actionOptions, keybindingLabel));\n    }\n    append(element) {\n        const result = dom.append(this.actionsElement, element);\n        this._hasContent = true;\n        return result;\n    }\n};\nEditorHoverStatusBar = __decorate([\n    __param(0, IKeybindingService)\n], EditorHoverStatusBar);\nexport { EditorHoverStatusBar };\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 { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { HoverOperation } from './hoverOperation.js';\nimport { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { MarginHoverComputer } from './marginHoverComputer.js';\nconst $ = dom.$;\nexport class MarginHoverWidget extends Disposable {\n    constructor(editor, languageService, openerService) {\n        super();\n        this._renderDisposeables = this._register(new DisposableStore());\n        this._editor = editor;\n        this._isVisible = false;\n        this._messages = [];\n        this._hover = this._register(new HoverWidget());\n        this._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n        this._markdownRenderer = this._register(new MarkdownRenderer({ editor: this._editor }, languageService, openerService));\n        this._computer = new MarginHoverComputer(this._editor);\n        this._hoverOperation = this._register(new HoverOperation(this._editor, this._computer));\n        this._register(this._hoverOperation.onResult((result) => {\n            this._withResult(result.value);\n        }));\n        this._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\n        this._register(this._editor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(50 /* EditorOption.fontInfo */)) {\n                this._updateFont();\n            }\n        }));\n        this._editor.addOverlayWidget(this);\n    }\n    dispose() {\n        this._editor.removeOverlayWidget(this);\n        super.dispose();\n    }\n    getId() {\n        return MarginHoverWidget.ID;\n    }\n    getDomNode() {\n        return this._hover.containerDomNode;\n    }\n    getPosition() {\n        return null;\n    }\n    _updateFont() {\n        const codeClasses = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n        codeClasses.forEach(node => this._editor.applyFontInfo(node));\n    }\n    _onModelDecorationsChanged() {\n        if (this._isVisible) {\n            // The decorations have changed and the hover is visible,\n            // we need to recompute the displayed text\n            this._hoverOperation.cancel();\n            this._hoverOperation.start(0 /* HoverStartMode.Delayed */);\n        }\n    }\n    showsOrWillShow(mouseEvent) {\n        const target = mouseEvent.target;\n        if (target.type === 2 /* MouseTargetType.GUTTER_GLYPH_MARGIN */ && target.detail.glyphMarginLane) {\n            this._startShowingAt(target.position.lineNumber, target.detail.glyphMarginLane);\n            return true;\n        }\n        if (target.type === 3 /* MouseTargetType.GUTTER_LINE_NUMBERS */) {\n            this._startShowingAt(target.position.lineNumber, 'lineNo');\n            return true;\n        }\n        return false;\n    }\n    _startShowingAt(lineNumber, laneOrLine) {\n        if (this._computer.lineNumber === lineNumber && this._computer.lane === laneOrLine) {\n            // We have to show the widget at the exact same line number as before, so no work is needed\n            return;\n        }\n        this._hoverOperation.cancel();\n        this.hide();\n        this._computer.lineNumber = lineNumber;\n        this._computer.lane = laneOrLine;\n        this._hoverOperation.start(0 /* HoverStartMode.Delayed */);\n    }\n    hide() {\n        this._computer.lineNumber = -1;\n        this._hoverOperation.cancel();\n        if (!this._isVisible) {\n            return;\n        }\n        this._isVisible = false;\n        this._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n    }\n    _withResult(result) {\n        this._messages = result;\n        if (this._messages.length > 0) {\n            this._renderMessages(this._computer.lineNumber, this._messages);\n        }\n        else {\n            this.hide();\n        }\n    }\n    _renderMessages(lineNumber, messages) {\n        this._renderDisposeables.clear();\n        const fragment = document.createDocumentFragment();\n        for (const msg of messages) {\n            const markdownHoverElement = $('div.hover-row.markdown-hover');\n            const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n            const renderedContents = this._renderDisposeables.add(this._markdownRenderer.render(msg.value));\n            hoverContentsElement.appendChild(renderedContents.element);\n            fragment.appendChild(markdownHoverElement);\n        }\n        this._updateContents(fragment);\n        this._showAt(lineNumber);\n    }\n    _updateContents(node) {\n        this._hover.contentsDomNode.textContent = '';\n        this._hover.contentsDomNode.appendChild(node);\n        this._updateFont();\n    }\n    _showAt(lineNumber) {\n        if (!this._isVisible) {\n            this._isVisible = true;\n            this._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n        }\n        const editorLayout = this._editor.getLayoutInfo();\n        const topForLineNumber = this._editor.getTopForLineNumber(lineNumber);\n        const editorScrollTop = this._editor.getScrollTop();\n        const lineHeight = this._editor.getOption(67 /* EditorOption.lineHeight */);\n        const nodeHeight = this._hover.containerDomNode.clientHeight;\n        const top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\n        const left = editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth + (this._computer.lane === 'lineNo' ? editorLayout.lineNumbersWidth : 0);\n        this._hover.containerDomNode.style.left = `${left}px`;\n        this._hover.containerDomNode.style.top = `${Math.max(Math.round(top), 0)}px`;\n    }\n}\nMarginHoverWidget.ID = 'editor.contrib.modesGlyphHoverWidget';\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 { asArray } from '../../../../base/common/arrays.js';\nimport { isEmptyMarkdownString } from '../../../../base/common/htmlContent.js';\nimport { GlyphMarginLane } from '../../../common/model.js';\nexport class MarginHoverComputer {\n    get lineNumber() {\n        return this._lineNumber;\n    }\n    set lineNumber(value) {\n        this._lineNumber = value;\n    }\n    get lane() {\n        return this._laneOrLine;\n    }\n    set lane(value) {\n        this._laneOrLine = value;\n    }\n    constructor(_editor) {\n        this._editor = _editor;\n        this._lineNumber = -1;\n        this._laneOrLine = GlyphMarginLane.Center;\n    }\n    computeSync() {\n        var _a, _b;\n        const toHoverMessage = (contents) => {\n            return {\n                value: contents\n            };\n        };\n        const lineDecorations = this._editor.getLineDecorations(this._lineNumber);\n        const result = [];\n        const isLineHover = this._laneOrLine === 'lineNo';\n        if (!lineDecorations) {\n            return result;\n        }\n        for (const d of lineDecorations) {\n            const lane = (_b = (_a = d.options.glyphMargin) === null || _a === void 0 ? void 0 : _a.position) !== null && _b !== void 0 ? _b : GlyphMarginLane.Center;\n            if (!isLineHover && lane !== this._laneOrLine) {\n                continue;\n            }\n            const hoverMessage = isLineHover ? d.options.lineNumberHoverMessage : d.options.glyphMarginHoverMessage;\n            if (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\n                continue;\n            }\n            result.push(...asArray(hoverMessage).map(toHoverMessage));\n        }\n        return result;\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 { EditorAction, EditorAction2, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { localize, localize2 } from '../../../../nls.js';\nimport { StandaloneColorPickerController } from './standaloneColorPickerWidget.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { MenuId, registerAction2 } from '../../../../platform/actions/common/actions.js';\nimport './colorPicker.css';\nexport class ShowOrFocusStandaloneColorPicker extends EditorAction2 {\n    constructor() {\n        super({\n            id: 'editor.action.showOrFocusStandaloneColorPicker',\n            title: {\n                ...localize2('showOrFocusStandaloneColorPicker', \"Show or Focus Standalone Color Picker\"),\n                mnemonicTitle: localize({ key: 'mishowOrFocusStandaloneColorPicker', comment: ['&& denotes a mnemonic'] }, \"&&Show or Focus Standalone Color Picker\"),\n            },\n            precondition: undefined,\n            menu: [\n                { id: MenuId.CommandPalette },\n            ],\n            metadata: {\n                description: localize2('showOrFocusStandaloneColorPickerDescription', \"Show or focus a standalone color picker which uses the default color provider. It displays hex/rgb/hsl colors.\"),\n            }\n        });\n    }\n    runEditorCommand(_accessor, editor) {\n        var _a;\n        (_a = StandaloneColorPickerController.get(editor)) === null || _a === void 0 ? void 0 : _a.showOrFocus();\n    }\n}\nclass HideStandaloneColorPicker extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.hideColorPicker',\n            label: localize({\n                key: 'hideColorPicker',\n                comment: [\n                    'Action that hides the color picker'\n                ]\n            }, \"Hide the Color Picker\"),\n            alias: 'Hide the Color Picker',\n            precondition: EditorContextKeys.standaloneColorPickerVisible.isEqualTo(true),\n            kbOpts: {\n                primary: 9 /* KeyCode.Escape */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: localize2('hideColorPickerDescription', \"Hide the standalone color picker.\"),\n            }\n        });\n    }\n    run(_accessor, editor) {\n        var _a;\n        (_a = StandaloneColorPickerController.get(editor)) === null || _a === void 0 ? void 0 : _a.hide();\n    }\n}\nclass InsertColorWithStandaloneColorPicker extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.insertColorWithStandaloneColorPicker',\n            label: localize({\n                key: 'insertColorWithStandaloneColorPicker',\n                comment: [\n                    'Action that inserts color with standalone color picker'\n                ]\n            }, \"Insert Color with Standalone Color Picker\"),\n            alias: 'Insert Color with Standalone Color Picker',\n            precondition: EditorContextKeys.standaloneColorPickerFocused.isEqualTo(true),\n            kbOpts: {\n                primary: 3 /* KeyCode.Enter */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: localize2('insertColorWithStandaloneColorPickerDescription', \"Insert hex/rgb/hsl colors with the focused standalone color picker.\"),\n            }\n        });\n    }\n    run(_accessor, editor) {\n        var _a;\n        (_a = StandaloneColorPickerController.get(editor)) === null || _a === void 0 ? void 0 : _a.insertColor();\n    }\n}\nregisterEditorAction(HideStandaloneColorPicker);\nregisterEditorAction(InsertColorWithStandaloneColorPicker);\nregisterAction2(ShowOrFocusStandaloneColorPicker);\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 StandaloneColorPickerController_1, StandaloneColorPickerWidget_1;\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { StandaloneColorPickerParticipant } from './colorHoverParticipant.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { EditorHoverStatusBar } from '../../hover/browser/contentHoverStatusBar.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { DefaultDocumentColorProvider } from './defaultDocumentColorProvider.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport './colorPicker.css';\nlet StandaloneColorPickerController = StandaloneColorPickerController_1 = class StandaloneColorPickerController extends Disposable {\n    constructor(_editor, _contextKeyService, _modelService, _keybindingService, _instantiationService, _languageFeatureService, _languageConfigurationService) {\n        super();\n        this._editor = _editor;\n        this._modelService = _modelService;\n        this._keybindingService = _keybindingService;\n        this._instantiationService = _instantiationService;\n        this._languageFeatureService = _languageFeatureService;\n        this._languageConfigurationService = _languageConfigurationService;\n        this._standaloneColorPickerWidget = null;\n        this._standaloneColorPickerVisible = EditorContextKeys.standaloneColorPickerVisible.bindTo(_contextKeyService);\n        this._standaloneColorPickerFocused = EditorContextKeys.standaloneColorPickerFocused.bindTo(_contextKeyService);\n    }\n    showOrFocus() {\n        var _a;\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        if (!this._standaloneColorPickerVisible.get()) {\n            this._standaloneColorPickerWidget = new StandaloneColorPickerWidget(this._editor, this._standaloneColorPickerVisible, this._standaloneColorPickerFocused, this._instantiationService, this._modelService, this._keybindingService, this._languageFeatureService, this._languageConfigurationService);\n        }\n        else if (!this._standaloneColorPickerFocused.get()) {\n            (_a = this._standaloneColorPickerWidget) === null || _a === void 0 ? void 0 : _a.focus();\n        }\n    }\n    hide() {\n        var _a;\n        this._standaloneColorPickerFocused.set(false);\n        this._standaloneColorPickerVisible.set(false);\n        (_a = this._standaloneColorPickerWidget) === null || _a === void 0 ? void 0 : _a.hide();\n        this._editor.focus();\n    }\n    insertColor() {\n        var _a;\n        (_a = this._standaloneColorPickerWidget) === null || _a === void 0 ? void 0 : _a.updateEditor();\n        this.hide();\n    }\n    static get(editor) {\n        return editor.getContribution(StandaloneColorPickerController_1.ID);\n    }\n};\nStandaloneColorPickerController.ID = 'editor.contrib.standaloneColorPickerController';\nStandaloneColorPickerController = StandaloneColorPickerController_1 = __decorate([\n    __param(1, IContextKeyService),\n    __param(2, IModelService),\n    __param(3, IKeybindingService),\n    __param(4, IInstantiationService),\n    __param(5, ILanguageFeaturesService),\n    __param(6, ILanguageConfigurationService)\n], StandaloneColorPickerController);\nexport { StandaloneColorPickerController };\nregisterEditorContribution(StandaloneColorPickerController.ID, StandaloneColorPickerController, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nconst PADDING = 8;\nconst CLOSE_BUTTON_WIDTH = 22;\nlet StandaloneColorPickerWidget = StandaloneColorPickerWidget_1 = class StandaloneColorPickerWidget extends Disposable {\n    constructor(_editor, _standaloneColorPickerVisible, _standaloneColorPickerFocused, _instantiationService, _modelService, _keybindingService, _languageFeaturesService, _languageConfigurationService) {\n        var _a;\n        super();\n        this._editor = _editor;\n        this._standaloneColorPickerVisible = _standaloneColorPickerVisible;\n        this._standaloneColorPickerFocused = _standaloneColorPickerFocused;\n        this._modelService = _modelService;\n        this._keybindingService = _keybindingService;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._languageConfigurationService = _languageConfigurationService;\n        this.allowEditorOverflow = true;\n        this._position = undefined;\n        this._body = document.createElement('div');\n        this._colorHover = null;\n        this._selectionSetInEditor = false;\n        this._onResult = this._register(new Emitter());\n        this.onResult = this._onResult.event;\n        this._standaloneColorPickerVisible.set(true);\n        this._standaloneColorPickerParticipant = _instantiationService.createInstance(StandaloneColorPickerParticipant, this._editor);\n        this._position = (_a = this._editor._getViewModel()) === null || _a === void 0 ? void 0 : _a.getPrimaryCursorState().modelState.position;\n        const editorSelection = this._editor.getSelection();\n        const selection = editorSelection ?\n            {\n                startLineNumber: editorSelection.startLineNumber,\n                startColumn: editorSelection.startColumn,\n                endLineNumber: editorSelection.endLineNumber,\n                endColumn: editorSelection.endColumn\n            } : { startLineNumber: 0, endLineNumber: 0, endColumn: 0, startColumn: 0 };\n        const focusTracker = this._register(dom.trackFocus(this._body));\n        this._register(focusTracker.onDidBlur(_ => {\n            this.hide();\n        }));\n        this._register(focusTracker.onDidFocus(_ => {\n            this.focus();\n        }));\n        // When the cursor position changes, hide the color picker\n        this._register(this._editor.onDidChangeCursorPosition(() => {\n            // Do not hide the color picker when the cursor changes position due to the keybindings\n            if (!this._selectionSetInEditor) {\n                this.hide();\n            }\n            else {\n                this._selectionSetInEditor = false;\n            }\n        }));\n        this._register(this._editor.onMouseMove((e) => {\n            var _a;\n            const classList = (_a = e.target.element) === null || _a === void 0 ? void 0 : _a.classList;\n            if (classList && classList.contains('colorpicker-color-decoration')) {\n                this.hide();\n            }\n        }));\n        this._register(this.onResult((result) => {\n            this._render(result.value, result.foundInEditor);\n        }));\n        this._start(selection);\n        this._body.style.zIndex = '50';\n        this._editor.addContentWidget(this);\n    }\n    updateEditor() {\n        if (this._colorHover) {\n            this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover);\n        }\n    }\n    getId() {\n        return StandaloneColorPickerWidget_1.ID;\n    }\n    getDomNode() {\n        return this._body;\n    }\n    getPosition() {\n        if (!this._position) {\n            return null;\n        }\n        const positionPreference = this._editor.getOption(60 /* EditorOption.hover */).above;\n        return {\n            position: this._position,\n            secondaryPosition: this._position,\n            preference: positionPreference ? [1 /* ContentWidgetPositionPreference.ABOVE */, 2 /* ContentWidgetPositionPreference.BELOW */] : [2 /* ContentWidgetPositionPreference.BELOW */, 1 /* ContentWidgetPositionPreference.ABOVE */],\n            positionAffinity: 2 /* PositionAffinity.None */\n        };\n    }\n    hide() {\n        this.dispose();\n        this._standaloneColorPickerVisible.set(false);\n        this._standaloneColorPickerFocused.set(false);\n        this._editor.removeContentWidget(this);\n        this._editor.focus();\n    }\n    focus() {\n        this._standaloneColorPickerFocused.set(true);\n        this._body.focus();\n    }\n    async _start(selection) {\n        const computeAsyncResult = await this._computeAsync(selection);\n        if (!computeAsyncResult) {\n            return;\n        }\n        this._onResult.fire(new StandaloneColorPickerResult(computeAsyncResult.result, computeAsyncResult.foundInEditor));\n    }\n    async _computeAsync(range) {\n        if (!this._editor.hasModel()) {\n            return null;\n        }\n        const colorInfo = {\n            range: range,\n            color: { red: 0, green: 0, blue: 0, alpha: 1 }\n        };\n        const colorHoverResult = await this._standaloneColorPickerParticipant.createColorHover(colorInfo, new DefaultDocumentColorProvider(this._modelService, this._languageConfigurationService), this._languageFeaturesService.colorProvider);\n        if (!colorHoverResult) {\n            return null;\n        }\n        return { result: colorHoverResult.colorHover, foundInEditor: colorHoverResult.foundInEditor };\n    }\n    _render(colorHover, foundInEditor) {\n        const fragment = document.createDocumentFragment();\n        const statusBar = this._register(new EditorHoverStatusBar(this._keybindingService));\n        let colorPickerWidget;\n        const context = {\n            fragment,\n            statusBar,\n            setColorPicker: (widget) => colorPickerWidget = widget,\n            onContentsChanged: () => { },\n            hide: () => this.hide()\n        };\n        this._colorHover = colorHover;\n        this._register(this._standaloneColorPickerParticipant.renderHoverParts(context, [colorHover]));\n        if (colorPickerWidget === undefined) {\n            return;\n        }\n        this._body.classList.add('standalone-colorpicker-body');\n        this._body.style.maxHeight = Math.max(this._editor.getLayoutInfo().height / 4, 250) + 'px';\n        this._body.style.maxWidth = Math.max(this._editor.getLayoutInfo().width * 0.66, 500) + 'px';\n        this._body.tabIndex = 0;\n        this._body.appendChild(fragment);\n        colorPickerWidget.layout();\n        const colorPickerBody = colorPickerWidget.body;\n        const saturationBoxWidth = colorPickerBody.saturationBox.domNode.clientWidth;\n        const widthOfOriginalColorBox = colorPickerBody.domNode.clientWidth - saturationBoxWidth - CLOSE_BUTTON_WIDTH - PADDING;\n        const enterButton = colorPickerWidget.body.enterButton;\n        enterButton === null || enterButton === void 0 ? void 0 : enterButton.onClicked(() => {\n            this.updateEditor();\n            this.hide();\n        });\n        const colorPickerHeader = colorPickerWidget.header;\n        const pickedColorNode = colorPickerHeader.pickedColorNode;\n        pickedColorNode.style.width = saturationBoxWidth + PADDING + 'px';\n        const originalColorNode = colorPickerHeader.originalColorNode;\n        originalColorNode.style.width = widthOfOriginalColorBox + 'px';\n        const closeButton = colorPickerWidget.header.closeButton;\n        closeButton === null || closeButton === void 0 ? void 0 : closeButton.onClicked(() => {\n            this.hide();\n        });\n        // When found in the editor, highlight the selection in the editor\n        if (foundInEditor) {\n            if (enterButton) {\n                enterButton.button.textContent = 'Replace';\n            }\n            this._selectionSetInEditor = true;\n            this._editor.setSelection(colorHover.range);\n        }\n        this._editor.layoutContentWidget(this);\n    }\n};\nStandaloneColorPickerWidget.ID = 'editor.contrib.standaloneColorPickerWidget';\nStandaloneColorPickerWidget = StandaloneColorPickerWidget_1 = __decorate([\n    __param(3, IInstantiationService),\n    __param(4, IModelService),\n    __param(5, IKeybindingService),\n    __param(6, ILanguageFeaturesService),\n    __param(7, ILanguageConfigurationService)\n], StandaloneColorPickerWidget);\nexport { StandaloneColorPickerWidget };\nclass StandaloneColorPickerResult {\n    // The color picker result consists of: an array of color results and a boolean indicating if the color was found in the editor\n    constructor(value, foundInEditor) {\n        this.value = value;\n        this.foundInEditor = foundInEditor;\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 { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { BlockCommentCommand } from './blockCommentCommand.js';\nimport { LineCommentCommand } from './lineCommentCommand.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nclass CommentLineAction extends EditorAction {\n    constructor(type, opts) {\n        super(opts);\n        this._type = type;\n    }\n    run(accessor, editor) {\n        const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n        if (!editor.hasModel()) {\n            return;\n        }\n        const model = editor.getModel();\n        const commands = [];\n        const modelOptions = model.getOptions();\n        const commentsOptions = editor.getOption(23 /* EditorOption.comments */);\n        const selections = editor.getSelections().map((selection, index) => ({ selection, index, ignoreFirstLine: false }));\n        selections.sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\n        // Remove selections that would result in copying the same line\n        let prev = selections[0];\n        for (let i = 1; i < selections.length; i++) {\n            const curr = selections[i];\n            if (prev.selection.endLineNumber === curr.selection.startLineNumber) {\n                // these two selections would copy the same line\n                if (prev.index < curr.index) {\n                    // prev wins\n                    curr.ignoreFirstLine = true;\n                }\n                else {\n                    // curr wins\n                    prev.ignoreFirstLine = true;\n                    prev = curr;\n                }\n            }\n        }\n        for (const selection of selections) {\n            commands.push(new LineCommentCommand(languageConfigurationService, selection.selection, modelOptions.indentSize, this._type, commentsOptions.insertSpace, commentsOptions.ignoreEmptyLines, selection.ignoreFirstLine));\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, commands);\n        editor.pushUndoStop();\n    }\n}\nclass ToggleCommentLineAction extends CommentLineAction {\n    constructor() {\n        super(0 /* Type.Toggle */, {\n            id: 'editor.action.commentLine',\n            label: nls.localize('comment.line', \"Toggle Line Comment\"),\n            alias: 'Toggle Line Comment',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 90 /* KeyCode.Slash */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MenuId.MenubarEditMenu,\n                group: '5_insert',\n                title: nls.localize({ key: 'miToggleLineComment', comment: ['&& denotes a mnemonic'] }, \"&&Toggle Line Comment\"),\n                order: 1\n            }\n        });\n    }\n}\nclass AddLineCommentAction extends CommentLineAction {\n    constructor() {\n        super(1 /* Type.ForceAdd */, {\n            id: 'editor.action.addCommentLine',\n            label: nls.localize('comment.line.add', \"Add Line Comment\"),\n            alias: 'Add Line Comment',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 33 /* KeyCode.KeyC */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nclass RemoveLineCommentAction extends CommentLineAction {\n    constructor() {\n        super(2 /* Type.ForceRemove */, {\n            id: 'editor.action.removeCommentLine',\n            label: nls.localize('comment.line.remove', \"Remove Line Comment\"),\n            alias: 'Remove Line Comment',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 51 /* KeyCode.KeyU */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nclass BlockCommentAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.blockComment',\n            label: nls.localize('comment.block', \"Toggle Block Comment\"),\n            alias: 'Toggle Block Comment',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 31 /* KeyCode.KeyA */,\n                linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 31 /* KeyCode.KeyA */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MenuId.MenubarEditMenu,\n                group: '5_insert',\n                title: nls.localize({ key: 'miToggleBlockComment', comment: ['&& denotes a mnemonic'] }, \"Toggle &&Block Comment\"),\n                order: 2\n            }\n        });\n    }\n    run(accessor, editor) {\n        const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n        if (!editor.hasModel()) {\n            return;\n        }\n        const commentsOptions = editor.getOption(23 /* EditorOption.comments */);\n        const commands = [];\n        const selections = editor.getSelections();\n        for (const selection of selections) {\n            commands.push(new BlockCommentCommand(selection, commentsOptions.insertSpace, languageConfigurationService));\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, commands);\n        editor.pushUndoStop();\n    }\n}\nregisterEditorAction(ToggleCommentLineAction);\nregisterEditorAction(AddLineCommentAction);\nregisterEditorAction(RemoveLineCommentAction);\nregisterEditorAction(BlockCommentAction);\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 { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nexport class BlockCommentCommand {\n    constructor(selection, insertSpace, languageConfigurationService) {\n        this.languageConfigurationService = languageConfigurationService;\n        this._selection = selection;\n        this._insertSpace = insertSpace;\n        this._usedEndToken = null;\n    }\n    static _haystackHasNeedleAtOffset(haystack, needle, offset) {\n        if (offset < 0) {\n            return false;\n        }\n        const needleLength = needle.length;\n        const haystackLength = haystack.length;\n        if (offset + needleLength > haystackLength) {\n            return false;\n        }\n        for (let i = 0; i < needleLength; i++) {\n            const codeA = haystack.charCodeAt(offset + i);\n            const codeB = needle.charCodeAt(i);\n            if (codeA === codeB) {\n                continue;\n            }\n            if (codeA >= 65 /* CharCode.A */ && codeA <= 90 /* CharCode.Z */ && codeA + 32 === codeB) {\n                // codeA is upper-case variant of codeB\n                continue;\n            }\n            if (codeB >= 65 /* CharCode.A */ && codeB <= 90 /* CharCode.Z */ && codeB + 32 === codeA) {\n                // codeB is upper-case variant of codeA\n                continue;\n            }\n            return false;\n        }\n        return true;\n    }\n    _createOperationsForBlockComment(selection, startToken, endToken, insertSpace, model, builder) {\n        const startLineNumber = selection.startLineNumber;\n        const startColumn = selection.startColumn;\n        const endLineNumber = selection.endLineNumber;\n        const endColumn = selection.endColumn;\n        const startLineText = model.getLineContent(startLineNumber);\n        const endLineText = model.getLineContent(endLineNumber);\n        let startTokenIndex = startLineText.lastIndexOf(startToken, startColumn - 1 + startToken.length);\n        let endTokenIndex = endLineText.indexOf(endToken, endColumn - 1 - endToken.length);\n        if (startTokenIndex !== -1 && endTokenIndex !== -1) {\n            if (startLineNumber === endLineNumber) {\n                const lineBetweenTokens = startLineText.substring(startTokenIndex + startToken.length, endTokenIndex);\n                if (lineBetweenTokens.indexOf(endToken) >= 0) {\n                    // force to add a block comment\n                    startTokenIndex = -1;\n                    endTokenIndex = -1;\n                }\n            }\n            else {\n                const startLineAfterStartToken = startLineText.substring(startTokenIndex + startToken.length);\n                const endLineBeforeEndToken = endLineText.substring(0, endTokenIndex);\n                if (startLineAfterStartToken.indexOf(endToken) >= 0 || endLineBeforeEndToken.indexOf(endToken) >= 0) {\n                    // force to add a block comment\n                    startTokenIndex = -1;\n                    endTokenIndex = -1;\n                }\n            }\n        }\n        let ops;\n        if (startTokenIndex !== -1 && endTokenIndex !== -1) {\n            // Consider spaces as part of the comment tokens\n            if (insertSpace && startTokenIndex + startToken.length < startLineText.length && startLineText.charCodeAt(startTokenIndex + startToken.length) === 32 /* CharCode.Space */) {\n                // Pretend the start token contains a trailing space\n                startToken = startToken + ' ';\n            }\n            if (insertSpace && endTokenIndex > 0 && endLineText.charCodeAt(endTokenIndex - 1) === 32 /* CharCode.Space */) {\n                // Pretend the end token contains a leading space\n                endToken = ' ' + endToken;\n                endTokenIndex -= 1;\n            }\n            ops = BlockCommentCommand._createRemoveBlockCommentOperations(new Range(startLineNumber, startTokenIndex + startToken.length + 1, endLineNumber, endTokenIndex + 1), startToken, endToken);\n        }\n        else {\n            ops = BlockCommentCommand._createAddBlockCommentOperations(selection, startToken, endToken, this._insertSpace);\n            this._usedEndToken = ops.length === 1 ? endToken : null;\n        }\n        for (const op of ops) {\n            builder.addTrackedEditOperation(op.range, op.text);\n        }\n    }\n    static _createRemoveBlockCommentOperations(r, startToken, endToken) {\n        const res = [];\n        if (!Range.isEmpty(r)) {\n            // Remove block comment start\n            res.push(EditOperation.delete(new Range(r.startLineNumber, r.startColumn - startToken.length, r.startLineNumber, r.startColumn)));\n            // Remove block comment end\n            res.push(EditOperation.delete(new Range(r.endLineNumber, r.endColumn, r.endLineNumber, r.endColumn + endToken.length)));\n        }\n        else {\n            // Remove both continuously\n            res.push(EditOperation.delete(new Range(r.startLineNumber, r.startColumn - startToken.length, r.endLineNumber, r.endColumn + endToken.length)));\n        }\n        return res;\n    }\n    static _createAddBlockCommentOperations(r, startToken, endToken, insertSpace) {\n        const res = [];\n        if (!Range.isEmpty(r)) {\n            // Insert block comment start\n            res.push(EditOperation.insert(new Position(r.startLineNumber, r.startColumn), startToken + (insertSpace ? ' ' : '')));\n            // Insert block comment end\n            res.push(EditOperation.insert(new Position(r.endLineNumber, r.endColumn), (insertSpace ? ' ' : '') + endToken));\n        }\n        else {\n            // Insert both continuously\n            res.push(EditOperation.replace(new Range(r.startLineNumber, r.startColumn, r.endLineNumber, r.endColumn), startToken + '  ' + endToken));\n        }\n        return res;\n    }\n    getEditOperations(model, builder) {\n        const startLineNumber = this._selection.startLineNumber;\n        const startColumn = this._selection.startColumn;\n        model.tokenization.tokenizeIfCheap(startLineNumber);\n        const languageId = model.getLanguageIdAtPosition(startLineNumber, startColumn);\n        const config = this.languageConfigurationService.getLanguageConfiguration(languageId).comments;\n        if (!config || !config.blockCommentStartToken || !config.blockCommentEndToken) {\n            // Mode does not support block comments\n            return;\n        }\n        this._createOperationsForBlockComment(this._selection, config.blockCommentStartToken, config.blockCommentEndToken, this._insertSpace, model, builder);\n    }\n    computeCursorState(model, helper) {\n        const inverseEditOperations = helper.getInverseEditOperations();\n        if (inverseEditOperations.length === 2) {\n            const startTokenEditOperation = inverseEditOperations[0];\n            const endTokenEditOperation = inverseEditOperations[1];\n            return new Selection(startTokenEditOperation.range.endLineNumber, startTokenEditOperation.range.endColumn, endTokenEditOperation.range.startLineNumber, endTokenEditOperation.range.startColumn);\n        }\n        else {\n            const srcRange = inverseEditOperations[0].range;\n            const deltaColumn = this._usedEndToken ? -this._usedEndToken.length - 1 : 0; // minus 1 space before endToken\n            return new Selection(srcRange.endLineNumber, srcRange.endColumn + deltaColumn, srcRange.endLineNumber, srcRange.endColumn + deltaColumn);\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 * as strings from '../../../../base/common/strings.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { BlockCommentCommand } from './blockCommentCommand.js';\nexport class LineCommentCommand {\n    constructor(languageConfigurationService, selection, indentSize, type, insertSpace, ignoreEmptyLines, ignoreFirstLine) {\n        this.languageConfigurationService = languageConfigurationService;\n        this._selection = selection;\n        this._indentSize = indentSize;\n        this._type = type;\n        this._insertSpace = insertSpace;\n        this._selectionId = null;\n        this._deltaColumn = 0;\n        this._moveEndPositionDown = false;\n        this._ignoreEmptyLines = ignoreEmptyLines;\n        this._ignoreFirstLine = ignoreFirstLine || false;\n    }\n    /**\n     * Do an initial pass over the lines and gather info about the line comment string.\n     * Returns null if any of the lines doesn't support a line comment string.\n     */\n    static _gatherPreflightCommentStrings(model, startLineNumber, endLineNumber, languageConfigurationService) {\n        model.tokenization.tokenizeIfCheap(startLineNumber);\n        const languageId = model.getLanguageIdAtPosition(startLineNumber, 1);\n        const config = languageConfigurationService.getLanguageConfiguration(languageId).comments;\n        const commentStr = (config ? config.lineCommentToken : null);\n        if (!commentStr) {\n            // Mode does not support line comments\n            return null;\n        }\n        const lines = [];\n        for (let i = 0, lineCount = endLineNumber - startLineNumber + 1; i < lineCount; i++) {\n            lines[i] = {\n                ignore: false,\n                commentStr: commentStr,\n                commentStrOffset: 0,\n                commentStrLength: commentStr.length\n            };\n        }\n        return lines;\n    }\n    /**\n     * Analyze lines and decide which lines are relevant and what the toggle should do.\n     * Also, build up several offsets and lengths useful in the generation of editor operations.\n     */\n    static _analyzeLines(type, insertSpace, model, lines, startLineNumber, ignoreEmptyLines, ignoreFirstLine, languageConfigurationService) {\n        let onlyWhitespaceLines = true;\n        let shouldRemoveComments;\n        if (type === 0 /* Type.Toggle */) {\n            shouldRemoveComments = true;\n        }\n        else if (type === 1 /* Type.ForceAdd */) {\n            shouldRemoveComments = false;\n        }\n        else {\n            shouldRemoveComments = true;\n        }\n        for (let i = 0, lineCount = lines.length; i < lineCount; i++) {\n            const lineData = lines[i];\n            const lineNumber = startLineNumber + i;\n            if (lineNumber === startLineNumber && ignoreFirstLine) {\n                // first line ignored\n                lineData.ignore = true;\n                continue;\n            }\n            const lineContent = model.getLineContent(lineNumber);\n            const lineContentStartOffset = strings.firstNonWhitespaceIndex(lineContent);\n            if (lineContentStartOffset === -1) {\n                // Empty or whitespace only line\n                lineData.ignore = ignoreEmptyLines;\n                lineData.commentStrOffset = lineContent.length;\n                continue;\n            }\n            onlyWhitespaceLines = false;\n            lineData.ignore = false;\n            lineData.commentStrOffset = lineContentStartOffset;\n            if (shouldRemoveComments && !BlockCommentCommand._haystackHasNeedleAtOffset(lineContent, lineData.commentStr, lineContentStartOffset)) {\n                if (type === 0 /* Type.Toggle */) {\n                    // Every line so far has been a line comment, but this one is not\n                    shouldRemoveComments = false;\n                }\n                else if (type === 1 /* Type.ForceAdd */) {\n                    // Will not happen\n                }\n                else {\n                    lineData.ignore = true;\n                }\n            }\n            if (shouldRemoveComments && insertSpace) {\n                // Remove a following space if present\n                const commentStrEndOffset = lineContentStartOffset + lineData.commentStrLength;\n                if (commentStrEndOffset < lineContent.length && lineContent.charCodeAt(commentStrEndOffset) === 32 /* CharCode.Space */) {\n                    lineData.commentStrLength += 1;\n                }\n            }\n        }\n        if (type === 0 /* Type.Toggle */ && onlyWhitespaceLines) {\n            // For only whitespace lines, we insert comments\n            shouldRemoveComments = false;\n            // Also, no longer ignore them\n            for (let i = 0, lineCount = lines.length; i < lineCount; i++) {\n                lines[i].ignore = false;\n            }\n        }\n        return {\n            supported: true,\n            shouldRemoveComments: shouldRemoveComments,\n            lines: lines\n        };\n    }\n    /**\n     * Analyze all lines and decide exactly what to do => not supported | insert line comments | remove line comments\n     */\n    static _gatherPreflightData(type, insertSpace, model, startLineNumber, endLineNumber, ignoreEmptyLines, ignoreFirstLine, languageConfigurationService) {\n        const lines = LineCommentCommand._gatherPreflightCommentStrings(model, startLineNumber, endLineNumber, languageConfigurationService);\n        if (lines === null) {\n            return {\n                supported: false\n            };\n        }\n        return LineCommentCommand._analyzeLines(type, insertSpace, model, lines, startLineNumber, ignoreEmptyLines, ignoreFirstLine, languageConfigurationService);\n    }\n    /**\n     * Given a successful analysis, execute either insert line comments, either remove line comments\n     */\n    _executeLineComments(model, builder, data, s) {\n        let ops;\n        if (data.shouldRemoveComments) {\n            ops = LineCommentCommand._createRemoveLineCommentsOperations(data.lines, s.startLineNumber);\n        }\n        else {\n            LineCommentCommand._normalizeInsertionPoint(model, data.lines, s.startLineNumber, this._indentSize);\n            ops = this._createAddLineCommentsOperations(data.lines, s.startLineNumber);\n        }\n        const cursorPosition = new Position(s.positionLineNumber, s.positionColumn);\n        for (let i = 0, len = ops.length; i < len; i++) {\n            builder.addEditOperation(ops[i].range, ops[i].text);\n            if (Range.isEmpty(ops[i].range) && Range.getStartPosition(ops[i].range).equals(cursorPosition)) {\n                const lineContent = model.getLineContent(cursorPosition.lineNumber);\n                if (lineContent.length + 1 === cursorPosition.column) {\n                    this._deltaColumn = (ops[i].text || '').length;\n                }\n            }\n        }\n        this._selectionId = builder.trackSelection(s);\n    }\n    _attemptRemoveBlockComment(model, s, startToken, endToken) {\n        let startLineNumber = s.startLineNumber;\n        let endLineNumber = s.endLineNumber;\n        const startTokenAllowedBeforeColumn = endToken.length + Math.max(model.getLineFirstNonWhitespaceColumn(s.startLineNumber), s.startColumn);\n        let startTokenIndex = model.getLineContent(startLineNumber).lastIndexOf(startToken, startTokenAllowedBeforeColumn - 1);\n        let endTokenIndex = model.getLineContent(endLineNumber).indexOf(endToken, s.endColumn - 1 - startToken.length);\n        if (startTokenIndex !== -1 && endTokenIndex === -1) {\n            endTokenIndex = model.getLineContent(startLineNumber).indexOf(endToken, startTokenIndex + startToken.length);\n            endLineNumber = startLineNumber;\n        }\n        if (startTokenIndex === -1 && endTokenIndex !== -1) {\n            startTokenIndex = model.getLineContent(endLineNumber).lastIndexOf(startToken, endTokenIndex);\n            startLineNumber = endLineNumber;\n        }\n        if (s.isEmpty() && (startTokenIndex === -1 || endTokenIndex === -1)) {\n            startTokenIndex = model.getLineContent(startLineNumber).indexOf(startToken);\n            if (startTokenIndex !== -1) {\n                endTokenIndex = model.getLineContent(startLineNumber).indexOf(endToken, startTokenIndex + startToken.length);\n            }\n        }\n        // We have to adjust to possible inner white space.\n        // For Space after startToken, add Space to startToken - range math will work out.\n        if (startTokenIndex !== -1 && model.getLineContent(startLineNumber).charCodeAt(startTokenIndex + startToken.length) === 32 /* CharCode.Space */) {\n            startToken += ' ';\n        }\n        // For Space before endToken, add Space before endToken and shift index one left.\n        if (endTokenIndex !== -1 && model.getLineContent(endLineNumber).charCodeAt(endTokenIndex - 1) === 32 /* CharCode.Space */) {\n            endToken = ' ' + endToken;\n            endTokenIndex -= 1;\n        }\n        if (startTokenIndex !== -1 && endTokenIndex !== -1) {\n            return BlockCommentCommand._createRemoveBlockCommentOperations(new Range(startLineNumber, startTokenIndex + startToken.length + 1, endLineNumber, endTokenIndex + 1), startToken, endToken);\n        }\n        return null;\n    }\n    /**\n     * Given an unsuccessful analysis, delegate to the block comment command\n     */\n    _executeBlockComment(model, builder, s) {\n        model.tokenization.tokenizeIfCheap(s.startLineNumber);\n        const languageId = model.getLanguageIdAtPosition(s.startLineNumber, 1);\n        const config = this.languageConfigurationService.getLanguageConfiguration(languageId).comments;\n        if (!config || !config.blockCommentStartToken || !config.blockCommentEndToken) {\n            // Mode does not support block comments\n            return;\n        }\n        const startToken = config.blockCommentStartToken;\n        const endToken = config.blockCommentEndToken;\n        let ops = this._attemptRemoveBlockComment(model, s, startToken, endToken);\n        if (!ops) {\n            if (s.isEmpty()) {\n                const lineContent = model.getLineContent(s.startLineNumber);\n                let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\n                if (firstNonWhitespaceIndex === -1) {\n                    // Line is empty or contains only whitespace\n                    firstNonWhitespaceIndex = lineContent.length;\n                }\n                ops = BlockCommentCommand._createAddBlockCommentOperations(new Range(s.startLineNumber, firstNonWhitespaceIndex + 1, s.startLineNumber, lineContent.length + 1), startToken, endToken, this._insertSpace);\n            }\n            else {\n                ops = BlockCommentCommand._createAddBlockCommentOperations(new Range(s.startLineNumber, model.getLineFirstNonWhitespaceColumn(s.startLineNumber), s.endLineNumber, model.getLineMaxColumn(s.endLineNumber)), startToken, endToken, this._insertSpace);\n            }\n            if (ops.length === 1) {\n                // Leave cursor after token and Space\n                this._deltaColumn = startToken.length + 1;\n            }\n        }\n        this._selectionId = builder.trackSelection(s);\n        for (const op of ops) {\n            builder.addEditOperation(op.range, op.text);\n        }\n    }\n    getEditOperations(model, builder) {\n        let s = this._selection;\n        this._moveEndPositionDown = false;\n        if (s.startLineNumber === s.endLineNumber && this._ignoreFirstLine) {\n            builder.addEditOperation(new Range(s.startLineNumber, model.getLineMaxColumn(s.startLineNumber), s.startLineNumber + 1, 1), s.startLineNumber === model.getLineCount() ? '' : '\\n');\n            this._selectionId = builder.trackSelection(s);\n            return;\n        }\n        if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n            this._moveEndPositionDown = true;\n            s = s.setEndPosition(s.endLineNumber - 1, model.getLineMaxColumn(s.endLineNumber - 1));\n        }\n        const data = LineCommentCommand._gatherPreflightData(this._type, this._insertSpace, model, s.startLineNumber, s.endLineNumber, this._ignoreEmptyLines, this._ignoreFirstLine, this.languageConfigurationService);\n        if (data.supported) {\n            return this._executeLineComments(model, builder, data, s);\n        }\n        return this._executeBlockComment(model, builder, s);\n    }\n    computeCursorState(model, helper) {\n        let result = helper.getTrackedSelection(this._selectionId);\n        if (this._moveEndPositionDown) {\n            result = result.setEndPosition(result.endLineNumber + 1, 1);\n        }\n        return new Selection(result.selectionStartLineNumber, result.selectionStartColumn + this._deltaColumn, result.positionLineNumber, result.positionColumn + this._deltaColumn);\n    }\n    /**\n     * Generate edit operations in the remove line comment case\n     */\n    static _createRemoveLineCommentsOperations(lines, startLineNumber) {\n        const res = [];\n        for (let i = 0, len = lines.length; i < len; i++) {\n            const lineData = lines[i];\n            if (lineData.ignore) {\n                continue;\n            }\n            res.push(EditOperation.delete(new Range(startLineNumber + i, lineData.commentStrOffset + 1, startLineNumber + i, lineData.commentStrOffset + lineData.commentStrLength + 1)));\n        }\n        return res;\n    }\n    /**\n     * Generate edit operations in the add line comment case\n     */\n    _createAddLineCommentsOperations(lines, startLineNumber) {\n        const res = [];\n        const afterCommentStr = this._insertSpace ? ' ' : '';\n        for (let i = 0, len = lines.length; i < len; i++) {\n            const lineData = lines[i];\n            if (lineData.ignore) {\n                continue;\n            }\n            res.push(EditOperation.insert(new Position(startLineNumber + i, lineData.commentStrOffset + 1), lineData.commentStr + afterCommentStr));\n        }\n        return res;\n    }\n    static nextVisibleColumn(currentVisibleColumn, indentSize, isTab, columnSize) {\n        if (isTab) {\n            return currentVisibleColumn + (indentSize - (currentVisibleColumn % indentSize));\n        }\n        return currentVisibleColumn + columnSize;\n    }\n    /**\n     * Adjust insertion points to have them vertically aligned in the add line comment case\n     */\n    static _normalizeInsertionPoint(model, lines, startLineNumber, indentSize) {\n        let minVisibleColumn = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n        let j;\n        let lenJ;\n        for (let i = 0, len = lines.length; i < len; i++) {\n            if (lines[i].ignore) {\n                continue;\n            }\n            const lineContent = model.getLineContent(startLineNumber + i);\n            let currentVisibleColumn = 0;\n            for (let j = 0, lenJ = lines[i].commentStrOffset; currentVisibleColumn < minVisibleColumn && j < lenJ; j++) {\n                currentVisibleColumn = LineCommentCommand.nextVisibleColumn(currentVisibleColumn, indentSize, lineContent.charCodeAt(j) === 9 /* CharCode.Tab */, 1);\n            }\n            if (currentVisibleColumn < minVisibleColumn) {\n                minVisibleColumn = currentVisibleColumn;\n            }\n        }\n        minVisibleColumn = Math.floor(minVisibleColumn / indentSize) * indentSize;\n        for (let i = 0, len = lines.length; i < len; i++) {\n            if (lines[i].ignore) {\n                continue;\n            }\n            const lineContent = model.getLineContent(startLineNumber + i);\n            let currentVisibleColumn = 0;\n            for (j = 0, lenJ = lines[i].commentStrOffset; currentVisibleColumn < minVisibleColumn && j < lenJ; j++) {\n                currentVisibleColumn = LineCommentCommand.nextVisibleColumn(currentVisibleColumn, indentSize, lineContent.charCodeAt(j) === 9 /* CharCode.Tab */, 1);\n            }\n            if (currentVisibleColumn > minVisibleColumn) {\n                lines[i].commentStrOffset = j - 1;\n            }\n            else {\n                lines[i].commentStrOffset = j;\n            }\n        }\n    }\n}\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ContextMenuController_1;\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionViewItem } from '../../../../base/browser/ui/actionbar/actionViewItems.js';\nimport { Separator, SubmenuAction } from '../../../../base/common/actions.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { isIOS } from '../../../../base/common/platform.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nimport { IMenuService, SubmenuItemAction } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextMenuService, IContextViewService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IWorkspaceContextService, isStandaloneEditorWorkspace } from '../../../../platform/workspace/common/workspace.js';\nlet ContextMenuController = ContextMenuController_1 = class ContextMenuController {\n    static get(editor) {\n        return editor.getContribution(ContextMenuController_1.ID);\n    }\n    constructor(editor, _contextMenuService, _contextViewService, _contextKeyService, _keybindingService, _menuService, _configurationService, _workspaceContextService) {\n        this._contextMenuService = _contextMenuService;\n        this._contextViewService = _contextViewService;\n        this._contextKeyService = _contextKeyService;\n        this._keybindingService = _keybindingService;\n        this._menuService = _menuService;\n        this._configurationService = _configurationService;\n        this._workspaceContextService = _workspaceContextService;\n        this._toDispose = new DisposableStore();\n        this._contextMenuIsBeingShownCount = 0;\n        this._editor = editor;\n        this._toDispose.add(this._editor.onContextMenu((e) => this._onContextMenu(e)));\n        this._toDispose.add(this._editor.onMouseWheel((e) => {\n            if (this._contextMenuIsBeingShownCount > 0) {\n                const view = this._contextViewService.getContextViewElement();\n                const target = e.srcElement;\n                // Event triggers on shadow root host first\n                // Check if the context view is under this host before hiding it #103169\n                if (!(target.shadowRoot && dom.getShadowRoot(view) === target.shadowRoot)) {\n                    this._contextViewService.hideContextView();\n                }\n            }\n        }));\n        this._toDispose.add(this._editor.onKeyDown((e) => {\n            if (!this._editor.getOption(24 /* EditorOption.contextmenu */)) {\n                return; // Context menu is turned off through configuration\n            }\n            if (e.keyCode === 58 /* KeyCode.ContextMenu */) {\n                // Chrome is funny like that\n                e.preventDefault();\n                e.stopPropagation();\n                this.showContextMenu();\n            }\n        }));\n    }\n    _onContextMenu(e) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        if (!this._editor.getOption(24 /* EditorOption.contextmenu */)) {\n            this._editor.focus();\n            // Ensure the cursor is at the position of the mouse click\n            if (e.target.position && !this._editor.getSelection().containsPosition(e.target.position)) {\n                this._editor.setPosition(e.target.position);\n            }\n            return; // Context menu is turned off through configuration\n        }\n        if (e.target.type === 12 /* MouseTargetType.OVERLAY_WIDGET */) {\n            return; // allow native menu on widgets to support right click on input field for example in find\n        }\n        if (e.target.type === 6 /* MouseTargetType.CONTENT_TEXT */ && e.target.detail.injectedText) {\n            return; // allow native menu on injected text\n        }\n        e.event.preventDefault();\n        e.event.stopPropagation();\n        if (e.target.type === 11 /* MouseTargetType.SCROLLBAR */) {\n            return this._showScrollbarContextMenu(e.event);\n        }\n        if (e.target.type !== 6 /* MouseTargetType.CONTENT_TEXT */ && e.target.type !== 7 /* MouseTargetType.CONTENT_EMPTY */ && e.target.type !== 1 /* MouseTargetType.TEXTAREA */) {\n            return; // only support mouse click into text or native context menu key for now\n        }\n        // Ensure the editor gets focus if it hasn't, so the right events are being sent to other contributions\n        this._editor.focus();\n        // Ensure the cursor is at the position of the mouse click\n        if (e.target.position) {\n            let hasSelectionAtPosition = false;\n            for (const selection of this._editor.getSelections()) {\n                if (selection.containsPosition(e.target.position)) {\n                    hasSelectionAtPosition = true;\n                    break;\n                }\n            }\n            if (!hasSelectionAtPosition) {\n                this._editor.setPosition(e.target.position);\n            }\n        }\n        // Unless the user triggerd the context menu through Shift+F10, use the mouse position as menu position\n        let anchor = null;\n        if (e.target.type !== 1 /* MouseTargetType.TEXTAREA */) {\n            anchor = e.event;\n        }\n        // Show the context menu\n        this.showContextMenu(anchor);\n    }\n    showContextMenu(anchor) {\n        if (!this._editor.getOption(24 /* EditorOption.contextmenu */)) {\n            return; // Context menu is turned off through configuration\n        }\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        // Find actions available for menu\n        const menuActions = this._getMenuActions(this._editor.getModel(), this._editor.contextMenuId);\n        // Show menu if we have actions to show\n        if (menuActions.length > 0) {\n            this._doShowContextMenu(menuActions, anchor);\n        }\n    }\n    _getMenuActions(model, menuId) {\n        const result = [];\n        // get menu groups\n        const menu = this._menuService.createMenu(menuId, this._contextKeyService);\n        const groups = menu.getActions({ arg: model.uri });\n        menu.dispose();\n        // translate them into other actions\n        for (const group of groups) {\n            const [, actions] = group;\n            let addedItems = 0;\n            for (const action of actions) {\n                if (action instanceof SubmenuItemAction) {\n                    const subActions = this._getMenuActions(model, action.item.submenu);\n                    if (subActions.length > 0) {\n                        result.push(new SubmenuAction(action.id, action.label, subActions));\n                        addedItems++;\n                    }\n                }\n                else {\n                    result.push(action);\n                    addedItems++;\n                }\n            }\n            if (addedItems) {\n                result.push(new Separator());\n            }\n        }\n        if (result.length) {\n            result.pop(); // remove last separator\n        }\n        return result;\n    }\n    _doShowContextMenu(actions, event = null) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        // Disable hover\n        const oldHoverSetting = this._editor.getOption(60 /* EditorOption.hover */);\n        this._editor.updateOptions({\n            hover: {\n                enabled: false\n            }\n        });\n        let anchor = event;\n        if (!anchor) {\n            // Ensure selection is visible\n            this._editor.revealPosition(this._editor.getPosition(), 1 /* ScrollType.Immediate */);\n            this._editor.render();\n            const cursorCoords = this._editor.getScrolledVisiblePosition(this._editor.getPosition());\n            // Translate to absolute editor position\n            const editorCoords = dom.getDomNodePagePosition(this._editor.getDomNode());\n            const posx = editorCoords.left + cursorCoords.left;\n            const posy = editorCoords.top + cursorCoords.top + cursorCoords.height;\n            anchor = { x: posx, y: posy };\n        }\n        const useShadowDOM = this._editor.getOption(127 /* EditorOption.useShadowDOM */) && !isIOS; // Do not use shadow dom on IOS #122035\n        // Show menu\n        this._contextMenuIsBeingShownCount++;\n        this._contextMenuService.showContextMenu({\n            domForShadowRoot: useShadowDOM ? this._editor.getDomNode() : undefined,\n            getAnchor: () => anchor,\n            getActions: () => actions,\n            getActionViewItem: (action) => {\n                const keybinding = this._keybindingFor(action);\n                if (keybinding) {\n                    return new ActionViewItem(action, action, { label: true, keybinding: keybinding.getLabel(), isMenu: true });\n                }\n                const customActionViewItem = action;\n                if (typeof customActionViewItem.getActionViewItem === 'function') {\n                    return customActionViewItem.getActionViewItem();\n                }\n                return new ActionViewItem(action, action, { icon: true, label: true, isMenu: true });\n            },\n            getKeyBinding: (action) => {\n                return this._keybindingFor(action);\n            },\n            onHide: (wasCancelled) => {\n                this._contextMenuIsBeingShownCount--;\n                this._editor.updateOptions({\n                    hover: oldHoverSetting\n                });\n            }\n        });\n    }\n    _showScrollbarContextMenu(anchor) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        if (isStandaloneEditorWorkspace(this._workspaceContextService.getWorkspace())) {\n            // can't update the configuration properly in the standalone editor\n            return;\n        }\n        const minimapOptions = this._editor.getOption(73 /* EditorOption.minimap */);\n        let lastId = 0;\n        const createAction = (opts) => {\n            return {\n                id: `menu-action-${++lastId}`,\n                label: opts.label,\n                tooltip: '',\n                class: undefined,\n                enabled: (typeof opts.enabled === 'undefined' ? true : opts.enabled),\n                checked: opts.checked,\n                run: opts.run\n            };\n        };\n        const createSubmenuAction = (label, actions) => {\n            return new SubmenuAction(`menu-action-${++lastId}`, label, actions, undefined);\n        };\n        const createEnumAction = (label, enabled, configName, configuredValue, options) => {\n            if (!enabled) {\n                return createAction({ label, enabled, run: () => { } });\n            }\n            const createRunner = (value) => {\n                return () => {\n                    this._configurationService.updateValue(configName, value);\n                };\n            };\n            const actions = [];\n            for (const option of options) {\n                actions.push(createAction({\n                    label: option.label,\n                    checked: configuredValue === option.value,\n                    run: createRunner(option.value)\n                }));\n            }\n            return createSubmenuAction(label, actions);\n        };\n        const actions = [];\n        actions.push(createAction({\n            label: nls.localize('context.minimap.minimap', \"Minimap\"),\n            checked: minimapOptions.enabled,\n            run: () => {\n                this._configurationService.updateValue(`editor.minimap.enabled`, !minimapOptions.enabled);\n            }\n        }));\n        actions.push(new Separator());\n        actions.push(createAction({\n            label: nls.localize('context.minimap.renderCharacters', \"Render Characters\"),\n            enabled: minimapOptions.enabled,\n            checked: minimapOptions.renderCharacters,\n            run: () => {\n                this._configurationService.updateValue(`editor.minimap.renderCharacters`, !minimapOptions.renderCharacters);\n            }\n        }));\n        actions.push(createEnumAction(nls.localize('context.minimap.size', \"Vertical size\"), minimapOptions.enabled, 'editor.minimap.size', minimapOptions.size, [{\n                label: nls.localize('context.minimap.size.proportional', \"Proportional\"),\n                value: 'proportional'\n            }, {\n                label: nls.localize('context.minimap.size.fill', \"Fill\"),\n                value: 'fill'\n            }, {\n                label: nls.localize('context.minimap.size.fit', \"Fit\"),\n                value: 'fit'\n            }]));\n        actions.push(createEnumAction(nls.localize('context.minimap.slider', \"Slider\"), minimapOptions.enabled, 'editor.minimap.showSlider', minimapOptions.showSlider, [{\n                label: nls.localize('context.minimap.slider.mouseover', \"Mouse Over\"),\n                value: 'mouseover'\n            }, {\n                label: nls.localize('context.minimap.slider.always', \"Always\"),\n                value: 'always'\n            }]));\n        const useShadowDOM = this._editor.getOption(127 /* EditorOption.useShadowDOM */) && !isIOS; // Do not use shadow dom on IOS #122035\n        this._contextMenuIsBeingShownCount++;\n        this._contextMenuService.showContextMenu({\n            domForShadowRoot: useShadowDOM ? this._editor.getDomNode() : undefined,\n            getAnchor: () => anchor,\n            getActions: () => actions,\n            onHide: (wasCancelled) => {\n                this._contextMenuIsBeingShownCount--;\n                this._editor.focus();\n            }\n        });\n    }\n    _keybindingFor(action) {\n        return this._keybindingService.lookupKeybinding(action.id);\n    }\n    dispose() {\n        if (this._contextMenuIsBeingShownCount > 0) {\n            this._contextViewService.hideContextView();\n        }\n        this._toDispose.dispose();\n    }\n};\nContextMenuController.ID = 'editor.contrib.contextmenu';\nContextMenuController = ContextMenuController_1 = __decorate([\n    __param(1, IContextMenuService),\n    __param(2, IContextViewService),\n    __param(3, IContextKeyService),\n    __param(4, IKeybindingService),\n    __param(5, IMenuService),\n    __param(6, IConfigurationService),\n    __param(7, IWorkspaceContextService)\n], ContextMenuController);\nexport { ContextMenuController };\nclass ShowContextMenu extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.showContextMenu',\n            label: nls.localize('action.showContextMenu.label', \"Show Editor Context Menu\"),\n            alias: 'Show Editor Context Menu',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 1024 /* KeyMod.Shift */ | 68 /* KeyCode.F10 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor, editor) {\n        var _a;\n        (_a = ContextMenuController.get(editor)) === null || _a === void 0 ? void 0 : _a.showContextMenu();\n    }\n}\nregisterEditorContribution(ContextMenuController.ID, ContextMenuController, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nregisterEditorAction(ShowContextMenu);\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 } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nclass CursorState {\n    constructor(selections) {\n        this.selections = selections;\n    }\n    equals(other) {\n        const thisLen = this.selections.length;\n        const otherLen = other.selections.length;\n        if (thisLen !== otherLen) {\n            return false;\n        }\n        for (let i = 0; i < thisLen; i++) {\n            if (!this.selections[i].equalsSelection(other.selections[i])) {\n                return false;\n            }\n        }\n        return true;\n    }\n}\nclass StackElement {\n    constructor(cursorState, scrollTop, scrollLeft) {\n        this.cursorState = cursorState;\n        this.scrollTop = scrollTop;\n        this.scrollLeft = scrollLeft;\n    }\n}\nexport class CursorUndoRedoController extends Disposable {\n    static get(editor) {\n        return editor.getContribution(CursorUndoRedoController.ID);\n    }\n    constructor(editor) {\n        super();\n        this._editor = editor;\n        this._isCursorUndoRedo = false;\n        this._undoStack = [];\n        this._redoStack = [];\n        this._register(editor.onDidChangeModel((e) => {\n            this._undoStack = [];\n            this._redoStack = [];\n        }));\n        this._register(editor.onDidChangeModelContent((e) => {\n            this._undoStack = [];\n            this._redoStack = [];\n        }));\n        this._register(editor.onDidChangeCursorSelection((e) => {\n            if (this._isCursorUndoRedo) {\n                return;\n            }\n            if (!e.oldSelections) {\n                return;\n            }\n            if (e.oldModelVersionId !== e.modelVersionId) {\n                return;\n            }\n            const prevState = new CursorState(e.oldSelections);\n            const isEqualToLastUndoStack = (this._undoStack.length > 0 && this._undoStack[this._undoStack.length - 1].cursorState.equals(prevState));\n            if (!isEqualToLastUndoStack) {\n                this._undoStack.push(new StackElement(prevState, editor.getScrollTop(), editor.getScrollLeft()));\n                this._redoStack = [];\n                if (this._undoStack.length > 50) {\n                    // keep the cursor undo stack bounded\n                    this._undoStack.shift();\n                }\n            }\n        }));\n    }\n    cursorUndo() {\n        if (!this._editor.hasModel() || this._undoStack.length === 0) {\n            return;\n        }\n        this._redoStack.push(new StackElement(new CursorState(this._editor.getSelections()), this._editor.getScrollTop(), this._editor.getScrollLeft()));\n        this._applyState(this._undoStack.pop());\n    }\n    cursorRedo() {\n        if (!this._editor.hasModel() || this._redoStack.length === 0) {\n            return;\n        }\n        this._undoStack.push(new StackElement(new CursorState(this._editor.getSelections()), this._editor.getScrollTop(), this._editor.getScrollLeft()));\n        this._applyState(this._redoStack.pop());\n    }\n    _applyState(stackElement) {\n        this._isCursorUndoRedo = true;\n        this._editor.setSelections(stackElement.cursorState.selections);\n        this._editor.setScrollPosition({\n            scrollTop: stackElement.scrollTop,\n            scrollLeft: stackElement.scrollLeft\n        });\n        this._isCursorUndoRedo = false;\n    }\n}\nCursorUndoRedoController.ID = 'editor.contrib.cursorUndoRedoController';\nexport class CursorUndo extends EditorAction {\n    constructor() {\n        super({\n            id: 'cursorUndo',\n            label: nls.localize('cursor.undo', \"Cursor Undo\"),\n            alias: 'Cursor Undo',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 51 /* KeyCode.KeyU */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor, editor, args) {\n        var _a;\n        (_a = CursorUndoRedoController.get(editor)) === null || _a === void 0 ? void 0 : _a.cursorUndo();\n    }\n}\nexport class CursorRedo extends EditorAction {\n    constructor() {\n        super({\n            id: 'cursorRedo',\n            label: nls.localize('cursor.redo', \"Cursor Redo\"),\n            alias: 'Cursor Redo',\n            precondition: undefined\n        });\n    }\n    run(accessor, editor, args) {\n        var _a;\n        (_a = CursorUndoRedoController.get(editor)) === null || _a === void 0 ? void 0 : _a.cursorRedo();\n    }\n}\nregisterEditorContribution(CursorUndoRedoController.ID, CursorUndoRedoController, 0 /* EditorContributionInstantiation.Eager */); // eager because it needs to listen to record cursor state ASAP\nregisterEditorAction(CursorUndo);\nregisterEditorAction(CursorRedo);\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 } from '../../../../base/common/lifecycle.js';\nimport { isMacintosh } from '../../../../base/common/platform.js';\nimport './dnd.css';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { DragAndDropCommand } from './dragAndDropCommand.js';\nfunction hasTriggerModifier(e) {\n    if (isMacintosh) {\n        return e.altKey;\n    }\n    else {\n        return e.ctrlKey;\n    }\n}\nexport class DragAndDropController extends Disposable {\n    constructor(editor) {\n        super();\n        this._editor = editor;\n        this._dndDecorationIds = this._editor.createDecorationsCollection();\n        this._register(this._editor.onMouseDown((e) => this._onEditorMouseDown(e)));\n        this._register(this._editor.onMouseUp((e) => this._onEditorMouseUp(e)));\n        this._register(this._editor.onMouseDrag((e) => this._onEditorMouseDrag(e)));\n        this._register(this._editor.onMouseDrop((e) => this._onEditorMouseDrop(e)));\n        this._register(this._editor.onMouseDropCanceled(() => this._onEditorMouseDropCanceled()));\n        this._register(this._editor.onKeyDown((e) => this.onEditorKeyDown(e)));\n        this._register(this._editor.onKeyUp((e) => this.onEditorKeyUp(e)));\n        this._register(this._editor.onDidBlurEditorWidget(() => this.onEditorBlur()));\n        this._register(this._editor.onDidBlurEditorText(() => this.onEditorBlur()));\n        this._mouseDown = false;\n        this._modifierPressed = false;\n        this._dragSelection = null;\n    }\n    onEditorBlur() {\n        this._removeDecoration();\n        this._dragSelection = null;\n        this._mouseDown = false;\n        this._modifierPressed = false;\n    }\n    onEditorKeyDown(e) {\n        if (!this._editor.getOption(35 /* EditorOption.dragAndDrop */) || this._editor.getOption(22 /* EditorOption.columnSelection */)) {\n            return;\n        }\n        if (hasTriggerModifier(e)) {\n            this._modifierPressed = true;\n        }\n        if (this._mouseDown && hasTriggerModifier(e)) {\n            this._editor.updateOptions({\n                mouseStyle: 'copy'\n            });\n        }\n    }\n    onEditorKeyUp(e) {\n        if (!this._editor.getOption(35 /* EditorOption.dragAndDrop */) || this._editor.getOption(22 /* EditorOption.columnSelection */)) {\n            return;\n        }\n        if (hasTriggerModifier(e)) {\n            this._modifierPressed = false;\n        }\n        if (this._mouseDown && e.keyCode === DragAndDropController.TRIGGER_KEY_VALUE) {\n            this._editor.updateOptions({\n                mouseStyle: 'default'\n            });\n        }\n    }\n    _onEditorMouseDown(mouseEvent) {\n        this._mouseDown = true;\n    }\n    _onEditorMouseUp(mouseEvent) {\n        this._mouseDown = false;\n        // Whenever users release the mouse, the drag and drop operation should finish and the cursor should revert to text.\n        this._editor.updateOptions({\n            mouseStyle: 'text'\n        });\n    }\n    _onEditorMouseDrag(mouseEvent) {\n        const target = mouseEvent.target;\n        if (this._dragSelection === null) {\n            const selections = this._editor.getSelections() || [];\n            const possibleSelections = selections.filter(selection => target.position && selection.containsPosition(target.position));\n            if (possibleSelections.length === 1) {\n                this._dragSelection = possibleSelections[0];\n            }\n            else {\n                return;\n            }\n        }\n        if (hasTriggerModifier(mouseEvent.event)) {\n            this._editor.updateOptions({\n                mouseStyle: 'copy'\n            });\n        }\n        else {\n            this._editor.updateOptions({\n                mouseStyle: 'default'\n            });\n        }\n        if (target.position) {\n            if (this._dragSelection.containsPosition(target.position)) {\n                this._removeDecoration();\n            }\n            else {\n                this.showAt(target.position);\n            }\n        }\n    }\n    _onEditorMouseDropCanceled() {\n        this._editor.updateOptions({\n            mouseStyle: 'text'\n        });\n        this._removeDecoration();\n        this._dragSelection = null;\n        this._mouseDown = false;\n    }\n    _onEditorMouseDrop(mouseEvent) {\n        if (mouseEvent.target && (this._hitContent(mouseEvent.target) || this._hitMargin(mouseEvent.target)) && mouseEvent.target.position) {\n            const newCursorPosition = new Position(mouseEvent.target.position.lineNumber, mouseEvent.target.position.column);\n            if (this._dragSelection === null) {\n                let newSelections = null;\n                if (mouseEvent.event.shiftKey) {\n                    const primarySelection = this._editor.getSelection();\n                    if (primarySelection) {\n                        const { selectionStartLineNumber, selectionStartColumn } = primarySelection;\n                        newSelections = [new Selection(selectionStartLineNumber, selectionStartColumn, newCursorPosition.lineNumber, newCursorPosition.column)];\n                    }\n                }\n                else {\n                    newSelections = (this._editor.getSelections() || []).map(selection => {\n                        if (selection.containsPosition(newCursorPosition)) {\n                            return new Selection(newCursorPosition.lineNumber, newCursorPosition.column, newCursorPosition.lineNumber, newCursorPosition.column);\n                        }\n                        else {\n                            return selection;\n                        }\n                    });\n                }\n                // Use `mouse` as the source instead of `api` and setting the reason to explicit (to behave like any other mouse operation).\n                this._editor.setSelections(newSelections || [], 'mouse', 3 /* CursorChangeReason.Explicit */);\n            }\n            else if (!this._dragSelection.containsPosition(newCursorPosition) ||\n                ((hasTriggerModifier(mouseEvent.event) ||\n                    this._modifierPressed) && (this._dragSelection.getEndPosition().equals(newCursorPosition) || this._dragSelection.getStartPosition().equals(newCursorPosition)) // we allow users to paste content beside the selection\n                )) {\n                this._editor.pushUndoStop();\n                this._editor.executeCommand(DragAndDropController.ID, new DragAndDropCommand(this._dragSelection, newCursorPosition, hasTriggerModifier(mouseEvent.event) || this._modifierPressed));\n                this._editor.pushUndoStop();\n            }\n        }\n        this._editor.updateOptions({\n            mouseStyle: 'text'\n        });\n        this._removeDecoration();\n        this._dragSelection = null;\n        this._mouseDown = false;\n    }\n    showAt(position) {\n        this._dndDecorationIds.set([{\n                range: new Range(position.lineNumber, position.column, position.lineNumber, position.column),\n                options: DragAndDropController._DECORATION_OPTIONS\n            }]);\n        this._editor.revealPosition(position, 1 /* ScrollType.Immediate */);\n    }\n    _removeDecoration() {\n        this._dndDecorationIds.clear();\n    }\n    _hitContent(target) {\n        return target.type === 6 /* MouseTargetType.CONTENT_TEXT */ ||\n            target.type === 7 /* MouseTargetType.CONTENT_EMPTY */;\n    }\n    _hitMargin(target) {\n        return target.type === 2 /* MouseTargetType.GUTTER_GLYPH_MARGIN */ ||\n            target.type === 3 /* MouseTargetType.GUTTER_LINE_NUMBERS */ ||\n            target.type === 4 /* MouseTargetType.GUTTER_LINE_DECORATIONS */;\n    }\n    dispose() {\n        this._removeDecoration();\n        this._dragSelection = null;\n        this._mouseDown = false;\n        this._modifierPressed = false;\n        super.dispose();\n    }\n}\nDragAndDropController.ID = 'editor.contrib.dragAndDrop';\nDragAndDropController.TRIGGER_KEY_VALUE = isMacintosh ? 6 /* KeyCode.Alt */ : 5 /* KeyCode.Ctrl */;\nDragAndDropController._DECORATION_OPTIONS = ModelDecorationOptions.register({\n    description: 'dnd-target',\n    className: 'dnd-target'\n});\nregisterEditorContribution(DragAndDropController.ID, DragAndDropController, 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 *--------------------------------------------------------------------------------------------*/\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nexport class DragAndDropCommand {\n    constructor(selection, targetPosition, copy) {\n        this.selection = selection;\n        this.targetPosition = targetPosition;\n        this.copy = copy;\n        this.targetSelection = null;\n    }\n    getEditOperations(model, builder) {\n        const text = model.getValueInRange(this.selection);\n        if (!this.copy) {\n            builder.addEditOperation(this.selection, null);\n        }\n        builder.addEditOperation(new Range(this.targetPosition.lineNumber, this.targetPosition.column, this.targetPosition.lineNumber, this.targetPosition.column), text);\n        if (this.selection.containsPosition(this.targetPosition) && !(this.copy && (this.selection.getEndPosition().equals(this.targetPosition) || this.selection.getStartPosition().equals(this.targetPosition)) // we allow users to paste content beside the selection\n        )) {\n            this.targetSelection = this.selection;\n            return;\n        }\n        if (this.copy) {\n            this.targetSelection = new Selection(this.targetPosition.lineNumber, this.targetPosition.column, this.selection.endLineNumber - this.selection.startLineNumber + this.targetPosition.lineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\n                this.targetPosition.column + this.selection.endColumn - this.selection.startColumn :\n                this.selection.endColumn);\n            return;\n        }\n        if (this.targetPosition.lineNumber > this.selection.endLineNumber) {\n            // Drag the selection downwards\n            this.targetSelection = new Selection(this.targetPosition.lineNumber - this.selection.endLineNumber + this.selection.startLineNumber, this.targetPosition.column, this.targetPosition.lineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\n                this.targetPosition.column + this.selection.endColumn - this.selection.startColumn :\n                this.selection.endColumn);\n            return;\n        }\n        if (this.targetPosition.lineNumber < this.selection.endLineNumber) {\n            // Drag the selection upwards\n            this.targetSelection = new Selection(this.targetPosition.lineNumber, this.targetPosition.column, this.targetPosition.lineNumber + this.selection.endLineNumber - this.selection.startLineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\n                this.targetPosition.column + this.selection.endColumn - this.selection.startColumn :\n                this.selection.endColumn);\n            return;\n        }\n        // The target position is at the same line as the selection's end position.\n        if (this.selection.endColumn <= this.targetPosition.column) {\n            // The target position is after the selection's end position\n            this.targetSelection = new Selection(this.targetPosition.lineNumber - this.selection.endLineNumber + this.selection.startLineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\n                this.targetPosition.column - this.selection.endColumn + this.selection.startColumn :\n                this.targetPosition.column - this.selection.endColumn + this.selection.startColumn, this.targetPosition.lineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\n                this.targetPosition.column :\n                this.selection.endColumn);\n        }\n        else {\n            // The target position is before the selection's end position. Since the selection doesn't contain the target position, the selection is one-line and target position is before this selection.\n            this.targetSelection = new Selection(this.targetPosition.lineNumber - this.selection.endLineNumber + this.selection.startLineNumber, this.targetPosition.column, this.targetPosition.lineNumber, this.targetPosition.column + this.selection.endColumn - this.selection.startColumn);\n        }\n    }\n    computeCursorState(model, helper) {\n        return this.targetSelection;\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 _a;\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { registerEditorFeature } from '../../../common/editorFeatures.js';\nimport { CopyPasteController, changePasteTypeCommandId, pasteWidgetVisibleCtx } from './copyPasteController.js';\nimport { DefaultPasteProvidersFeature, DefaultTextPasteOrDropEditProvider } from './defaultProviders.js';\nimport * as nls from '../../../../nls.js';\nregisterEditorContribution(CopyPasteController.ID, CopyPasteController, 0 /* EditorContributionInstantiation.Eager */); // eager because it listens to events on the container dom node of the editor\nregisterEditorFeature(DefaultPasteProvidersFeature);\nregisterEditorCommand(new class extends EditorCommand {\n    constructor() {\n        super({\n            id: changePasteTypeCommandId,\n            precondition: pasteWidgetVisibleCtx,\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 89 /* KeyCode.Period */,\n            }\n        });\n    }\n    runEditorCommand(_accessor, editor) {\n        var _b;\n        return (_b = CopyPasteController.get(editor)) === null || _b === void 0 ? void 0 : _b.changePasteType();\n    }\n});\nregisterEditorCommand(new class extends EditorCommand {\n    constructor() {\n        super({\n            id: 'editor.hidePasteWidget',\n            precondition: pasteWidgetVisibleCtx,\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */,\n                primary: 9 /* KeyCode.Escape */,\n            }\n        });\n    }\n    runEditorCommand(_accessor, editor) {\n        var _b;\n        (_b = CopyPasteController.get(editor)) === null || _b === void 0 ? void 0 : _b.clearWidgets();\n    }\n});\nregisterEditorAction((_a = class PasteAsAction extends EditorAction {\n        constructor() {\n            super({\n                id: 'editor.action.pasteAs',\n                label: nls.localize('pasteAs', \"Paste As...\"),\n                alias: 'Paste As...',\n                precondition: EditorContextKeys.writable,\n                metadata: {\n                    description: 'Paste as',\n                    args: [{\n                            name: 'args',\n                            schema: _a.argsSchema\n                        }]\n                }\n            });\n        }\n        run(_accessor, editor, args) {\n            var _b;\n            let kind = typeof (args === null || args === void 0 ? void 0 : args.kind) === 'string' ? args.kind : undefined;\n            if (!kind && args) {\n                // Support old id property\n                // TODO: remove this in the future\n                kind = typeof args.id === 'string' ? args.id : undefined;\n            }\n            return (_b = CopyPasteController.get(editor)) === null || _b === void 0 ? void 0 : _b.pasteAs(kind ? new HierarchicalKind(kind) : undefined);\n        }\n    },\n    _a.argsSchema = {\n        type: 'object',\n        properties: {\n            kind: {\n                type: 'string',\n                description: nls.localize('pasteAs.kind', \"The kind of the paste edit to try applying. If not provided or there are multiple edits for this kind, the editor will show a picker.\"),\n            }\n        },\n    },\n    _a));\nregisterEditorAction(class extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.pasteAsText',\n            label: nls.localize('pasteAsText', \"Paste as Text\"),\n            alias: 'Paste as Text',\n            precondition: EditorContextKeys.writable,\n        });\n    }\n    run(_accessor, editor) {\n        var _b;\n        return (_b = CopyPasteController.get(editor)) === null || _b === void 0 ? void 0 : _b.pasteAs({ providerId: DefaultTextPasteOrDropEditProvider.id });\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 { EditorCommand, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { editorConfigurationBaseNode } from '../../../common/config/editorConfigurationSchema.js';\nimport { registerEditorFeature } from '../../../common/editorFeatures.js';\nimport { DefaultDropProvidersFeature } from './defaultProviders.js';\nimport * as nls from '../../../../nls.js';\nimport { Extensions as ConfigurationExtensions } from '../../../../platform/configuration/common/configurationRegistry.js';\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nimport { DropIntoEditorController, changeDropTypeCommandId, defaultProviderConfig, dropWidgetVisibleCtx } from './dropIntoEditorController.js';\nregisterEditorContribution(DropIntoEditorController.ID, DropIntoEditorController, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nregisterEditorFeature(DefaultDropProvidersFeature);\nregisterEditorCommand(new class extends EditorCommand {\n    constructor() {\n        super({\n            id: changeDropTypeCommandId,\n            precondition: dropWidgetVisibleCtx,\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 89 /* KeyCode.Period */,\n            }\n        });\n    }\n    runEditorCommand(_accessor, editor, _args) {\n        var _a;\n        (_a = DropIntoEditorController.get(editor)) === null || _a === void 0 ? void 0 : _a.changeDropType();\n    }\n});\nregisterEditorCommand(new class extends EditorCommand {\n    constructor() {\n        super({\n            id: 'editor.hideDropWidget',\n            precondition: dropWidgetVisibleCtx,\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */,\n                primary: 9 /* KeyCode.Escape */,\n            }\n        });\n    }\n    runEditorCommand(_accessor, editor, _args) {\n        var _a;\n        (_a = DropIntoEditorController.get(editor)) === null || _a === void 0 ? void 0 : _a.clearWidgets();\n    }\n});\nRegistry.as(ConfigurationExtensions.Configuration).registerConfiguration({\n    ...editorConfigurationBaseNode,\n    properties: {\n        [defaultProviderConfig]: {\n            type: 'object',\n            scope: 5 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,\n            description: nls.localize('defaultProviderDescription', \"Configures the default drop provider to use for content of a given mime type.\"),\n            default: {},\n            additionalProperties: {\n                type: 'string',\n            },\n        },\n    }\n});\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar DropIntoEditorController_1;\nimport { coalesce } from '../../../../base/common/arrays.js';\nimport { createCancelablePromise, raceCancellation } from '../../../../base/common/async.js';\nimport { VSDataTransfer, matchesMimeType } from '../../../../base/common/dataTransfer.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { toExternalVSDataTransfer } from '../../../browser/dnd.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { DraggedTreeItemsIdentifier } from '../../../common/services/treeViewsDnd.js';\nimport { ITreeViewsDnDService } from '../../../common/services/treeViewsDndService.js';\nimport { EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { InlineProgressManager } from '../../inlineProgress/browser/inlineProgress.js';\nimport { localize } from '../../../../nls.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { LocalSelectionTransfer } from '../../../../platform/dnd/browser/dnd.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { sortEditsByYieldTo } from './edit.js';\nimport { PostEditWidgetManager } from './postEditWidget.js';\nexport const defaultProviderConfig = 'editor.experimental.dropIntoEditor.defaultProvider';\nexport const changeDropTypeCommandId = 'editor.changeDropType';\nexport const dropWidgetVisibleCtx = new RawContextKey('dropWidgetVisible', false, localize('dropWidgetVisible', \"Whether the drop widget is showing\"));\nlet DropIntoEditorController = DropIntoEditorController_1 = class DropIntoEditorController extends Disposable {\n    static get(editor) {\n        return editor.getContribution(DropIntoEditorController_1.ID);\n    }\n    constructor(editor, instantiationService, _configService, _languageFeaturesService, _treeViewsDragAndDropService) {\n        super();\n        this._configService = _configService;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._treeViewsDragAndDropService = _treeViewsDragAndDropService;\n        this.treeItemsTransfer = LocalSelectionTransfer.getInstance();\n        this._dropProgressManager = this._register(instantiationService.createInstance(InlineProgressManager, 'dropIntoEditor', editor));\n        this._postDropWidgetManager = this._register(instantiationService.createInstance(PostEditWidgetManager, 'dropIntoEditor', editor, dropWidgetVisibleCtx, { id: changeDropTypeCommandId, label: localize('postDropWidgetTitle', \"Show drop options...\") }));\n        this._register(editor.onDropIntoEditor(e => this.onDropIntoEditor(editor, e.position, e.event)));\n    }\n    clearWidgets() {\n        this._postDropWidgetManager.clear();\n    }\n    changeDropType() {\n        this._postDropWidgetManager.tryShowSelector();\n    }\n    async onDropIntoEditor(editor, position, dragEvent) {\n        var _a;\n        if (!dragEvent.dataTransfer || !editor.hasModel()) {\n            return;\n        }\n        (_a = this._currentOperation) === null || _a === void 0 ? void 0 : _a.cancel();\n        editor.focus();\n        editor.setPosition(position);\n        const p = createCancelablePromise(async (token) => {\n            const tokenSource = new EditorStateCancellationTokenSource(editor, 1 /* CodeEditorStateFlag.Value */, undefined, token);\n            try {\n                const ourDataTransfer = await this.extractDataTransferData(dragEvent);\n                if (ourDataTransfer.size === 0 || tokenSource.token.isCancellationRequested) {\n                    return;\n                }\n                const model = editor.getModel();\n                if (!model) {\n                    return;\n                }\n                const providers = this._languageFeaturesService.documentDropEditProvider\n                    .ordered(model)\n                    .filter(provider => {\n                    if (!provider.dropMimeTypes) {\n                        // Keep all providers that don't specify mime types\n                        return true;\n                    }\n                    return provider.dropMimeTypes.some(mime => ourDataTransfer.matches(mime));\n                });\n                const edits = await this.getDropEdits(providers, model, position, ourDataTransfer, tokenSource);\n                if (tokenSource.token.isCancellationRequested) {\n                    return;\n                }\n                if (edits.length) {\n                    const activeEditIndex = this.getInitialActiveEditIndex(model, edits);\n                    const canShowWidget = editor.getOption(36 /* EditorOption.dropIntoEditor */).showDropSelector === 'afterDrop';\n                    // Pass in the parent token here as it tracks cancelling the entire drop operation\n                    await this._postDropWidgetManager.applyEditAndShowIfNeeded([Range.fromPositions(position)], { activeEditIndex, allEdits: edits }, canShowWidget, async (edit) => edit, token);\n                }\n            }\n            finally {\n                tokenSource.dispose();\n                if (this._currentOperation === p) {\n                    this._currentOperation = undefined;\n                }\n            }\n        });\n        this._dropProgressManager.showWhile(position, localize('dropIntoEditorProgress', \"Running drop handlers. Click to cancel\"), p);\n        this._currentOperation = p;\n    }\n    async getDropEdits(providers, model, position, dataTransfer, tokenSource) {\n        const results = await raceCancellation(Promise.all(providers.map(async (provider) => {\n            try {\n                const edits = await provider.provideDocumentDropEdits(model, position, dataTransfer, tokenSource.token);\n                return edits === null || edits === void 0 ? void 0 : edits.map(edit => ({ ...edit, providerId: provider.id }));\n            }\n            catch (err) {\n                console.error(err);\n            }\n            return undefined;\n        })), tokenSource.token);\n        const edits = coalesce(results !== null && results !== void 0 ? results : []).flat();\n        return sortEditsByYieldTo(edits);\n    }\n    getInitialActiveEditIndex(model, edits) {\n        const preferredProviders = this._configService.getValue(defaultProviderConfig, { resource: model.uri });\n        for (const [configMime, desiredKindStr] of Object.entries(preferredProviders)) {\n            const desiredKind = new HierarchicalKind(desiredKindStr);\n            const editIndex = edits.findIndex(edit => desiredKind.value === edit.providerId\n                && edit.handledMimeType && matchesMimeType(configMime, [edit.handledMimeType]));\n            if (editIndex >= 0) {\n                return editIndex;\n            }\n        }\n        return 0;\n    }\n    async extractDataTransferData(dragEvent) {\n        if (!dragEvent.dataTransfer) {\n            return new VSDataTransfer();\n        }\n        const dataTransfer = toExternalVSDataTransfer(dragEvent.dataTransfer);\n        if (this.treeItemsTransfer.hasData(DraggedTreeItemsIdentifier.prototype)) {\n            const data = this.treeItemsTransfer.getData(DraggedTreeItemsIdentifier.prototype);\n            if (Array.isArray(data)) {\n                for (const id of data) {\n                    const treeDataTransfer = await this._treeViewsDragAndDropService.removeDragOperationTransfer(id.identifier);\n                    if (treeDataTransfer) {\n                        for (const [type, value] of treeDataTransfer) {\n                            dataTransfer.replace(type, value);\n                        }\n                    }\n                }\n            }\n        }\n        return dataTransfer;\n    }\n};\nDropIntoEditorController.ID = 'editor.contrib.dropIntoEditorController';\nDropIntoEditorController = DropIntoEditorController_1 = __decorate([\n    __param(1, IInstantiationService),\n    __param(2, IConfigurationService),\n    __param(3, ILanguageFeaturesService),\n    __param(4, ITreeViewsDnDService)\n], DropIntoEditorController);\nexport { DropIntoEditorController };\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 class TreeViewsDnDService {\n    constructor() {\n        this._dragOperations = new Map();\n    }\n    removeDragOperationTransfer(uuid) {\n        if ((uuid && this._dragOperations.has(uuid))) {\n            const operation = this._dragOperations.get(uuid);\n            this._dragOperations.delete(uuid);\n            return operation;\n        }\n        return undefined;\n    }\n}\nexport class DraggedTreeItemsIdentifier {\n    constructor(identifier) {\n        this.identifier = identifier;\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 { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nimport { TreeViewsDnDService } from './treeViewsDnd.js';\nexport const ITreeViewsDnDService = createDecorator('treeViewsDndService');\nregisterSingleton(ITreeViewsDnDService, TreeViewsDnDService, 1 /* InstantiationType.Delayed */);\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 CommonFindController_1;\nimport { Delayer } from '../../../../base/common/async.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { EditorAction, EditorCommand, MultiEditorAction, registerEditorAction, registerEditorCommand, registerEditorContribution, registerMultiEditorAction } from '../../../browser/editorExtensions.js';\nimport { overviewRulerRangeHighlight } from '../../../common/core/editorColorRegistry.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { OverviewRulerLane } from '../../../common/model.js';\nimport { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_FIND_WIDGET_VISIBLE, CONTEXT_REPLACE_INPUT_FOCUSED, FindModelBoundToEditorModel, FIND_IDS, ToggleCaseSensitiveKeybinding, TogglePreserveCaseKeybinding, ToggleRegexKeybinding, ToggleSearchScopeKeybinding, ToggleWholeWordKeybinding } from './findModel.js';\nimport { FindOptionsWidget } from './findOptionsWidget.js';\nimport { FindReplaceState } from './findState.js';\nimport { FindWidget } from './findWidget.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { ContextKeyExpr, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextViewService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { IStorageService } from '../../../../platform/storage/common/storage.js';\nimport { IThemeService, themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nimport { IHoverService } from '../../../../platform/hover/browser/hover.js';\nconst SEARCH_STRING_MAX_LENGTH = 524288;\nexport function getSelectionSearchString(editor, seedSearchStringFromSelection = 'single', seedSearchStringFromNonEmptySelection = false) {\n    if (!editor.hasModel()) {\n        return null;\n    }\n    const selection = editor.getSelection();\n    // if selection spans multiple lines, default search string to empty\n    if ((seedSearchStringFromSelection === 'single' && selection.startLineNumber === selection.endLineNumber)\n        || seedSearchStringFromSelection === 'multiple') {\n        if (selection.isEmpty()) {\n            const wordAtPosition = editor.getConfiguredWordAtPosition(selection.getStartPosition());\n            if (wordAtPosition && (false === seedSearchStringFromNonEmptySelection)) {\n                return wordAtPosition.word;\n            }\n        }\n        else {\n            if (editor.getModel().getValueLengthInRange(selection) < SEARCH_STRING_MAX_LENGTH) {\n                return editor.getModel().getValueInRange(selection);\n            }\n        }\n    }\n    return null;\n}\nlet CommonFindController = CommonFindController_1 = class CommonFindController extends Disposable {\n    get editor() {\n        return this._editor;\n    }\n    static get(editor) {\n        return editor.getContribution(CommonFindController_1.ID);\n    }\n    constructor(editor, contextKeyService, storageService, clipboardService, notificationService, hoverService) {\n        super();\n        this._editor = editor;\n        this._findWidgetVisible = CONTEXT_FIND_WIDGET_VISIBLE.bindTo(contextKeyService);\n        this._contextKeyService = contextKeyService;\n        this._storageService = storageService;\n        this._clipboardService = clipboardService;\n        this._notificationService = notificationService;\n        this._hoverService = hoverService;\n        this._updateHistoryDelayer = new Delayer(500);\n        this._state = this._register(new FindReplaceState());\n        this.loadQueryState();\n        this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n        this._model = null;\n        this._register(this._editor.onDidChangeModel(() => {\n            const shouldRestartFind = (this._editor.getModel() && this._state.isRevealed);\n            this.disposeModel();\n            this._state.change({\n                searchScope: null,\n                matchCase: this._storageService.getBoolean('editor.matchCase', 1 /* StorageScope.WORKSPACE */, false),\n                wholeWord: this._storageService.getBoolean('editor.wholeWord', 1 /* StorageScope.WORKSPACE */, false),\n                isRegex: this._storageService.getBoolean('editor.isRegex', 1 /* StorageScope.WORKSPACE */, false),\n                preserveCase: this._storageService.getBoolean('editor.preserveCase', 1 /* StorageScope.WORKSPACE */, false)\n            }, false);\n            if (shouldRestartFind) {\n                this._start({\n                    forceRevealReplace: false,\n                    seedSearchStringFromSelection: 'none',\n                    seedSearchStringFromNonEmptySelection: false,\n                    seedSearchStringFromGlobalClipboard: false,\n                    shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n                    shouldAnimate: false,\n                    updateSearchScope: false,\n                    loop: this._editor.getOption(41 /* EditorOption.find */).loop\n                });\n            }\n        }));\n    }\n    dispose() {\n        this.disposeModel();\n        super.dispose();\n    }\n    disposeModel() {\n        if (this._model) {\n            this._model.dispose();\n            this._model = null;\n        }\n    }\n    _onStateChanged(e) {\n        this.saveQueryState(e);\n        if (e.isRevealed) {\n            if (this._state.isRevealed) {\n                this._findWidgetVisible.set(true);\n            }\n            else {\n                this._findWidgetVisible.reset();\n                this.disposeModel();\n            }\n        }\n        if (e.searchString) {\n            this.setGlobalBufferTerm(this._state.searchString);\n        }\n    }\n    saveQueryState(e) {\n        if (e.isRegex) {\n            this._storageService.store('editor.isRegex', this._state.actualIsRegex, 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n        }\n        if (e.wholeWord) {\n            this._storageService.store('editor.wholeWord', this._state.actualWholeWord, 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n        }\n        if (e.matchCase) {\n            this._storageService.store('editor.matchCase', this._state.actualMatchCase, 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n        }\n        if (e.preserveCase) {\n            this._storageService.store('editor.preserveCase', this._state.actualPreserveCase, 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n        }\n    }\n    loadQueryState() {\n        this._state.change({\n            matchCase: this._storageService.getBoolean('editor.matchCase', 1 /* StorageScope.WORKSPACE */, this._state.matchCase),\n            wholeWord: this._storageService.getBoolean('editor.wholeWord', 1 /* StorageScope.WORKSPACE */, this._state.wholeWord),\n            isRegex: this._storageService.getBoolean('editor.isRegex', 1 /* StorageScope.WORKSPACE */, this._state.isRegex),\n            preserveCase: this._storageService.getBoolean('editor.preserveCase', 1 /* StorageScope.WORKSPACE */, this._state.preserveCase)\n        }, false);\n    }\n    isFindInputFocused() {\n        return !!CONTEXT_FIND_INPUT_FOCUSED.getValue(this._contextKeyService);\n    }\n    getState() {\n        return this._state;\n    }\n    closeFindWidget() {\n        this._state.change({\n            isRevealed: false,\n            searchScope: null\n        }, false);\n        this._editor.focus();\n    }\n    toggleCaseSensitive() {\n        this._state.change({ matchCase: !this._state.matchCase }, false);\n        if (!this._state.isRevealed) {\n            this.highlightFindOptions();\n        }\n    }\n    toggleWholeWords() {\n        this._state.change({ wholeWord: !this._state.wholeWord }, false);\n        if (!this._state.isRevealed) {\n            this.highlightFindOptions();\n        }\n    }\n    toggleRegex() {\n        this._state.change({ isRegex: !this._state.isRegex }, false);\n        if (!this._state.isRevealed) {\n            this.highlightFindOptions();\n        }\n    }\n    togglePreserveCase() {\n        this._state.change({ preserveCase: !this._state.preserveCase }, false);\n        if (!this._state.isRevealed) {\n            this.highlightFindOptions();\n        }\n    }\n    toggleSearchScope() {\n        if (this._state.searchScope) {\n            this._state.change({ searchScope: null }, true);\n        }\n        else {\n            if (this._editor.hasModel()) {\n                let selections = this._editor.getSelections();\n                selections = selections.map(selection => {\n                    if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n                        selection = selection.setEndPosition(selection.endLineNumber - 1, this._editor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\n                    }\n                    if (!selection.isEmpty()) {\n                        return selection;\n                    }\n                    return null;\n                }).filter((element) => !!element);\n                if (selections.length) {\n                    this._state.change({ searchScope: selections }, true);\n                }\n            }\n        }\n    }\n    setSearchString(searchString) {\n        if (this._state.isRegex) {\n            searchString = strings.escapeRegExpCharacters(searchString);\n        }\n        this._state.change({ searchString: searchString }, false);\n    }\n    highlightFindOptions(ignoreWhenVisible = false) {\n        // overwritten in subclass\n    }\n    async _start(opts, newState) {\n        this.disposeModel();\n        if (!this._editor.hasModel()) {\n            // cannot do anything with an editor that doesn't have a model...\n            return;\n        }\n        const stateChanges = {\n            ...newState,\n            isRevealed: true\n        };\n        if (opts.seedSearchStringFromSelection === 'single') {\n            const selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection, opts.seedSearchStringFromNonEmptySelection);\n            if (selectionSearchString) {\n                if (this._state.isRegex) {\n                    stateChanges.searchString = strings.escapeRegExpCharacters(selectionSearchString);\n                }\n                else {\n                    stateChanges.searchString = selectionSearchString;\n                }\n            }\n        }\n        else if (opts.seedSearchStringFromSelection === 'multiple' && !opts.updateSearchScope) {\n            const selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection);\n            if (selectionSearchString) {\n                stateChanges.searchString = selectionSearchString;\n            }\n        }\n        if (!stateChanges.searchString && opts.seedSearchStringFromGlobalClipboard) {\n            const selectionSearchString = await this.getGlobalBufferTerm();\n            if (!this._editor.hasModel()) {\n                // the editor has lost its model in the meantime\n                return;\n            }\n            if (selectionSearchString) {\n                stateChanges.searchString = selectionSearchString;\n            }\n        }\n        // Overwrite isReplaceRevealed\n        if (opts.forceRevealReplace || stateChanges.isReplaceRevealed) {\n            stateChanges.isReplaceRevealed = true;\n        }\n        else if (!this._findWidgetVisible.get()) {\n            stateChanges.isReplaceRevealed = false;\n        }\n        if (opts.updateSearchScope) {\n            const currentSelections = this._editor.getSelections();\n            if (currentSelections.some(selection => !selection.isEmpty())) {\n                stateChanges.searchScope = currentSelections;\n            }\n        }\n        stateChanges.loop = opts.loop;\n        this._state.change(stateChanges, false);\n        if (!this._model) {\n            this._model = new FindModelBoundToEditorModel(this._editor, this._state);\n        }\n    }\n    start(opts, newState) {\n        return this._start(opts, newState);\n    }\n    moveToNextMatch() {\n        if (this._model) {\n            this._model.moveToNextMatch();\n            return true;\n        }\n        return false;\n    }\n    moveToPrevMatch() {\n        if (this._model) {\n            this._model.moveToPrevMatch();\n            return true;\n        }\n        return false;\n    }\n    goToMatch(index) {\n        if (this._model) {\n            this._model.moveToMatch(index);\n            return true;\n        }\n        return false;\n    }\n    replace() {\n        if (this._model) {\n            this._model.replace();\n            return true;\n        }\n        return false;\n    }\n    replaceAll() {\n        var _a;\n        if (this._model) {\n            if ((_a = this._editor.getModel()) === null || _a === void 0 ? void 0 : _a.isTooLargeForHeapOperation()) {\n                this._notificationService.warn(nls.localize('too.large.for.replaceall', \"The file is too large to perform a replace all operation.\"));\n                return false;\n            }\n            this._model.replaceAll();\n            return true;\n        }\n        return false;\n    }\n    selectAllMatches() {\n        if (this._model) {\n            this._model.selectAllMatches();\n            this._editor.focus();\n            return true;\n        }\n        return false;\n    }\n    async getGlobalBufferTerm() {\n        if (this._editor.getOption(41 /* EditorOption.find */).globalFindClipboard\n            && this._editor.hasModel()\n            && !this._editor.getModel().isTooLargeForSyncing()) {\n            return this._clipboardService.readFindText();\n        }\n        return '';\n    }\n    setGlobalBufferTerm(text) {\n        if (this._editor.getOption(41 /* EditorOption.find */).globalFindClipboard\n            && this._editor.hasModel()\n            && !this._editor.getModel().isTooLargeForSyncing()) {\n            // intentionally not awaited\n            this._clipboardService.writeFindText(text);\n        }\n    }\n};\nCommonFindController.ID = 'editor.contrib.findController';\nCommonFindController = CommonFindController_1 = __decorate([\n    __param(1, IContextKeyService),\n    __param(2, IStorageService),\n    __param(3, IClipboardService),\n    __param(4, INotificationService),\n    __param(5, IHoverService)\n], CommonFindController);\nexport { CommonFindController };\nlet FindController = class FindController extends CommonFindController {\n    constructor(editor, _contextViewService, _contextKeyService, _keybindingService, _themeService, notificationService, _storageService, clipboardService, hoverService) {\n        super(editor, _contextKeyService, _storageService, clipboardService, notificationService, hoverService);\n        this._contextViewService = _contextViewService;\n        this._keybindingService = _keybindingService;\n        this._themeService = _themeService;\n        this._widget = null;\n        this._findOptionsWidget = null;\n    }\n    async _start(opts, newState) {\n        if (!this._widget) {\n            this._createFindWidget();\n        }\n        const selection = this._editor.getSelection();\n        let updateSearchScope = false;\n        switch (this._editor.getOption(41 /* EditorOption.find */).autoFindInSelection) {\n            case 'always':\n                updateSearchScope = true;\n                break;\n            case 'never':\n                updateSearchScope = false;\n                break;\n            case 'multiline': {\n                const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\n                updateSearchScope = isSelectionMultipleLine;\n                break;\n            }\n            default:\n                break;\n        }\n        opts.updateSearchScope = opts.updateSearchScope || updateSearchScope;\n        await super._start(opts, newState);\n        if (this._widget) {\n            if (opts.shouldFocus === 2 /* FindStartFocusAction.FocusReplaceInput */) {\n                this._widget.focusReplaceInput();\n            }\n            else if (opts.shouldFocus === 1 /* FindStartFocusAction.FocusFindInput */) {\n                this._widget.focusFindInput();\n            }\n        }\n    }\n    highlightFindOptions(ignoreWhenVisible = false) {\n        if (!this._widget) {\n            this._createFindWidget();\n        }\n        if (this._state.isRevealed && !ignoreWhenVisible) {\n            this._widget.highlightFindOptions();\n        }\n        else {\n            this._findOptionsWidget.highlightFindOptions();\n        }\n    }\n    _createFindWidget() {\n        this._widget = this._register(new FindWidget(this._editor, this, this._state, this._contextViewService, this._keybindingService, this._contextKeyService, this._themeService, this._storageService, this._notificationService, this._hoverService));\n        this._findOptionsWidget = this._register(new FindOptionsWidget(this._editor, this._state, this._keybindingService));\n    }\n};\nFindController = __decorate([\n    __param(1, IContextViewService),\n    __param(2, IContextKeyService),\n    __param(3, IKeybindingService),\n    __param(4, IThemeService),\n    __param(5, INotificationService),\n    __param(6, IStorageService),\n    __param(7, IClipboardService),\n    __param(8, IHoverService)\n], FindController);\nexport { FindController };\nexport const StartFindAction = registerMultiEditorAction(new MultiEditorAction({\n    id: FIND_IDS.StartFindAction,\n    label: nls.localize('startFindAction', \"Find\"),\n    alias: 'Find',\n    precondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\n    kbOpts: {\n        kbExpr: null,\n        primary: 2048 /* KeyMod.CtrlCmd */ | 36 /* KeyCode.KeyF */,\n        weight: 100 /* KeybindingWeight.EditorContrib */\n    },\n    menuOpts: {\n        menuId: MenuId.MenubarEditMenu,\n        group: '3_find',\n        title: nls.localize({ key: 'miFind', comment: ['&& denotes a mnemonic'] }, \"&&Find\"),\n        order: 1\n    }\n}));\nStartFindAction.addImplementation(0, (accessor, editor, args) => {\n    const controller = CommonFindController.get(editor);\n    if (!controller) {\n        return false;\n    }\n    return controller.start({\n        forceRevealReplace: false,\n        seedSearchStringFromSelection: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n        seedSearchStringFromNonEmptySelection: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n        seedSearchStringFromGlobalClipboard: editor.getOption(41 /* EditorOption.find */).globalFindClipboard,\n        shouldFocus: 1 /* FindStartFocusAction.FocusFindInput */,\n        shouldAnimate: true,\n        updateSearchScope: false,\n        loop: editor.getOption(41 /* EditorOption.find */).loop\n    });\n});\nconst findArgDescription = {\n    description: 'Open a new In-Editor Find Widget.',\n    args: [{\n            name: 'Open a new In-Editor Find Widget args',\n            schema: {\n                properties: {\n                    searchString: { type: 'string' },\n                    replaceString: { type: 'string' },\n                    isRegex: { type: 'boolean' },\n                    matchWholeWord: { type: 'boolean' },\n                    isCaseSensitive: { type: 'boolean' },\n                    preserveCase: { type: 'boolean' },\n                    findInSelection: { type: 'boolean' },\n                }\n            }\n        }]\n};\nexport class StartFindWithArgsAction extends EditorAction {\n    constructor() {\n        super({\n            id: FIND_IDS.StartFindWithArgs,\n            label: nls.localize('startFindWithArgsAction', \"Find With Arguments\"),\n            alias: 'Find With Arguments',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: null,\n                primary: 0,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: findArgDescription\n        });\n    }\n    async run(accessor, editor, args) {\n        const controller = CommonFindController.get(editor);\n        if (controller) {\n            const newState = args ? {\n                searchString: args.searchString,\n                replaceString: args.replaceString,\n                isReplaceRevealed: args.replaceString !== undefined,\n                isRegex: args.isRegex,\n                // isRegexOverride: args.regexOverride,\n                wholeWord: args.matchWholeWord,\n                // wholeWordOverride: args.wholeWordOverride,\n                matchCase: args.isCaseSensitive,\n                // matchCaseOverride: args.matchCaseOverride,\n                preserveCase: args.preserveCase,\n                // preserveCaseOverride: args.preserveCaseOverride,\n            } : {};\n            await controller.start({\n                forceRevealReplace: false,\n                seedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n                seedSearchStringFromNonEmptySelection: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n                seedSearchStringFromGlobalClipboard: true,\n                shouldFocus: 1 /* FindStartFocusAction.FocusFindInput */,\n                shouldAnimate: true,\n                updateSearchScope: (args === null || args === void 0 ? void 0 : args.findInSelection) || false,\n                loop: editor.getOption(41 /* EditorOption.find */).loop\n            }, newState);\n            controller.setGlobalBufferTerm(controller.getState().searchString);\n        }\n    }\n}\nexport class StartFindWithSelectionAction extends EditorAction {\n    constructor() {\n        super({\n            id: FIND_IDS.StartFindWithSelection,\n            label: nls.localize('startFindWithSelectionAction', \"Find With Selection\"),\n            alias: 'Find With Selection',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: null,\n                primary: 0,\n                mac: {\n                    primary: 2048 /* KeyMod.CtrlCmd */ | 35 /* KeyCode.KeyE */,\n                },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    async run(accessor, editor) {\n        const controller = CommonFindController.get(editor);\n        if (controller) {\n            await controller.start({\n                forceRevealReplace: false,\n                seedSearchStringFromSelection: 'multiple',\n                seedSearchStringFromNonEmptySelection: false,\n                seedSearchStringFromGlobalClipboard: false,\n                shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n                shouldAnimate: true,\n                updateSearchScope: false,\n                loop: editor.getOption(41 /* EditorOption.find */).loop\n            });\n            controller.setGlobalBufferTerm(controller.getState().searchString);\n        }\n    }\n}\nexport class MatchFindAction extends EditorAction {\n    async run(accessor, editor) {\n        const controller = CommonFindController.get(editor);\n        if (controller && !this._run(controller)) {\n            await controller.start({\n                forceRevealReplace: false,\n                seedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n                seedSearchStringFromNonEmptySelection: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n                seedSearchStringFromGlobalClipboard: true,\n                shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n                shouldAnimate: true,\n                updateSearchScope: false,\n                loop: editor.getOption(41 /* EditorOption.find */).loop\n            });\n            this._run(controller);\n        }\n    }\n}\nexport class NextMatchFindAction extends MatchFindAction {\n    constructor() {\n        super({\n            id: FIND_IDS.NextMatchFindAction,\n            label: nls.localize('findNextMatchAction', \"Find Next\"),\n            alias: 'Find Next',\n            precondition: undefined,\n            kbOpts: [{\n                    kbExpr: EditorContextKeys.focus,\n                    primary: 61 /* KeyCode.F3 */,\n                    mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 37 /* KeyCode.KeyG */, secondary: [61 /* KeyCode.F3 */] },\n                    weight: 100 /* KeybindingWeight.EditorContrib */\n                }, {\n                    kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\n                    primary: 3 /* KeyCode.Enter */,\n                    weight: 100 /* KeybindingWeight.EditorContrib */\n                }]\n        });\n    }\n    _run(controller) {\n        const result = controller.moveToNextMatch();\n        if (result) {\n            controller.editor.pushUndoStop();\n            return true;\n        }\n        return false;\n    }\n}\nexport class PreviousMatchFindAction extends MatchFindAction {\n    constructor() {\n        super({\n            id: FIND_IDS.PreviousMatchFindAction,\n            label: nls.localize('findPreviousMatchAction', \"Find Previous\"),\n            alias: 'Find Previous',\n            precondition: undefined,\n            kbOpts: [{\n                    kbExpr: EditorContextKeys.focus,\n                    primary: 1024 /* KeyMod.Shift */ | 61 /* KeyCode.F3 */,\n                    mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 37 /* KeyCode.KeyG */, secondary: [1024 /* KeyMod.Shift */ | 61 /* KeyCode.F3 */] },\n                    weight: 100 /* KeybindingWeight.EditorContrib */\n                }, {\n                    kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\n                    primary: 1024 /* KeyMod.Shift */ | 3 /* KeyCode.Enter */,\n                    weight: 100 /* KeybindingWeight.EditorContrib */\n                }\n            ]\n        });\n    }\n    _run(controller) {\n        return controller.moveToPrevMatch();\n    }\n}\nexport class MoveToMatchFindAction extends EditorAction {\n    constructor() {\n        super({\n            id: FIND_IDS.GoToMatchFindAction,\n            label: nls.localize('findMatchAction.goToMatch', \"Go to Match...\"),\n            alias: 'Go to Match...',\n            precondition: CONTEXT_FIND_WIDGET_VISIBLE\n        });\n        this._highlightDecorations = [];\n    }\n    run(accessor, editor, args) {\n        const controller = CommonFindController.get(editor);\n        if (!controller) {\n            return;\n        }\n        const matchesCount = controller.getState().matchesCount;\n        if (matchesCount < 1) {\n            const notificationService = accessor.get(INotificationService);\n            notificationService.notify({\n                severity: Severity.Warning,\n                message: nls.localize('findMatchAction.noResults', \"No matches. Try searching for something else.\")\n            });\n            return;\n        }\n        const quickInputService = accessor.get(IQuickInputService);\n        const inputBox = quickInputService.createInputBox();\n        inputBox.placeholder = nls.localize('findMatchAction.inputPlaceHolder', \"Type a number to go to a specific match (between 1 and {0})\", matchesCount);\n        const toFindMatchIndex = (value) => {\n            const index = parseInt(value);\n            if (isNaN(index)) {\n                return undefined;\n            }\n            const matchCount = controller.getState().matchesCount;\n            if (index > 0 && index <= matchCount) {\n                return index - 1; // zero based\n            }\n            else if (index < 0 && index >= -matchCount) {\n                return matchCount + index;\n            }\n            return undefined;\n        };\n        const updatePickerAndEditor = (value) => {\n            const index = toFindMatchIndex(value);\n            if (typeof index === 'number') {\n                // valid\n                inputBox.validationMessage = undefined;\n                controller.goToMatch(index);\n                const currentMatch = controller.getState().currentMatch;\n                if (currentMatch) {\n                    this.addDecorations(editor, currentMatch);\n                }\n            }\n            else {\n                inputBox.validationMessage = nls.localize('findMatchAction.inputValidationMessage', \"Please type a number between 1 and {0}\", controller.getState().matchesCount);\n                this.clearDecorations(editor);\n            }\n        };\n        inputBox.onDidChangeValue(value => {\n            updatePickerAndEditor(value);\n        });\n        inputBox.onDidAccept(() => {\n            const index = toFindMatchIndex(inputBox.value);\n            if (typeof index === 'number') {\n                controller.goToMatch(index);\n                inputBox.hide();\n            }\n            else {\n                inputBox.validationMessage = nls.localize('findMatchAction.inputValidationMessage', \"Please type a number between 1 and {0}\", controller.getState().matchesCount);\n            }\n        });\n        inputBox.onDidHide(() => {\n            this.clearDecorations(editor);\n            inputBox.dispose();\n        });\n        inputBox.show();\n    }\n    clearDecorations(editor) {\n        editor.changeDecorations(changeAccessor => {\n            this._highlightDecorations = changeAccessor.deltaDecorations(this._highlightDecorations, []);\n        });\n    }\n    addDecorations(editor, range) {\n        editor.changeDecorations(changeAccessor => {\n            this._highlightDecorations = changeAccessor.deltaDecorations(this._highlightDecorations, [\n                {\n                    range,\n                    options: {\n                        description: 'find-match-quick-access-range-highlight',\n                        className: 'rangeHighlight',\n                        isWholeLine: true\n                    }\n                },\n                {\n                    range,\n                    options: {\n                        description: 'find-match-quick-access-range-highlight-overview',\n                        overviewRuler: {\n                            color: themeColorFromId(overviewRulerRangeHighlight),\n                            position: OverviewRulerLane.Full\n                        }\n                    }\n                }\n            ]);\n        });\n    }\n}\nexport class SelectionMatchFindAction extends EditorAction {\n    async run(accessor, editor) {\n        const controller = CommonFindController.get(editor);\n        if (!controller) {\n            return;\n        }\n        const selectionSearchString = getSelectionSearchString(editor, 'single', false);\n        if (selectionSearchString) {\n            controller.setSearchString(selectionSearchString);\n        }\n        if (!this._run(controller)) {\n            await controller.start({\n                forceRevealReplace: false,\n                seedSearchStringFromSelection: 'none',\n                seedSearchStringFromNonEmptySelection: false,\n                seedSearchStringFromGlobalClipboard: false,\n                shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n                shouldAnimate: true,\n                updateSearchScope: false,\n                loop: editor.getOption(41 /* EditorOption.find */).loop\n            });\n            this._run(controller);\n        }\n    }\n}\nexport class NextSelectionMatchFindAction extends SelectionMatchFindAction {\n    constructor() {\n        super({\n            id: FIND_IDS.NextSelectionMatchFindAction,\n            label: nls.localize('nextSelectionMatchFindAction', \"Find Next Selection\"),\n            alias: 'Find Next Selection',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.focus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 61 /* KeyCode.F3 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    _run(controller) {\n        return controller.moveToNextMatch();\n    }\n}\nexport class PreviousSelectionMatchFindAction extends SelectionMatchFindAction {\n    constructor() {\n        super({\n            id: FIND_IDS.PreviousSelectionMatchFindAction,\n            label: nls.localize('previousSelectionMatchFindAction', \"Find Previous Selection\"),\n            alias: 'Find Previous Selection',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.focus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 61 /* KeyCode.F3 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    _run(controller) {\n        return controller.moveToPrevMatch();\n    }\n}\nexport const StartFindReplaceAction = registerMultiEditorAction(new MultiEditorAction({\n    id: FIND_IDS.StartFindReplaceAction,\n    label: nls.localize('startReplace', \"Replace\"),\n    alias: 'Replace',\n    precondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\n    kbOpts: {\n        kbExpr: null,\n        primary: 2048 /* KeyMod.CtrlCmd */ | 38 /* KeyCode.KeyH */,\n        mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 36 /* KeyCode.KeyF */ },\n        weight: 100 /* KeybindingWeight.EditorContrib */\n    },\n    menuOpts: {\n        menuId: MenuId.MenubarEditMenu,\n        group: '3_find',\n        title: nls.localize({ key: 'miReplace', comment: ['&& denotes a mnemonic'] }, \"&&Replace\"),\n        order: 2\n    }\n}));\nStartFindReplaceAction.addImplementation(0, (accessor, editor, args) => {\n    if (!editor.hasModel() || editor.getOption(91 /* EditorOption.readOnly */)) {\n        return false;\n    }\n    const controller = CommonFindController.get(editor);\n    if (!controller) {\n        return false;\n    }\n    const currentSelection = editor.getSelection();\n    const findInputFocused = controller.isFindInputFocused();\n    // we only seed search string from selection when the current selection is single line and not empty,\n    // + the find input is not focused\n    const seedSearchStringFromSelection = !currentSelection.isEmpty()\n        && currentSelection.startLineNumber === currentSelection.endLineNumber\n        && (editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection !== 'never')\n        && !findInputFocused;\n    /*\n    * if the existing search string in find widget is empty and we don't seed search string from selection, it means the Find Input is still empty, so we should focus the Find Input instead of Replace Input.\n\n    * findInputFocused true -> seedSearchStringFromSelection false, FocusReplaceInput\n    * findInputFocused false, seedSearchStringFromSelection true FocusReplaceInput\n    * findInputFocused false seedSearchStringFromSelection false FocusFindInput\n    */\n    const shouldFocus = (findInputFocused || seedSearchStringFromSelection) ?\n        2 /* FindStartFocusAction.FocusReplaceInput */ : 1 /* FindStartFocusAction.FocusFindInput */;\n    return controller.start({\n        forceRevealReplace: true,\n        seedSearchStringFromSelection: seedSearchStringFromSelection ? 'single' : 'none',\n        seedSearchStringFromNonEmptySelection: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n        seedSearchStringFromGlobalClipboard: editor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection !== 'never',\n        shouldFocus: shouldFocus,\n        shouldAnimate: true,\n        updateSearchScope: false,\n        loop: editor.getOption(41 /* EditorOption.find */).loop\n    });\n});\nregisterEditorContribution(CommonFindController.ID, FindController, 0 /* EditorContributionInstantiation.Eager */); // eager because it uses `saveViewState`/`restoreViewState`\nregisterEditorAction(StartFindWithArgsAction);\nregisterEditorAction(StartFindWithSelectionAction);\nregisterEditorAction(NextMatchFindAction);\nregisterEditorAction(PreviousMatchFindAction);\nregisterEditorAction(MoveToMatchFindAction);\nregisterEditorAction(NextSelectionMatchFindAction);\nregisterEditorAction(PreviousSelectionMatchFindAction);\nconst FindCommand = EditorCommand.bindToContribution(CommonFindController.get);\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.CloseFindWidgetCommand,\n    precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n    handler: x => x.closeFindWidget(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, ContextKeyExpr.not('isComposing')),\n        primary: 9 /* KeyCode.Escape */,\n        secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n    }\n}));\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.ToggleCaseSensitiveCommand,\n    precondition: undefined,\n    handler: x => x.toggleCaseSensitive(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: EditorContextKeys.focus,\n        primary: ToggleCaseSensitiveKeybinding.primary,\n        mac: ToggleCaseSensitiveKeybinding.mac,\n        win: ToggleCaseSensitiveKeybinding.win,\n        linux: ToggleCaseSensitiveKeybinding.linux\n    }\n}));\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.ToggleWholeWordCommand,\n    precondition: undefined,\n    handler: x => x.toggleWholeWords(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: EditorContextKeys.focus,\n        primary: ToggleWholeWordKeybinding.primary,\n        mac: ToggleWholeWordKeybinding.mac,\n        win: ToggleWholeWordKeybinding.win,\n        linux: ToggleWholeWordKeybinding.linux\n    }\n}));\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.ToggleRegexCommand,\n    precondition: undefined,\n    handler: x => x.toggleRegex(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: EditorContextKeys.focus,\n        primary: ToggleRegexKeybinding.primary,\n        mac: ToggleRegexKeybinding.mac,\n        win: ToggleRegexKeybinding.win,\n        linux: ToggleRegexKeybinding.linux\n    }\n}));\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.ToggleSearchScopeCommand,\n    precondition: undefined,\n    handler: x => x.toggleSearchScope(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: EditorContextKeys.focus,\n        primary: ToggleSearchScopeKeybinding.primary,\n        mac: ToggleSearchScopeKeybinding.mac,\n        win: ToggleSearchScopeKeybinding.win,\n        linux: ToggleSearchScopeKeybinding.linux\n    }\n}));\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.TogglePreserveCaseCommand,\n    precondition: undefined,\n    handler: x => x.togglePreserveCase(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: EditorContextKeys.focus,\n        primary: TogglePreserveCaseKeybinding.primary,\n        mac: TogglePreserveCaseKeybinding.mac,\n        win: TogglePreserveCaseKeybinding.win,\n        linux: TogglePreserveCaseKeybinding.linux\n    }\n}));\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.ReplaceOneAction,\n    precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n    handler: x => x.replace(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: EditorContextKeys.focus,\n        primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 22 /* KeyCode.Digit1 */\n    }\n}));\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.ReplaceOneAction,\n    precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n    handler: x => x.replace(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\n        primary: 3 /* KeyCode.Enter */\n    }\n}));\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.ReplaceAllAction,\n    precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n    handler: x => x.replaceAll(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: EditorContextKeys.focus,\n        primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 3 /* KeyCode.Enter */\n    }\n}));\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.ReplaceAllAction,\n    precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n    handler: x => x.replaceAll(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\n        primary: undefined,\n        mac: {\n            primary: 2048 /* KeyMod.CtrlCmd */ | 3 /* KeyCode.Enter */,\n        }\n    }\n}));\nregisterEditorCommand(new FindCommand({\n    id: FIND_IDS.SelectAllMatchesAction,\n    precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n    handler: x => x.selectAllMatches(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n        kbExpr: EditorContextKeys.focus,\n        primary: 512 /* KeyMod.Alt */ | 3 /* KeyCode.Enter */\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 { findFirstIdxMonotonousOrArrLen } from '../../../../base/common/arraysFind.js';\nimport { RunOnceScheduler, TimeoutTimer } from '../../../../base/common/async.js';\nimport { DisposableStore, dispose } from '../../../../base/common/lifecycle.js';\nimport { ReplaceCommand, ReplaceCommandThatPreservesSelection } from '../../../common/commands/replaceCommand.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { SearchParams } from '../../../common/model/textModelSearch.js';\nimport { FindDecorations } from './findDecorations.js';\nimport { ReplaceAllCommand } from './replaceAllCommand.js';\nimport { parseReplaceString, ReplacePattern } from './replacePattern.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nexport const CONTEXT_FIND_WIDGET_VISIBLE = new RawContextKey('findWidgetVisible', false);\nexport const CONTEXT_FIND_WIDGET_NOT_VISIBLE = CONTEXT_FIND_WIDGET_VISIBLE.toNegated();\n// Keep ContextKey use of 'Focussed' to not break when clauses\nexport const CONTEXT_FIND_INPUT_FOCUSED = new RawContextKey('findInputFocussed', false);\nexport const CONTEXT_REPLACE_INPUT_FOCUSED = new RawContextKey('replaceInputFocussed', false);\nexport const ToggleCaseSensitiveKeybinding = {\n    primary: 512 /* KeyMod.Alt */ | 33 /* KeyCode.KeyC */,\n    mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 33 /* KeyCode.KeyC */ }\n};\nexport const ToggleWholeWordKeybinding = {\n    primary: 512 /* KeyMod.Alt */ | 53 /* KeyCode.KeyW */,\n    mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 53 /* KeyCode.KeyW */ }\n};\nexport const ToggleRegexKeybinding = {\n    primary: 512 /* KeyMod.Alt */ | 48 /* KeyCode.KeyR */,\n    mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 48 /* KeyCode.KeyR */ }\n};\nexport const ToggleSearchScopeKeybinding = {\n    primary: 512 /* KeyMod.Alt */ | 42 /* KeyCode.KeyL */,\n    mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 42 /* KeyCode.KeyL */ }\n};\nexport const TogglePreserveCaseKeybinding = {\n    primary: 512 /* KeyMod.Alt */ | 46 /* KeyCode.KeyP */,\n    mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 46 /* KeyCode.KeyP */ }\n};\nexport const FIND_IDS = {\n    StartFindAction: 'actions.find',\n    StartFindWithSelection: 'actions.findWithSelection',\n    StartFindWithArgs: 'editor.actions.findWithArgs',\n    NextMatchFindAction: 'editor.action.nextMatchFindAction',\n    PreviousMatchFindAction: 'editor.action.previousMatchFindAction',\n    GoToMatchFindAction: 'editor.action.goToMatchFindAction',\n    NextSelectionMatchFindAction: 'editor.action.nextSelectionMatchFindAction',\n    PreviousSelectionMatchFindAction: 'editor.action.previousSelectionMatchFindAction',\n    StartFindReplaceAction: 'editor.action.startFindReplaceAction',\n    CloseFindWidgetCommand: 'closeFindWidget',\n    ToggleCaseSensitiveCommand: 'toggleFindCaseSensitive',\n    ToggleWholeWordCommand: 'toggleFindWholeWord',\n    ToggleRegexCommand: 'toggleFindRegex',\n    ToggleSearchScopeCommand: 'toggleFindInSelection',\n    TogglePreserveCaseCommand: 'togglePreserveCase',\n    ReplaceOneAction: 'editor.action.replaceOne',\n    ReplaceAllAction: 'editor.action.replaceAll',\n    SelectAllMatchesAction: 'editor.action.selectAllMatches'\n};\nexport const MATCHES_LIMIT = 19999;\nconst RESEARCH_DELAY = 240;\nexport class FindModelBoundToEditorModel {\n    constructor(editor, state) {\n        this._toDispose = new DisposableStore();\n        this._editor = editor;\n        this._state = state;\n        this._isDisposed = false;\n        this._startSearchingTimer = new TimeoutTimer();\n        this._decorations = new FindDecorations(editor);\n        this._toDispose.add(this._decorations);\n        this._updateDecorationsScheduler = new RunOnceScheduler(() => this.research(false), 100);\n        this._toDispose.add(this._updateDecorationsScheduler);\n        this._toDispose.add(this._editor.onDidChangeCursorPosition((e) => {\n            if (e.reason === 3 /* CursorChangeReason.Explicit */\n                || e.reason === 5 /* CursorChangeReason.Undo */\n                || e.reason === 6 /* CursorChangeReason.Redo */) {\n                this._decorations.setStartPosition(this._editor.getPosition());\n            }\n        }));\n        this._ignoreModelContentChanged = false;\n        this._toDispose.add(this._editor.onDidChangeModelContent((e) => {\n            if (this._ignoreModelContentChanged) {\n                return;\n            }\n            if (e.isFlush) {\n                // a model.setValue() was called\n                this._decorations.reset();\n            }\n            this._decorations.setStartPosition(this._editor.getPosition());\n            this._updateDecorationsScheduler.schedule();\n        }));\n        this._toDispose.add(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n        this.research(false, this._state.searchScope);\n    }\n    dispose() {\n        this._isDisposed = true;\n        dispose(this._startSearchingTimer);\n        this._toDispose.dispose();\n    }\n    _onStateChanged(e) {\n        if (this._isDisposed) {\n            // The find model is disposed during a find state changed event\n            return;\n        }\n        if (!this._editor.hasModel()) {\n            // The find model will be disposed momentarily\n            return;\n        }\n        if (e.searchString || e.isReplaceRevealed || e.isRegex || e.wholeWord || e.matchCase || e.searchScope) {\n            const model = this._editor.getModel();\n            if (model.isTooLargeForSyncing()) {\n                this._startSearchingTimer.cancel();\n                this._startSearchingTimer.setIfNotSet(() => {\n                    if (e.searchScope) {\n                        this.research(e.moveCursor, this._state.searchScope);\n                    }\n                    else {\n                        this.research(e.moveCursor);\n                    }\n                }, RESEARCH_DELAY);\n            }\n            else {\n                if (e.searchScope) {\n                    this.research(e.moveCursor, this._state.searchScope);\n                }\n                else {\n                    this.research(e.moveCursor);\n                }\n            }\n        }\n    }\n    static _getSearchRange(model, findScope) {\n        // If we have set now or before a find scope, use it for computing the search range\n        if (findScope) {\n            return findScope;\n        }\n        return model.getFullModelRange();\n    }\n    research(moveCursor, newFindScope) {\n        let findScopes = null;\n        if (typeof newFindScope !== 'undefined') {\n            if (newFindScope !== null) {\n                if (!Array.isArray(newFindScope)) {\n                    findScopes = [newFindScope];\n                }\n                else {\n                    findScopes = newFindScope;\n                }\n            }\n        }\n        else {\n            findScopes = this._decorations.getFindScopes();\n        }\n        if (findScopes !== null) {\n            findScopes = findScopes.map(findScope => {\n                if (findScope.startLineNumber !== findScope.endLineNumber) {\n                    let endLineNumber = findScope.endLineNumber;\n                    if (findScope.endColumn === 1) {\n                        endLineNumber = endLineNumber - 1;\n                    }\n                    return new Range(findScope.startLineNumber, 1, endLineNumber, this._editor.getModel().getLineMaxColumn(endLineNumber));\n                }\n                return findScope;\n            });\n        }\n        const findMatches = this._findMatches(findScopes, false, MATCHES_LIMIT);\n        this._decorations.set(findMatches, findScopes);\n        const editorSelection = this._editor.getSelection();\n        let currentMatchesPosition = this._decorations.getCurrentMatchesPosition(editorSelection);\n        if (currentMatchesPosition === 0 && findMatches.length > 0) {\n            // current selection is not on top of a match\n            // try to find its nearest result from the top of the document\n            const matchAfterSelection = findFirstIdxMonotonousOrArrLen(findMatches.map(match => match.range), range => Range.compareRangesUsingStarts(range, editorSelection) >= 0);\n            currentMatchesPosition = matchAfterSelection > 0 ? matchAfterSelection - 1 + 1 /** match position is one based */ : currentMatchesPosition;\n        }\n        this._state.changeMatchInfo(currentMatchesPosition, this._decorations.getCount(), undefined);\n        if (moveCursor && this._editor.getOption(41 /* EditorOption.find */).cursorMoveOnType) {\n            this._moveToNextMatch(this._decorations.getStartPosition());\n        }\n    }\n    _hasMatches() {\n        return (this._state.matchesCount > 0);\n    }\n    _cannotFind() {\n        if (!this._hasMatches()) {\n            const findScope = this._decorations.getFindScope();\n            if (findScope) {\n                // Reveal the selection so user is reminded that 'selection find' is on.\n                this._editor.revealRangeInCenterIfOutsideViewport(findScope, 0 /* ScrollType.Smooth */);\n            }\n            return true;\n        }\n        return false;\n    }\n    _setCurrentFindMatch(match) {\n        const matchesPosition = this._decorations.setCurrentFindMatch(match);\n        this._state.changeMatchInfo(matchesPosition, this._decorations.getCount(), match);\n        this._editor.setSelection(match);\n        this._editor.revealRangeInCenterIfOutsideViewport(match, 0 /* ScrollType.Smooth */);\n    }\n    _prevSearchPosition(before) {\n        const isUsingLineStops = this._state.isRegex && (this._state.searchString.indexOf('^') >= 0\n            || this._state.searchString.indexOf('$') >= 0);\n        let { lineNumber, column } = before;\n        const model = this._editor.getModel();\n        if (isUsingLineStops || column === 1) {\n            if (lineNumber === 1) {\n                lineNumber = model.getLineCount();\n            }\n            else {\n                lineNumber--;\n            }\n            column = model.getLineMaxColumn(lineNumber);\n        }\n        else {\n            column--;\n        }\n        return new Position(lineNumber, column);\n    }\n    _moveToPrevMatch(before, isRecursed = false) {\n        if (!this._state.canNavigateBack()) {\n            // we are beyond the first matched find result\n            // instead of doing nothing, we should refocus the first item\n            const nextMatchRange = this._decorations.matchAfterPosition(before);\n            if (nextMatchRange) {\n                this._setCurrentFindMatch(nextMatchRange);\n            }\n            return;\n        }\n        if (this._decorations.getCount() < MATCHES_LIMIT) {\n            let prevMatchRange = this._decorations.matchBeforePosition(before);\n            if (prevMatchRange && prevMatchRange.isEmpty() && prevMatchRange.getStartPosition().equals(before)) {\n                before = this._prevSearchPosition(before);\n                prevMatchRange = this._decorations.matchBeforePosition(before);\n            }\n            if (prevMatchRange) {\n                this._setCurrentFindMatch(prevMatchRange);\n            }\n            return;\n        }\n        if (this._cannotFind()) {\n            return;\n        }\n        const findScope = this._decorations.getFindScope();\n        const searchRange = FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), findScope);\n        // ...(----)...|...\n        if (searchRange.getEndPosition().isBefore(before)) {\n            before = searchRange.getEndPosition();\n        }\n        // ...|...(----)...\n        if (before.isBefore(searchRange.getStartPosition())) {\n            before = searchRange.getEndPosition();\n        }\n        const { lineNumber, column } = before;\n        const model = this._editor.getModel();\n        let position = new Position(lineNumber, column);\n        let prevMatch = model.findPreviousMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, false);\n        if (prevMatch && prevMatch.range.isEmpty() && prevMatch.range.getStartPosition().equals(position)) {\n            // Looks like we're stuck at this position, unacceptable!\n            position = this._prevSearchPosition(position);\n            prevMatch = model.findPreviousMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, false);\n        }\n        if (!prevMatch) {\n            // there is precisely one match and selection is on top of it\n            return;\n        }\n        if (!isRecursed && !searchRange.containsRange(prevMatch.range)) {\n            return this._moveToPrevMatch(prevMatch.range.getStartPosition(), true);\n        }\n        this._setCurrentFindMatch(prevMatch.range);\n    }\n    moveToPrevMatch() {\n        this._moveToPrevMatch(this._editor.getSelection().getStartPosition());\n    }\n    _nextSearchPosition(after) {\n        const isUsingLineStops = this._state.isRegex && (this._state.searchString.indexOf('^') >= 0\n            || this._state.searchString.indexOf('$') >= 0);\n        let { lineNumber, column } = after;\n        const model = this._editor.getModel();\n        if (isUsingLineStops || column === model.getLineMaxColumn(lineNumber)) {\n            if (lineNumber === model.getLineCount()) {\n                lineNumber = 1;\n            }\n            else {\n                lineNumber++;\n            }\n            column = 1;\n        }\n        else {\n            column++;\n        }\n        return new Position(lineNumber, column);\n    }\n    _moveToNextMatch(after) {\n        if (!this._state.canNavigateForward()) {\n            // we are beyond the last matched find result\n            // instead of doing nothing, we should refocus the last item\n            const prevMatchRange = this._decorations.matchBeforePosition(after);\n            if (prevMatchRange) {\n                this._setCurrentFindMatch(prevMatchRange);\n            }\n            return;\n        }\n        if (this._decorations.getCount() < MATCHES_LIMIT) {\n            let nextMatchRange = this._decorations.matchAfterPosition(after);\n            if (nextMatchRange && nextMatchRange.isEmpty() && nextMatchRange.getStartPosition().equals(after)) {\n                // Looks like we're stuck at this position, unacceptable!\n                after = this._nextSearchPosition(after);\n                nextMatchRange = this._decorations.matchAfterPosition(after);\n            }\n            if (nextMatchRange) {\n                this._setCurrentFindMatch(nextMatchRange);\n            }\n            return;\n        }\n        const nextMatch = this._getNextMatch(after, false, true);\n        if (nextMatch) {\n            this._setCurrentFindMatch(nextMatch.range);\n        }\n    }\n    _getNextMatch(after, captureMatches, forceMove, isRecursed = false) {\n        if (this._cannotFind()) {\n            return null;\n        }\n        const findScope = this._decorations.getFindScope();\n        const searchRange = FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), findScope);\n        // ...(----)...|...\n        if (searchRange.getEndPosition().isBefore(after)) {\n            after = searchRange.getStartPosition();\n        }\n        // ...|...(----)...\n        if (after.isBefore(searchRange.getStartPosition())) {\n            after = searchRange.getStartPosition();\n        }\n        const { lineNumber, column } = after;\n        const model = this._editor.getModel();\n        let position = new Position(lineNumber, column);\n        let nextMatch = model.findNextMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, captureMatches);\n        if (forceMove && nextMatch && nextMatch.range.isEmpty() && nextMatch.range.getStartPosition().equals(position)) {\n            // Looks like we're stuck at this position, unacceptable!\n            position = this._nextSearchPosition(position);\n            nextMatch = model.findNextMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, captureMatches);\n        }\n        if (!nextMatch) {\n            // there is precisely one match and selection is on top of it\n            return null;\n        }\n        if (!isRecursed && !searchRange.containsRange(nextMatch.range)) {\n            return this._getNextMatch(nextMatch.range.getEndPosition(), captureMatches, forceMove, true);\n        }\n        return nextMatch;\n    }\n    moveToNextMatch() {\n        this._moveToNextMatch(this._editor.getSelection().getEndPosition());\n    }\n    _moveToMatch(index) {\n        const decorationRange = this._decorations.getDecorationRangeAt(index);\n        if (decorationRange) {\n            this._setCurrentFindMatch(decorationRange);\n        }\n    }\n    moveToMatch(index) {\n        this._moveToMatch(index);\n    }\n    _getReplacePattern() {\n        if (this._state.isRegex) {\n            return parseReplaceString(this._state.replaceString);\n        }\n        return ReplacePattern.fromStaticValue(this._state.replaceString);\n    }\n    replace() {\n        if (!this._hasMatches()) {\n            return;\n        }\n        const replacePattern = this._getReplacePattern();\n        const selection = this._editor.getSelection();\n        const nextMatch = this._getNextMatch(selection.getStartPosition(), true, false);\n        if (nextMatch) {\n            if (selection.equalsRange(nextMatch.range)) {\n                // selection sits on a find match => replace it!\n                const replaceString = replacePattern.buildReplaceString(nextMatch.matches, this._state.preserveCase);\n                const command = new ReplaceCommand(selection, replaceString);\n                this._executeEditorCommand('replace', command);\n                this._decorations.setStartPosition(new Position(selection.startLineNumber, selection.startColumn + replaceString.length));\n                this.research(true);\n            }\n            else {\n                this._decorations.setStartPosition(this._editor.getPosition());\n                this._setCurrentFindMatch(nextMatch.range);\n            }\n        }\n    }\n    _findMatches(findScopes, captureMatches, limitResultCount) {\n        const searchRanges = (findScopes || [null]).map((scope) => FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), scope));\n        return this._editor.getModel().findMatches(this._state.searchString, searchRanges, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null, captureMatches, limitResultCount);\n    }\n    replaceAll() {\n        if (!this._hasMatches()) {\n            return;\n        }\n        const findScopes = this._decorations.getFindScopes();\n        if (findScopes === null && this._state.matchesCount >= MATCHES_LIMIT) {\n            // Doing a replace on the entire file that is over ${MATCHES_LIMIT} matches\n            this._largeReplaceAll();\n        }\n        else {\n            this._regularReplaceAll(findScopes);\n        }\n        this.research(false);\n    }\n    _largeReplaceAll() {\n        const searchParams = new SearchParams(this._state.searchString, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(131 /* EditorOption.wordSeparators */) : null);\n        const searchData = searchParams.parseSearchRequest();\n        if (!searchData) {\n            return;\n        }\n        let searchRegex = searchData.regex;\n        if (!searchRegex.multiline) {\n            let mod = 'mu';\n            if (searchRegex.ignoreCase) {\n                mod += 'i';\n            }\n            if (searchRegex.global) {\n                mod += 'g';\n            }\n            searchRegex = new RegExp(searchRegex.source, mod);\n        }\n        const model = this._editor.getModel();\n        const modelText = model.getValue(1 /* EndOfLinePreference.LF */);\n        const fullModelRange = model.getFullModelRange();\n        const replacePattern = this._getReplacePattern();\n        let resultText;\n        const preserveCase = this._state.preserveCase;\n        if (replacePattern.hasReplacementPatterns || preserveCase) {\n            resultText = modelText.replace(searchRegex, function () {\n                return replacePattern.buildReplaceString(arguments, preserveCase);\n            });\n        }\n        else {\n            resultText = modelText.replace(searchRegex, replacePattern.buildReplaceString(null, preserveCase));\n        }\n        const command = new ReplaceCommandThatPreservesSelection(fullModelRange, resultText, this._editor.getSelection());\n        this._executeEditorCommand('replaceAll', command);\n    }\n    _regularReplaceAll(findScopes) {\n        const replacePattern = this._getReplacePattern();\n        // Get all the ranges (even more than the highlighted ones)\n        const matches = this._findMatches(findScopes, replacePattern.hasReplacementPatterns || this._state.preserveCase, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n        const replaceStrings = [];\n        for (let i = 0, len = matches.length; i < len; i++) {\n            replaceStrings[i] = replacePattern.buildReplaceString(matches[i].matches, this._state.preserveCase);\n        }\n        const command = new ReplaceAllCommand(this._editor.getSelection(), matches.map(m => m.range), replaceStrings);\n        this._executeEditorCommand('replaceAll', command);\n    }\n    selectAllMatches() {\n        if (!this._hasMatches()) {\n            return;\n        }\n        const findScopes = this._decorations.getFindScopes();\n        // Get all the ranges (even more than the highlighted ones)\n        const matches = this._findMatches(findScopes, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n        let selections = matches.map(m => new Selection(m.range.startLineNumber, m.range.startColumn, m.range.endLineNumber, m.range.endColumn));\n        // If one of the ranges is the editor selection, then maintain it as primary\n        const editorSelection = this._editor.getSelection();\n        for (let i = 0, len = selections.length; i < len; i++) {\n            const sel = selections[i];\n            if (sel.equalsRange(editorSelection)) {\n                selections = [editorSelection].concat(selections.slice(0, i)).concat(selections.slice(i + 1));\n                break;\n            }\n        }\n        this._editor.setSelections(selections);\n    }\n    _executeEditorCommand(source, command) {\n        try {\n            this._ignoreModelContentChanged = true;\n            this._editor.pushUndoStop();\n            this._editor.executeCommand(source, command);\n            this._editor.pushUndoStop();\n        }\n        finally {\n            this._ignoreModelContentChanged = false;\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 { Range } from '../../../common/core/range.js';\nimport { OverviewRulerLane } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { minimapFindMatch, overviewRulerFindMatchForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nexport class FindDecorations {\n    constructor(editor) {\n        this._editor = editor;\n        this._decorations = [];\n        this._overviewRulerApproximateDecorations = [];\n        this._findScopeDecorationIds = [];\n        this._rangeHighlightDecorationId = null;\n        this._highlightedDecorationId = null;\n        this._startPosition = this._editor.getPosition();\n    }\n    dispose() {\n        this._editor.removeDecorations(this._allDecorations());\n        this._decorations = [];\n        this._overviewRulerApproximateDecorations = [];\n        this._findScopeDecorationIds = [];\n        this._rangeHighlightDecorationId = null;\n        this._highlightedDecorationId = null;\n    }\n    reset() {\n        this._decorations = [];\n        this._overviewRulerApproximateDecorations = [];\n        this._findScopeDecorationIds = [];\n        this._rangeHighlightDecorationId = null;\n        this._highlightedDecorationId = null;\n    }\n    getCount() {\n        return this._decorations.length;\n    }\n    /** @deprecated use getFindScopes to support multiple selections */\n    getFindScope() {\n        if (this._findScopeDecorationIds[0]) {\n            return this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]);\n        }\n        return null;\n    }\n    getFindScopes() {\n        if (this._findScopeDecorationIds.length) {\n            const scopes = this._findScopeDecorationIds.map(findScopeDecorationId => this._editor.getModel().getDecorationRange(findScopeDecorationId)).filter(element => !!element);\n            if (scopes.length) {\n                return scopes;\n            }\n        }\n        return null;\n    }\n    getStartPosition() {\n        return this._startPosition;\n    }\n    setStartPosition(newStartPosition) {\n        this._startPosition = newStartPosition;\n        this.setCurrentFindMatch(null);\n    }\n    _getDecorationIndex(decorationId) {\n        const index = this._decorations.indexOf(decorationId);\n        if (index >= 0) {\n            return index + 1;\n        }\n        return 1;\n    }\n    getDecorationRangeAt(index) {\n        const decorationId = index < this._decorations.length ? this._decorations[index] : null;\n        if (decorationId) {\n            return this._editor.getModel().getDecorationRange(decorationId);\n        }\n        return null;\n    }\n    getCurrentMatchesPosition(desiredRange) {\n        const candidates = this._editor.getModel().getDecorationsInRange(desiredRange);\n        for (const candidate of candidates) {\n            const candidateOpts = candidate.options;\n            if (candidateOpts === FindDecorations._FIND_MATCH_DECORATION || candidateOpts === FindDecorations._CURRENT_FIND_MATCH_DECORATION) {\n                return this._getDecorationIndex(candidate.id);\n            }\n        }\n        // We don't know the current match position, so returns zero to show '?' in find widget\n        return 0;\n    }\n    setCurrentFindMatch(nextMatch) {\n        let newCurrentDecorationId = null;\n        let matchPosition = 0;\n        if (nextMatch) {\n            for (let i = 0, len = this._decorations.length; i < len; i++) {\n                const range = this._editor.getModel().getDecorationRange(this._decorations[i]);\n                if (nextMatch.equalsRange(range)) {\n                    newCurrentDecorationId = this._decorations[i];\n                    matchPosition = (i + 1);\n                    break;\n                }\n            }\n        }\n        if (this._highlightedDecorationId !== null || newCurrentDecorationId !== null) {\n            this._editor.changeDecorations((changeAccessor) => {\n                if (this._highlightedDecorationId !== null) {\n                    changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations._FIND_MATCH_DECORATION);\n                    this._highlightedDecorationId = null;\n                }\n                if (newCurrentDecorationId !== null) {\n                    this._highlightedDecorationId = newCurrentDecorationId;\n                    changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations._CURRENT_FIND_MATCH_DECORATION);\n                }\n                if (this._rangeHighlightDecorationId !== null) {\n                    changeAccessor.removeDecoration(this._rangeHighlightDecorationId);\n                    this._rangeHighlightDecorationId = null;\n                }\n                if (newCurrentDecorationId !== null) {\n                    let rng = this._editor.getModel().getDecorationRange(newCurrentDecorationId);\n                    if (rng.startLineNumber !== rng.endLineNumber && rng.endColumn === 1) {\n                        const lineBeforeEnd = rng.endLineNumber - 1;\n                        const lineBeforeEndMaxColumn = this._editor.getModel().getLineMaxColumn(lineBeforeEnd);\n                        rng = new Range(rng.startLineNumber, rng.startColumn, lineBeforeEnd, lineBeforeEndMaxColumn);\n                    }\n                    this._rangeHighlightDecorationId = changeAccessor.addDecoration(rng, FindDecorations._RANGE_HIGHLIGHT_DECORATION);\n                }\n            });\n        }\n        return matchPosition;\n    }\n    set(findMatches, findScopes) {\n        this._editor.changeDecorations((accessor) => {\n            let findMatchesOptions = FindDecorations._FIND_MATCH_DECORATION;\n            const newOverviewRulerApproximateDecorations = [];\n            if (findMatches.length > 1000) {\n                // we go into a mode where the overview ruler gets \"approximate\" decorations\n                // the reason is that the overview ruler paints all the decorations in the file and we don't want to cause freezes\n                findMatchesOptions = FindDecorations._FIND_MATCH_NO_OVERVIEW_DECORATION;\n                // approximate a distance in lines where matches should be merged\n                const lineCount = this._editor.getModel().getLineCount();\n                const height = this._editor.getLayoutInfo().height;\n                const approxPixelsPerLine = height / lineCount;\n                const mergeLinesDelta = Math.max(2, Math.ceil(3 / approxPixelsPerLine));\n                // merge decorations as much as possible\n                let prevStartLineNumber = findMatches[0].range.startLineNumber;\n                let prevEndLineNumber = findMatches[0].range.endLineNumber;\n                for (let i = 1, len = findMatches.length; i < len; i++) {\n                    const range = findMatches[i].range;\n                    if (prevEndLineNumber + mergeLinesDelta >= range.startLineNumber) {\n                        if (range.endLineNumber > prevEndLineNumber) {\n                            prevEndLineNumber = range.endLineNumber;\n                        }\n                    }\n                    else {\n                        newOverviewRulerApproximateDecorations.push({\n                            range: new Range(prevStartLineNumber, 1, prevEndLineNumber, 1),\n                            options: FindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION\n                        });\n                        prevStartLineNumber = range.startLineNumber;\n                        prevEndLineNumber = range.endLineNumber;\n                    }\n                }\n                newOverviewRulerApproximateDecorations.push({\n                    range: new Range(prevStartLineNumber, 1, prevEndLineNumber, 1),\n                    options: FindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION\n                });\n            }\n            // Find matches\n            const newFindMatchesDecorations = new Array(findMatches.length);\n            for (let i = 0, len = findMatches.length; i < len; i++) {\n                newFindMatchesDecorations[i] = {\n                    range: findMatches[i].range,\n                    options: findMatchesOptions\n                };\n            }\n            this._decorations = accessor.deltaDecorations(this._decorations, newFindMatchesDecorations);\n            // Overview ruler approximate decorations\n            this._overviewRulerApproximateDecorations = accessor.deltaDecorations(this._overviewRulerApproximateDecorations, newOverviewRulerApproximateDecorations);\n            // Range highlight\n            if (this._rangeHighlightDecorationId) {\n                accessor.removeDecoration(this._rangeHighlightDecorationId);\n                this._rangeHighlightDecorationId = null;\n            }\n            // Find scope\n            if (this._findScopeDecorationIds.length) {\n                this._findScopeDecorationIds.forEach(findScopeDecorationId => accessor.removeDecoration(findScopeDecorationId));\n                this._findScopeDecorationIds = [];\n            }\n            if (findScopes === null || findScopes === void 0 ? void 0 : findScopes.length) {\n                this._findScopeDecorationIds = findScopes.map(findScope => accessor.addDecoration(findScope, FindDecorations._FIND_SCOPE_DECORATION));\n            }\n        });\n    }\n    matchBeforePosition(position) {\n        if (this._decorations.length === 0) {\n            return null;\n        }\n        for (let i = this._decorations.length - 1; i >= 0; i--) {\n            const decorationId = this._decorations[i];\n            const r = this._editor.getModel().getDecorationRange(decorationId);\n            if (!r || r.endLineNumber > position.lineNumber) {\n                continue;\n            }\n            if (r.endLineNumber < position.lineNumber) {\n                return r;\n            }\n            if (r.endColumn > position.column) {\n                continue;\n            }\n            return r;\n        }\n        return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length - 1]);\n    }\n    matchAfterPosition(position) {\n        if (this._decorations.length === 0) {\n            return null;\n        }\n        for (let i = 0, len = this._decorations.length; i < len; i++) {\n            const decorationId = this._decorations[i];\n            const r = this._editor.getModel().getDecorationRange(decorationId);\n            if (!r || r.startLineNumber < position.lineNumber) {\n                continue;\n            }\n            if (r.startLineNumber > position.lineNumber) {\n                return r;\n            }\n            if (r.startColumn < position.column) {\n                continue;\n            }\n            return r;\n        }\n        return this._editor.getModel().getDecorationRange(this._decorations[0]);\n    }\n    _allDecorations() {\n        let result = [];\n        result = result.concat(this._decorations);\n        result = result.concat(this._overviewRulerApproximateDecorations);\n        if (this._findScopeDecorationIds.length) {\n            result.push(...this._findScopeDecorationIds);\n        }\n        if (this._rangeHighlightDecorationId) {\n            result.push(this._rangeHighlightDecorationId);\n        }\n        return result;\n    }\n}\nFindDecorations._CURRENT_FIND_MATCH_DECORATION = ModelDecorationOptions.register({\n    description: 'current-find-match',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    zIndex: 13,\n    className: 'currentFindMatch',\n    showIfCollapsed: true,\n    overviewRuler: {\n        color: themeColorFromId(overviewRulerFindMatchForeground),\n        position: OverviewRulerLane.Center\n    },\n    minimap: {\n        color: themeColorFromId(minimapFindMatch),\n        position: 1 /* MinimapPosition.Inline */\n    }\n});\nFindDecorations._FIND_MATCH_DECORATION = ModelDecorationOptions.register({\n    description: 'find-match',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    zIndex: 10,\n    className: 'findMatch',\n    showIfCollapsed: true,\n    overviewRuler: {\n        color: themeColorFromId(overviewRulerFindMatchForeground),\n        position: OverviewRulerLane.Center\n    },\n    minimap: {\n        color: themeColorFromId(minimapFindMatch),\n        position: 1 /* MinimapPosition.Inline */\n    }\n});\nFindDecorations._FIND_MATCH_NO_OVERVIEW_DECORATION = ModelDecorationOptions.register({\n    description: 'find-match-no-overview',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    className: 'findMatch',\n    showIfCollapsed: true\n});\nFindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION = ModelDecorationOptions.register({\n    description: 'find-match-only-overview',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    overviewRuler: {\n        color: themeColorFromId(overviewRulerFindMatchForeground),\n        position: OverviewRulerLane.Center\n    }\n});\nFindDecorations._RANGE_HIGHLIGHT_DECORATION = ModelDecorationOptions.register({\n    description: 'find-range-highlight',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    className: 'rangeHighlight',\n    isWholeLine: true\n});\nFindDecorations._FIND_SCOPE_DECORATION = ModelDecorationOptions.register({\n    description: 'find-scope',\n    className: 'findScope',\n    isWholeLine: true\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 { Range } from '../../../common/core/range.js';\nexport class ReplaceAllCommand {\n    constructor(editorSelection, ranges, replaceStrings) {\n        this._editorSelection = editorSelection;\n        this._ranges = ranges;\n        this._replaceStrings = replaceStrings;\n        this._trackedEditorSelectionId = null;\n    }\n    getEditOperations(model, builder) {\n        if (this._ranges.length > 0) {\n            // Collect all edit operations\n            const ops = [];\n            for (let i = 0; i < this._ranges.length; i++) {\n                ops.push({\n                    range: this._ranges[i],\n                    text: this._replaceStrings[i]\n                });\n            }\n            // Sort them in ascending order by range starts\n            ops.sort((o1, o2) => {\n                return Range.compareRangesUsingStarts(o1.range, o2.range);\n            });\n            // Merge operations that touch each other\n            const resultOps = [];\n            let previousOp = ops[0];\n            for (let i = 1; i < ops.length; i++) {\n                if (previousOp.range.endLineNumber === ops[i].range.startLineNumber && previousOp.range.endColumn === ops[i].range.startColumn) {\n                    // These operations are one after another and can be merged\n                    previousOp.range = previousOp.range.plusRange(ops[i].range);\n                    previousOp.text = previousOp.text + ops[i].text;\n                }\n                else {\n                    resultOps.push(previousOp);\n                    previousOp = ops[i];\n                }\n            }\n            resultOps.push(previousOp);\n            for (const op of resultOps) {\n                builder.addEditOperation(op.range, op.text);\n            }\n        }\n        this._trackedEditorSelectionId = builder.trackSelection(this._editorSelection);\n    }\n    computeCursorState(model, helper) {\n        return helper.getTrackedSelection(this._trackedEditorSelectionId);\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 * as strings from './strings.js';\nexport function buildReplaceStringWithCasePreserved(matches, pattern) {\n    if (matches && (matches[0] !== '')) {\n        const containsHyphens = validateSpecificSpecialCharacter(matches, pattern, '-');\n        const containsUnderscores = validateSpecificSpecialCharacter(matches, pattern, '_');\n        if (containsHyphens && !containsUnderscores) {\n            return buildReplaceStringForSpecificSpecialCharacter(matches, pattern, '-');\n        }\n        else if (!containsHyphens && containsUnderscores) {\n            return buildReplaceStringForSpecificSpecialCharacter(matches, pattern, '_');\n        }\n        if (matches[0].toUpperCase() === matches[0]) {\n            return pattern.toUpperCase();\n        }\n        else if (matches[0].toLowerCase() === matches[0]) {\n            return pattern.toLowerCase();\n        }\n        else if (strings.containsUppercaseCharacter(matches[0][0]) && pattern.length > 0) {\n            return pattern[0].toUpperCase() + pattern.substr(1);\n        }\n        else if (matches[0][0].toUpperCase() !== matches[0][0] && pattern.length > 0) {\n            return pattern[0].toLowerCase() + pattern.substr(1);\n        }\n        else {\n            // we don't understand its pattern yet.\n            return pattern;\n        }\n    }\n    else {\n        return pattern;\n    }\n}\nfunction validateSpecificSpecialCharacter(matches, pattern, specialCharacter) {\n    const doesContainSpecialCharacter = matches[0].indexOf(specialCharacter) !== -1 && pattern.indexOf(specialCharacter) !== -1;\n    return doesContainSpecialCharacter && matches[0].split(specialCharacter).length === pattern.split(specialCharacter).length;\n}\nfunction buildReplaceStringForSpecificSpecialCharacter(matches, pattern, specialCharacter) {\n    const splitPatternAtSpecialCharacter = pattern.split(specialCharacter);\n    const splitMatchAtSpecialCharacter = matches[0].split(specialCharacter);\n    let replaceString = '';\n    splitPatternAtSpecialCharacter.forEach((splitValue, index) => {\n        replaceString += buildReplaceStringWithCasePreserved([splitMatchAtSpecialCharacter[index]], splitValue) + specialCharacter;\n    });\n    return replaceString.slice(0, -1);\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 { buildReplaceStringWithCasePreserved } from '../../../../base/common/search.js';\n/**\n * Assigned when the replace pattern is entirely static.\n */\nclass StaticValueReplacePattern {\n    constructor(staticValue) {\n        this.staticValue = staticValue;\n        this.kind = 0 /* ReplacePatternKind.StaticValue */;\n    }\n}\n/**\n * Assigned when the replace pattern has replacement patterns.\n */\nclass DynamicPiecesReplacePattern {\n    constructor(pieces) {\n        this.pieces = pieces;\n        this.kind = 1 /* ReplacePatternKind.DynamicPieces */;\n    }\n}\nexport class ReplacePattern {\n    static fromStaticValue(value) {\n        return new ReplacePattern([ReplacePiece.staticValue(value)]);\n    }\n    get hasReplacementPatterns() {\n        return (this._state.kind === 1 /* ReplacePatternKind.DynamicPieces */);\n    }\n    constructor(pieces) {\n        if (!pieces || pieces.length === 0) {\n            this._state = new StaticValueReplacePattern('');\n        }\n        else if (pieces.length === 1 && pieces[0].staticValue !== null) {\n            this._state = new StaticValueReplacePattern(pieces[0].staticValue);\n        }\n        else {\n            this._state = new DynamicPiecesReplacePattern(pieces);\n        }\n    }\n    buildReplaceString(matches, preserveCase) {\n        if (this._state.kind === 0 /* ReplacePatternKind.StaticValue */) {\n            if (preserveCase) {\n                return buildReplaceStringWithCasePreserved(matches, this._state.staticValue);\n            }\n            else {\n                return this._state.staticValue;\n            }\n        }\n        let result = '';\n        for (let i = 0, len = this._state.pieces.length; i < len; i++) {\n            const piece = this._state.pieces[i];\n            if (piece.staticValue !== null) {\n                // static value ReplacePiece\n                result += piece.staticValue;\n                continue;\n            }\n            // match index ReplacePiece\n            let match = ReplacePattern._substitute(piece.matchIndex, matches);\n            if (piece.caseOps !== null && piece.caseOps.length > 0) {\n                const repl = [];\n                const lenOps = piece.caseOps.length;\n                let opIdx = 0;\n                for (let idx = 0, len = match.length; idx < len; idx++) {\n                    if (opIdx >= lenOps) {\n                        repl.push(match.slice(idx));\n                        break;\n                    }\n                    switch (piece.caseOps[opIdx]) {\n                        case 'U':\n                            repl.push(match[idx].toUpperCase());\n                            break;\n                        case 'u':\n                            repl.push(match[idx].toUpperCase());\n                            opIdx++;\n                            break;\n                        case 'L':\n                            repl.push(match[idx].toLowerCase());\n                            break;\n                        case 'l':\n                            repl.push(match[idx].toLowerCase());\n                            opIdx++;\n                            break;\n                        default:\n                            repl.push(match[idx]);\n                    }\n                }\n                match = repl.join('');\n            }\n            result += match;\n        }\n        return result;\n    }\n    static _substitute(matchIndex, matches) {\n        if (matches === null) {\n            return '';\n        }\n        if (matchIndex === 0) {\n            return matches[0];\n        }\n        let remainder = '';\n        while (matchIndex > 0) {\n            if (matchIndex < matches.length) {\n                // A match can be undefined\n                const match = (matches[matchIndex] || '');\n                return match + remainder;\n            }\n            remainder = String(matchIndex % 10) + remainder;\n            matchIndex = Math.floor(matchIndex / 10);\n        }\n        return '$' + remainder;\n    }\n}\n/**\n * A replace piece can either be a static string or an index to a specific match.\n */\nexport class ReplacePiece {\n    static staticValue(value) {\n        return new ReplacePiece(value, -1, null);\n    }\n    static caseOps(index, caseOps) {\n        return new ReplacePiece(null, index, caseOps);\n    }\n    constructor(staticValue, matchIndex, caseOps) {\n        this.staticValue = staticValue;\n        this.matchIndex = matchIndex;\n        if (!caseOps || caseOps.length === 0) {\n            this.caseOps = null;\n        }\n        else {\n            this.caseOps = caseOps.slice(0);\n        }\n    }\n}\nclass ReplacePieceBuilder {\n    constructor(source) {\n        this._source = source;\n        this._lastCharIndex = 0;\n        this._result = [];\n        this._resultLen = 0;\n        this._currentStaticPiece = '';\n    }\n    emitUnchanged(toCharIndex) {\n        this._emitStatic(this._source.substring(this._lastCharIndex, toCharIndex));\n        this._lastCharIndex = toCharIndex;\n    }\n    emitStatic(value, toCharIndex) {\n        this._emitStatic(value);\n        this._lastCharIndex = toCharIndex;\n    }\n    _emitStatic(value) {\n        if (value.length === 0) {\n            return;\n        }\n        this._currentStaticPiece += value;\n    }\n    emitMatchIndex(index, toCharIndex, caseOps) {\n        if (this._currentStaticPiece.length !== 0) {\n            this._result[this._resultLen++] = ReplacePiece.staticValue(this._currentStaticPiece);\n            this._currentStaticPiece = '';\n        }\n        this._result[this._resultLen++] = ReplacePiece.caseOps(index, caseOps);\n        this._lastCharIndex = toCharIndex;\n    }\n    finalize() {\n        this.emitUnchanged(this._source.length);\n        if (this._currentStaticPiece.length !== 0) {\n            this._result[this._resultLen++] = ReplacePiece.staticValue(this._currentStaticPiece);\n            this._currentStaticPiece = '';\n        }\n        return new ReplacePattern(this._result);\n    }\n}\n/**\n * \\n\t\t\t=> inserts a LF\n * \\t\t\t\t=> inserts a TAB\n * \\\\\t\t\t=> inserts a \"\\\".\n * \\u\t\t\t=> upper-cases one character in a match.\n * \\U\t\t\t=> upper-cases ALL remaining characters in a match.\n * \\l\t\t\t=> lower-cases one character in a match.\n * \\L\t\t\t=> lower-cases ALL remaining characters in a match.\n * $$\t\t\t=> inserts a \"$\".\n * $& and $0\t=> inserts the matched substring.\n * $n\t\t\t=> Where n is a non-negative integer lesser than 100, inserts the nth parenthesized submatch string\n * everything else stays untouched\n *\n * Also see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter\n */\nexport function parseReplaceString(replaceString) {\n    if (!replaceString || replaceString.length === 0) {\n        return new ReplacePattern(null);\n    }\n    const caseOps = [];\n    const result = new ReplacePieceBuilder(replaceString);\n    for (let i = 0, len = replaceString.length; i < len; i++) {\n        const chCode = replaceString.charCodeAt(i);\n        if (chCode === 92 /* CharCode.Backslash */) {\n            // move to next char\n            i++;\n            if (i >= len) {\n                // string ends with a \\\n                break;\n            }\n            const nextChCode = replaceString.charCodeAt(i);\n            // let replaceWithCharacter: string | null = null;\n            switch (nextChCode) {\n                case 92 /* CharCode.Backslash */:\n                    // \\\\ => inserts a \"\\\"\n                    result.emitUnchanged(i - 1);\n                    result.emitStatic('\\\\', i + 1);\n                    break;\n                case 110 /* CharCode.n */:\n                    // \\n => inserts a LF\n                    result.emitUnchanged(i - 1);\n                    result.emitStatic('\\n', i + 1);\n                    break;\n                case 116 /* CharCode.t */:\n                    // \\t => inserts a TAB\n                    result.emitUnchanged(i - 1);\n                    result.emitStatic('\\t', i + 1);\n                    break;\n                // Case modification of string replacements, patterned after Boost, but only applied\n                // to the replacement text, not subsequent content.\n                case 117 /* CharCode.u */:\n                // \\u => upper-cases one character.\n                case 85 /* CharCode.U */:\n                // \\U => upper-cases ALL following characters.\n                case 108 /* CharCode.l */:\n                // \\l => lower-cases one character.\n                case 76 /* CharCode.L */:\n                    // \\L => lower-cases ALL following characters.\n                    result.emitUnchanged(i - 1);\n                    result.emitStatic('', i + 1);\n                    caseOps.push(String.fromCharCode(nextChCode));\n                    break;\n            }\n            continue;\n        }\n        if (chCode === 36 /* CharCode.DollarSign */) {\n            // move to next char\n            i++;\n            if (i >= len) {\n                // string ends with a $\n                break;\n            }\n            const nextChCode = replaceString.charCodeAt(i);\n            if (nextChCode === 36 /* CharCode.DollarSign */) {\n                // $$ => inserts a \"$\"\n                result.emitUnchanged(i - 1);\n                result.emitStatic('$', i + 1);\n                continue;\n            }\n            if (nextChCode === 48 /* CharCode.Digit0 */ || nextChCode === 38 /* CharCode.Ampersand */) {\n                // $& and $0 => inserts the matched substring.\n                result.emitUnchanged(i - 1);\n                result.emitMatchIndex(0, i + 1, caseOps);\n                caseOps.length = 0;\n                continue;\n            }\n            if (49 /* CharCode.Digit1 */ <= nextChCode && nextChCode <= 57 /* CharCode.Digit9 */) {\n                // $n\n                let matchIndex = nextChCode - 48 /* CharCode.Digit0 */;\n                // peek next char to probe for $nn\n                if (i + 1 < len) {\n                    const nextNextChCode = replaceString.charCodeAt(i + 1);\n                    if (48 /* CharCode.Digit0 */ <= nextNextChCode && nextNextChCode <= 57 /* CharCode.Digit9 */) {\n                        // $nn\n                        // move to next char\n                        i++;\n                        matchIndex = matchIndex * 10 + (nextNextChCode - 48 /* CharCode.Digit0 */);\n                        result.emitUnchanged(i - 2);\n                        result.emitMatchIndex(matchIndex, i + 1, caseOps);\n                        caseOps.length = 0;\n                        continue;\n                    }\n                }\n                result.emitUnchanged(i - 1);\n                result.emitMatchIndex(matchIndex, i + 1, caseOps);\n                caseOps.length = 0;\n                continue;\n            }\n        }\n    }\n    return result.finalize();\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 * as dom from '../../../../base/browser/dom.js';\nimport './findOptionsWidget.css';\nimport { CaseSensitiveToggle, RegexToggle, WholeWordsToggle } from '../../../../base/browser/ui/findinput/findInputToggles.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { FIND_IDS } from './findModel.js';\nimport { asCssVariable, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { createInstantHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';\nexport class FindOptionsWidget extends Widget {\n    constructor(editor, state, keybindingService) {\n        super();\n        this._hideSoon = this._register(new RunOnceScheduler(() => this._hide(), 2000));\n        this._isVisible = false;\n        this._editor = editor;\n        this._state = state;\n        this._keybindingService = keybindingService;\n        this._domNode = document.createElement('div');\n        this._domNode.className = 'findOptionsWidget';\n        this._domNode.style.display = 'none';\n        this._domNode.style.top = '10px';\n        this._domNode.style.zIndex = '12';\n        this._domNode.setAttribute('role', 'presentation');\n        this._domNode.setAttribute('aria-hidden', 'true');\n        const toggleStyles = {\n            inputActiveOptionBorder: asCssVariable(inputActiveOptionBorder),\n            inputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),\n            inputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),\n        };\n        const hoverDelegate = this._register(createInstantHoverDelegate());\n        this.caseSensitive = this._register(new CaseSensitiveToggle({\n            appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\n            isChecked: this._state.matchCase,\n            hoverDelegate,\n            ...toggleStyles\n        }));\n        this._domNode.appendChild(this.caseSensitive.domNode);\n        this._register(this.caseSensitive.onChange(() => {\n            this._state.change({\n                matchCase: this.caseSensitive.checked\n            }, false);\n        }));\n        this.wholeWords = this._register(new WholeWordsToggle({\n            appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\n            isChecked: this._state.wholeWord,\n            hoverDelegate,\n            ...toggleStyles\n        }));\n        this._domNode.appendChild(this.wholeWords.domNode);\n        this._register(this.wholeWords.onChange(() => {\n            this._state.change({\n                wholeWord: this.wholeWords.checked\n            }, false);\n        }));\n        this.regex = this._register(new RegexToggle({\n            appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\n            isChecked: this._state.isRegex,\n            hoverDelegate,\n            ...toggleStyles\n        }));\n        this._domNode.appendChild(this.regex.domNode);\n        this._register(this.regex.onChange(() => {\n            this._state.change({\n                isRegex: this.regex.checked\n            }, false);\n        }));\n        this._editor.addOverlayWidget(this);\n        this._register(this._state.onFindReplaceStateChange((e) => {\n            let somethingChanged = false;\n            if (e.isRegex) {\n                this.regex.checked = this._state.isRegex;\n                somethingChanged = true;\n            }\n            if (e.wholeWord) {\n                this.wholeWords.checked = this._state.wholeWord;\n                somethingChanged = true;\n            }\n            if (e.matchCase) {\n                this.caseSensitive.checked = this._state.matchCase;\n                somethingChanged = true;\n            }\n            if (!this._state.isRevealed && somethingChanged) {\n                this._revealTemporarily();\n            }\n        }));\n        this._register(dom.addDisposableListener(this._domNode, dom.EventType.MOUSE_LEAVE, (e) => this._onMouseLeave()));\n        this._register(dom.addDisposableListener(this._domNode, 'mouseover', (e) => this._onMouseOver()));\n    }\n    _keybindingLabelFor(actionId) {\n        const kb = this._keybindingService.lookupKeybinding(actionId);\n        if (!kb) {\n            return '';\n        }\n        return ` (${kb.getLabel()})`;\n    }\n    dispose() {\n        this._editor.removeOverlayWidget(this);\n        super.dispose();\n    }\n    // ----- IOverlayWidget API\n    getId() {\n        return FindOptionsWidget.ID;\n    }\n    getDomNode() {\n        return this._domNode;\n    }\n    getPosition() {\n        return {\n            preference: 0 /* OverlayWidgetPositionPreference.TOP_RIGHT_CORNER */\n        };\n    }\n    highlightFindOptions() {\n        this._revealTemporarily();\n    }\n    _revealTemporarily() {\n        this._show();\n        this._hideSoon.schedule();\n    }\n    _onMouseLeave() {\n        this._hideSoon.schedule();\n    }\n    _onMouseOver() {\n        this._hideSoon.cancel();\n    }\n    _show() {\n        if (this._isVisible) {\n            return;\n        }\n        this._isVisible = true;\n        this._domNode.style.display = 'block';\n    }\n    _hide() {\n        if (!this._isVisible) {\n            return;\n        }\n        this._isVisible = false;\n        this._domNode.style.display = 'none';\n    }\n}\nFindOptionsWidget.ID = 'editor.contrib.findOptionsWidget';\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 { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Range } from '../../../common/core/range.js';\nimport { MATCHES_LIMIT } from './findModel.js';\nfunction effectiveOptionValue(override, value) {\n    if (override === 1 /* FindOptionOverride.True */) {\n        return true;\n    }\n    if (override === 2 /* FindOptionOverride.False */) {\n        return false;\n    }\n    return value;\n}\nexport class FindReplaceState extends Disposable {\n    get searchString() { return this._searchString; }\n    get replaceString() { return this._replaceString; }\n    get isRevealed() { return this._isRevealed; }\n    get isReplaceRevealed() { return this._isReplaceRevealed; }\n    get isRegex() { return effectiveOptionValue(this._isRegexOverride, this._isRegex); }\n    get wholeWord() { return effectiveOptionValue(this._wholeWordOverride, this._wholeWord); }\n    get matchCase() { return effectiveOptionValue(this._matchCaseOverride, this._matchCase); }\n    get preserveCase() { return effectiveOptionValue(this._preserveCaseOverride, this._preserveCase); }\n    get actualIsRegex() { return this._isRegex; }\n    get actualWholeWord() { return this._wholeWord; }\n    get actualMatchCase() { return this._matchCase; }\n    get actualPreserveCase() { return this._preserveCase; }\n    get searchScope() { return this._searchScope; }\n    get matchesPosition() { return this._matchesPosition; }\n    get matchesCount() { return this._matchesCount; }\n    get currentMatch() { return this._currentMatch; }\n    constructor() {\n        super();\n        this._onFindReplaceStateChange = this._register(new Emitter());\n        this.onFindReplaceStateChange = this._onFindReplaceStateChange.event;\n        this._searchString = '';\n        this._replaceString = '';\n        this._isRevealed = false;\n        this._isReplaceRevealed = false;\n        this._isRegex = false;\n        this._isRegexOverride = 0 /* FindOptionOverride.NotSet */;\n        this._wholeWord = false;\n        this._wholeWordOverride = 0 /* FindOptionOverride.NotSet */;\n        this._matchCase = false;\n        this._matchCaseOverride = 0 /* FindOptionOverride.NotSet */;\n        this._preserveCase = false;\n        this._preserveCaseOverride = 0 /* FindOptionOverride.NotSet */;\n        this._searchScope = null;\n        this._matchesPosition = 0;\n        this._matchesCount = 0;\n        this._currentMatch = null;\n        this._loop = true;\n        this._isSearching = false;\n        this._filters = null;\n    }\n    changeMatchInfo(matchesPosition, matchesCount, currentMatch) {\n        const changeEvent = {\n            moveCursor: false,\n            updateHistory: false,\n            searchString: false,\n            replaceString: false,\n            isRevealed: false,\n            isReplaceRevealed: false,\n            isRegex: false,\n            wholeWord: false,\n            matchCase: false,\n            preserveCase: false,\n            searchScope: false,\n            matchesPosition: false,\n            matchesCount: false,\n            currentMatch: false,\n            loop: false,\n            isSearching: false,\n            filters: false\n        };\n        let somethingChanged = false;\n        if (matchesCount === 0) {\n            matchesPosition = 0;\n        }\n        if (matchesPosition > matchesCount) {\n            matchesPosition = matchesCount;\n        }\n        if (this._matchesPosition !== matchesPosition) {\n            this._matchesPosition = matchesPosition;\n            changeEvent.matchesPosition = true;\n            somethingChanged = true;\n        }\n        if (this._matchesCount !== matchesCount) {\n            this._matchesCount = matchesCount;\n            changeEvent.matchesCount = true;\n            somethingChanged = true;\n        }\n        if (typeof currentMatch !== 'undefined') {\n            if (!Range.equalsRange(this._currentMatch, currentMatch)) {\n                this._currentMatch = currentMatch;\n                changeEvent.currentMatch = true;\n                somethingChanged = true;\n            }\n        }\n        if (somethingChanged) {\n            this._onFindReplaceStateChange.fire(changeEvent);\n        }\n    }\n    change(newState, moveCursor, updateHistory = true) {\n        var _a;\n        const changeEvent = {\n            moveCursor: moveCursor,\n            updateHistory: updateHistory,\n            searchString: false,\n            replaceString: false,\n            isRevealed: false,\n            isReplaceRevealed: false,\n            isRegex: false,\n            wholeWord: false,\n            matchCase: false,\n            preserveCase: false,\n            searchScope: false,\n            matchesPosition: false,\n            matchesCount: false,\n            currentMatch: false,\n            loop: false,\n            isSearching: false,\n            filters: false\n        };\n        let somethingChanged = false;\n        const oldEffectiveIsRegex = this.isRegex;\n        const oldEffectiveWholeWords = this.wholeWord;\n        const oldEffectiveMatchCase = this.matchCase;\n        const oldEffectivePreserveCase = this.preserveCase;\n        if (typeof newState.searchString !== 'undefined') {\n            if (this._searchString !== newState.searchString) {\n                this._searchString = newState.searchString;\n                changeEvent.searchString = true;\n                somethingChanged = true;\n            }\n        }\n        if (typeof newState.replaceString !== 'undefined') {\n            if (this._replaceString !== newState.replaceString) {\n                this._replaceString = newState.replaceString;\n                changeEvent.replaceString = true;\n                somethingChanged = true;\n            }\n        }\n        if (typeof newState.isRevealed !== 'undefined') {\n            if (this._isRevealed !== newState.isRevealed) {\n                this._isRevealed = newState.isRevealed;\n                changeEvent.isRevealed = true;\n                somethingChanged = true;\n            }\n        }\n        if (typeof newState.isReplaceRevealed !== 'undefined') {\n            if (this._isReplaceRevealed !== newState.isReplaceRevealed) {\n                this._isReplaceRevealed = newState.isReplaceRevealed;\n                changeEvent.isReplaceRevealed = true;\n                somethingChanged = true;\n            }\n        }\n        if (typeof newState.isRegex !== 'undefined') {\n            this._isRegex = newState.isRegex;\n        }\n        if (typeof newState.wholeWord !== 'undefined') {\n            this._wholeWord = newState.wholeWord;\n        }\n        if (typeof newState.matchCase !== 'undefined') {\n            this._matchCase = newState.matchCase;\n        }\n        if (typeof newState.preserveCase !== 'undefined') {\n            this._preserveCase = newState.preserveCase;\n        }\n        if (typeof newState.searchScope !== 'undefined') {\n            if (!((_a = newState.searchScope) === null || _a === void 0 ? void 0 : _a.every((newSearchScope) => {\n                var _a;\n                return (_a = this._searchScope) === null || _a === void 0 ? void 0 : _a.some(existingSearchScope => {\n                    return !Range.equalsRange(existingSearchScope, newSearchScope);\n                });\n            }))) {\n                this._searchScope = newState.searchScope;\n                changeEvent.searchScope = true;\n                somethingChanged = true;\n            }\n        }\n        if (typeof newState.loop !== 'undefined') {\n            if (this._loop !== newState.loop) {\n                this._loop = newState.loop;\n                changeEvent.loop = true;\n                somethingChanged = true;\n            }\n        }\n        if (typeof newState.isSearching !== 'undefined') {\n            if (this._isSearching !== newState.isSearching) {\n                this._isSearching = newState.isSearching;\n                changeEvent.isSearching = true;\n                somethingChanged = true;\n            }\n        }\n        if (typeof newState.filters !== 'undefined') {\n            if (this._filters) {\n                this._filters.update(newState.filters);\n            }\n            else {\n                this._filters = newState.filters;\n            }\n            changeEvent.filters = true;\n            somethingChanged = true;\n        }\n        // Overrides get set when they explicitly come in and get reset anytime something else changes\n        this._isRegexOverride = (typeof newState.isRegexOverride !== 'undefined' ? newState.isRegexOverride : 0 /* FindOptionOverride.NotSet */);\n        this._wholeWordOverride = (typeof newState.wholeWordOverride !== 'undefined' ? newState.wholeWordOverride : 0 /* FindOptionOverride.NotSet */);\n        this._matchCaseOverride = (typeof newState.matchCaseOverride !== 'undefined' ? newState.matchCaseOverride : 0 /* FindOptionOverride.NotSet */);\n        this._preserveCaseOverride = (typeof newState.preserveCaseOverride !== 'undefined' ? newState.preserveCaseOverride : 0 /* FindOptionOverride.NotSet */);\n        if (oldEffectiveIsRegex !== this.isRegex) {\n            somethingChanged = true;\n            changeEvent.isRegex = true;\n        }\n        if (oldEffectiveWholeWords !== this.wholeWord) {\n            somethingChanged = true;\n            changeEvent.wholeWord = true;\n        }\n        if (oldEffectiveMatchCase !== this.matchCase) {\n            somethingChanged = true;\n            changeEvent.matchCase = true;\n        }\n        if (oldEffectivePreserveCase !== this.preserveCase) {\n            somethingChanged = true;\n            changeEvent.preserveCase = true;\n        }\n        if (somethingChanged) {\n            this._onFindReplaceStateChange.fire(changeEvent);\n        }\n    }\n    canNavigateBack() {\n        return this.canNavigateInLoop() || (this.matchesPosition !== 1);\n    }\n    canNavigateForward() {\n        return this.canNavigateInLoop() || (this.matchesPosition < this.matchesCount);\n    }\n    canNavigateInLoop() {\n        return this._loop || (this.matchesCount >= MATCHES_LIMIT);\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 * as dom from '../../../../base/browser/dom.js';\nimport { alert as alertFn } from '../../../../base/browser/ui/aria/aria.js';\nimport { Toggle } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { Sash } from '../../../../base/browser/ui/sash/sash.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { Delayer } from '../../../../base/common/async.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { toDisposable } from '../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport './findWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_REPLACE_INPUT_FOCUSED, FIND_IDS, MATCHES_LIMIT } from './findModel.js';\nimport * as nls from '../../../../nls.js';\nimport { ContextScopedFindInput, ContextScopedReplaceInput } from '../../../../platform/history/browser/contextScopedHistoryWidget.js';\nimport { showHistoryKeybindingHint } from '../../../../platform/history/browser/historyWidgetKeybindingHint.js';\nimport { asCssVariable, contrastBorder, editorFindMatchHighlightBorder, editorFindRangeHighlightBorder, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon, widgetClose } from '../../../../platform/theme/common/iconRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { assertIsDefined } from '../../../../base/common/types.js';\nimport { defaultInputBoxStyles, defaultToggleStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport { createInstantHoverDelegate, getDefaultHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegateFactory.js';\nconst findSelectionIcon = registerIcon('find-selection', Codicon.selection, nls.localize('findSelectionIcon', 'Icon for \\'Find in Selection\\' in the editor find widget.'));\nconst findCollapsedIcon = registerIcon('find-collapsed', Codicon.chevronRight, nls.localize('findCollapsedIcon', 'Icon to indicate that the editor find widget is collapsed.'));\nconst findExpandedIcon = registerIcon('find-expanded', Codicon.chevronDown, nls.localize('findExpandedIcon', 'Icon to indicate that the editor find widget is expanded.'));\nexport const findReplaceIcon = registerIcon('find-replace', Codicon.replace, nls.localize('findReplaceIcon', 'Icon for \\'Replace\\' in the editor find widget.'));\nexport const findReplaceAllIcon = registerIcon('find-replace-all', Codicon.replaceAll, nls.localize('findReplaceAllIcon', 'Icon for \\'Replace All\\' in the editor find widget.'));\nexport const findPreviousMatchIcon = registerIcon('find-previous-match', Codicon.arrowUp, nls.localize('findPreviousMatchIcon', 'Icon for \\'Find Previous\\' in the editor find widget.'));\nexport const findNextMatchIcon = registerIcon('find-next-match', Codicon.arrowDown, nls.localize('findNextMatchIcon', 'Icon for \\'Find Next\\' in the editor find widget.'));\nconst NLS_FIND_DIALOG_LABEL = nls.localize('label.findDialog', \"Find / Replace\");\nconst NLS_FIND_INPUT_LABEL = nls.localize('label.find', \"Find\");\nconst NLS_FIND_INPUT_PLACEHOLDER = nls.localize('placeholder.find', \"Find\");\nconst NLS_PREVIOUS_MATCH_BTN_LABEL = nls.localize('label.previousMatchButton', \"Previous Match\");\nconst NLS_NEXT_MATCH_BTN_LABEL = nls.localize('label.nextMatchButton', \"Next Match\");\nconst NLS_TOGGLE_SELECTION_FIND_TITLE = nls.localize('label.toggleSelectionFind', \"Find in Selection\");\nconst NLS_CLOSE_BTN_LABEL = nls.localize('label.closeButton', \"Close\");\nconst NLS_REPLACE_INPUT_LABEL = nls.localize('label.replace', \"Replace\");\nconst NLS_REPLACE_INPUT_PLACEHOLDER = nls.localize('placeholder.replace', \"Replace\");\nconst NLS_REPLACE_BTN_LABEL = nls.localize('label.replaceButton', \"Replace\");\nconst NLS_REPLACE_ALL_BTN_LABEL = nls.localize('label.replaceAllButton', \"Replace All\");\nconst NLS_TOGGLE_REPLACE_MODE_BTN_LABEL = nls.localize('label.toggleReplaceButton', \"Toggle Replace\");\nconst NLS_MATCHES_COUNT_LIMIT_TITLE = nls.localize('title.matchesCountLimit', \"Only the first {0} results are highlighted, but all find operations work on the entire text.\", MATCHES_LIMIT);\nexport const NLS_MATCHES_LOCATION = nls.localize('label.matchesLocation', \"{0} of {1}\");\nexport const NLS_NO_RESULTS = nls.localize('label.noResults', \"No results\");\nconst FIND_WIDGET_INITIAL_WIDTH = 419;\nconst PART_WIDTH = 275;\nconst FIND_INPUT_AREA_WIDTH = PART_WIDTH - 54;\nlet MAX_MATCHES_COUNT_WIDTH = 69;\n// let FIND_ALL_CONTROLS_WIDTH = 17/** Find Input margin-left */ + (MAX_MATCHES_COUNT_WIDTH + 3 + 1) /** Match Results */ + 23 /** Button */ * 4 + 2/** sash */;\nconst FIND_INPUT_AREA_HEIGHT = 33; // The height of Find Widget when Replace Input is not visible.\nconst ctrlEnterReplaceAllWarningPromptedKey = 'ctrlEnterReplaceAll.windows.donotask';\nconst ctrlKeyMod = (platform.isMacintosh ? 256 /* KeyMod.WinCtrl */ : 2048 /* KeyMod.CtrlCmd */);\nexport class FindWidgetViewZone {\n    constructor(afterLineNumber) {\n        this.afterLineNumber = afterLineNumber;\n        this.heightInPx = FIND_INPUT_AREA_HEIGHT;\n        this.suppressMouseDown = false;\n        this.domNode = document.createElement('div');\n        this.domNode.className = 'dock-find-viewzone';\n    }\n}\nfunction stopPropagationForMultiLineUpwards(event, value, textarea) {\n    const isMultiline = !!value.match(/\\n/);\n    if (textarea && isMultiline && textarea.selectionStart > 0) {\n        event.stopPropagation();\n        return;\n    }\n}\nfunction stopPropagationForMultiLineDownwards(event, value, textarea) {\n    const isMultiline = !!value.match(/\\n/);\n    if (textarea && isMultiline && textarea.selectionEnd < textarea.value.length) {\n        event.stopPropagation();\n        return;\n    }\n}\nexport class FindWidget extends Widget {\n    constructor(codeEditor, controller, state, contextViewProvider, keybindingService, contextKeyService, themeService, storageService, notificationService, _hoverService) {\n        super();\n        this._hoverService = _hoverService;\n        this._cachedHeight = null;\n        this._revealTimeouts = [];\n        this._codeEditor = codeEditor;\n        this._controller = controller;\n        this._state = state;\n        this._contextViewProvider = contextViewProvider;\n        this._keybindingService = keybindingService;\n        this._contextKeyService = contextKeyService;\n        this._storageService = storageService;\n        this._notificationService = notificationService;\n        this._ctrlEnterReplaceAllWarningPrompted = !!storageService.getBoolean(ctrlEnterReplaceAllWarningPromptedKey, 0 /* StorageScope.PROFILE */);\n        this._isVisible = false;\n        this._isReplaceVisible = false;\n        this._ignoreChangeEvent = false;\n        this._updateHistoryDelayer = new Delayer(500);\n        this._register(toDisposable(() => this._updateHistoryDelayer.cancel()));\n        this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n        this._buildDomNode();\n        this._updateButtons();\n        this._tryUpdateWidgetWidth();\n        this._findInput.inputBox.layout();\n        this._register(this._codeEditor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(91 /* EditorOption.readOnly */)) {\n                if (this._codeEditor.getOption(91 /* EditorOption.readOnly */)) {\n                    // Hide replace part if editor becomes read only\n                    this._state.change({ isReplaceRevealed: false }, false);\n                }\n                this._updateButtons();\n            }\n            if (e.hasChanged(145 /* EditorOption.layoutInfo */)) {\n                this._tryUpdateWidgetWidth();\n            }\n            if (e.hasChanged(2 /* EditorOption.accessibilitySupport */)) {\n                this.updateAccessibilitySupport();\n            }\n            if (e.hasChanged(41 /* EditorOption.find */)) {\n                const supportLoop = this._codeEditor.getOption(41 /* EditorOption.find */).loop;\n                this._state.change({ loop: supportLoop }, false);\n                const addExtraSpaceOnTop = this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop;\n                if (addExtraSpaceOnTop && !this._viewZone) {\n                    this._viewZone = new FindWidgetViewZone(0);\n                    this._showViewZone();\n                }\n                if (!addExtraSpaceOnTop && this._viewZone) {\n                    this._removeViewZone();\n                }\n            }\n        }));\n        this.updateAccessibilitySupport();\n        this._register(this._codeEditor.onDidChangeCursorSelection(() => {\n            if (this._isVisible) {\n                this._updateToggleSelectionFindButton();\n            }\n        }));\n        this._register(this._codeEditor.onDidFocusEditorWidget(async () => {\n            if (this._isVisible) {\n                const globalBufferTerm = await this._controller.getGlobalBufferTerm();\n                if (globalBufferTerm && globalBufferTerm !== this._state.searchString) {\n                    this._state.change({ searchString: globalBufferTerm }, false);\n                    this._findInput.select();\n                }\n            }\n        }));\n        this._findInputFocused = CONTEXT_FIND_INPUT_FOCUSED.bindTo(contextKeyService);\n        this._findFocusTracker = this._register(dom.trackFocus(this._findInput.inputBox.inputElement));\n        this._register(this._findFocusTracker.onDidFocus(() => {\n            this._findInputFocused.set(true);\n            this._updateSearchScope();\n        }));\n        this._register(this._findFocusTracker.onDidBlur(() => {\n            this._findInputFocused.set(false);\n        }));\n        this._replaceInputFocused = CONTEXT_REPLACE_INPUT_FOCUSED.bindTo(contextKeyService);\n        this._replaceFocusTracker = this._register(dom.trackFocus(this._replaceInput.inputBox.inputElement));\n        this._register(this._replaceFocusTracker.onDidFocus(() => {\n            this._replaceInputFocused.set(true);\n            this._updateSearchScope();\n        }));\n        this._register(this._replaceFocusTracker.onDidBlur(() => {\n            this._replaceInputFocused.set(false);\n        }));\n        this._codeEditor.addOverlayWidget(this);\n        if (this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop) {\n            this._viewZone = new FindWidgetViewZone(0); // Put it before the first line then users can scroll beyond the first line.\n        }\n        this._register(this._codeEditor.onDidChangeModel(() => {\n            if (!this._isVisible) {\n                return;\n            }\n            this._viewZoneId = undefined;\n        }));\n        this._register(this._codeEditor.onDidScrollChange((e) => {\n            if (e.scrollTopChanged) {\n                this._layoutViewZone();\n                return;\n            }\n            // for other scroll changes, layout the viewzone in next tick to avoid ruining current rendering.\n            setTimeout(() => {\n                this._layoutViewZone();\n            }, 0);\n        }));\n    }\n    // ----- IOverlayWidget API\n    getId() {\n        return FindWidget.ID;\n    }\n    getDomNode() {\n        return this._domNode;\n    }\n    getPosition() {\n        if (this._isVisible) {\n            return {\n                preference: 0 /* OverlayWidgetPositionPreference.TOP_RIGHT_CORNER */\n            };\n        }\n        return null;\n    }\n    // ----- React to state changes\n    _onStateChanged(e) {\n        if (e.searchString) {\n            try {\n                this._ignoreChangeEvent = true;\n                this._findInput.setValue(this._state.searchString);\n            }\n            finally {\n                this._ignoreChangeEvent = false;\n            }\n            this._updateButtons();\n        }\n        if (e.replaceString) {\n            this._replaceInput.inputBox.value = this._state.replaceString;\n        }\n        if (e.isRevealed) {\n            if (this._state.isRevealed) {\n                this._reveal();\n            }\n            else {\n                this._hide(true);\n            }\n        }\n        if (e.isReplaceRevealed) {\n            if (this._state.isReplaceRevealed) {\n                if (!this._codeEditor.getOption(91 /* EditorOption.readOnly */) && !this._isReplaceVisible) {\n                    this._isReplaceVisible = true;\n                    this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n                    this._updateButtons();\n                    this._replaceInput.inputBox.layout();\n                }\n            }\n            else {\n                if (this._isReplaceVisible) {\n                    this._isReplaceVisible = false;\n                    this._updateButtons();\n                }\n            }\n        }\n        if ((e.isRevealed || e.isReplaceRevealed) && (this._state.isRevealed || this._state.isReplaceRevealed)) {\n            if (this._tryUpdateHeight()) {\n                this._showViewZone();\n            }\n        }\n        if (e.isRegex) {\n            this._findInput.setRegex(this._state.isRegex);\n        }\n        if (e.wholeWord) {\n            this._findInput.setWholeWords(this._state.wholeWord);\n        }\n        if (e.matchCase) {\n            this._findInput.setCaseSensitive(this._state.matchCase);\n        }\n        if (e.preserveCase) {\n            this._replaceInput.setPreserveCase(this._state.preserveCase);\n        }\n        if (e.searchScope) {\n            if (this._state.searchScope) {\n                this._toggleSelectionFind.checked = true;\n            }\n            else {\n                this._toggleSelectionFind.checked = false;\n            }\n            this._updateToggleSelectionFindButton();\n        }\n        if (e.searchString || e.matchesCount || e.matchesPosition) {\n            const showRedOutline = (this._state.searchString.length > 0 && this._state.matchesCount === 0);\n            this._domNode.classList.toggle('no-results', showRedOutline);\n            this._updateMatchesCount();\n            this._updateButtons();\n        }\n        if (e.searchString || e.currentMatch) {\n            this._layoutViewZone();\n        }\n        if (e.updateHistory) {\n            this._delayedUpdateHistory();\n        }\n        if (e.loop) {\n            this._updateButtons();\n        }\n    }\n    _delayedUpdateHistory() {\n        this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(undefined, onUnexpectedError);\n    }\n    _updateHistory() {\n        if (this._state.searchString) {\n            this._findInput.inputBox.addToHistory();\n        }\n        if (this._state.replaceString) {\n            this._replaceInput.inputBox.addToHistory();\n        }\n    }\n    _updateMatchesCount() {\n        this._matchesCount.style.minWidth = MAX_MATCHES_COUNT_WIDTH + 'px';\n        if (this._state.matchesCount >= MATCHES_LIMIT) {\n            this._matchesCount.title = NLS_MATCHES_COUNT_LIMIT_TITLE;\n        }\n        else {\n            this._matchesCount.title = '';\n        }\n        // remove previous content\n        if (this._matchesCount.firstChild) {\n            this._matchesCount.removeChild(this._matchesCount.firstChild);\n        }\n        let label;\n        if (this._state.matchesCount > 0) {\n            let matchesCount = String(this._state.matchesCount);\n            if (this._state.matchesCount >= MATCHES_LIMIT) {\n                matchesCount += '+';\n            }\n            let matchesPosition = String(this._state.matchesPosition);\n            if (matchesPosition === '0') {\n                matchesPosition = '?';\n            }\n            label = strings.format(NLS_MATCHES_LOCATION, matchesPosition, matchesCount);\n        }\n        else {\n            label = NLS_NO_RESULTS;\n        }\n        this._matchesCount.appendChild(document.createTextNode(label));\n        alertFn(this._getAriaLabel(label, this._state.currentMatch, this._state.searchString));\n        MAX_MATCHES_COUNT_WIDTH = Math.max(MAX_MATCHES_COUNT_WIDTH, this._matchesCount.clientWidth);\n    }\n    // ----- actions\n    _getAriaLabel(label, currentMatch, searchString) {\n        if (label === NLS_NO_RESULTS) {\n            return searchString === ''\n                ? nls.localize('ariaSearchNoResultEmpty', \"{0} found\", label)\n                : nls.localize('ariaSearchNoResult', \"{0} found for '{1}'\", label, searchString);\n        }\n        if (currentMatch) {\n            const ariaLabel = nls.localize('ariaSearchNoResultWithLineNum', \"{0} found for '{1}', at {2}\", label, searchString, currentMatch.startLineNumber + ':' + currentMatch.startColumn);\n            const model = this._codeEditor.getModel();\n            if (model && (currentMatch.startLineNumber <= model.getLineCount()) && (currentMatch.startLineNumber >= 1)) {\n                const lineContent = model.getLineContent(currentMatch.startLineNumber);\n                return `${lineContent}, ${ariaLabel}`;\n            }\n            return ariaLabel;\n        }\n        return nls.localize('ariaSearchNoResultWithLineNumNoCurrentMatch', \"{0} found for '{1}'\", label, searchString);\n    }\n    /**\n     * If 'selection find' is ON we should not disable the button (its function is to cancel 'selection find').\n     * If 'selection find' is OFF we enable the button only if there is a selection.\n     */\n    _updateToggleSelectionFindButton() {\n        const selection = this._codeEditor.getSelection();\n        const isSelection = selection ? (selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn) : false;\n        const isChecked = this._toggleSelectionFind.checked;\n        if (this._isVisible && (isChecked || isSelection)) {\n            this._toggleSelectionFind.enable();\n        }\n        else {\n            this._toggleSelectionFind.disable();\n        }\n    }\n    _updateButtons() {\n        this._findInput.setEnabled(this._isVisible);\n        this._replaceInput.setEnabled(this._isVisible && this._isReplaceVisible);\n        this._updateToggleSelectionFindButton();\n        this._closeBtn.setEnabled(this._isVisible);\n        const findInputIsNonEmpty = (this._state.searchString.length > 0);\n        const matchesCount = this._state.matchesCount ? true : false;\n        this._prevBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateBack());\n        this._nextBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateForward());\n        this._replaceBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);\n        this._replaceAllBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);\n        this._domNode.classList.toggle('replaceToggled', this._isReplaceVisible);\n        this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);\n        const canReplace = !this._codeEditor.getOption(91 /* EditorOption.readOnly */);\n        this._toggleReplaceBtn.setEnabled(this._isVisible && canReplace);\n    }\n    _reveal() {\n        this._revealTimeouts.forEach(e => {\n            clearTimeout(e);\n        });\n        this._revealTimeouts = [];\n        if (!this._isVisible) {\n            this._isVisible = true;\n            const selection = this._codeEditor.getSelection();\n            switch (this._codeEditor.getOption(41 /* EditorOption.find */).autoFindInSelection) {\n                case 'always':\n                    this._toggleSelectionFind.checked = true;\n                    break;\n                case 'never':\n                    this._toggleSelectionFind.checked = false;\n                    break;\n                case 'multiline': {\n                    const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\n                    this._toggleSelectionFind.checked = isSelectionMultipleLine;\n                    break;\n                }\n                default:\n                    break;\n            }\n            this._tryUpdateWidgetWidth();\n            this._updateButtons();\n            this._revealTimeouts.push(setTimeout(() => {\n                this._domNode.classList.add('visible');\n                this._domNode.setAttribute('aria-hidden', 'false');\n            }, 0));\n            // validate query again as it's being dismissed when we hide the find widget.\n            this._revealTimeouts.push(setTimeout(() => {\n                this._findInput.validate();\n            }, 200));\n            this._codeEditor.layoutOverlayWidget(this);\n            let adjustEditorScrollTop = true;\n            if (this._codeEditor.getOption(41 /* EditorOption.find */).seedSearchStringFromSelection && selection) {\n                const domNode = this._codeEditor.getDomNode();\n                if (domNode) {\n                    const editorCoords = dom.getDomNodePagePosition(domNode);\n                    const startCoords = this._codeEditor.getScrolledVisiblePosition(selection.getStartPosition());\n                    const startLeft = editorCoords.left + (startCoords ? startCoords.left : 0);\n                    const startTop = startCoords ? startCoords.top : 0;\n                    if (this._viewZone && startTop < this._viewZone.heightInPx) {\n                        if (selection.endLineNumber > selection.startLineNumber) {\n                            adjustEditorScrollTop = false;\n                        }\n                        const leftOfFindWidget = dom.getTopLeftOffset(this._domNode).left;\n                        if (startLeft > leftOfFindWidget) {\n                            adjustEditorScrollTop = false;\n                        }\n                        const endCoords = this._codeEditor.getScrolledVisiblePosition(selection.getEndPosition());\n                        const endLeft = editorCoords.left + (endCoords ? endCoords.left : 0);\n                        if (endLeft > leftOfFindWidget) {\n                            adjustEditorScrollTop = false;\n                        }\n                    }\n                }\n            }\n            this._showViewZone(adjustEditorScrollTop);\n        }\n    }\n    _hide(focusTheEditor) {\n        this._revealTimeouts.forEach(e => {\n            clearTimeout(e);\n        });\n        this._revealTimeouts = [];\n        if (this._isVisible) {\n            this._isVisible = false;\n            this._updateButtons();\n            this._domNode.classList.remove('visible');\n            this._domNode.setAttribute('aria-hidden', 'true');\n            this._findInput.clearMessage();\n            if (focusTheEditor) {\n                this._codeEditor.focus();\n            }\n            this._codeEditor.layoutOverlayWidget(this);\n            this._removeViewZone();\n        }\n    }\n    _layoutViewZone(targetScrollTop) {\n        const addExtraSpaceOnTop = this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop;\n        if (!addExtraSpaceOnTop) {\n            this._removeViewZone();\n            return;\n        }\n        if (!this._isVisible) {\n            return;\n        }\n        const viewZone = this._viewZone;\n        if (this._viewZoneId !== undefined || !viewZone) {\n            return;\n        }\n        this._codeEditor.changeViewZones((accessor) => {\n            viewZone.heightInPx = this._getHeight();\n            this._viewZoneId = accessor.addZone(viewZone);\n            // scroll top adjust to make sure the editor doesn't scroll when adding viewzone at the beginning.\n            this._codeEditor.setScrollTop(targetScrollTop || this._codeEditor.getScrollTop() + viewZone.heightInPx);\n        });\n    }\n    _showViewZone(adjustScroll = true) {\n        if (!this._isVisible) {\n            return;\n        }\n        const addExtraSpaceOnTop = this._codeEditor.getOption(41 /* EditorOption.find */).addExtraSpaceOnTop;\n        if (!addExtraSpaceOnTop) {\n            return;\n        }\n        if (this._viewZone === undefined) {\n            this._viewZone = new FindWidgetViewZone(0);\n        }\n        const viewZone = this._viewZone;\n        this._codeEditor.changeViewZones((accessor) => {\n            if (this._viewZoneId !== undefined) {\n                // the view zone already exists, we need to update the height\n                const newHeight = this._getHeight();\n                if (newHeight === viewZone.heightInPx) {\n                    return;\n                }\n                const scrollAdjustment = newHeight - viewZone.heightInPx;\n                viewZone.heightInPx = newHeight;\n                accessor.layoutZone(this._viewZoneId);\n                if (adjustScroll) {\n                    this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);\n                }\n                return;\n            }\n            else {\n                let scrollAdjustment = this._getHeight();\n                // if the editor has top padding, factor that into the zone height\n                scrollAdjustment -= this._codeEditor.getOption(84 /* EditorOption.padding */).top;\n                if (scrollAdjustment <= 0) {\n                    return;\n                }\n                viewZone.heightInPx = scrollAdjustment;\n                this._viewZoneId = accessor.addZone(viewZone);\n                if (adjustScroll) {\n                    this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);\n                }\n            }\n        });\n    }\n    _removeViewZone() {\n        this._codeEditor.changeViewZones((accessor) => {\n            if (this._viewZoneId !== undefined) {\n                accessor.removeZone(this._viewZoneId);\n                this._viewZoneId = undefined;\n                if (this._viewZone) {\n                    this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() - this._viewZone.heightInPx);\n                    this._viewZone = undefined;\n                }\n            }\n        });\n    }\n    _tryUpdateWidgetWidth() {\n        if (!this._isVisible) {\n            return;\n        }\n        if (!this._domNode.isConnected) {\n            // the widget is not in the DOM\n            return;\n        }\n        const layoutInfo = this._codeEditor.getLayoutInfo();\n        const editorContentWidth = layoutInfo.contentWidth;\n        if (editorContentWidth <= 0) {\n            // for example, diff view original editor\n            this._domNode.classList.add('hiddenEditor');\n            return;\n        }\n        else if (this._domNode.classList.contains('hiddenEditor')) {\n            this._domNode.classList.remove('hiddenEditor');\n        }\n        const editorWidth = layoutInfo.width;\n        const minimapWidth = layoutInfo.minimap.minimapWidth;\n        let collapsedFindWidget = false;\n        let reducedFindWidget = false;\n        let narrowFindWidget = false;\n        if (this._resized) {\n            const widgetWidth = dom.getTotalWidth(this._domNode);\n            if (widgetWidth > FIND_WIDGET_INITIAL_WIDTH) {\n                // as the widget is resized by users, we may need to change the max width of the widget as the editor width changes.\n                this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;\n                this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n                return;\n            }\n        }\n        if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth >= editorWidth) {\n            reducedFindWidget = true;\n        }\n        if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth) {\n            narrowFindWidget = true;\n        }\n        if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth + 50) {\n            collapsedFindWidget = true;\n        }\n        this._domNode.classList.toggle('collapsed-find-widget', collapsedFindWidget);\n        this._domNode.classList.toggle('narrow-find-widget', narrowFindWidget);\n        this._domNode.classList.toggle('reduced-find-widget', reducedFindWidget);\n        if (!narrowFindWidget && !collapsedFindWidget) {\n            // the minimal left offset of findwidget is 15px.\n            this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;\n        }\n        this._findInput.layout({ collapsedFindWidget, narrowFindWidget, reducedFindWidget });\n        if (this._resized) {\n            const findInputWidth = this._findInput.inputBox.element.clientWidth;\n            if (findInputWidth > 0) {\n                this._replaceInput.width = findInputWidth;\n            }\n        }\n        else if (this._isReplaceVisible) {\n            this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n        }\n    }\n    _getHeight() {\n        let totalheight = 0;\n        // find input margin top\n        totalheight += 4;\n        // find input height\n        totalheight += this._findInput.inputBox.height + 2 /** input box border */;\n        if (this._isReplaceVisible) {\n            // replace input margin\n            totalheight += 4;\n            totalheight += this._replaceInput.inputBox.height + 2 /** input box border */;\n        }\n        // margin bottom\n        totalheight += 4;\n        return totalheight;\n    }\n    _tryUpdateHeight() {\n        const totalHeight = this._getHeight();\n        if (this._cachedHeight !== null && this._cachedHeight === totalHeight) {\n            return false;\n        }\n        this._cachedHeight = totalHeight;\n        this._domNode.style.height = `${totalHeight}px`;\n        return true;\n    }\n    // ----- Public\n    focusFindInput() {\n        this._findInput.select();\n        // Edge browser requires focus() in addition to select()\n        this._findInput.focus();\n    }\n    focusReplaceInput() {\n        this._replaceInput.select();\n        // Edge browser requires focus() in addition to select()\n        this._replaceInput.focus();\n    }\n    highlightFindOptions() {\n        this._findInput.highlightFindOptions();\n    }\n    _updateSearchScope() {\n        if (!this._codeEditor.hasModel()) {\n            return;\n        }\n        if (this._toggleSelectionFind.checked) {\n            const selections = this._codeEditor.getSelections();\n            selections.map(selection => {\n                if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n                    selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\n                }\n                const currentMatch = this._state.currentMatch;\n                if (selection.startLineNumber !== selection.endLineNumber) {\n                    if (!Range.equalsRange(selection, currentMatch)) {\n                        return selection;\n                    }\n                }\n                return null;\n            }).filter(element => !!element);\n            if (selections.length) {\n                this._state.change({ searchScope: selections }, true);\n            }\n        }\n    }\n    _onFindInputMouseDown(e) {\n        // on linux, middle key does pasting.\n        if (e.middleButton) {\n            e.stopPropagation();\n        }\n    }\n    _onFindInputKeyDown(e) {\n        if (e.equals(ctrlKeyMod | 3 /* KeyCode.Enter */)) {\n            if (this._keybindingService.dispatchEvent(e, e.target)) {\n                e.preventDefault();\n                return;\n            }\n            else {\n                this._findInput.inputBox.insertAtCursor('\\n');\n                e.preventDefault();\n                return;\n            }\n        }\n        if (e.equals(2 /* KeyCode.Tab */)) {\n            if (this._isReplaceVisible) {\n                this._replaceInput.focus();\n            }\n            else {\n                this._findInput.focusOnCaseSensitive();\n            }\n            e.preventDefault();\n            return;\n        }\n        if (e.equals(2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */)) {\n            this._codeEditor.focus();\n            e.preventDefault();\n            return;\n        }\n        if (e.equals(16 /* KeyCode.UpArrow */)) {\n            return stopPropagationForMultiLineUpwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));\n        }\n        if (e.equals(18 /* KeyCode.DownArrow */)) {\n            return stopPropagationForMultiLineDownwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));\n        }\n    }\n    _onReplaceInputKeyDown(e) {\n        if (e.equals(ctrlKeyMod | 3 /* KeyCode.Enter */)) {\n            if (this._keybindingService.dispatchEvent(e, e.target)) {\n                e.preventDefault();\n                return;\n            }\n            else {\n                if (platform.isWindows && platform.isNative && !this._ctrlEnterReplaceAllWarningPrompted) {\n                    // this is the first time when users press Ctrl + Enter to replace all\n                    this._notificationService.info(nls.localize('ctrlEnter.keybindingChanged', 'Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.'));\n                    this._ctrlEnterReplaceAllWarningPrompted = true;\n                    this._storageService.store(ctrlEnterReplaceAllWarningPromptedKey, true, 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n                }\n                this._replaceInput.inputBox.insertAtCursor('\\n');\n                e.preventDefault();\n                return;\n            }\n        }\n        if (e.equals(2 /* KeyCode.Tab */)) {\n            this._findInput.focusOnCaseSensitive();\n            e.preventDefault();\n            return;\n        }\n        if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {\n            this._findInput.focus();\n            e.preventDefault();\n            return;\n        }\n        if (e.equals(2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */)) {\n            this._codeEditor.focus();\n            e.preventDefault();\n            return;\n        }\n        if (e.equals(16 /* KeyCode.UpArrow */)) {\n            return stopPropagationForMultiLineUpwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));\n        }\n        if (e.equals(18 /* KeyCode.DownArrow */)) {\n            return stopPropagationForMultiLineDownwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));\n        }\n    }\n    // ----- sash\n    getVerticalSashLeft(_sash) {\n        return 0;\n    }\n    // ----- initialization\n    _keybindingLabelFor(actionId) {\n        const kb = this._keybindingService.lookupKeybinding(actionId);\n        if (!kb) {\n            return '';\n        }\n        return ` (${kb.getLabel()})`;\n    }\n    _buildDomNode() {\n        const flexibleHeight = true;\n        const flexibleWidth = true;\n        // Find input\n        this._findInput = this._register(new ContextScopedFindInput(null, this._contextViewProvider, {\n            width: FIND_INPUT_AREA_WIDTH,\n            label: NLS_FIND_INPUT_LABEL,\n            placeholder: NLS_FIND_INPUT_PLACEHOLDER,\n            appendCaseSensitiveLabel: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\n            appendWholeWordsLabel: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\n            appendRegexLabel: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\n            validation: (value) => {\n                if (value.length === 0 || !this._findInput.getRegex()) {\n                    return null;\n                }\n                try {\n                    // use `g` and `u` which are also used by the TextModel search\n                    new RegExp(value, 'gu');\n                    return null;\n                }\n                catch (e) {\n                    return { content: e.message };\n                }\n            },\n            flexibleHeight,\n            flexibleWidth,\n            flexibleMaxHeight: 118,\n            showCommonFindToggles: true,\n            showHistoryHint: () => showHistoryKeybindingHint(this._keybindingService),\n            inputBoxStyles: defaultInputBoxStyles,\n            toggleStyles: defaultToggleStyles\n        }, this._contextKeyService));\n        this._findInput.setRegex(!!this._state.isRegex);\n        this._findInput.setCaseSensitive(!!this._state.matchCase);\n        this._findInput.setWholeWords(!!this._state.wholeWord);\n        this._register(this._findInput.onKeyDown((e) => this._onFindInputKeyDown(e)));\n        this._register(this._findInput.inputBox.onDidChange(() => {\n            if (this._ignoreChangeEvent) {\n                return;\n            }\n            this._state.change({ searchString: this._findInput.getValue() }, true);\n        }));\n        this._register(this._findInput.onDidOptionChange(() => {\n            this._state.change({\n                isRegex: this._findInput.getRegex(),\n                wholeWord: this._findInput.getWholeWords(),\n                matchCase: this._findInput.getCaseSensitive()\n            }, true);\n        }));\n        this._register(this._findInput.onCaseSensitiveKeyDown((e) => {\n            if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {\n                if (this._isReplaceVisible) {\n                    this._replaceInput.focus();\n                    e.preventDefault();\n                }\n            }\n        }));\n        this._register(this._findInput.onRegexKeyDown((e) => {\n            if (e.equals(2 /* KeyCode.Tab */)) {\n                if (this._isReplaceVisible) {\n                    this._replaceInput.focusOnPreserve();\n                    e.preventDefault();\n                }\n            }\n        }));\n        this._register(this._findInput.inputBox.onDidHeightChange((e) => {\n            if (this._tryUpdateHeight()) {\n                this._showViewZone();\n            }\n        }));\n        if (platform.isLinux) {\n            this._register(this._findInput.onMouseDown((e) => this._onFindInputMouseDown(e)));\n        }\n        this._matchesCount = document.createElement('div');\n        this._matchesCount.className = 'matchesCount';\n        this._updateMatchesCount();\n        // Create a scoped hover delegate for all find related buttons\n        const hoverDelegate = this._register(createInstantHoverDelegate());\n        // Previous button\n        this._prevBtn = this._register(new SimpleButton({\n            label: NLS_PREVIOUS_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.PreviousMatchFindAction),\n            icon: findPreviousMatchIcon,\n            hoverDelegate,\n            onTrigger: () => {\n                assertIsDefined(this._codeEditor.getAction(FIND_IDS.PreviousMatchFindAction)).run().then(undefined, onUnexpectedError);\n            }\n        }, this._hoverService));\n        // Next button\n        this._nextBtn = this._register(new SimpleButton({\n            label: NLS_NEXT_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.NextMatchFindAction),\n            icon: findNextMatchIcon,\n            hoverDelegate,\n            onTrigger: () => {\n                assertIsDefined(this._codeEditor.getAction(FIND_IDS.NextMatchFindAction)).run().then(undefined, onUnexpectedError);\n            }\n        }, this._hoverService));\n        const findPart = document.createElement('div');\n        findPart.className = 'find-part';\n        findPart.appendChild(this._findInput.domNode);\n        const actionsContainer = document.createElement('div');\n        actionsContainer.className = 'find-actions';\n        findPart.appendChild(actionsContainer);\n        actionsContainer.appendChild(this._matchesCount);\n        actionsContainer.appendChild(this._prevBtn.domNode);\n        actionsContainer.appendChild(this._nextBtn.domNode);\n        // Toggle selection button\n        this._toggleSelectionFind = this._register(new Toggle({\n            icon: findSelectionIcon,\n            title: NLS_TOGGLE_SELECTION_FIND_TITLE + this._keybindingLabelFor(FIND_IDS.ToggleSearchScopeCommand),\n            isChecked: false,\n            hoverDelegate: hoverDelegate,\n            inputActiveOptionBackground: asCssVariable(inputActiveOptionBackground),\n            inputActiveOptionBorder: asCssVariable(inputActiveOptionBorder),\n            inputActiveOptionForeground: asCssVariable(inputActiveOptionForeground),\n        }));\n        this._register(this._toggleSelectionFind.onChange(() => {\n            if (this._toggleSelectionFind.checked) {\n                if (this._codeEditor.hasModel()) {\n                    let selections = this._codeEditor.getSelections();\n                    selections = selections.map(selection => {\n                        if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n                            selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\n                        }\n                        if (!selection.isEmpty()) {\n                            return selection;\n                        }\n                        return null;\n                    }).filter((element) => !!element);\n                    if (selections.length) {\n                        this._state.change({ searchScope: selections }, true);\n                    }\n                }\n            }\n            else {\n                this._state.change({ searchScope: null }, true);\n            }\n        }));\n        actionsContainer.appendChild(this._toggleSelectionFind.domNode);\n        // Close button\n        this._closeBtn = this._register(new SimpleButton({\n            label: NLS_CLOSE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.CloseFindWidgetCommand),\n            icon: widgetClose,\n            hoverDelegate,\n            onTrigger: () => {\n                this._state.change({ isRevealed: false, searchScope: null }, false);\n            },\n            onKeyDown: (e) => {\n                if (e.equals(2 /* KeyCode.Tab */)) {\n                    if (this._isReplaceVisible) {\n                        if (this._replaceBtn.isEnabled()) {\n                            this._replaceBtn.focus();\n                        }\n                        else {\n                            this._codeEditor.focus();\n                        }\n                        e.preventDefault();\n                    }\n                }\n            }\n        }, this._hoverService));\n        // Replace input\n        this._replaceInput = this._register(new ContextScopedReplaceInput(null, undefined, {\n            label: NLS_REPLACE_INPUT_LABEL,\n            placeholder: NLS_REPLACE_INPUT_PLACEHOLDER,\n            appendPreserveCaseLabel: this._keybindingLabelFor(FIND_IDS.TogglePreserveCaseCommand),\n            history: [],\n            flexibleHeight,\n            flexibleWidth,\n            flexibleMaxHeight: 118,\n            showHistoryHint: () => showHistoryKeybindingHint(this._keybindingService),\n            inputBoxStyles: defaultInputBoxStyles,\n            toggleStyles: defaultToggleStyles\n        }, this._contextKeyService, true));\n        this._replaceInput.setPreserveCase(!!this._state.preserveCase);\n        this._register(this._replaceInput.onKeyDown((e) => this._onReplaceInputKeyDown(e)));\n        this._register(this._replaceInput.inputBox.onDidChange(() => {\n            this._state.change({ replaceString: this._replaceInput.inputBox.value }, false);\n        }));\n        this._register(this._replaceInput.inputBox.onDidHeightChange((e) => {\n            if (this._isReplaceVisible && this._tryUpdateHeight()) {\n                this._showViewZone();\n            }\n        }));\n        this._register(this._replaceInput.onDidOptionChange(() => {\n            this._state.change({\n                preserveCase: this._replaceInput.getPreserveCase()\n            }, true);\n        }));\n        this._register(this._replaceInput.onPreserveCaseKeyDown((e) => {\n            if (e.equals(2 /* KeyCode.Tab */)) {\n                if (this._prevBtn.isEnabled()) {\n                    this._prevBtn.focus();\n                }\n                else if (this._nextBtn.isEnabled()) {\n                    this._nextBtn.focus();\n                }\n                else if (this._toggleSelectionFind.enabled) {\n                    this._toggleSelectionFind.focus();\n                }\n                else if (this._closeBtn.isEnabled()) {\n                    this._closeBtn.focus();\n                }\n                e.preventDefault();\n            }\n        }));\n        // Create scoped hover delegate for replace actions\n        const replaceHoverDelegate = this._register(createInstantHoverDelegate());\n        // Replace one button\n        this._replaceBtn = this._register(new SimpleButton({\n            label: NLS_REPLACE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceOneAction),\n            icon: findReplaceIcon,\n            hoverDelegate: replaceHoverDelegate,\n            onTrigger: () => {\n                this._controller.replace();\n            },\n            onKeyDown: (e) => {\n                if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {\n                    this._closeBtn.focus();\n                    e.preventDefault();\n                }\n            }\n        }, this._hoverService));\n        // Replace all button\n        this._replaceAllBtn = this._register(new SimpleButton({\n            label: NLS_REPLACE_ALL_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceAllAction),\n            icon: findReplaceAllIcon,\n            hoverDelegate: replaceHoverDelegate,\n            onTrigger: () => {\n                this._controller.replaceAll();\n            }\n        }, this._hoverService));\n        const replacePart = document.createElement('div');\n        replacePart.className = 'replace-part';\n        replacePart.appendChild(this._replaceInput.domNode);\n        const replaceActionsContainer = document.createElement('div');\n        replaceActionsContainer.className = 'replace-actions';\n        replacePart.appendChild(replaceActionsContainer);\n        replaceActionsContainer.appendChild(this._replaceBtn.domNode);\n        replaceActionsContainer.appendChild(this._replaceAllBtn.domNode);\n        // Toggle replace button\n        this._toggleReplaceBtn = this._register(new SimpleButton({\n            label: NLS_TOGGLE_REPLACE_MODE_BTN_LABEL,\n            className: 'codicon toggle left',\n            onTrigger: () => {\n                this._state.change({ isReplaceRevealed: !this._isReplaceVisible }, false);\n                if (this._isReplaceVisible) {\n                    this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n                    this._replaceInput.inputBox.layout();\n                }\n                this._showViewZone();\n            }\n        }, this._hoverService));\n        this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);\n        // Widget\n        this._domNode = document.createElement('div');\n        this._domNode.className = 'editor-widget find-widget';\n        this._domNode.setAttribute('aria-hidden', 'true');\n        this._domNode.ariaLabel = NLS_FIND_DIALOG_LABEL;\n        this._domNode.role = 'dialog';\n        // We need to set this explicitly, otherwise on IE11, the width inheritence of flex doesn't work.\n        this._domNode.style.width = `${FIND_WIDGET_INITIAL_WIDTH}px`;\n        this._domNode.appendChild(this._toggleReplaceBtn.domNode);\n        this._domNode.appendChild(findPart);\n        this._domNode.appendChild(this._closeBtn.domNode);\n        this._domNode.appendChild(replacePart);\n        this._resizeSash = this._register(new Sash(this._domNode, this, { orientation: 0 /* Orientation.VERTICAL */, size: 2 }));\n        this._resized = false;\n        let originalWidth = FIND_WIDGET_INITIAL_WIDTH;\n        this._register(this._resizeSash.onDidStart(() => {\n            originalWidth = dom.getTotalWidth(this._domNode);\n        }));\n        this._register(this._resizeSash.onDidChange((evt) => {\n            this._resized = true;\n            const width = originalWidth + evt.startX - evt.currentX;\n            if (width < FIND_WIDGET_INITIAL_WIDTH) {\n                // narrow down the find widget should be handled by CSS.\n                return;\n            }\n            const maxWidth = parseFloat(dom.getComputedStyle(this._domNode).maxWidth) || 0;\n            if (width > maxWidth) {\n                return;\n            }\n            this._domNode.style.width = `${width}px`;\n            if (this._isReplaceVisible) {\n                this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n            }\n            this._findInput.inputBox.layout();\n            this._tryUpdateHeight();\n        }));\n        this._register(this._resizeSash.onDidReset(() => {\n            // users double click on the sash\n            const currentWidth = dom.getTotalWidth(this._domNode);\n            if (currentWidth < FIND_WIDGET_INITIAL_WIDTH) {\n                // The editor is narrow and the width of the find widget is controlled fully by CSS.\n                return;\n            }\n            let width = FIND_WIDGET_INITIAL_WIDTH;\n            if (!this._resized || currentWidth === FIND_WIDGET_INITIAL_WIDTH) {\n                // 1. never resized before, double click should maximizes it\n                // 2. users resized it already but its width is the same as default\n                const layoutInfo = this._codeEditor.getLayoutInfo();\n                width = layoutInfo.width - 28 - layoutInfo.minimap.minimapWidth - 15;\n                this._resized = true;\n            }\n            else {\n                /**\n                 * no op, the find widget should be shrinked to its default size.\n                 */\n            }\n            this._domNode.style.width = `${width}px`;\n            if (this._isReplaceVisible) {\n                this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n            }\n            this._findInput.inputBox.layout();\n        }));\n    }\n    updateAccessibilitySupport() {\n        const value = this._codeEditor.getOption(2 /* EditorOption.accessibilitySupport */);\n        this._findInput.setFocusInputOnOptionClick(value !== 2 /* AccessibilitySupport.Enabled */);\n    }\n}\nFindWidget.ID = 'editor.contrib.findWidget';\nexport class SimpleButton extends Widget {\n    constructor(opts, hoverService) {\n        var _a;\n        super();\n        this._opts = opts;\n        let className = 'button';\n        if (this._opts.className) {\n            className = className + ' ' + this._opts.className;\n        }\n        if (this._opts.icon) {\n            className = className + ' ' + ThemeIcon.asClassName(this._opts.icon);\n        }\n        this._domNode = document.createElement('div');\n        this._domNode.tabIndex = 0;\n        this._domNode.className = className;\n        this._domNode.setAttribute('role', 'button');\n        this._domNode.setAttribute('aria-label', this._opts.label);\n        this._register(hoverService.setupUpdatableHover((_a = opts.hoverDelegate) !== null && _a !== void 0 ? _a : getDefaultHoverDelegate('element'), this._domNode, this._opts.label));\n        this.onclick(this._domNode, (e) => {\n            this._opts.onTrigger();\n            e.preventDefault();\n        });\n        this.onkeydown(this._domNode, (e) => {\n            var _a, _b;\n            if (e.equals(10 /* KeyCode.Space */) || e.equals(3 /* KeyCode.Enter */)) {\n                this._opts.onTrigger();\n                e.preventDefault();\n                return;\n            }\n            (_b = (_a = this._opts).onKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n        });\n    }\n    get domNode() {\n        return this._domNode;\n    }\n    isEnabled() {\n        return (this._domNode.tabIndex >= 0);\n    }\n    focus() {\n        this._domNode.focus();\n    }\n    setEnabled(enabled) {\n        this._domNode.classList.toggle('disabled', !enabled);\n        this._domNode.setAttribute('aria-disabled', String(!enabled));\n        this._domNode.tabIndex = enabled ? 0 : -1;\n    }\n    setExpanded(expanded) {\n        this._domNode.setAttribute('aria-expanded', String(!!expanded));\n        if (expanded) {\n            this._domNode.classList.remove(...ThemeIcon.asClassNameArray(findCollapsedIcon));\n            this._domNode.classList.add(...ThemeIcon.asClassNameArray(findExpandedIcon));\n        }\n        else {\n            this._domNode.classList.remove(...ThemeIcon.asClassNameArray(findExpandedIcon));\n            this._domNode.classList.add(...ThemeIcon.asClassNameArray(findCollapsedIcon));\n        }\n    }\n}\n// theming\nregisterThemingParticipant((theme, collector) => {\n    const findMatchHighlightBorder = theme.getColor(editorFindMatchHighlightBorder);\n    if (findMatchHighlightBorder) {\n        collector.addRule(`.monaco-editor .findMatch { border: 1px ${isHighContrast(theme.type) ? 'dotted' : 'solid'} ${findMatchHighlightBorder}; box-sizing: border-box; }`);\n    }\n    const findRangeHighlightBorder = theme.getColor(editorFindRangeHighlightBorder);\n    if (findRangeHighlightBorder) {\n        collector.addRule(`.monaco-editor .findScope { border: 1px ${isHighContrast(theme.type) ? 'dashed' : 'solid'} ${findRangeHighlightBorder}; }`);\n    }\n    const hcBorder = theme.getColor(contrastBorder);\n    if (hcBorder) {\n        collector.addRule(`.monaco-editor .find-widget { border: 1px solid ${hcBorder}; }`);\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 * as dom from '../../dom.js';\nimport { Toggle } from '../toggle/toggle.js';\nimport { HistoryInputBox } from '../inputbox/inputBox.js';\nimport { Widget } from '../widget.js';\nimport { Codicon } from '../../../common/codicons.js';\nimport { Emitter } from '../../../common/event.js';\nimport './findInput.css';\nimport * as nls from '../../../../nls.js';\nimport { getDefaultHoverDelegate } from '../hover/hoverDelegateFactory.js';\nconst NLS_DEFAULT_LABEL = nls.localize('defaultLabel', \"input\");\nconst NLS_PRESERVE_CASE_LABEL = nls.localize('label.preserveCaseToggle', \"Preserve Case\");\nclass PreserveCaseToggle extends Toggle {\n    constructor(opts) {\n        var _a;\n        super({\n            // TODO: does this need its own icon?\n            icon: Codicon.preserveCase,\n            title: NLS_PRESERVE_CASE_LABEL + opts.appendTitle,\n            isChecked: opts.isChecked,\n            hoverDelegate: (_a = opts.hoverDelegate) !== null && _a !== void 0 ? _a : getDefaultHoverDelegate('element'),\n            inputActiveOptionBorder: opts.inputActiveOptionBorder,\n            inputActiveOptionForeground: opts.inputActiveOptionForeground,\n            inputActiveOptionBackground: opts.inputActiveOptionBackground,\n        });\n    }\n}\nexport class ReplaceInput extends Widget {\n    constructor(parent, contextViewProvider, _showOptionButtons, options) {\n        super();\n        this._showOptionButtons = _showOptionButtons;\n        this.fixFocusOnOptionClickEnabled = true;\n        this.cachedOptionsWidth = 0;\n        this._onDidOptionChange = this._register(new Emitter());\n        this.onDidOptionChange = this._onDidOptionChange.event;\n        this._onKeyDown = this._register(new Emitter());\n        this.onKeyDown = this._onKeyDown.event;\n        this._onMouseDown = this._register(new Emitter());\n        this._onInput = this._register(new Emitter());\n        this._onKeyUp = this._register(new Emitter());\n        this._onPreserveCaseKeyDown = this._register(new Emitter());\n        this.onPreserveCaseKeyDown = this._onPreserveCaseKeyDown.event;\n        this.contextViewProvider = contextViewProvider;\n        this.placeholder = options.placeholder || '';\n        this.validation = options.validation;\n        this.label = options.label || NLS_DEFAULT_LABEL;\n        const appendPreserveCaseLabel = options.appendPreserveCaseLabel || '';\n        const history = options.history || [];\n        const flexibleHeight = !!options.flexibleHeight;\n        const flexibleWidth = !!options.flexibleWidth;\n        const flexibleMaxHeight = options.flexibleMaxHeight;\n        this.domNode = document.createElement('div');\n        this.domNode.classList.add('monaco-findInput');\n        this.inputBox = this._register(new HistoryInputBox(this.domNode, this.contextViewProvider, {\n            ariaLabel: this.label || '',\n            placeholder: this.placeholder || '',\n            validationOptions: {\n                validation: this.validation\n            },\n            history,\n            showHistoryHint: options.showHistoryHint,\n            flexibleHeight,\n            flexibleWidth,\n            flexibleMaxHeight,\n            inputBoxStyles: options.inputBoxStyles\n        }));\n        this.preserveCase = this._register(new PreserveCaseToggle({\n            appendTitle: appendPreserveCaseLabel,\n            isChecked: false,\n            ...options.toggleStyles\n        }));\n        this._register(this.preserveCase.onChange(viaKeyboard => {\n            this._onDidOptionChange.fire(viaKeyboard);\n            if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\n                this.inputBox.focus();\n            }\n            this.validate();\n        }));\n        this._register(this.preserveCase.onKeyDown(e => {\n            this._onPreserveCaseKeyDown.fire(e);\n        }));\n        if (this._showOptionButtons) {\n            this.cachedOptionsWidth = this.preserveCase.width();\n        }\n        else {\n            this.cachedOptionsWidth = 0;\n        }\n        // Arrow-Key support to navigate between options\n        const indexes = [this.preserveCase.domNode];\n        this.onkeydown(this.domNode, (event) => {\n            if (event.equals(15 /* KeyCode.LeftArrow */) || event.equals(17 /* KeyCode.RightArrow */) || event.equals(9 /* KeyCode.Escape */)) {\n                const index = indexes.indexOf(this.domNode.ownerDocument.activeElement);\n                if (index >= 0) {\n                    let newIndex = -1;\n                    if (event.equals(17 /* KeyCode.RightArrow */)) {\n                        newIndex = (index + 1) % indexes.length;\n                    }\n                    else if (event.equals(15 /* KeyCode.LeftArrow */)) {\n                        if (index === 0) {\n                            newIndex = indexes.length - 1;\n                        }\n                        else {\n                            newIndex = index - 1;\n                        }\n                    }\n                    if (event.equals(9 /* KeyCode.Escape */)) {\n                        indexes[index].blur();\n                        this.inputBox.focus();\n                    }\n                    else if (newIndex >= 0) {\n                        indexes[newIndex].focus();\n                    }\n                    dom.EventHelper.stop(event, true);\n                }\n            }\n        });\n        const controls = document.createElement('div');\n        controls.className = 'controls';\n        controls.style.display = this._showOptionButtons ? 'block' : 'none';\n        controls.appendChild(this.preserveCase.domNode);\n        this.domNode.appendChild(controls);\n        parent === null || parent === void 0 ? void 0 : parent.appendChild(this.domNode);\n        this.onkeydown(this.inputBox.inputElement, (e) => this._onKeyDown.fire(e));\n        this.onkeyup(this.inputBox.inputElement, (e) => this._onKeyUp.fire(e));\n        this.oninput(this.inputBox.inputElement, (e) => this._onInput.fire());\n        this.onmousedown(this.inputBox.inputElement, (e) => this._onMouseDown.fire(e));\n    }\n    enable() {\n        this.domNode.classList.remove('disabled');\n        this.inputBox.enable();\n        this.preserveCase.enable();\n    }\n    disable() {\n        this.domNode.classList.add('disabled');\n        this.inputBox.disable();\n        this.preserveCase.disable();\n    }\n    setEnabled(enabled) {\n        if (enabled) {\n            this.enable();\n        }\n        else {\n            this.disable();\n        }\n    }\n    select() {\n        this.inputBox.select();\n    }\n    focus() {\n        this.inputBox.focus();\n    }\n    getPreserveCase() {\n        return this.preserveCase.checked;\n    }\n    setPreserveCase(value) {\n        this.preserveCase.checked = value;\n    }\n    focusOnPreserve() {\n        this.preserveCase.focus();\n    }\n    validate() {\n        var _a;\n        (_a = this.inputBox) === null || _a === void 0 ? void 0 : _a.validate();\n    }\n    set width(newWidth) {\n        this.inputBox.paddingRight = this.cachedOptionsWidth;\n        this.domNode.style.width = newWidth + 'px';\n    }\n    dispose() {\n        super.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 { FindInput } from '../../../base/browser/ui/findinput/findInput.js';\nimport { ReplaceInput } from '../../../base/browser/ui/findinput/replaceInput.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { KeybindingsRegistry } from '../../keybinding/common/keybindingsRegistry.js';\nimport { localize } from '../../../nls.js';\nimport { DisposableStore, toDisposable } from '../../../base/common/lifecycle.js';\nimport { isActiveElement } from '../../../base/browser/dom.js';\nexport const historyNavigationVisible = new RawContextKey('suggestWidgetVisible', false, localize('suggestWidgetVisible', \"Whether suggestion are visible\"));\nconst HistoryNavigationWidgetFocusContext = 'historyNavigationWidgetFocus';\nconst HistoryNavigationForwardsEnablementContext = 'historyNavigationForwardsEnabled';\nconst HistoryNavigationBackwardsEnablementContext = 'historyNavigationBackwardsEnabled';\nlet lastFocusedWidget = undefined;\nconst widgets = [];\nexport function registerAndCreateHistoryNavigationContext(scopedContextKeyService, widget) {\n    if (widgets.includes(widget)) {\n        throw new Error('Cannot register the same widget multiple times');\n    }\n    widgets.push(widget);\n    const disposableStore = new DisposableStore();\n    const historyNavigationWidgetFocus = new RawContextKey(HistoryNavigationWidgetFocusContext, false).bindTo(scopedContextKeyService);\n    const historyNavigationForwardsEnablement = new RawContextKey(HistoryNavigationForwardsEnablementContext, true).bindTo(scopedContextKeyService);\n    const historyNavigationBackwardsEnablement = new RawContextKey(HistoryNavigationBackwardsEnablementContext, true).bindTo(scopedContextKeyService);\n    const onDidFocus = () => {\n        historyNavigationWidgetFocus.set(true);\n        lastFocusedWidget = widget;\n    };\n    const onDidBlur = () => {\n        historyNavigationWidgetFocus.set(false);\n        if (lastFocusedWidget === widget) {\n            lastFocusedWidget = undefined;\n        }\n    };\n    // Check for currently being focused\n    if (isActiveElement(widget.element)) {\n        onDidFocus();\n    }\n    disposableStore.add(widget.onDidFocus(() => onDidFocus()));\n    disposableStore.add(widget.onDidBlur(() => onDidBlur()));\n    disposableStore.add(toDisposable(() => {\n        widgets.splice(widgets.indexOf(widget), 1);\n        onDidBlur();\n    }));\n    return {\n        historyNavigationForwardsEnablement,\n        historyNavigationBackwardsEnablement,\n        dispose() {\n            disposableStore.dispose();\n        }\n    };\n}\nlet ContextScopedFindInput = class ContextScopedFindInput extends FindInput {\n    constructor(container, contextViewProvider, options, contextKeyService) {\n        super(container, contextViewProvider, options);\n        const scopedContextKeyService = this._register(contextKeyService.createScoped(this.inputBox.element));\n        this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this.inputBox));\n    }\n};\nContextScopedFindInput = __decorate([\n    __param(3, IContextKeyService)\n], ContextScopedFindInput);\nexport { ContextScopedFindInput };\nlet ContextScopedReplaceInput = class ContextScopedReplaceInput extends ReplaceInput {\n    constructor(container, contextViewProvider, options, contextKeyService, showReplaceOptions = false) {\n        super(container, contextViewProvider, showReplaceOptions, options);\n        const scopedContextKeyService = this._register(contextKeyService.createScoped(this.inputBox.element));\n        this._register(registerAndCreateHistoryNavigationContext(scopedContextKeyService, this.inputBox));\n    }\n};\nContextScopedReplaceInput = __decorate([\n    __param(3, IContextKeyService)\n], ContextScopedReplaceInput);\nexport { ContextScopedReplaceInput };\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n    id: 'history.showPrevious',\n    weight: 200 /* KeybindingWeight.WorkbenchContrib */,\n    when: ContextKeyExpr.and(ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), ContextKeyExpr.equals(HistoryNavigationBackwardsEnablementContext, true), ContextKeyExpr.not('isComposing'), historyNavigationVisible.isEqualTo(false)),\n    primary: 16 /* KeyCode.UpArrow */,\n    secondary: [512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */],\n    handler: (accessor) => {\n        lastFocusedWidget === null || lastFocusedWidget === void 0 ? void 0 : lastFocusedWidget.showPreviousValue();\n    }\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n    id: 'history.showNext',\n    weight: 200 /* KeybindingWeight.WorkbenchContrib */,\n    when: ContextKeyExpr.and(ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), ContextKeyExpr.equals(HistoryNavigationForwardsEnablementContext, true), ContextKeyExpr.not('isComposing'), historyNavigationVisible.isEqualTo(false)),\n    primary: 18 /* KeyCode.DownArrow */,\n    secondary: [512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */],\n    handler: (accessor) => {\n        lastFocusedWidget === null || lastFocusedWidget === void 0 ? void 0 : lastFocusedWidget.showNextValue();\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 *--------------------------------------------------------------------------------------------*/\nexport function showHistoryKeybindingHint(keybindingService) {\n    var _a, _b;\n    return ((_a = keybindingService.lookupKeybinding('history.showPrevious')) === null || _a === void 0 ? void 0 : _a.getElectronAccelerator()) === 'Up' && ((_b = keybindingService.lookupKeybinding('history.showNext')) === null || _b === void 0 ? void 0 : _b.getElectronAccelerator()) === 'Down';\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 FoldingController_1;\nimport { createCancelablePromise, Delayer, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { illegalArgument, onUnexpectedError } from '../../../../base/common/errors.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { escapeRegExpCharacters } from '../../../../base/common/strings.js';\nimport * as types from '../../../../base/common/types.js';\nimport './folding.css';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution, registerInstantiatedEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { FoldingRangeKind } from '../../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { FoldingModel, getNextFoldLine, getParentFoldLine as getParentFoldLine, getPreviousFoldLine, setCollapseStateAtLevel, setCollapseStateForMatchingLines, setCollapseStateForRest, setCollapseStateForType, setCollapseStateLevelsDown, setCollapseStateLevelsUp, setCollapseStateUp, toggleCollapseState } from './foldingModel.js';\nimport { HiddenRangeModel } from './hiddenRangeModel.js';\nimport { IndentRangeProvider } from './indentRangeProvider.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { FoldingDecorationProvider } from './foldingDecorations.js';\nimport { FoldingRegions } from './foldingRanges.js';\nimport { SyntaxRangeProvider } from './syntaxRangeProvider.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nconst CONTEXT_FOLDING_ENABLED = new RawContextKey('foldingEnabled', false);\nlet FoldingController = FoldingController_1 = class FoldingController extends Disposable {\n    static get(editor) {\n        return editor.getContribution(FoldingController_1.ID);\n    }\n    static getFoldingRangeProviders(languageFeaturesService, model) {\n        var _a, _b;\n        const foldingRangeProviders = languageFeaturesService.foldingRangeProvider.ordered(model);\n        return (_b = ((_a = FoldingController_1._foldingRangeSelector) === null || _a === void 0 ? void 0 : _a.call(FoldingController_1, foldingRangeProviders, model))) !== null && _b !== void 0 ? _b : foldingRangeProviders;\n    }\n    constructor(editor, contextKeyService, languageConfigurationService, notificationService, languageFeatureDebounceService, languageFeaturesService) {\n        super();\n        this.contextKeyService = contextKeyService;\n        this.languageConfigurationService = languageConfigurationService;\n        this.languageFeaturesService = languageFeaturesService;\n        this.localToDispose = this._register(new DisposableStore());\n        this.editor = editor;\n        this._foldingLimitReporter = new RangesLimitReporter(editor);\n        const options = this.editor.getOptions();\n        this._isEnabled = options.get(43 /* EditorOption.folding */);\n        this._useFoldingProviders = options.get(44 /* EditorOption.foldingStrategy */) !== 'indentation';\n        this._unfoldOnClickAfterEndOfLine = options.get(48 /* EditorOption.unfoldOnClickAfterEndOfLine */);\n        this._restoringViewState = false;\n        this._currentModelHasFoldedImports = false;\n        this._foldingImportsByDefault = options.get(46 /* EditorOption.foldingImportsByDefault */);\n        this.updateDebounceInfo = languageFeatureDebounceService.for(languageFeaturesService.foldingRangeProvider, 'Folding', { min: 200 });\n        this.foldingModel = null;\n        this.hiddenRangeModel = null;\n        this.rangeProvider = null;\n        this.foldingRegionPromise = null;\n        this.foldingModelPromise = null;\n        this.updateScheduler = null;\n        this.cursorChangedScheduler = null;\n        this.mouseDownInfo = null;\n        this.foldingDecorationProvider = new FoldingDecorationProvider(editor);\n        this.foldingDecorationProvider.showFoldingControls = options.get(110 /* EditorOption.showFoldingControls */);\n        this.foldingDecorationProvider.showFoldingHighlights = options.get(45 /* EditorOption.foldingHighlight */);\n        this.foldingEnabled = CONTEXT_FOLDING_ENABLED.bindTo(this.contextKeyService);\n        this.foldingEnabled.set(this._isEnabled);\n        this._register(this.editor.onDidChangeModel(() => this.onModelChanged()));\n        this._register(this.editor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(43 /* EditorOption.folding */)) {\n                this._isEnabled = this.editor.getOptions().get(43 /* EditorOption.folding */);\n                this.foldingEnabled.set(this._isEnabled);\n                this.onModelChanged();\n            }\n            if (e.hasChanged(47 /* EditorOption.foldingMaximumRegions */)) {\n                this.onModelChanged();\n            }\n            if (e.hasChanged(110 /* EditorOption.showFoldingControls */) || e.hasChanged(45 /* EditorOption.foldingHighlight */)) {\n                const options = this.editor.getOptions();\n                this.foldingDecorationProvider.showFoldingControls = options.get(110 /* EditorOption.showFoldingControls */);\n                this.foldingDecorationProvider.showFoldingHighlights = options.get(45 /* EditorOption.foldingHighlight */);\n                this.triggerFoldingModelChanged();\n            }\n            if (e.hasChanged(44 /* EditorOption.foldingStrategy */)) {\n                this._useFoldingProviders = this.editor.getOptions().get(44 /* EditorOption.foldingStrategy */) !== 'indentation';\n                this.onFoldingStrategyChanged();\n            }\n            if (e.hasChanged(48 /* EditorOption.unfoldOnClickAfterEndOfLine */)) {\n                this._unfoldOnClickAfterEndOfLine = this.editor.getOptions().get(48 /* EditorOption.unfoldOnClickAfterEndOfLine */);\n            }\n            if (e.hasChanged(46 /* EditorOption.foldingImportsByDefault */)) {\n                this._foldingImportsByDefault = this.editor.getOptions().get(46 /* EditorOption.foldingImportsByDefault */);\n            }\n        }));\n        this.onModelChanged();\n    }\n    /**\n     * Store view state.\n     */\n    saveViewState() {\n        const model = this.editor.getModel();\n        if (!model || !this._isEnabled || model.isTooLargeForTokenization()) {\n            return {};\n        }\n        if (this.foldingModel) { // disposed ?\n            const collapsedRegions = this.foldingModel.getMemento();\n            const provider = this.rangeProvider ? this.rangeProvider.id : undefined;\n            return { collapsedRegions, lineCount: model.getLineCount(), provider, foldedImports: this._currentModelHasFoldedImports };\n        }\n        return undefined;\n    }\n    /**\n     * Restore view state.\n     */\n    restoreViewState(state) {\n        const model = this.editor.getModel();\n        if (!model || !this._isEnabled || model.isTooLargeForTokenization() || !this.hiddenRangeModel) {\n            return;\n        }\n        if (!state) {\n            return;\n        }\n        this._currentModelHasFoldedImports = !!state.foldedImports;\n        if (state.collapsedRegions && state.collapsedRegions.length > 0 && this.foldingModel) {\n            this._restoringViewState = true;\n            try {\n                this.foldingModel.applyMemento(state.collapsedRegions);\n            }\n            finally {\n                this._restoringViewState = false;\n            }\n        }\n    }\n    onModelChanged() {\n        this.localToDispose.clear();\n        const model = this.editor.getModel();\n        if (!this._isEnabled || !model || model.isTooLargeForTokenization()) {\n            // huge files get no view model, so they cannot support hidden areas\n            return;\n        }\n        this._currentModelHasFoldedImports = false;\n        this.foldingModel = new FoldingModel(model, this.foldingDecorationProvider);\n        this.localToDispose.add(this.foldingModel);\n        this.hiddenRangeModel = new HiddenRangeModel(this.foldingModel);\n        this.localToDispose.add(this.hiddenRangeModel);\n        this.localToDispose.add(this.hiddenRangeModel.onDidChange(hr => this.onHiddenRangesChanges(hr)));\n        this.updateScheduler = new Delayer(this.updateDebounceInfo.get(model));\n        this.cursorChangedScheduler = new RunOnceScheduler(() => this.revealCursor(), 200);\n        this.localToDispose.add(this.cursorChangedScheduler);\n        this.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange(() => this.onFoldingStrategyChanged()));\n        this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(() => this.onFoldingStrategyChanged())); // covers model language changes as well\n        this.localToDispose.add(this.editor.onDidChangeModelContent(e => this.onDidChangeModelContent(e)));\n        this.localToDispose.add(this.editor.onDidChangeCursorPosition(() => this.onCursorPositionChanged()));\n        this.localToDispose.add(this.editor.onMouseDown(e => this.onEditorMouseDown(e)));\n        this.localToDispose.add(this.editor.onMouseUp(e => this.onEditorMouseUp(e)));\n        this.localToDispose.add({\n            dispose: () => {\n                var _a, _b;\n                if (this.foldingRegionPromise) {\n                    this.foldingRegionPromise.cancel();\n                    this.foldingRegionPromise = null;\n                }\n                (_a = this.updateScheduler) === null || _a === void 0 ? void 0 : _a.cancel();\n                this.updateScheduler = null;\n                this.foldingModel = null;\n                this.foldingModelPromise = null;\n                this.hiddenRangeModel = null;\n                this.cursorChangedScheduler = null;\n                (_b = this.rangeProvider) === null || _b === void 0 ? void 0 : _b.dispose();\n                this.rangeProvider = null;\n            }\n        });\n        this.triggerFoldingModelChanged();\n    }\n    onFoldingStrategyChanged() {\n        var _a;\n        (_a = this.rangeProvider) === null || _a === void 0 ? void 0 : _a.dispose();\n        this.rangeProvider = null;\n        this.triggerFoldingModelChanged();\n    }\n    getRangeProvider(editorModel) {\n        if (this.rangeProvider) {\n            return this.rangeProvider;\n        }\n        const indentRangeProvider = new IndentRangeProvider(editorModel, this.languageConfigurationService, this._foldingLimitReporter);\n        this.rangeProvider = indentRangeProvider; // fallback\n        if (this._useFoldingProviders && this.foldingModel) {\n            const selectedProviders = FoldingController_1.getFoldingRangeProviders(this.languageFeaturesService, editorModel);\n            if (selectedProviders.length > 0) {\n                this.rangeProvider = new SyntaxRangeProvider(editorModel, selectedProviders, () => this.triggerFoldingModelChanged(), this._foldingLimitReporter, indentRangeProvider);\n            }\n        }\n        return this.rangeProvider;\n    }\n    getFoldingModel() {\n        return this.foldingModelPromise;\n    }\n    onDidChangeModelContent(e) {\n        var _a;\n        (_a = this.hiddenRangeModel) === null || _a === void 0 ? void 0 : _a.notifyChangeModelContent(e);\n        this.triggerFoldingModelChanged();\n    }\n    triggerFoldingModelChanged() {\n        if (this.updateScheduler) {\n            if (this.foldingRegionPromise) {\n                this.foldingRegionPromise.cancel();\n                this.foldingRegionPromise = null;\n            }\n            this.foldingModelPromise = this.updateScheduler.trigger(() => {\n                const foldingModel = this.foldingModel;\n                if (!foldingModel) { // null if editor has been disposed, or folding turned off\n                    return null;\n                }\n                const sw = new StopWatch();\n                const provider = this.getRangeProvider(foldingModel.textModel);\n                const foldingRegionPromise = this.foldingRegionPromise = createCancelablePromise(token => provider.compute(token));\n                return foldingRegionPromise.then(foldingRanges => {\n                    if (foldingRanges && foldingRegionPromise === this.foldingRegionPromise) { // new request or cancelled in the meantime?\n                        let scrollState;\n                        if (this._foldingImportsByDefault && !this._currentModelHasFoldedImports) {\n                            const hasChanges = foldingRanges.setCollapsedAllOfType(FoldingRangeKind.Imports.value, true);\n                            if (hasChanges) {\n                                scrollState = StableEditorScrollState.capture(this.editor);\n                                this._currentModelHasFoldedImports = hasChanges;\n                            }\n                        }\n                        // some cursors might have moved into hidden regions, make sure they are in expanded regions\n                        const selections = this.editor.getSelections();\n                        const selectionLineNumbers = selections ? selections.map(s => s.startLineNumber) : [];\n                        foldingModel.update(foldingRanges, selectionLineNumbers);\n                        scrollState === null || scrollState === void 0 ? void 0 : scrollState.restore(this.editor);\n                        // update debounce info\n                        const newValue = this.updateDebounceInfo.update(foldingModel.textModel, sw.elapsed());\n                        if (this.updateScheduler) {\n                            this.updateScheduler.defaultDelay = newValue;\n                        }\n                    }\n                    return foldingModel;\n                });\n            }).then(undefined, (err) => {\n                onUnexpectedError(err);\n                return null;\n            });\n        }\n    }\n    onHiddenRangesChanges(hiddenRanges) {\n        if (this.hiddenRangeModel && hiddenRanges.length && !this._restoringViewState) {\n            const selections = this.editor.getSelections();\n            if (selections) {\n                if (this.hiddenRangeModel.adjustSelections(selections)) {\n                    this.editor.setSelections(selections);\n                }\n            }\n        }\n        this.editor.setHiddenAreas(hiddenRanges, this);\n    }\n    onCursorPositionChanged() {\n        if (this.hiddenRangeModel && this.hiddenRangeModel.hasRanges()) {\n            this.cursorChangedScheduler.schedule();\n        }\n    }\n    revealCursor() {\n        const foldingModel = this.getFoldingModel();\n        if (!foldingModel) {\n            return;\n        }\n        foldingModel.then(foldingModel => {\n            if (foldingModel) {\n                const selections = this.editor.getSelections();\n                if (selections && selections.length > 0) {\n                    const toToggle = [];\n                    for (const selection of selections) {\n                        const lineNumber = selection.selectionStartLineNumber;\n                        if (this.hiddenRangeModel && this.hiddenRangeModel.isHidden(lineNumber)) {\n                            toToggle.push(...foldingModel.getAllRegionsAtLine(lineNumber, r => r.isCollapsed && lineNumber > r.startLineNumber));\n                        }\n                    }\n                    if (toToggle.length) {\n                        foldingModel.toggleCollapseState(toToggle);\n                        this.reveal(selections[0].getPosition());\n                    }\n                }\n            }\n        }).then(undefined, onUnexpectedError);\n    }\n    onEditorMouseDown(e) {\n        this.mouseDownInfo = null;\n        if (!this.hiddenRangeModel || !e.target || !e.target.range) {\n            return;\n        }\n        if (!e.event.leftButton && !e.event.middleButton) {\n            return;\n        }\n        const range = e.target.range;\n        let iconClicked = false;\n        switch (e.target.type) {\n            case 4 /* MouseTargetType.GUTTER_LINE_DECORATIONS */: {\n                const data = e.target.detail;\n                const offsetLeftInGutter = e.target.element.offsetLeft;\n                const gutterOffsetX = data.offsetX - offsetLeftInGutter;\n                // const gutterOffsetX = data.offsetX - data.glyphMarginWidth - data.lineNumbersWidth - data.glyphMarginLeft;\n                // TODO@joao TODO@alex TODO@martin this is such that we don't collide with dirty diff\n                if (gutterOffsetX < 4) { // the whitespace between the border and the real folding icon border is 4px\n                    return;\n                }\n                iconClicked = true;\n                break;\n            }\n            case 7 /* MouseTargetType.CONTENT_EMPTY */: {\n                if (this._unfoldOnClickAfterEndOfLine && this.hiddenRangeModel.hasRanges()) {\n                    const data = e.target.detail;\n                    if (!data.isAfterLines) {\n                        break;\n                    }\n                }\n                return;\n            }\n            case 6 /* MouseTargetType.CONTENT_TEXT */: {\n                if (this.hiddenRangeModel.hasRanges()) {\n                    const model = this.editor.getModel();\n                    if (model && range.startColumn === model.getLineMaxColumn(range.startLineNumber)) {\n                        break;\n                    }\n                }\n                return;\n            }\n            default:\n                return;\n        }\n        this.mouseDownInfo = { lineNumber: range.startLineNumber, iconClicked };\n    }\n    onEditorMouseUp(e) {\n        const foldingModel = this.foldingModel;\n        if (!foldingModel || !this.mouseDownInfo || !e.target) {\n            return;\n        }\n        const lineNumber = this.mouseDownInfo.lineNumber;\n        const iconClicked = this.mouseDownInfo.iconClicked;\n        const range = e.target.range;\n        if (!range || range.startLineNumber !== lineNumber) {\n            return;\n        }\n        if (iconClicked) {\n            if (e.target.type !== 4 /* MouseTargetType.GUTTER_LINE_DECORATIONS */) {\n                return;\n            }\n        }\n        else {\n            const model = this.editor.getModel();\n            if (!model || range.startColumn !== model.getLineMaxColumn(lineNumber)) {\n                return;\n            }\n        }\n        const region = foldingModel.getRegionAtLine(lineNumber);\n        if (region && region.startLineNumber === lineNumber) {\n            const isCollapsed = region.isCollapsed;\n            if (iconClicked || isCollapsed) {\n                const surrounding = e.event.altKey;\n                let toToggle = [];\n                if (surrounding) {\n                    const filter = (otherRegion) => !otherRegion.containedBy(region) && !region.containedBy(otherRegion);\n                    const toMaybeToggle = foldingModel.getRegionsInside(null, filter);\n                    for (const r of toMaybeToggle) {\n                        if (r.isCollapsed) {\n                            toToggle.push(r);\n                        }\n                    }\n                    // if any surrounding regions are folded, unfold those. Otherwise, fold all surrounding\n                    if (toToggle.length === 0) {\n                        toToggle = toMaybeToggle;\n                    }\n                }\n                else {\n                    const recursive = e.event.middleButton || e.event.shiftKey;\n                    if (recursive) {\n                        for (const r of foldingModel.getRegionsInside(region)) {\n                            if (r.isCollapsed === isCollapsed) {\n                                toToggle.push(r);\n                            }\n                        }\n                    }\n                    // when recursive, first only collapse all children. If all are already folded or there are no children, also fold parent.\n                    if (isCollapsed || !recursive || toToggle.length === 0) {\n                        toToggle.push(region);\n                    }\n                }\n                foldingModel.toggleCollapseState(toToggle);\n                this.reveal({ lineNumber, column: 1 });\n            }\n        }\n    }\n    reveal(position) {\n        this.editor.revealPositionInCenterIfOutsideViewport(position, 0 /* ScrollType.Smooth */);\n    }\n};\nFoldingController.ID = 'editor.contrib.folding';\nFoldingController = FoldingController_1 = __decorate([\n    __param(1, IContextKeyService),\n    __param(2, ILanguageConfigurationService),\n    __param(3, INotificationService),\n    __param(4, ILanguageFeatureDebounceService),\n    __param(5, ILanguageFeaturesService)\n], FoldingController);\nexport { FoldingController };\nexport class RangesLimitReporter {\n    constructor(editor) {\n        this.editor = editor;\n        this._onDidChange = new Emitter();\n        this._computed = 0;\n        this._limited = false;\n    }\n    get limit() {\n        return this.editor.getOptions().get(47 /* EditorOption.foldingMaximumRegions */);\n    }\n    update(computed, limited) {\n        if (computed !== this._computed || limited !== this._limited) {\n            this._computed = computed;\n            this._limited = limited;\n            this._onDidChange.fire();\n        }\n    }\n}\nclass FoldingAction extends EditorAction {\n    runEditorCommand(accessor, editor, args) {\n        const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n        const foldingController = FoldingController.get(editor);\n        if (!foldingController) {\n            return;\n        }\n        const foldingModelPromise = foldingController.getFoldingModel();\n        if (foldingModelPromise) {\n            this.reportTelemetry(accessor, editor);\n            return foldingModelPromise.then(foldingModel => {\n                if (foldingModel) {\n                    this.invoke(foldingController, foldingModel, editor, args, languageConfigurationService);\n                    const selection = editor.getSelection();\n                    if (selection) {\n                        foldingController.reveal(selection.getStartPosition());\n                    }\n                }\n            });\n        }\n    }\n    getSelectedLines(editor) {\n        const selections = editor.getSelections();\n        return selections ? selections.map(s => s.startLineNumber) : [];\n    }\n    getLineNumbers(args, editor) {\n        if (args && args.selectionLines) {\n            return args.selectionLines.map(l => l + 1); // to 0-bases line numbers\n        }\n        return this.getSelectedLines(editor);\n    }\n    run(_accessor, _editor) {\n    }\n}\nfunction foldingArgumentsConstraint(args) {\n    if (!types.isUndefined(args)) {\n        if (!types.isObject(args)) {\n            return false;\n        }\n        const foldingArgs = args;\n        if (!types.isUndefined(foldingArgs.levels) && !types.isNumber(foldingArgs.levels)) {\n            return false;\n        }\n        if (!types.isUndefined(foldingArgs.direction) && !types.isString(foldingArgs.direction)) {\n            return false;\n        }\n        if (!types.isUndefined(foldingArgs.selectionLines) && (!Array.isArray(foldingArgs.selectionLines) || !foldingArgs.selectionLines.every(types.isNumber))) {\n            return false;\n        }\n    }\n    return true;\n}\nclass UnfoldAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.unfold',\n            label: nls.localize('unfoldAction.label', \"Unfold\"),\n            alias: 'Unfold',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 94 /* KeyCode.BracketRight */,\n                mac: {\n                    primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 94 /* KeyCode.BracketRight */\n                },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: 'Unfold the content in the editor',\n                args: [\n                    {\n                        name: 'Unfold editor argument',\n                        description: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t* 'levels': Number of levels to unfold. If not set, defaults to 1.\n\t\t\t\t\t\t* 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t`,\n                        constraint: foldingArgumentsConstraint,\n                        schema: {\n                            'type': 'object',\n                            'properties': {\n                                'levels': {\n                                    'type': 'number',\n                                    'default': 1\n                                },\n                                'direction': {\n                                    'type': 'string',\n                                    'enum': ['up', 'down'],\n                                    'default': 'down'\n                                },\n                                'selectionLines': {\n                                    'type': 'array',\n                                    'items': {\n                                        'type': 'number'\n                                    }\n                                }\n                            }\n                        }\n                    }\n                ]\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor, args) {\n        const levels = args && args.levels || 1;\n        const lineNumbers = this.getLineNumbers(args, editor);\n        if (args && args.direction === 'up') {\n            setCollapseStateLevelsUp(foldingModel, false, levels, lineNumbers);\n        }\n        else {\n            setCollapseStateLevelsDown(foldingModel, false, levels, lineNumbers);\n        }\n    }\n}\nclass UnFoldRecursivelyAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.unfoldRecursively',\n            label: nls.localize('unFoldRecursivelyAction.label', \"Unfold Recursively\"),\n            alias: 'Unfold Recursively',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 94 /* KeyCode.BracketRight */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor, _args) {\n        setCollapseStateLevelsDown(foldingModel, false, Number.MAX_VALUE, this.getSelectedLines(editor));\n    }\n}\nclass FoldAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.fold',\n            label: nls.localize('foldAction.label', \"Fold\"),\n            alias: 'Fold',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 92 /* KeyCode.BracketLeft */,\n                mac: {\n                    primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 92 /* KeyCode.BracketLeft */\n                },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: 'Fold the content in the editor',\n                args: [\n                    {\n                        name: 'Fold editor argument',\n                        description: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t\t* 'levels': Number of levels to fold.\n\t\t\t\t\t\t\t* 'direction': If 'up', folds given number of levels up otherwise folds down.\n\t\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t\tIf no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\t\t\t\t\t\t`,\n                        constraint: foldingArgumentsConstraint,\n                        schema: {\n                            'type': 'object',\n                            'properties': {\n                                'levels': {\n                                    'type': 'number',\n                                },\n                                'direction': {\n                                    'type': 'string',\n                                    'enum': ['up', 'down'],\n                                },\n                                'selectionLines': {\n                                    'type': 'array',\n                                    'items': {\n                                        'type': 'number'\n                                    }\n                                }\n                            }\n                        }\n                    }\n                ]\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor, args) {\n        const lineNumbers = this.getLineNumbers(args, editor);\n        const levels = args && args.levels;\n        const direction = args && args.direction;\n        if (typeof levels !== 'number' && typeof direction !== 'string') {\n            // fold the region at the location or if already collapsed, the first uncollapsed parent instead.\n            setCollapseStateUp(foldingModel, true, lineNumbers);\n        }\n        else {\n            if (direction === 'up') {\n                setCollapseStateLevelsUp(foldingModel, true, levels || 1, lineNumbers);\n            }\n            else {\n                setCollapseStateLevelsDown(foldingModel, true, levels || 1, lineNumbers);\n            }\n        }\n    }\n}\nclass ToggleFoldAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.toggleFold',\n            label: nls.localize('toggleFoldAction.label', \"Toggle Fold\"),\n            alias: 'Toggle Fold',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 42 /* KeyCode.KeyL */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor) {\n        const selectedLines = this.getSelectedLines(editor);\n        toggleCollapseState(foldingModel, 1, selectedLines);\n    }\n}\nclass FoldRecursivelyAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.foldRecursively',\n            label: nls.localize('foldRecursivelyAction.label', \"Fold Recursively\"),\n            alias: 'Fold Recursively',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 92 /* KeyCode.BracketLeft */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor) {\n        const selectedLines = this.getSelectedLines(editor);\n        setCollapseStateLevelsDown(foldingModel, true, Number.MAX_VALUE, selectedLines);\n    }\n}\nclass FoldAllBlockCommentsAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.foldAllBlockComments',\n            label: nls.localize('foldAllBlockComments.label', \"Fold All Block Comments\"),\n            alias: 'Fold All Block Comments',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 90 /* KeyCode.Slash */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor, args, languageConfigurationService) {\n        if (foldingModel.regions.hasTypes()) {\n            setCollapseStateForType(foldingModel, FoldingRangeKind.Comment.value, true);\n        }\n        else {\n            const editorModel = editor.getModel();\n            if (!editorModel) {\n                return;\n            }\n            const comments = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).comments;\n            if (comments && comments.blockCommentStartToken) {\n                const regExp = new RegExp('^\\\\s*' + escapeRegExpCharacters(comments.blockCommentStartToken));\n                setCollapseStateForMatchingLines(foldingModel, regExp, true);\n            }\n        }\n    }\n}\nclass FoldAllRegionsAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.foldAllMarkerRegions',\n            label: nls.localize('foldAllMarkerRegions.label', \"Fold All Regions\"),\n            alias: 'Fold All Regions',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 29 /* KeyCode.Digit8 */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor, args, languageConfigurationService) {\n        if (foldingModel.regions.hasTypes()) {\n            setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, true);\n        }\n        else {\n            const editorModel = editor.getModel();\n            if (!editorModel) {\n                return;\n            }\n            const foldingRules = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).foldingRules;\n            if (foldingRules && foldingRules.markers && foldingRules.markers.start) {\n                const regExp = new RegExp(foldingRules.markers.start);\n                setCollapseStateForMatchingLines(foldingModel, regExp, true);\n            }\n        }\n    }\n}\nclass UnfoldAllRegionsAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.unfoldAllMarkerRegions',\n            label: nls.localize('unfoldAllMarkerRegions.label', \"Unfold All Regions\"),\n            alias: 'Unfold All Regions',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 30 /* KeyCode.Digit9 */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor, args, languageConfigurationService) {\n        if (foldingModel.regions.hasTypes()) {\n            setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, false);\n        }\n        else {\n            const editorModel = editor.getModel();\n            if (!editorModel) {\n                return;\n            }\n            const foldingRules = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).foldingRules;\n            if (foldingRules && foldingRules.markers && foldingRules.markers.start) {\n                const regExp = new RegExp(foldingRules.markers.start);\n                setCollapseStateForMatchingLines(foldingModel, regExp, false);\n            }\n        }\n    }\n}\nclass FoldAllExceptAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.foldAllExcept',\n            label: nls.localize('foldAllExcept.label', \"Fold All Except Selected\"),\n            alias: 'Fold All Except Selected',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 88 /* KeyCode.Minus */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor) {\n        const selectedLines = this.getSelectedLines(editor);\n        setCollapseStateForRest(foldingModel, true, selectedLines);\n    }\n}\nclass UnfoldAllExceptAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.unfoldAllExcept',\n            label: nls.localize('unfoldAllExcept.label', \"Unfold All Except Selected\"),\n            alias: 'Unfold All Except Selected',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 86 /* KeyCode.Equal */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor) {\n        const selectedLines = this.getSelectedLines(editor);\n        setCollapseStateForRest(foldingModel, false, selectedLines);\n    }\n}\nclass FoldAllAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.foldAll',\n            label: nls.localize('foldAllAction.label', \"Fold All\"),\n            alias: 'Fold All',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 21 /* KeyCode.Digit0 */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, _editor) {\n        setCollapseStateLevelsDown(foldingModel, true);\n    }\n}\nclass UnfoldAllAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.unfoldAll',\n            label: nls.localize('unfoldAllAction.label', \"Unfold All\"),\n            alias: 'Unfold All',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 40 /* KeyCode.KeyJ */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, _editor) {\n        setCollapseStateLevelsDown(foldingModel, false);\n    }\n}\nclass FoldLevelAction extends FoldingAction {\n    getFoldingLevel() {\n        return parseInt(this.id.substr(FoldLevelAction.ID_PREFIX.length));\n    }\n    invoke(_foldingController, foldingModel, editor) {\n        setCollapseStateAtLevel(foldingModel, this.getFoldingLevel(), true, this.getSelectedLines(editor));\n    }\n}\nFoldLevelAction.ID_PREFIX = 'editor.foldLevel';\nFoldLevelAction.ID = (level) => FoldLevelAction.ID_PREFIX + level;\n/** Action to go to the parent fold of current line */\nclass GotoParentFoldAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.gotoParentFold',\n            label: nls.localize('gotoParentFold.label', \"Go to Parent Fold\"),\n            alias: 'Go to Parent Fold',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor) {\n        const selectedLines = this.getSelectedLines(editor);\n        if (selectedLines.length > 0) {\n            const startLineNumber = getParentFoldLine(selectedLines[0], foldingModel);\n            if (startLineNumber !== null) {\n                editor.setSelection({\n                    startLineNumber: startLineNumber,\n                    startColumn: 1,\n                    endLineNumber: startLineNumber,\n                    endColumn: 1\n                });\n            }\n        }\n    }\n}\n/** Action to go to the previous fold of current line */\nclass GotoPreviousFoldAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.gotoPreviousFold',\n            label: nls.localize('gotoPreviousFold.label', \"Go to Previous Folding Range\"),\n            alias: 'Go to Previous Folding Range',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor) {\n        const selectedLines = this.getSelectedLines(editor);\n        if (selectedLines.length > 0) {\n            const startLineNumber = getPreviousFoldLine(selectedLines[0], foldingModel);\n            if (startLineNumber !== null) {\n                editor.setSelection({\n                    startLineNumber: startLineNumber,\n                    startColumn: 1,\n                    endLineNumber: startLineNumber,\n                    endColumn: 1\n                });\n            }\n        }\n    }\n}\n/** Action to go to the next fold of current line */\nclass GotoNextFoldAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.gotoNextFold',\n            label: nls.localize('gotoNextFold.label', \"Go to Next Folding Range\"),\n            alias: 'Go to Next Folding Range',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor) {\n        const selectedLines = this.getSelectedLines(editor);\n        if (selectedLines.length > 0) {\n            const startLineNumber = getNextFoldLine(selectedLines[0], foldingModel);\n            if (startLineNumber !== null) {\n                editor.setSelection({\n                    startLineNumber: startLineNumber,\n                    startColumn: 1,\n                    endLineNumber: startLineNumber,\n                    endColumn: 1\n                });\n            }\n        }\n    }\n}\nclass FoldRangeFromSelectionAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.createFoldingRangeFromSelection',\n            label: nls.localize('createManualFoldRange.label', \"Create Folding Range from Selection\"),\n            alias: 'Create Folding Range from Selection',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 87 /* KeyCode.Comma */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(_foldingController, foldingModel, editor) {\n        var _a;\n        const collapseRanges = [];\n        const selections = editor.getSelections();\n        if (selections) {\n            for (const selection of selections) {\n                let endLineNumber = selection.endLineNumber;\n                if (selection.endColumn === 1) {\n                    --endLineNumber;\n                }\n                if (endLineNumber > selection.startLineNumber) {\n                    collapseRanges.push({\n                        startLineNumber: selection.startLineNumber,\n                        endLineNumber: endLineNumber,\n                        type: undefined,\n                        isCollapsed: true,\n                        source: 1 /* FoldSource.userDefined */\n                    });\n                    editor.setSelection({\n                        startLineNumber: selection.startLineNumber,\n                        startColumn: 1,\n                        endLineNumber: selection.startLineNumber,\n                        endColumn: 1\n                    });\n                }\n            }\n            if (collapseRanges.length > 0) {\n                collapseRanges.sort((a, b) => {\n                    return a.startLineNumber - b.startLineNumber;\n                });\n                const newRanges = FoldingRegions.sanitizeAndMerge(foldingModel.regions, collapseRanges, (_a = editor.getModel()) === null || _a === void 0 ? void 0 : _a.getLineCount());\n                foldingModel.updatePost(FoldingRegions.fromFoldRanges(newRanges));\n            }\n        }\n    }\n}\nclass RemoveFoldRangeFromSelectionAction extends FoldingAction {\n    constructor() {\n        super({\n            id: 'editor.removeManualFoldingRanges',\n            label: nls.localize('removeManualFoldingRanges.label', \"Remove Manual Folding Ranges\"),\n            alias: 'Remove Manual Folding Ranges',\n            precondition: CONTEXT_FOLDING_ENABLED,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 89 /* KeyCode.Period */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    invoke(foldingController, foldingModel, editor) {\n        const selections = editor.getSelections();\n        if (selections) {\n            const ranges = [];\n            for (const selection of selections) {\n                const { startLineNumber, endLineNumber } = selection;\n                ranges.push(endLineNumber >= startLineNumber ? { startLineNumber, endLineNumber } : { endLineNumber, startLineNumber });\n            }\n            foldingModel.removeManualRanges(ranges);\n            foldingController.triggerFoldingModelChanged();\n        }\n    }\n}\nregisterEditorContribution(FoldingController.ID, FoldingController, 0 /* EditorContributionInstantiation.Eager */); // eager because it uses `saveViewState`/`restoreViewState`\nregisterEditorAction(UnfoldAction);\nregisterEditorAction(UnFoldRecursivelyAction);\nregisterEditorAction(FoldAction);\nregisterEditorAction(FoldRecursivelyAction);\nregisterEditorAction(FoldAllAction);\nregisterEditorAction(UnfoldAllAction);\nregisterEditorAction(FoldAllBlockCommentsAction);\nregisterEditorAction(FoldAllRegionsAction);\nregisterEditorAction(UnfoldAllRegionsAction);\nregisterEditorAction(FoldAllExceptAction);\nregisterEditorAction(UnfoldAllExceptAction);\nregisterEditorAction(ToggleFoldAction);\nregisterEditorAction(GotoParentFoldAction);\nregisterEditorAction(GotoPreviousFoldAction);\nregisterEditorAction(GotoNextFoldAction);\nregisterEditorAction(FoldRangeFromSelectionAction);\nregisterEditorAction(RemoveFoldRangeFromSelectionAction);\nfor (let i = 1; i <= 7; i++) {\n    registerInstantiatedEditorAction(new FoldLevelAction({\n        id: FoldLevelAction.ID(i),\n        label: nls.localize('foldLevelAction.label', \"Fold Level {0}\", i),\n        alias: `Fold Level ${i}`,\n        precondition: CONTEXT_FOLDING_ENABLED,\n        kbOpts: {\n            kbExpr: EditorContextKeys.editorTextFocus,\n            primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | (21 /* KeyCode.Digit0 */ + i)),\n            weight: 100 /* KeybindingWeight.EditorContrib */\n        }\n    }));\n}\nCommandsRegistry.registerCommand('_executeFoldingRangeProvider', async function (accessor, ...args) {\n    const [resource] = args;\n    if (!(resource instanceof URI)) {\n        throw illegalArgument();\n    }\n    const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n    const model = accessor.get(IModelService).getModel(resource);\n    if (!model) {\n        throw illegalArgument();\n    }\n    const configurationService = accessor.get(IConfigurationService);\n    if (!configurationService.getValue('editor.folding', { resource })) {\n        return [];\n    }\n    const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n    const strategy = configurationService.getValue('editor.foldingStrategy', { resource });\n    const foldingLimitReporter = {\n        get limit() {\n            return configurationService.getValue('editor.foldingMaximumRegions', { resource });\n        },\n        update: (computed, limited) => { }\n    };\n    const indentRangeProvider = new IndentRangeProvider(model, languageConfigurationService, foldingLimitReporter);\n    let rangeProvider = indentRangeProvider;\n    if (strategy !== 'indentation') {\n        const providers = FoldingController.getFoldingRangeProviders(languageFeaturesService, model);\n        if (providers.length) {\n            rangeProvider = new SyntaxRangeProvider(model, providers, () => { }, foldingLimitReporter, indentRangeProvider);\n        }\n    }\n    const ranges = await rangeProvider.compute(CancellationToken.None);\n    const result = [];\n    try {\n        if (ranges) {\n            for (let i = 0; i < ranges.length; i++) {\n                const type = ranges.getType(i);\n                result.push({ start: ranges.getStartLineNumber(i), end: ranges.getEndLineNumber(i), kind: type ? FoldingRangeKind.fromValue(type) : undefined });\n            }\n        }\n        return result;\n    }\n    finally {\n        rangeProvider.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 { Emitter } from '../../../../base/common/event.js';\nimport { FoldingRegions } from './foldingRanges.js';\nimport { hash } from '../../../../base/common/hash.js';\nexport class FoldingModel {\n    get regions() { return this._regions; }\n    get textModel() { return this._textModel; }\n    constructor(textModel, decorationProvider) {\n        this._updateEventEmitter = new Emitter();\n        this.onDidChange = this._updateEventEmitter.event;\n        this._textModel = textModel;\n        this._decorationProvider = decorationProvider;\n        this._regions = new FoldingRegions(new Uint32Array(0), new Uint32Array(0));\n        this._editorDecorationIds = [];\n    }\n    toggleCollapseState(toggledRegions) {\n        if (!toggledRegions.length) {\n            return;\n        }\n        toggledRegions = toggledRegions.sort((r1, r2) => r1.regionIndex - r2.regionIndex);\n        const processed = {};\n        this._decorationProvider.changeDecorations(accessor => {\n            let k = 0; // index from [0 ... this.regions.length]\n            let dirtyRegionEndLine = -1; // end of the range where decorations need to be updated\n            let lastHiddenLine = -1; // the end of the last hidden lines\n            const updateDecorationsUntil = (index) => {\n                while (k < index) {\n                    const endLineNumber = this._regions.getEndLineNumber(k);\n                    const isCollapsed = this._regions.isCollapsed(k);\n                    if (endLineNumber <= dirtyRegionEndLine) {\n                        const isManual = this.regions.getSource(k) !== 0 /* FoldSource.provider */;\n                        accessor.changeDecorationOptions(this._editorDecorationIds[k], this._decorationProvider.getDecorationOption(isCollapsed, endLineNumber <= lastHiddenLine, isManual));\n                    }\n                    if (isCollapsed && endLineNumber > lastHiddenLine) {\n                        lastHiddenLine = endLineNumber;\n                    }\n                    k++;\n                }\n            };\n            for (const region of toggledRegions) {\n                const index = region.regionIndex;\n                const editorDecorationId = this._editorDecorationIds[index];\n                if (editorDecorationId && !processed[editorDecorationId]) {\n                    processed[editorDecorationId] = true;\n                    updateDecorationsUntil(index); // update all decorations up to current index using the old dirtyRegionEndLine\n                    const newCollapseState = !this._regions.isCollapsed(index);\n                    this._regions.setCollapsed(index, newCollapseState);\n                    dirtyRegionEndLine = Math.max(dirtyRegionEndLine, this._regions.getEndLineNumber(index));\n                }\n            }\n            updateDecorationsUntil(this._regions.length);\n        });\n        this._updateEventEmitter.fire({ model: this, collapseStateChanged: toggledRegions });\n    }\n    removeManualRanges(ranges) {\n        const newFoldingRanges = new Array();\n        const intersects = (foldRange) => {\n            for (const range of ranges) {\n                if (!(range.startLineNumber > foldRange.endLineNumber || foldRange.startLineNumber > range.endLineNumber)) {\n                    return true;\n                }\n            }\n            return false;\n        };\n        for (let i = 0; i < this._regions.length; i++) {\n            const foldRange = this._regions.toFoldRange(i);\n            if (foldRange.source === 0 /* FoldSource.provider */ || !intersects(foldRange)) {\n                newFoldingRanges.push(foldRange);\n            }\n        }\n        this.updatePost(FoldingRegions.fromFoldRanges(newFoldingRanges));\n    }\n    update(newRegions, blockedLineNumers = []) {\n        const foldedOrManualRanges = this._currentFoldedOrManualRanges(blockedLineNumers);\n        const newRanges = FoldingRegions.sanitizeAndMerge(newRegions, foldedOrManualRanges, this._textModel.getLineCount());\n        this.updatePost(FoldingRegions.fromFoldRanges(newRanges));\n    }\n    updatePost(newRegions) {\n        const newEditorDecorations = [];\n        let lastHiddenLine = -1;\n        for (let index = 0, limit = newRegions.length; index < limit; index++) {\n            const startLineNumber = newRegions.getStartLineNumber(index);\n            const endLineNumber = newRegions.getEndLineNumber(index);\n            const isCollapsed = newRegions.isCollapsed(index);\n            const isManual = newRegions.getSource(index) !== 0 /* FoldSource.provider */;\n            const decorationRange = {\n                startLineNumber: startLineNumber,\n                startColumn: this._textModel.getLineMaxColumn(startLineNumber),\n                endLineNumber: endLineNumber,\n                endColumn: this._textModel.getLineMaxColumn(endLineNumber) + 1\n            };\n            newEditorDecorations.push({ range: decorationRange, options: this._decorationProvider.getDecorationOption(isCollapsed, endLineNumber <= lastHiddenLine, isManual) });\n            if (isCollapsed && endLineNumber > lastHiddenLine) {\n                lastHiddenLine = endLineNumber;\n            }\n        }\n        this._decorationProvider.changeDecorations(accessor => this._editorDecorationIds = accessor.deltaDecorations(this._editorDecorationIds, newEditorDecorations));\n        this._regions = newRegions;\n        this._updateEventEmitter.fire({ model: this });\n    }\n    _currentFoldedOrManualRanges(blockedLineNumers = []) {\n        const isBlocked = (startLineNumber, endLineNumber) => {\n            for (const blockedLineNumber of blockedLineNumers) {\n                if (startLineNumber < blockedLineNumber && blockedLineNumber <= endLineNumber) { // first line is visible\n                    return true;\n                }\n            }\n            return false;\n        };\n        const foldedRanges = [];\n        for (let i = 0, limit = this._regions.length; i < limit; i++) {\n            let isCollapsed = this.regions.isCollapsed(i);\n            const source = this.regions.getSource(i);\n            if (isCollapsed || source !== 0 /* FoldSource.provider */) {\n                const foldRange = this._regions.toFoldRange(i);\n                const decRange = this._textModel.getDecorationRange(this._editorDecorationIds[i]);\n                if (decRange) {\n                    if (isCollapsed && isBlocked(decRange.startLineNumber, decRange.endLineNumber)) {\n                        isCollapsed = false; // uncollapse is the range is blocked\n                    }\n                    foldedRanges.push({\n                        startLineNumber: decRange.startLineNumber,\n                        endLineNumber: decRange.endLineNumber,\n                        type: foldRange.type,\n                        isCollapsed,\n                        source\n                    });\n                }\n            }\n        }\n        return foldedRanges;\n    }\n    /**\n     * Collapse state memento, for persistence only\n     */\n    getMemento() {\n        const foldedOrManualRanges = this._currentFoldedOrManualRanges();\n        const result = [];\n        const maxLineNumber = this._textModel.getLineCount();\n        for (let i = 0, limit = foldedOrManualRanges.length; i < limit; i++) {\n            const range = foldedOrManualRanges[i];\n            if (range.startLineNumber >= range.endLineNumber || range.startLineNumber < 1 || range.endLineNumber > maxLineNumber) {\n                continue;\n            }\n            const checksum = this._getLinesChecksum(range.startLineNumber + 1, range.endLineNumber);\n            result.push({\n                startLineNumber: range.startLineNumber,\n                endLineNumber: range.endLineNumber,\n                isCollapsed: range.isCollapsed,\n                source: range.source,\n                checksum: checksum\n            });\n        }\n        return (result.length > 0) ? result : undefined;\n    }\n    /**\n     * Apply persisted state, for persistence only\n     */\n    applyMemento(state) {\n        var _a, _b;\n        if (!Array.isArray(state)) {\n            return;\n        }\n        const rangesToRestore = [];\n        const maxLineNumber = this._textModel.getLineCount();\n        for (const range of state) {\n            if (range.startLineNumber >= range.endLineNumber || range.startLineNumber < 1 || range.endLineNumber > maxLineNumber) {\n                continue;\n            }\n            const checksum = this._getLinesChecksum(range.startLineNumber + 1, range.endLineNumber);\n            if (!range.checksum || checksum === range.checksum) {\n                rangesToRestore.push({\n                    startLineNumber: range.startLineNumber,\n                    endLineNumber: range.endLineNumber,\n                    type: undefined,\n                    isCollapsed: (_a = range.isCollapsed) !== null && _a !== void 0 ? _a : true,\n                    source: (_b = range.source) !== null && _b !== void 0 ? _b : 0 /* FoldSource.provider */\n                });\n            }\n        }\n        const newRanges = FoldingRegions.sanitizeAndMerge(this._regions, rangesToRestore, maxLineNumber);\n        this.updatePost(FoldingRegions.fromFoldRanges(newRanges));\n    }\n    _getLinesChecksum(lineNumber1, lineNumber2) {\n        const h = hash(this._textModel.getLineContent(lineNumber1)\n            + this._textModel.getLineContent(lineNumber2));\n        return h % 1000000; // 6 digits is plenty\n    }\n    dispose() {\n        this._decorationProvider.removeDecorations(this._editorDecorationIds);\n    }\n    getAllRegionsAtLine(lineNumber, filter) {\n        const result = [];\n        if (this._regions) {\n            let index = this._regions.findRange(lineNumber);\n            let level = 1;\n            while (index >= 0) {\n                const current = this._regions.toRegion(index);\n                if (!filter || filter(current, level)) {\n                    result.push(current);\n                }\n                level++;\n                index = current.parentIndex;\n            }\n        }\n        return result;\n    }\n    getRegionAtLine(lineNumber) {\n        if (this._regions) {\n            const index = this._regions.findRange(lineNumber);\n            if (index >= 0) {\n                return this._regions.toRegion(index);\n            }\n        }\n        return null;\n    }\n    getRegionsInside(region, filter) {\n        const result = [];\n        const index = region ? region.regionIndex + 1 : 0;\n        const endLineNumber = region ? region.endLineNumber : Number.MAX_VALUE;\n        if (filter && filter.length === 2) {\n            const levelStack = [];\n            for (let i = index, len = this._regions.length; i < len; i++) {\n                const current = this._regions.toRegion(i);\n                if (this._regions.getStartLineNumber(i) < endLineNumber) {\n                    while (levelStack.length > 0 && !current.containedBy(levelStack[levelStack.length - 1])) {\n                        levelStack.pop();\n                    }\n                    levelStack.push(current);\n                    if (filter(current, levelStack.length)) {\n                        result.push(current);\n                    }\n                }\n                else {\n                    break;\n                }\n            }\n        }\n        else {\n            for (let i = index, len = this._regions.length; i < len; i++) {\n                const current = this._regions.toRegion(i);\n                if (this._regions.getStartLineNumber(i) < endLineNumber) {\n                    if (!filter || filter(current)) {\n                        result.push(current);\n                    }\n                }\n                else {\n                    break;\n                }\n            }\n        }\n        return result;\n    }\n}\n/**\n * Collapse or expand the regions at the given locations\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\n * @param lineNumbers the location of the regions to collapse or expand, or if not set, all regions in the model.\n */\nexport function toggleCollapseState(foldingModel, levels, lineNumbers) {\n    const toToggle = [];\n    for (const lineNumber of lineNumbers) {\n        const region = foldingModel.getRegionAtLine(lineNumber);\n        if (region) {\n            const doCollapse = !region.isCollapsed;\n            toToggle.push(region);\n            if (levels > 1) {\n                const regionsInside = foldingModel.getRegionsInside(region, (r, level) => r.isCollapsed !== doCollapse && level < levels);\n                toToggle.push(...regionsInside);\n            }\n        }\n    }\n    foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Collapse or expand the regions at the given locations including all children.\n * @param doCollapse Whether to collapse or expand\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\n * @param lineNumbers the location of the regions to collapse or expand, or if not set, all regions in the model.\n */\nexport function setCollapseStateLevelsDown(foldingModel, doCollapse, levels = Number.MAX_VALUE, lineNumbers) {\n    const toToggle = [];\n    if (lineNumbers && lineNumbers.length > 0) {\n        for (const lineNumber of lineNumbers) {\n            const region = foldingModel.getRegionAtLine(lineNumber);\n            if (region) {\n                if (region.isCollapsed !== doCollapse) {\n                    toToggle.push(region);\n                }\n                if (levels > 1) {\n                    const regionsInside = foldingModel.getRegionsInside(region, (r, level) => r.isCollapsed !== doCollapse && level < levels);\n                    toToggle.push(...regionsInside);\n                }\n            }\n        }\n    }\n    else {\n        const regionsInside = foldingModel.getRegionsInside(null, (r, level) => r.isCollapsed !== doCollapse && level < levels);\n        toToggle.push(...regionsInside);\n    }\n    foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Collapse or expand the regions at the given locations including all parents.\n * @param doCollapse Whether to collapse or expand\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\n * @param lineNumbers the location of the regions to collapse or expand.\n */\nexport function setCollapseStateLevelsUp(foldingModel, doCollapse, levels, lineNumbers) {\n    const toToggle = [];\n    for (const lineNumber of lineNumbers) {\n        const regions = foldingModel.getAllRegionsAtLine(lineNumber, (region, level) => region.isCollapsed !== doCollapse && level <= levels);\n        toToggle.push(...regions);\n    }\n    foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Collapse or expand a region at the given locations. If the inner most region is already collapsed/expanded, uses the first parent instead.\n * @param doCollapse Whether to collapse or expand\n * @param lineNumbers the location of the regions to collapse or expand.\n */\nexport function setCollapseStateUp(foldingModel, doCollapse, lineNumbers) {\n    const toToggle = [];\n    for (const lineNumber of lineNumbers) {\n        const regions = foldingModel.getAllRegionsAtLine(lineNumber, (region) => region.isCollapsed !== doCollapse);\n        if (regions.length > 0) {\n            toToggle.push(regions[0]);\n        }\n    }\n    foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Folds or unfolds all regions that have a given level, except if they contain one of the blocked lines.\n * @param foldLevel level. Level == 1 is the top level\n * @param doCollapse Whether to collapse or expand\n*/\nexport function setCollapseStateAtLevel(foldingModel, foldLevel, doCollapse, blockedLineNumbers) {\n    const filter = (region, level) => level === foldLevel && region.isCollapsed !== doCollapse && !blockedLineNumbers.some(line => region.containsLine(line));\n    const toToggle = foldingModel.getRegionsInside(null, filter);\n    foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Folds or unfolds all regions, except if they contain or are contained by a region of one of the blocked lines.\n * @param doCollapse Whether to collapse or expand\n * @param blockedLineNumbers the location of regions to not collapse or expand\n */\nexport function setCollapseStateForRest(foldingModel, doCollapse, blockedLineNumbers) {\n    const filteredRegions = [];\n    for (const lineNumber of blockedLineNumbers) {\n        const regions = foldingModel.getAllRegionsAtLine(lineNumber, undefined);\n        if (regions.length > 0) {\n            filteredRegions.push(regions[0]);\n        }\n    }\n    const filter = (region) => filteredRegions.every((filteredRegion) => !filteredRegion.containedBy(region) && !region.containedBy(filteredRegion)) && region.isCollapsed !== doCollapse;\n    const toToggle = foldingModel.getRegionsInside(null, filter);\n    foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Folds all regions for which the lines start with a given regex\n * @param foldingModel the folding model\n */\nexport function setCollapseStateForMatchingLines(foldingModel, regExp, doCollapse) {\n    const editorModel = foldingModel.textModel;\n    const regions = foldingModel.regions;\n    const toToggle = [];\n    for (let i = regions.length - 1; i >= 0; i--) {\n        if (doCollapse !== regions.isCollapsed(i)) {\n            const startLineNumber = regions.getStartLineNumber(i);\n            if (regExp.test(editorModel.getLineContent(startLineNumber))) {\n                toToggle.push(regions.toRegion(i));\n            }\n        }\n    }\n    foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Folds all regions of the given type\n * @param foldingModel the folding model\n */\nexport function setCollapseStateForType(foldingModel, type, doCollapse) {\n    const regions = foldingModel.regions;\n    const toToggle = [];\n    for (let i = regions.length - 1; i >= 0; i--) {\n        if (doCollapse !== regions.isCollapsed(i) && type === regions.getType(i)) {\n            toToggle.push(regions.toRegion(i));\n        }\n    }\n    foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Get line to go to for parent fold of current line\n * @param lineNumber the current line number\n * @param foldingModel the folding model\n *\n * @return Parent fold start line\n */\nexport function getParentFoldLine(lineNumber, foldingModel) {\n    let startLineNumber = null;\n    const foldingRegion = foldingModel.getRegionAtLine(lineNumber);\n    if (foldingRegion !== null) {\n        startLineNumber = foldingRegion.startLineNumber;\n        // If current line is not the start of the current fold, go to top line of current fold. If not, go to parent fold\n        if (lineNumber === startLineNumber) {\n            const parentFoldingIdx = foldingRegion.parentIndex;\n            if (parentFoldingIdx !== -1) {\n                startLineNumber = foldingModel.regions.getStartLineNumber(parentFoldingIdx);\n            }\n            else {\n                startLineNumber = null;\n            }\n        }\n    }\n    return startLineNumber;\n}\n/**\n * Get line to go to for previous fold at the same level of current line\n * @param lineNumber the current line number\n * @param foldingModel the folding model\n *\n * @return Previous fold start line\n */\nexport function getPreviousFoldLine(lineNumber, foldingModel) {\n    let foldingRegion = foldingModel.getRegionAtLine(lineNumber);\n    // If on the folding range start line, go to previous sibling.\n    if (foldingRegion !== null && foldingRegion.startLineNumber === lineNumber) {\n        // If current line is not the start of the current fold, go to top line of current fold. If not, go to previous fold.\n        if (lineNumber !== foldingRegion.startLineNumber) {\n            return foldingRegion.startLineNumber;\n        }\n        else {\n            // Find min line number to stay within parent.\n            const expectedParentIndex = foldingRegion.parentIndex;\n            let minLineNumber = 0;\n            if (expectedParentIndex !== -1) {\n                minLineNumber = foldingModel.regions.getStartLineNumber(foldingRegion.parentIndex);\n            }\n            // Find fold at same level.\n            while (foldingRegion !== null) {\n                if (foldingRegion.regionIndex > 0) {\n                    foldingRegion = foldingModel.regions.toRegion(foldingRegion.regionIndex - 1);\n                    // Keep at same level.\n                    if (foldingRegion.startLineNumber <= minLineNumber) {\n                        return null;\n                    }\n                    else if (foldingRegion.parentIndex === expectedParentIndex) {\n                        return foldingRegion.startLineNumber;\n                    }\n                }\n                else {\n                    return null;\n                }\n            }\n        }\n    }\n    else {\n        // Go to last fold that's before the current line.\n        if (foldingModel.regions.length > 0) {\n            foldingRegion = foldingModel.regions.toRegion(foldingModel.regions.length - 1);\n            while (foldingRegion !== null) {\n                // Found fold before current line.\n                if (foldingRegion.startLineNumber < lineNumber) {\n                    return foldingRegion.startLineNumber;\n                }\n                if (foldingRegion.regionIndex > 0) {\n                    foldingRegion = foldingModel.regions.toRegion(foldingRegion.regionIndex - 1);\n                }\n                else {\n                    foldingRegion = null;\n                }\n            }\n        }\n    }\n    return null;\n}\n/**\n * Get line to go to next fold at the same level of current line\n * @param lineNumber the current line number\n * @param foldingModel the folding model\n *\n * @return Next fold start line\n */\nexport function getNextFoldLine(lineNumber, foldingModel) {\n    let foldingRegion = foldingModel.getRegionAtLine(lineNumber);\n    // If on the folding range start line, go to next sibling.\n    if (foldingRegion !== null && foldingRegion.startLineNumber === lineNumber) {\n        // Find max line number to stay within parent.\n        const expectedParentIndex = foldingRegion.parentIndex;\n        let maxLineNumber = 0;\n        if (expectedParentIndex !== -1) {\n            maxLineNumber = foldingModel.regions.getEndLineNumber(foldingRegion.parentIndex);\n        }\n        else if (foldingModel.regions.length === 0) {\n            return null;\n        }\n        else {\n            maxLineNumber = foldingModel.regions.getEndLineNumber(foldingModel.regions.length - 1);\n        }\n        // Find fold at same level.\n        while (foldingRegion !== null) {\n            if (foldingRegion.regionIndex < foldingModel.regions.length) {\n                foldingRegion = foldingModel.regions.toRegion(foldingRegion.regionIndex + 1);\n                // Keep at same level.\n                if (foldingRegion.startLineNumber >= maxLineNumber) {\n                    return null;\n                }\n                else if (foldingRegion.parentIndex === expectedParentIndex) {\n                    return foldingRegion.startLineNumber;\n                }\n            }\n            else {\n                return null;\n            }\n        }\n    }\n    else {\n        // Go to first fold that's after the current line.\n        if (foldingModel.regions.length > 0) {\n            foldingRegion = foldingModel.regions.toRegion(0);\n            while (foldingRegion !== null) {\n                // Found fold after current line.\n                if (foldingRegion.startLineNumber > lineNumber) {\n                    return foldingRegion.startLineNumber;\n                }\n                if (foldingRegion.regionIndex < foldingModel.regions.length) {\n                    foldingRegion = foldingModel.regions.toRegion(foldingRegion.regionIndex + 1);\n                }\n                else {\n                    foldingRegion = null;\n                }\n            }\n        }\n    }\n    return null;\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 *--------------------------------------------------------------------------------------------*/\nexport const foldSourceAbbr = {\n    [0 /* FoldSource.provider */]: ' ',\n    [1 /* FoldSource.userDefined */]: 'u',\n    [2 /* FoldSource.recovered */]: 'r',\n};\nexport const MAX_FOLDING_REGIONS = 0xFFFF;\nexport const MAX_LINE_NUMBER = 0xFFFFFF;\nconst MASK_INDENT = 0xFF000000;\nclass BitField {\n    constructor(size) {\n        const numWords = Math.ceil(size / 32);\n        this._states = new Uint32Array(numWords);\n    }\n    get(index) {\n        const arrayIndex = (index / 32) | 0;\n        const bit = index % 32;\n        return (this._states[arrayIndex] & (1 << bit)) !== 0;\n    }\n    set(index, newState) {\n        const arrayIndex = (index / 32) | 0;\n        const bit = index % 32;\n        const value = this._states[arrayIndex];\n        if (newState) {\n            this._states[arrayIndex] = value | (1 << bit);\n        }\n        else {\n            this._states[arrayIndex] = value & ~(1 << bit);\n        }\n    }\n}\nexport class FoldingRegions {\n    constructor(startIndexes, endIndexes, types) {\n        if (startIndexes.length !== endIndexes.length || startIndexes.length > MAX_FOLDING_REGIONS) {\n            throw new Error('invalid startIndexes or endIndexes size');\n        }\n        this._startIndexes = startIndexes;\n        this._endIndexes = endIndexes;\n        this._collapseStates = new BitField(startIndexes.length);\n        this._userDefinedStates = new BitField(startIndexes.length);\n        this._recoveredStates = new BitField(startIndexes.length);\n        this._types = types;\n        this._parentsComputed = false;\n    }\n    ensureParentIndices() {\n        if (!this._parentsComputed) {\n            this._parentsComputed = true;\n            const parentIndexes = [];\n            const isInsideLast = (startLineNumber, endLineNumber) => {\n                const index = parentIndexes[parentIndexes.length - 1];\n                return this.getStartLineNumber(index) <= startLineNumber && this.getEndLineNumber(index) >= endLineNumber;\n            };\n            for (let i = 0, len = this._startIndexes.length; i < len; i++) {\n                const startLineNumber = this._startIndexes[i];\n                const endLineNumber = this._endIndexes[i];\n                if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\n                    throw new Error('startLineNumber or endLineNumber must not exceed ' + MAX_LINE_NUMBER);\n                }\n                while (parentIndexes.length > 0 && !isInsideLast(startLineNumber, endLineNumber)) {\n                    parentIndexes.pop();\n                }\n                const parentIndex = parentIndexes.length > 0 ? parentIndexes[parentIndexes.length - 1] : -1;\n                parentIndexes.push(i);\n                this._startIndexes[i] = startLineNumber + ((parentIndex & 0xFF) << 24);\n                this._endIndexes[i] = endLineNumber + ((parentIndex & 0xFF00) << 16);\n            }\n        }\n    }\n    get length() {\n        return this._startIndexes.length;\n    }\n    getStartLineNumber(index) {\n        return this._startIndexes[index] & MAX_LINE_NUMBER;\n    }\n    getEndLineNumber(index) {\n        return this._endIndexes[index] & MAX_LINE_NUMBER;\n    }\n    getType(index) {\n        return this._types ? this._types[index] : undefined;\n    }\n    hasTypes() {\n        return !!this._types;\n    }\n    isCollapsed(index) {\n        return this._collapseStates.get(index);\n    }\n    setCollapsed(index, newState) {\n        this._collapseStates.set(index, newState);\n    }\n    isUserDefined(index) {\n        return this._userDefinedStates.get(index);\n    }\n    setUserDefined(index, newState) {\n        return this._userDefinedStates.set(index, newState);\n    }\n    isRecovered(index) {\n        return this._recoveredStates.get(index);\n    }\n    setRecovered(index, newState) {\n        return this._recoveredStates.set(index, newState);\n    }\n    getSource(index) {\n        if (this.isUserDefined(index)) {\n            return 1 /* FoldSource.userDefined */;\n        }\n        else if (this.isRecovered(index)) {\n            return 2 /* FoldSource.recovered */;\n        }\n        return 0 /* FoldSource.provider */;\n    }\n    setSource(index, source) {\n        if (source === 1 /* FoldSource.userDefined */) {\n            this.setUserDefined(index, true);\n            this.setRecovered(index, false);\n        }\n        else if (source === 2 /* FoldSource.recovered */) {\n            this.setUserDefined(index, false);\n            this.setRecovered(index, true);\n        }\n        else {\n            this.setUserDefined(index, false);\n            this.setRecovered(index, false);\n        }\n    }\n    setCollapsedAllOfType(type, newState) {\n        let hasChanged = false;\n        if (this._types) {\n            for (let i = 0; i < this._types.length; i++) {\n                if (this._types[i] === type) {\n                    this.setCollapsed(i, newState);\n                    hasChanged = true;\n                }\n            }\n        }\n        return hasChanged;\n    }\n    toRegion(index) {\n        return new FoldingRegion(this, index);\n    }\n    getParentIndex(index) {\n        this.ensureParentIndices();\n        const parent = ((this._startIndexes[index] & MASK_INDENT) >>> 24) + ((this._endIndexes[index] & MASK_INDENT) >>> 16);\n        if (parent === MAX_FOLDING_REGIONS) {\n            return -1;\n        }\n        return parent;\n    }\n    contains(index, line) {\n        return this.getStartLineNumber(index) <= line && this.getEndLineNumber(index) >= line;\n    }\n    findIndex(line) {\n        let low = 0, high = this._startIndexes.length;\n        if (high === 0) {\n            return -1; // no children\n        }\n        while (low < high) {\n            const mid = Math.floor((low + high) / 2);\n            if (line < this.getStartLineNumber(mid)) {\n                high = mid;\n            }\n            else {\n                low = mid + 1;\n            }\n        }\n        return low - 1;\n    }\n    findRange(line) {\n        let index = this.findIndex(line);\n        if (index >= 0) {\n            const endLineNumber = this.getEndLineNumber(index);\n            if (endLineNumber >= line) {\n                return index;\n            }\n            index = this.getParentIndex(index);\n            while (index !== -1) {\n                if (this.contains(index, line)) {\n                    return index;\n                }\n                index = this.getParentIndex(index);\n            }\n        }\n        return -1;\n    }\n    toString() {\n        const res = [];\n        for (let i = 0; i < this.length; i++) {\n            res[i] = `[${foldSourceAbbr[this.getSource(i)]}${this.isCollapsed(i) ? '+' : '-'}] ${this.getStartLineNumber(i)}/${this.getEndLineNumber(i)}`;\n        }\n        return res.join(', ');\n    }\n    toFoldRange(index) {\n        return {\n            startLineNumber: this._startIndexes[index] & MAX_LINE_NUMBER,\n            endLineNumber: this._endIndexes[index] & MAX_LINE_NUMBER,\n            type: this._types ? this._types[index] : undefined,\n            isCollapsed: this.isCollapsed(index),\n            source: this.getSource(index)\n        };\n    }\n    static fromFoldRanges(ranges) {\n        const rangesLength = ranges.length;\n        const startIndexes = new Uint32Array(rangesLength);\n        const endIndexes = new Uint32Array(rangesLength);\n        let types = [];\n        let gotTypes = false;\n        for (let i = 0; i < rangesLength; i++) {\n            const range = ranges[i];\n            startIndexes[i] = range.startLineNumber;\n            endIndexes[i] = range.endLineNumber;\n            types.push(range.type);\n            if (range.type) {\n                gotTypes = true;\n            }\n        }\n        if (!gotTypes) {\n            types = undefined;\n        }\n        const regions = new FoldingRegions(startIndexes, endIndexes, types);\n        for (let i = 0; i < rangesLength; i++) {\n            if (ranges[i].isCollapsed) {\n                regions.setCollapsed(i, true);\n            }\n            regions.setSource(i, ranges[i].source);\n        }\n        return regions;\n    }\n    /**\n     * Two inputs, each a FoldingRegions or a FoldRange[], are merged.\n     * Each input must be pre-sorted on startLineNumber.\n     * The first list is assumed to always include all regions currently defined by range providers.\n     * The second list only contains the previously collapsed and all manual ranges.\n     * If the line position matches, the range of the new range is taken, and the range is no longer manual\n     * When an entry in one list overlaps an entry in the other, the second list's entry \"wins\" and\n     * overlapping entries in the first list are discarded.\n     * Invalid entries are discarded. An entry is invalid if:\n     * \t\tthe start and end line numbers aren't a valid range of line numbers,\n     * \t\tit is out of sequence or has the same start line as a preceding entry,\n     * \t\tit overlaps a preceding entry and is not fully contained by that entry.\n     */\n    static sanitizeAndMerge(rangesA, rangesB, maxLineNumber) {\n        maxLineNumber = maxLineNumber !== null && maxLineNumber !== void 0 ? maxLineNumber : Number.MAX_VALUE;\n        const getIndexedFunction = (r, limit) => {\n            return Array.isArray(r)\n                ? ((i) => { return (i < limit) ? r[i] : undefined; })\n                : ((i) => { return (i < limit) ? r.toFoldRange(i) : undefined; });\n        };\n        const getA = getIndexedFunction(rangesA, rangesA.length);\n        const getB = getIndexedFunction(rangesB, rangesB.length);\n        let indexA = 0;\n        let indexB = 0;\n        let nextA = getA(0);\n        let nextB = getB(0);\n        const stackedRanges = [];\n        let topStackedRange;\n        let prevLineNumber = 0;\n        const resultRanges = [];\n        while (nextA || nextB) {\n            let useRange = undefined;\n            if (nextB && (!nextA || nextA.startLineNumber >= nextB.startLineNumber)) {\n                if (nextA && nextA.startLineNumber === nextB.startLineNumber) {\n                    if (nextB.source === 1 /* FoldSource.userDefined */) {\n                        // a user defined range (possibly unfolded)\n                        useRange = nextB;\n                    }\n                    else {\n                        // a previously folded range or a (possibly unfolded) recovered range\n                        useRange = nextA;\n                        useRange.isCollapsed = nextB.isCollapsed && nextA.endLineNumber === nextB.endLineNumber;\n                        useRange.source = 0 /* FoldSource.provider */;\n                    }\n                    nextA = getA(++indexA); // not necessary, just for speed\n                }\n                else {\n                    useRange = nextB;\n                    if (nextB.isCollapsed && nextB.source === 0 /* FoldSource.provider */) {\n                        // a previously collapsed range\n                        useRange.source = 2 /* FoldSource.recovered */;\n                    }\n                }\n                nextB = getB(++indexB);\n            }\n            else {\n                // nextA is next. The user folded B set takes precedence and we sometimes need to look\n                // ahead in it to check for an upcoming conflict.\n                let scanIndex = indexB;\n                let prescanB = nextB;\n                while (true) {\n                    if (!prescanB || prescanB.startLineNumber > nextA.endLineNumber) {\n                        useRange = nextA;\n                        break; // no conflict, use this nextA\n                    }\n                    if (prescanB.source === 1 /* FoldSource.userDefined */ && prescanB.endLineNumber > nextA.endLineNumber) {\n                        // we found a user folded range, it wins\n                        break; // without setting nextResult, so this nextA gets skipped\n                    }\n                    prescanB = getB(++scanIndex);\n                }\n                nextA = getA(++indexA);\n            }\n            if (useRange) {\n                while (topStackedRange\n                    && topStackedRange.endLineNumber < useRange.startLineNumber) {\n                    topStackedRange = stackedRanges.pop();\n                }\n                if (useRange.endLineNumber > useRange.startLineNumber\n                    && useRange.startLineNumber > prevLineNumber\n                    && useRange.endLineNumber <= maxLineNumber\n                    && (!topStackedRange\n                        || topStackedRange.endLineNumber >= useRange.endLineNumber)) {\n                    resultRanges.push(useRange);\n                    prevLineNumber = useRange.startLineNumber;\n                    if (topStackedRange) {\n                        stackedRanges.push(topStackedRange);\n                    }\n                    topStackedRange = useRange;\n                }\n            }\n        }\n        return resultRanges;\n    }\n}\nexport class FoldingRegion {\n    constructor(ranges, index) {\n        this.ranges = ranges;\n        this.index = index;\n    }\n    get startLineNumber() {\n        return this.ranges.getStartLineNumber(this.index);\n    }\n    get endLineNumber() {\n        return this.ranges.getEndLineNumber(this.index);\n    }\n    get regionIndex() {\n        return this.index;\n    }\n    get parentIndex() {\n        return this.ranges.getParentIndex(this.index);\n    }\n    get isCollapsed() {\n        return this.ranges.isCollapsed(this.index);\n    }\n    containedBy(range) {\n        return range.startLineNumber <= this.startLineNumber && range.endLineNumber >= this.endLineNumber;\n    }\n    containsLine(lineNumber) {\n        return this.startLineNumber <= lineNumber && lineNumber <= this.endLineNumber;\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 { findFirstIdxMonotonousOrArrLen } from '../../../../base/common/arraysFind.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Range } from '../../../common/core/range.js';\nimport { countEOL } from '../../../common/core/eolCounter.js';\nexport class HiddenRangeModel {\n    get onDidChange() { return this._updateEventEmitter.event; }\n    get hiddenRanges() { return this._hiddenRanges; }\n    constructor(model) {\n        this._updateEventEmitter = new Emitter();\n        this._hasLineChanges = false;\n        this._foldingModel = model;\n        this._foldingModelListener = model.onDidChange(_ => this.updateHiddenRanges());\n        this._hiddenRanges = [];\n        if (model.regions.length) {\n            this.updateHiddenRanges();\n        }\n    }\n    notifyChangeModelContent(e) {\n        if (this._hiddenRanges.length && !this._hasLineChanges) {\n            this._hasLineChanges = e.changes.some(change => {\n                return change.range.endLineNumber !== change.range.startLineNumber || countEOL(change.text)[0] !== 0;\n            });\n        }\n    }\n    updateHiddenRanges() {\n        let updateHiddenAreas = false;\n        const newHiddenAreas = [];\n        let i = 0; // index into hidden\n        let k = 0;\n        let lastCollapsedStart = Number.MAX_VALUE;\n        let lastCollapsedEnd = -1;\n        const ranges = this._foldingModel.regions;\n        for (; i < ranges.length; i++) {\n            if (!ranges.isCollapsed(i)) {\n                continue;\n            }\n            const startLineNumber = ranges.getStartLineNumber(i) + 1; // the first line is not hidden\n            const endLineNumber = ranges.getEndLineNumber(i);\n            if (lastCollapsedStart <= startLineNumber && endLineNumber <= lastCollapsedEnd) {\n                // ignore ranges contained in collapsed regions\n                continue;\n            }\n            if (!updateHiddenAreas && k < this._hiddenRanges.length && this._hiddenRanges[k].startLineNumber === startLineNumber && this._hiddenRanges[k].endLineNumber === endLineNumber) {\n                // reuse the old ranges\n                newHiddenAreas.push(this._hiddenRanges[k]);\n                k++;\n            }\n            else {\n                updateHiddenAreas = true;\n                newHiddenAreas.push(new Range(startLineNumber, 1, endLineNumber, 1));\n            }\n            lastCollapsedStart = startLineNumber;\n            lastCollapsedEnd = endLineNumber;\n        }\n        if (this._hasLineChanges || updateHiddenAreas || k < this._hiddenRanges.length) {\n            this.applyHiddenRanges(newHiddenAreas);\n        }\n    }\n    applyHiddenRanges(newHiddenAreas) {\n        this._hiddenRanges = newHiddenAreas;\n        this._hasLineChanges = false;\n        this._updateEventEmitter.fire(newHiddenAreas);\n    }\n    hasRanges() {\n        return this._hiddenRanges.length > 0;\n    }\n    isHidden(line) {\n        return findRange(this._hiddenRanges, line) !== null;\n    }\n    adjustSelections(selections) {\n        let hasChanges = false;\n        const editorModel = this._foldingModel.textModel;\n        let lastRange = null;\n        const adjustLine = (line) => {\n            if (!lastRange || !isInside(line, lastRange)) {\n                lastRange = findRange(this._hiddenRanges, line);\n            }\n            if (lastRange) {\n                return lastRange.startLineNumber - 1;\n            }\n            return null;\n        };\n        for (let i = 0, len = selections.length; i < len; i++) {\n            let selection = selections[i];\n            const adjustedStartLine = adjustLine(selection.startLineNumber);\n            if (adjustedStartLine) {\n                selection = selection.setStartPosition(adjustedStartLine, editorModel.getLineMaxColumn(adjustedStartLine));\n                hasChanges = true;\n            }\n            const adjustedEndLine = adjustLine(selection.endLineNumber);\n            if (adjustedEndLine) {\n                selection = selection.setEndPosition(adjustedEndLine, editorModel.getLineMaxColumn(adjustedEndLine));\n                hasChanges = true;\n            }\n            selections[i] = selection;\n        }\n        return hasChanges;\n    }\n    dispose() {\n        if (this.hiddenRanges.length > 0) {\n            this._hiddenRanges = [];\n            this._updateEventEmitter.fire(this._hiddenRanges);\n        }\n        if (this._foldingModelListener) {\n            this._foldingModelListener.dispose();\n            this._foldingModelListener = null;\n        }\n    }\n}\nfunction isInside(line, range) {\n    return line >= range.startLineNumber && line <= range.endLineNumber;\n}\nfunction findRange(ranges, line) {\n    const i = findFirstIdxMonotonousOrArrLen(ranges, r => line < r.startLineNumber) - 1;\n    if (i >= 0 && ranges[i].endLineNumber >= line) {\n        return ranges[i];\n    }\n    return null;\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 { computeIndentLevel } from '../../../common/model/utils.js';\nimport { FoldingRegions, MAX_LINE_NUMBER } from './foldingRanges.js';\nconst MAX_FOLDING_REGIONS_FOR_INDENT_DEFAULT = 5000;\nconst ID_INDENT_PROVIDER = 'indent';\nexport class IndentRangeProvider {\n    constructor(editorModel, languageConfigurationService, foldingRangesLimit) {\n        this.editorModel = editorModel;\n        this.languageConfigurationService = languageConfigurationService;\n        this.foldingRangesLimit = foldingRangesLimit;\n        this.id = ID_INDENT_PROVIDER;\n    }\n    dispose() { }\n    compute(cancelationToken) {\n        const foldingRules = this.languageConfigurationService.getLanguageConfiguration(this.editorModel.getLanguageId()).foldingRules;\n        const offSide = foldingRules && !!foldingRules.offSide;\n        const markers = foldingRules && foldingRules.markers;\n        return Promise.resolve(computeRanges(this.editorModel, offSide, markers, this.foldingRangesLimit));\n    }\n}\n// public only for testing\nexport class RangesCollector {\n    constructor(foldingRangesLimit) {\n        this._startIndexes = [];\n        this._endIndexes = [];\n        this._indentOccurrences = [];\n        this._length = 0;\n        this._foldingRangesLimit = foldingRangesLimit;\n    }\n    insertFirst(startLineNumber, endLineNumber, indent) {\n        if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\n            return;\n        }\n        const index = this._length;\n        this._startIndexes[index] = startLineNumber;\n        this._endIndexes[index] = endLineNumber;\n        this._length++;\n        if (indent < 1000) {\n            this._indentOccurrences[indent] = (this._indentOccurrences[indent] || 0) + 1;\n        }\n    }\n    toIndentRanges(model) {\n        const limit = this._foldingRangesLimit.limit;\n        if (this._length <= limit) {\n            this._foldingRangesLimit.update(this._length, false);\n            // reverse and create arrays of the exact length\n            const startIndexes = new Uint32Array(this._length);\n            const endIndexes = new Uint32Array(this._length);\n            for (let i = this._length - 1, k = 0; i >= 0; i--, k++) {\n                startIndexes[k] = this._startIndexes[i];\n                endIndexes[k] = this._endIndexes[i];\n            }\n            return new FoldingRegions(startIndexes, endIndexes);\n        }\n        else {\n            this._foldingRangesLimit.update(this._length, limit);\n            let entries = 0;\n            let maxIndent = this._indentOccurrences.length;\n            for (let i = 0; i < this._indentOccurrences.length; i++) {\n                const n = this._indentOccurrences[i];\n                if (n) {\n                    if (n + entries > limit) {\n                        maxIndent = i;\n                        break;\n                    }\n                    entries += n;\n                }\n            }\n            const tabSize = model.getOptions().tabSize;\n            // reverse and create arrays of the exact length\n            const startIndexes = new Uint32Array(limit);\n            const endIndexes = new Uint32Array(limit);\n            for (let i = this._length - 1, k = 0; i >= 0; i--) {\n                const startIndex = this._startIndexes[i];\n                const lineContent = model.getLineContent(startIndex);\n                const indent = computeIndentLevel(lineContent, tabSize);\n                if (indent < maxIndent || (indent === maxIndent && entries++ < limit)) {\n                    startIndexes[k] = startIndex;\n                    endIndexes[k] = this._endIndexes[i];\n                    k++;\n                }\n            }\n            return new FoldingRegions(startIndexes, endIndexes);\n        }\n    }\n}\nconst foldingRangesLimitDefault = {\n    limit: MAX_FOLDING_REGIONS_FOR_INDENT_DEFAULT,\n    update: () => { }\n};\nexport function computeRanges(model, offSide, markers, foldingRangesLimit = foldingRangesLimitDefault) {\n    const tabSize = model.getOptions().tabSize;\n    const result = new RangesCollector(foldingRangesLimit);\n    let pattern = undefined;\n    if (markers) {\n        pattern = new RegExp(`(${markers.start.source})|(?:${markers.end.source})`);\n    }\n    const previousRegions = [];\n    const line = model.getLineCount() + 1;\n    previousRegions.push({ indent: -1, endAbove: line, line }); // sentinel, to make sure there's at least one entry\n    for (let line = model.getLineCount(); line > 0; line--) {\n        const lineContent = model.getLineContent(line);\n        const indent = computeIndentLevel(lineContent, tabSize);\n        let previous = previousRegions[previousRegions.length - 1];\n        if (indent === -1) {\n            if (offSide) {\n                // for offSide languages, empty lines are associated to the previous block\n                // note: the next block is already written to the results, so this only\n                // impacts the end position of the block before\n                previous.endAbove = line;\n            }\n            continue; // only whitespace\n        }\n        let m;\n        if (pattern && (m = lineContent.match(pattern))) {\n            // folding pattern match\n            if (m[1]) { // start pattern match\n                // discard all regions until the folding pattern\n                let i = previousRegions.length - 1;\n                while (i > 0 && previousRegions[i].indent !== -2) {\n                    i--;\n                }\n                if (i > 0) {\n                    previousRegions.length = i + 1;\n                    previous = previousRegions[i];\n                    // new folding range from pattern, includes the end line\n                    result.insertFirst(line, previous.line, indent);\n                    previous.line = line;\n                    previous.indent = indent;\n                    previous.endAbove = line;\n                    continue;\n                }\n                else {\n                    // no end marker found, treat line as a regular line\n                }\n            }\n            else { // end pattern match\n                previousRegions.push({ indent: -2, endAbove: line, line });\n                continue;\n            }\n        }\n        if (previous.indent > indent) {\n            // discard all regions with larger indent\n            do {\n                previousRegions.pop();\n                previous = previousRegions[previousRegions.length - 1];\n            } while (previous.indent > indent);\n            // new folding range\n            const endLineNumber = previous.endAbove - 1;\n            if (endLineNumber - line >= 1) { // needs at east size 1\n                result.insertFirst(line, endLineNumber, indent);\n            }\n        }\n        if (previous.indent === indent) {\n            previous.endAbove = line;\n        }\n        else { // previous.indent < indent\n            // new region with a bigger indent\n            previousRegions.push({ indent, endAbove: line, line });\n        }\n    }\n    return result.toIndentRanges(model);\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 { Codicon } from '../../../../base/common/codicons.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { localize } from '../../../../nls.js';\nimport { editorSelectionBackground, iconForeground, registerColor, transparent } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nconst foldBackground = registerColor('editor.foldBackground', { light: transparent(editorSelectionBackground, 0.3), dark: transparent(editorSelectionBackground, 0.3), hcDark: null, hcLight: null }, localize('foldBackgroundBackground', \"Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations.\"), true);\nregisterColor('editorGutter.foldingControlForeground', { dark: iconForeground, light: iconForeground, hcDark: iconForeground, hcLight: iconForeground }, localize('editorGutter.foldingControlForeground', 'Color of the folding control in the editor gutter.'));\nexport const foldingExpandedIcon = registerIcon('folding-expanded', Codicon.chevronDown, localize('foldingExpandedIcon', 'Icon for expanded ranges in the editor glyph margin.'));\nexport const foldingCollapsedIcon = registerIcon('folding-collapsed', Codicon.chevronRight, localize('foldingCollapsedIcon', 'Icon for collapsed ranges in the editor glyph margin.'));\nexport const foldingManualCollapsedIcon = registerIcon('folding-manual-collapsed', foldingCollapsedIcon, localize('foldingManualCollapedIcon', 'Icon for manually collapsed ranges in the editor glyph margin.'));\nexport const foldingManualExpandedIcon = registerIcon('folding-manual-expanded', foldingExpandedIcon, localize('foldingManualExpandedIcon', 'Icon for manually expanded ranges in the editor glyph margin.'));\nconst foldedBackgroundMinimap = { color: themeColorFromId(foldBackground), position: 1 /* MinimapPosition.Inline */ };\nconst collapsed = localize('linesCollapsed', \"Click to expand the range.\");\nconst expanded = localize('linesExpanded', \"Click to collapse the range.\");\nexport class FoldingDecorationProvider {\n    constructor(editor) {\n        this.editor = editor;\n        this.showFoldingControls = 'mouseover';\n        this.showFoldingHighlights = true;\n    }\n    getDecorationOption(isCollapsed, isHidden, isManual) {\n        if (isHidden) { // is inside another collapsed region\n            return FoldingDecorationProvider.HIDDEN_RANGE_DECORATION;\n        }\n        if (this.showFoldingControls === 'never') {\n            if (isCollapsed) {\n                return this.showFoldingHighlights ? FoldingDecorationProvider.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION : FoldingDecorationProvider.NO_CONTROLS_COLLAPSED_RANGE_DECORATION;\n            }\n            return FoldingDecorationProvider.NO_CONTROLS_EXPANDED_RANGE_DECORATION;\n        }\n        if (isCollapsed) {\n            return isManual ?\n                (this.showFoldingHighlights ? FoldingDecorationProvider.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION : FoldingDecorationProvider.MANUALLY_COLLAPSED_VISUAL_DECORATION)\n                : (this.showFoldingHighlights ? FoldingDecorationProvider.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION : FoldingDecorationProvider.COLLAPSED_VISUAL_DECORATION);\n        }\n        else if (this.showFoldingControls === 'mouseover') {\n            return isManual ? FoldingDecorationProvider.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION : FoldingDecorationProvider.EXPANDED_AUTO_HIDE_VISUAL_DECORATION;\n        }\n        else {\n            return isManual ? FoldingDecorationProvider.MANUALLY_EXPANDED_VISUAL_DECORATION : FoldingDecorationProvider.EXPANDED_VISUAL_DECORATION;\n        }\n    }\n    changeDecorations(callback) {\n        return this.editor.changeDecorations(callback);\n    }\n    removeDecorations(decorationIds) {\n        this.editor.removeDecorations(decorationIds);\n    }\n}\nFoldingDecorationProvider.COLLAPSED_VISUAL_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-collapsed-visual-decoration',\n    stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n    afterContentClassName: 'inline-folded',\n    isWholeLine: true,\n    linesDecorationsTooltip: collapsed,\n    firstLineDecorationClassName: ThemeIcon.asClassName(foldingCollapsedIcon),\n});\nFoldingDecorationProvider.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-collapsed-highlighted-visual-decoration',\n    stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n    afterContentClassName: 'inline-folded',\n    className: 'folded-background',\n    minimap: foldedBackgroundMinimap,\n    isWholeLine: true,\n    linesDecorationsTooltip: collapsed,\n    firstLineDecorationClassName: ThemeIcon.asClassName(foldingCollapsedIcon)\n});\nFoldingDecorationProvider.MANUALLY_COLLAPSED_VISUAL_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-manually-collapsed-visual-decoration',\n    stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n    afterContentClassName: 'inline-folded',\n    isWholeLine: true,\n    linesDecorationsTooltip: collapsed,\n    firstLineDecorationClassName: ThemeIcon.asClassName(foldingManualCollapsedIcon)\n});\nFoldingDecorationProvider.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-manually-collapsed-highlighted-visual-decoration',\n    stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n    afterContentClassName: 'inline-folded',\n    className: 'folded-background',\n    minimap: foldedBackgroundMinimap,\n    isWholeLine: true,\n    linesDecorationsTooltip: collapsed,\n    firstLineDecorationClassName: ThemeIcon.asClassName(foldingManualCollapsedIcon)\n});\nFoldingDecorationProvider.NO_CONTROLS_COLLAPSED_RANGE_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-no-controls-range-decoration',\n    stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n    afterContentClassName: 'inline-folded',\n    isWholeLine: true,\n    linesDecorationsTooltip: collapsed,\n});\nFoldingDecorationProvider.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-no-controls-range-decoration',\n    stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n    afterContentClassName: 'inline-folded',\n    className: 'folded-background',\n    minimap: foldedBackgroundMinimap,\n    isWholeLine: true,\n    linesDecorationsTooltip: collapsed,\n});\nFoldingDecorationProvider.EXPANDED_VISUAL_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-expanded-visual-decoration',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    isWholeLine: true,\n    firstLineDecorationClassName: 'alwaysShowFoldIcons ' + ThemeIcon.asClassName(foldingExpandedIcon),\n    linesDecorationsTooltip: expanded,\n});\nFoldingDecorationProvider.EXPANDED_AUTO_HIDE_VISUAL_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-expanded-auto-hide-visual-decoration',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    isWholeLine: true,\n    firstLineDecorationClassName: ThemeIcon.asClassName(foldingExpandedIcon),\n    linesDecorationsTooltip: expanded,\n});\nFoldingDecorationProvider.MANUALLY_EXPANDED_VISUAL_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-manually-expanded-visual-decoration',\n    stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n    isWholeLine: true,\n    firstLineDecorationClassName: 'alwaysShowFoldIcons ' + ThemeIcon.asClassName(foldingManualExpandedIcon),\n    linesDecorationsTooltip: expanded,\n});\nFoldingDecorationProvider.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-manually-expanded-auto-hide-visual-decoration',\n    stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n    isWholeLine: true,\n    firstLineDecorationClassName: ThemeIcon.asClassName(foldingManualExpandedIcon),\n    linesDecorationsTooltip: expanded,\n});\nFoldingDecorationProvider.NO_CONTROLS_EXPANDED_RANGE_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-no-controls-range-decoration',\n    stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n    isWholeLine: true\n});\nFoldingDecorationProvider.HIDDEN_RANGE_DECORATION = ModelDecorationOptions.register({\n    description: 'folding-hidden-range-decoration',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */\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 { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { FoldingRegions, MAX_LINE_NUMBER } from './foldingRanges.js';\nconst foldingContext = {};\nconst ID_SYNTAX_PROVIDER = 'syntax';\nexport class SyntaxRangeProvider {\n    constructor(editorModel, providers, handleFoldingRangesChange, foldingRangesLimit, fallbackRangeProvider // used when all providers return null\n    ) {\n        this.editorModel = editorModel;\n        this.providers = providers;\n        this.handleFoldingRangesChange = handleFoldingRangesChange;\n        this.foldingRangesLimit = foldingRangesLimit;\n        this.fallbackRangeProvider = fallbackRangeProvider;\n        this.id = ID_SYNTAX_PROVIDER;\n        this.disposables = new DisposableStore();\n        if (fallbackRangeProvider) {\n            this.disposables.add(fallbackRangeProvider);\n        }\n        for (const provider of providers) {\n            if (typeof provider.onDidChange === 'function') {\n                this.disposables.add(provider.onDidChange(handleFoldingRangesChange));\n            }\n        }\n    }\n    compute(cancellationToken) {\n        return collectSyntaxRanges(this.providers, this.editorModel, cancellationToken).then(ranges => {\n            var _a, _b;\n            if (ranges) {\n                const res = sanitizeRanges(ranges, this.foldingRangesLimit);\n                return res;\n            }\n            return (_b = (_a = this.fallbackRangeProvider) === null || _a === void 0 ? void 0 : _a.compute(cancellationToken)) !== null && _b !== void 0 ? _b : null;\n        });\n    }\n    dispose() {\n        this.disposables.dispose();\n    }\n}\nfunction collectSyntaxRanges(providers, model, cancellationToken) {\n    let rangeData = null;\n    const promises = providers.map((provider, i) => {\n        return Promise.resolve(provider.provideFoldingRanges(model, foldingContext, cancellationToken)).then(ranges => {\n            if (cancellationToken.isCancellationRequested) {\n                return;\n            }\n            if (Array.isArray(ranges)) {\n                if (!Array.isArray(rangeData)) {\n                    rangeData = [];\n                }\n                const nLines = model.getLineCount();\n                for (const r of ranges) {\n                    if (r.start > 0 && r.end > r.start && r.end <= nLines) {\n                        rangeData.push({ start: r.start, end: r.end, rank: i, kind: r.kind });\n                    }\n                }\n            }\n        }, onUnexpectedExternalError);\n    });\n    return Promise.all(promises).then(_ => {\n        return rangeData;\n    });\n}\nclass RangesCollector {\n    constructor(foldingRangesLimit) {\n        this._startIndexes = [];\n        this._endIndexes = [];\n        this._nestingLevels = [];\n        this._nestingLevelCounts = [];\n        this._types = [];\n        this._length = 0;\n        this._foldingRangesLimit = foldingRangesLimit;\n    }\n    add(startLineNumber, endLineNumber, type, nestingLevel) {\n        if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\n            return;\n        }\n        const index = this._length;\n        this._startIndexes[index] = startLineNumber;\n        this._endIndexes[index] = endLineNumber;\n        this._nestingLevels[index] = nestingLevel;\n        this._types[index] = type;\n        this._length++;\n        if (nestingLevel < 30) {\n            this._nestingLevelCounts[nestingLevel] = (this._nestingLevelCounts[nestingLevel] || 0) + 1;\n        }\n    }\n    toIndentRanges() {\n        const limit = this._foldingRangesLimit.limit;\n        if (this._length <= limit) {\n            this._foldingRangesLimit.update(this._length, false);\n            const startIndexes = new Uint32Array(this._length);\n            const endIndexes = new Uint32Array(this._length);\n            for (let i = 0; i < this._length; i++) {\n                startIndexes[i] = this._startIndexes[i];\n                endIndexes[i] = this._endIndexes[i];\n            }\n            return new FoldingRegions(startIndexes, endIndexes, this._types);\n        }\n        else {\n            this._foldingRangesLimit.update(this._length, limit);\n            let entries = 0;\n            let maxLevel = this._nestingLevelCounts.length;\n            for (let i = 0; i < this._nestingLevelCounts.length; i++) {\n                const n = this._nestingLevelCounts[i];\n                if (n) {\n                    if (n + entries > limit) {\n                        maxLevel = i;\n                        break;\n                    }\n                    entries += n;\n                }\n            }\n            const startIndexes = new Uint32Array(limit);\n            const endIndexes = new Uint32Array(limit);\n            const types = [];\n            for (let i = 0, k = 0; i < this._length; i++) {\n                const level = this._nestingLevels[i];\n                if (level < maxLevel || (level === maxLevel && entries++ < limit)) {\n                    startIndexes[k] = this._startIndexes[i];\n                    endIndexes[k] = this._endIndexes[i];\n                    types[k] = this._types[i];\n                    k++;\n                }\n            }\n            return new FoldingRegions(startIndexes, endIndexes, types);\n        }\n    }\n}\nexport function sanitizeRanges(rangeData, foldingRangesLimit) {\n    const sorted = rangeData.sort((d1, d2) => {\n        let diff = d1.start - d2.start;\n        if (diff === 0) {\n            diff = d1.rank - d2.rank;\n        }\n        return diff;\n    });\n    const collector = new RangesCollector(foldingRangesLimit);\n    let top = undefined;\n    const previous = [];\n    for (const entry of sorted) {\n        if (!top) {\n            top = entry;\n            collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\n        }\n        else {\n            if (entry.start > top.start) {\n                if (entry.end <= top.end) {\n                    previous.push(top);\n                    top = entry;\n                    collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\n                }\n                else {\n                    if (entry.start > top.end) {\n                        do {\n                            top = previous.pop();\n                        } while (top && entry.start > top.end);\n                        if (top) {\n                            previous.push(top);\n                        }\n                        top = entry;\n                    }\n                    collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\n                }\n            }\n        }\n    }\n    return collector.toIndentRanges();\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 { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorZoom } from '../../../common/config/editorZoom.js';\nimport * as nls from '../../../../nls.js';\nclass EditorFontZoomIn extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.fontZoomIn',\n            label: nls.localize('EditorFontZoomIn.label', \"Increase Editor Font Size\"),\n            alias: 'Increase Editor Font Size',\n            precondition: undefined\n        });\n    }\n    run(accessor, editor) {\n        EditorZoom.setZoomLevel(EditorZoom.getZoomLevel() + 1);\n    }\n}\nclass EditorFontZoomOut extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.fontZoomOut',\n            label: nls.localize('EditorFontZoomOut.label', \"Decrease Editor Font Size\"),\n            alias: 'Decrease Editor Font Size',\n            precondition: undefined\n        });\n    }\n    run(accessor, editor) {\n        EditorZoom.setZoomLevel(EditorZoom.getZoomLevel() - 1);\n    }\n}\nclass EditorFontZoomReset extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.fontZoomReset',\n            label: nls.localize('EditorFontZoomReset.label', \"Reset Editor Font Size\"),\n            alias: 'Reset Editor Font Size',\n            precondition: undefined\n        });\n    }\n    run(accessor, editor) {\n        EditorZoom.setZoomLevel(0);\n    }\n}\nregisterEditorAction(EditorFontZoomIn);\nregisterEditorAction(EditorFontZoomOut);\nregisterEditorAction(EditorFontZoomReset);\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 { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { CharacterSet } from '../../../common/core/characterClassifier.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { formatDocumentRangesWithSelectedProvider, formatDocumentWithSelectedProvider, getOnTypeFormattingEdits } from './format.js';\nimport { FormattingEdit } from './formattingEdit.js';\nimport * as nls from '../../../../nls.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IEditorProgressService, Progress } from '../../../../platform/progress/common/progress.js';\nlet FormatOnType = class FormatOnType {\n    constructor(_editor, _languageFeaturesService, _workerService, _accessibilitySignalService) {\n        this._editor = _editor;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._workerService = _workerService;\n        this._accessibilitySignalService = _accessibilitySignalService;\n        this._disposables = new DisposableStore();\n        this._sessionDisposables = new DisposableStore();\n        this._disposables.add(_languageFeaturesService.onTypeFormattingEditProvider.onDidChange(this._update, this));\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(56 /* EditorOption.formatOnType */)) {\n                this._update();\n            }\n        }));\n        this._update();\n    }\n    dispose() {\n        this._disposables.dispose();\n        this._sessionDisposables.dispose();\n    }\n    _update() {\n        // clean up\n        this._sessionDisposables.clear();\n        // we are disabled\n        if (!this._editor.getOption(56 /* EditorOption.formatOnType */)) {\n            return;\n        }\n        // no model\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const model = this._editor.getModel();\n        // no support\n        const [support] = this._languageFeaturesService.onTypeFormattingEditProvider.ordered(model);\n        if (!support || !support.autoFormatTriggerCharacters) {\n            return;\n        }\n        // register typing listeners that will trigger the format\n        const triggerChars = new CharacterSet();\n        for (const ch of support.autoFormatTriggerCharacters) {\n            triggerChars.add(ch.charCodeAt(0));\n        }\n        this._sessionDisposables.add(this._editor.onDidType((text) => {\n            const lastCharCode = text.charCodeAt(text.length - 1);\n            if (triggerChars.has(lastCharCode)) {\n                this._trigger(String.fromCharCode(lastCharCode));\n            }\n        }));\n    }\n    _trigger(ch) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        if (this._editor.getSelections().length > 1 || !this._editor.getSelection().isEmpty()) {\n            return;\n        }\n        const model = this._editor.getModel();\n        const position = this._editor.getPosition();\n        const cts = new CancellationTokenSource();\n        // install a listener that checks if edits happens before the\n        // position on which we format right now. If so, we won't\n        // apply the format edits\n        const unbind = this._editor.onDidChangeModelContent((e) => {\n            if (e.isFlush) {\n                // a model.setValue() was called\n                // cancel only once\n                cts.cancel();\n                unbind.dispose();\n                return;\n            }\n            for (let i = 0, len = e.changes.length; i < len; i++) {\n                const change = e.changes[i];\n                if (change.range.endLineNumber <= position.lineNumber) {\n                    // cancel only once\n                    cts.cancel();\n                    unbind.dispose();\n                    return;\n                }\n            }\n        });\n        getOnTypeFormattingEdits(this._workerService, this._languageFeaturesService, model, position, ch, model.getFormattingOptions(), cts.token).then(edits => {\n            if (cts.token.isCancellationRequested) {\n                return;\n            }\n            if (isNonEmptyArray(edits)) {\n                this._accessibilitySignalService.playSignal(AccessibilitySignal.format, { userGesture: false });\n                FormattingEdit.execute(this._editor, edits, true);\n            }\n        }).finally(() => {\n            unbind.dispose();\n        });\n    }\n};\nFormatOnType.ID = 'editor.contrib.autoFormat';\nFormatOnType = __decorate([\n    __param(1, ILanguageFeaturesService),\n    __param(2, IEditorWorkerService),\n    __param(3, IAccessibilitySignalService)\n], FormatOnType);\nexport { FormatOnType };\nlet FormatOnPaste = class FormatOnPaste {\n    constructor(editor, _languageFeaturesService, _instantiationService) {\n        this.editor = editor;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._instantiationService = _instantiationService;\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        this._callOnDispose.add(_languageFeaturesService.documentRangeFormattingEditProvider.onDidChange(this._update, this));\n    }\n    dispose() {\n        this._callOnDispose.dispose();\n        this._callOnModel.dispose();\n    }\n    _update() {\n        // clean up\n        this._callOnModel.clear();\n        // we are disabled\n        if (!this.editor.getOption(55 /* EditorOption.formatOnPaste */)) {\n            return;\n        }\n        // no model\n        if (!this.editor.hasModel()) {\n            return;\n        }\n        // no formatter\n        if (!this._languageFeaturesService.documentRangeFormattingEditProvider.has(this.editor.getModel())) {\n            return;\n        }\n        this._callOnModel.add(this.editor.onDidPaste(({ range }) => this._trigger(range)));\n    }\n    _trigger(range) {\n        if (!this.editor.hasModel()) {\n            return;\n        }\n        if (this.editor.getSelections().length > 1) {\n            return;\n        }\n        this._instantiationService.invokeFunction(formatDocumentRangesWithSelectedProvider, this.editor, range, 2 /* FormattingMode.Silent */, Progress.None, CancellationToken.None, false).catch(onUnexpectedError);\n    }\n};\nFormatOnPaste.ID = 'editor.contrib.formatOnPaste';\nFormatOnPaste = __decorate([\n    __param(1, ILanguageFeaturesService),\n    __param(2, IInstantiationService)\n], FormatOnPaste);\nclass FormatDocumentAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.formatDocument',\n            label: nls.localize('formatDocument.label', \"Format Document\"),\n            alias: 'Format Document',\n            precondition: ContextKeyExpr.and(EditorContextKeys.notInCompositeEditor, EditorContextKeys.writable, EditorContextKeys.hasDocumentFormattingProvider),\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 36 /* KeyCode.KeyF */,\n                linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 39 /* KeyCode.KeyI */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            contextMenuOpts: {\n                group: '1_modification',\n                order: 1.3\n            }\n        });\n    }\n    async run(accessor, editor) {\n        if (editor.hasModel()) {\n            const instaService = accessor.get(IInstantiationService);\n            const progressService = accessor.get(IEditorProgressService);\n            await progressService.showWhile(instaService.invokeFunction(formatDocumentWithSelectedProvider, editor, 1 /* FormattingMode.Explicit */, Progress.None, CancellationToken.None, true), 250);\n        }\n    }\n}\nclass FormatSelectionAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.formatSelection',\n            label: nls.localize('formatSelection.label', \"Format Selection\"),\n            alias: 'Format Selection',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasDocumentSelectionFormattingProvider),\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 36 /* KeyCode.KeyF */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            contextMenuOpts: {\n                when: EditorContextKeys.hasNonEmptySelection,\n                group: '1_modification',\n                order: 1.31\n            }\n        });\n    }\n    async run(accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const instaService = accessor.get(IInstantiationService);\n        const model = editor.getModel();\n        const ranges = editor.getSelections().map(range => {\n            return range.isEmpty()\n                ? new Range(range.startLineNumber, 1, range.startLineNumber, model.getLineMaxColumn(range.startLineNumber))\n                : range;\n        });\n        const progressService = accessor.get(IEditorProgressService);\n        await progressService.showWhile(instaService.invokeFunction(formatDocumentRangesWithSelectedProvider, editor, ranges, 1 /* FormattingMode.Explicit */, Progress.None, CancellationToken.None, true), 250);\n    }\n}\nregisterEditorContribution(FormatOnType.ID, FormatOnType, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nregisterEditorContribution(FormatOnPaste.ID, FormatOnPaste, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nregisterEditorAction(FormatDocumentAction);\nregisterEditorAction(FormatSelectionAction);\n// this is the old format action that does both (format document OR format selection)\n// and we keep it here such that existing keybinding configurations etc will still work\nCommandsRegistry.registerCommand('editor.action.format', async (accessor) => {\n    const editor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n    if (!editor || !editor.hasModel()) {\n        return;\n    }\n    const commandService = accessor.get(ICommandService);\n    if (editor.getSelection().isEmpty()) {\n        await commandService.executeCommand('editor.action.formatDocument');\n    }\n    else {\n        await commandService.executeCommand('editor.action.formatSelection');\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 { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { IOutlineModelService } from './outlineModel.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nCommandsRegistry.registerCommand('_executeDocumentSymbolProvider', async function (accessor, ...args) {\n    const [resource] = args;\n    assertType(URI.isUri(resource));\n    const outlineService = accessor.get(IOutlineModelService);\n    const modelService = accessor.get(ITextModelService);\n    const reference = await modelService.createModelReference(resource);\n    try {\n        return (await outlineService.getOrCreate(reference.object.textEditorModel, CancellationToken.None)).getTopLevelSymbols();\n    }\n    finally {\n        reference.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 { registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { TriggerInlineSuggestionAction, ShowNextInlineSuggestionAction, ShowPreviousInlineSuggestionAction, AcceptNextWordOfInlineCompletion, AcceptInlineCompletion, HideInlineCompletion, ToggleAlwaysShowInlineSuggestionToolbar, AcceptNextLineOfInlineCompletion } from './commands.js';\nimport { InlineCompletionsHoverParticipant } from './hoverParticipant.js';\nimport { InlineCompletionsController } from './inlineCompletionsController.js';\nimport { registerAction2 } from '../../../../platform/actions/common/actions.js';\nregisterEditorContribution(InlineCompletionsController.ID, InlineCompletionsController, 3 /* EditorContributionInstantiation.Eventually */);\nregisterEditorAction(TriggerInlineSuggestionAction);\nregisterEditorAction(ShowNextInlineSuggestionAction);\nregisterEditorAction(ShowPreviousInlineSuggestionAction);\nregisterEditorAction(AcceptNextWordOfInlineCompletion);\nregisterEditorAction(AcceptNextLineOfInlineCompletion);\nregisterEditorAction(AcceptInlineCompletion);\nregisterEditorAction(HideInlineCompletion);\nregisterAction2(ToggleAlwaysShowInlineSuggestionToolbar);\nHoverParticipantRegistry.register(InlineCompletionsHoverParticipant);\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 { transaction } from '../../../../base/common/observable.js';\nimport { asyncTransaction } from '../../../../base/common/observableInternal/base.js';\nimport { EditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { showNextInlineSuggestionActionId, showPreviousInlineSuggestionActionId, inlineSuggestCommitId } from './commandIds.js';\nimport { InlineCompletionContextKeys } from './inlineCompletionContextKeys.js';\nimport { InlineCompletionsController } from './inlineCompletionsController.js';\nimport { Context as SuggestContext } from '../../suggest/browser/suggest.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, Action2 } from '../../../../platform/actions/common/actions.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nexport class ShowNextInlineSuggestionAction extends EditorAction {\n    constructor() {\n        super({\n            id: ShowNextInlineSuggestionAction.ID,\n            label: nls.localize('action.inlineSuggest.showNext', \"Show Next Inline Suggestion\"),\n            alias: 'Show Next Inline Suggestion',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, InlineCompletionContextKeys.inlineSuggestionVisible),\n            kbOpts: {\n                weight: 100,\n                primary: 512 /* KeyMod.Alt */ | 94 /* KeyCode.BracketRight */,\n            },\n        });\n    }\n    async run(accessor, editor) {\n        var _a;\n        const controller = InlineCompletionsController.get(editor);\n        (_a = controller === null || controller === void 0 ? void 0 : controller.model.get()) === null || _a === void 0 ? void 0 : _a.next();\n    }\n}\nShowNextInlineSuggestionAction.ID = showNextInlineSuggestionActionId;\nexport class ShowPreviousInlineSuggestionAction extends EditorAction {\n    constructor() {\n        super({\n            id: ShowPreviousInlineSuggestionAction.ID,\n            label: nls.localize('action.inlineSuggest.showPrevious', \"Show Previous Inline Suggestion\"),\n            alias: 'Show Previous Inline Suggestion',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, InlineCompletionContextKeys.inlineSuggestionVisible),\n            kbOpts: {\n                weight: 100,\n                primary: 512 /* KeyMod.Alt */ | 92 /* KeyCode.BracketLeft */,\n            },\n        });\n    }\n    async run(accessor, editor) {\n        var _a;\n        const controller = InlineCompletionsController.get(editor);\n        (_a = controller === null || controller === void 0 ? void 0 : controller.model.get()) === null || _a === void 0 ? void 0 : _a.previous();\n    }\n}\nShowPreviousInlineSuggestionAction.ID = showPreviousInlineSuggestionActionId;\nexport class TriggerInlineSuggestionAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.inlineSuggest.trigger',\n            label: nls.localize('action.inlineSuggest.trigger', \"Trigger Inline Suggestion\"),\n            alias: 'Trigger Inline Suggestion',\n            precondition: EditorContextKeys.writable\n        });\n    }\n    async run(accessor, editor) {\n        const controller = InlineCompletionsController.get(editor);\n        await asyncTransaction(async (tx) => {\n            var _a;\n            /** @description triggerExplicitly from command */\n            await ((_a = controller === null || controller === void 0 ? void 0 : controller.model.get()) === null || _a === void 0 ? void 0 : _a.triggerExplicitly(tx));\n            controller === null || controller === void 0 ? void 0 : controller.playAccessibilitySignal(tx);\n        });\n    }\n}\nexport class AcceptNextWordOfInlineCompletion extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.inlineSuggest.acceptNextWord',\n            label: nls.localize('action.inlineSuggest.acceptNextWord', \"Accept Next Word Of Inline Suggestion\"),\n            alias: 'Accept Next Word Of Inline Suggestion',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, InlineCompletionContextKeys.inlineSuggestionVisible),\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */ + 1,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 17 /* KeyCode.RightArrow */,\n                kbExpr: ContextKeyExpr.and(EditorContextKeys.writable, InlineCompletionContextKeys.inlineSuggestionVisible),\n            },\n            menuOpts: [{\n                    menuId: MenuId.InlineSuggestionToolbar,\n                    title: nls.localize('acceptWord', 'Accept Word'),\n                    group: 'primary',\n                    order: 2,\n                }],\n        });\n    }\n    async run(accessor, editor) {\n        var _a;\n        const controller = InlineCompletionsController.get(editor);\n        await ((_a = controller === null || controller === void 0 ? void 0 : controller.model.get()) === null || _a === void 0 ? void 0 : _a.acceptNextWord(controller.editor));\n    }\n}\nexport class AcceptNextLineOfInlineCompletion extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.inlineSuggest.acceptNextLine',\n            label: nls.localize('action.inlineSuggest.acceptNextLine', \"Accept Next Line Of Inline Suggestion\"),\n            alias: 'Accept Next Line Of Inline Suggestion',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, InlineCompletionContextKeys.inlineSuggestionVisible),\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */ + 1,\n            },\n            menuOpts: [{\n                    menuId: MenuId.InlineSuggestionToolbar,\n                    title: nls.localize('acceptLine', 'Accept Line'),\n                    group: 'secondary',\n                    order: 2,\n                }],\n        });\n    }\n    async run(accessor, editor) {\n        var _a;\n        const controller = InlineCompletionsController.get(editor);\n        await ((_a = controller === null || controller === void 0 ? void 0 : controller.model.get()) === null || _a === void 0 ? void 0 : _a.acceptNextLine(controller.editor));\n    }\n}\nexport class AcceptInlineCompletion extends EditorAction {\n    constructor() {\n        super({\n            id: inlineSuggestCommitId,\n            label: nls.localize('action.inlineSuggest.accept', \"Accept Inline Suggestion\"),\n            alias: 'Accept Inline Suggestion',\n            precondition: InlineCompletionContextKeys.inlineSuggestionVisible,\n            menuOpts: [{\n                    menuId: MenuId.InlineSuggestionToolbar,\n                    title: nls.localize('accept', \"Accept\"),\n                    group: 'primary',\n                    order: 1,\n                }],\n            kbOpts: {\n                primary: 2 /* KeyCode.Tab */,\n                weight: 200,\n                kbExpr: ContextKeyExpr.and(InlineCompletionContextKeys.inlineSuggestionVisible, EditorContextKeys.tabMovesFocus.toNegated(), InlineCompletionContextKeys.inlineSuggestionHasIndentationLessThanTabSize, SuggestContext.Visible.toNegated(), EditorContextKeys.hoverFocused.toNegated()),\n            }\n        });\n    }\n    async run(accessor, editor) {\n        var _a;\n        const controller = InlineCompletionsController.get(editor);\n        if (controller) {\n            (_a = controller.model.get()) === null || _a === void 0 ? void 0 : _a.accept(controller.editor);\n            controller.editor.focus();\n        }\n    }\n}\nexport class HideInlineCompletion extends EditorAction {\n    constructor() {\n        super({\n            id: HideInlineCompletion.ID,\n            label: nls.localize('action.inlineSuggest.hide', \"Hide Inline Suggestion\"),\n            alias: 'Hide Inline Suggestion',\n            precondition: InlineCompletionContextKeys.inlineSuggestionVisible,\n            kbOpts: {\n                weight: 100,\n                primary: 9 /* KeyCode.Escape */,\n            }\n        });\n    }\n    async run(accessor, editor) {\n        const controller = InlineCompletionsController.get(editor);\n        transaction(tx => {\n            var _a;\n            (_a = controller === null || controller === void 0 ? void 0 : controller.model.get()) === null || _a === void 0 ? void 0 : _a.stop(tx);\n        });\n    }\n}\nHideInlineCompletion.ID = 'editor.action.inlineSuggest.hide';\nexport class ToggleAlwaysShowInlineSuggestionToolbar extends Action2 {\n    constructor() {\n        super({\n            id: ToggleAlwaysShowInlineSuggestionToolbar.ID,\n            title: nls.localize('action.inlineSuggest.alwaysShowToolbar', \"Always Show Toolbar\"),\n            f1: false,\n            precondition: undefined,\n            menu: [{\n                    id: MenuId.InlineSuggestionToolbar,\n                    group: 'secondary',\n                    order: 10,\n                }],\n            toggled: ContextKeyExpr.equals('config.editor.inlineSuggest.showToolbar', 'always')\n        });\n    }\n    async run(accessor, editor) {\n        const configService = accessor.get(IConfigurationService);\n        const currentValue = configService.getValue('editor.inlineSuggest.showToolbar');\n        const newValue = currentValue === 'always' ? 'onHover' : 'always';\n        configService.updateValue('editor.inlineSuggest.showToolbar', newValue);\n    }\n}\nToggleAlwaysShowInlineSuggestionToolbar.ID = 'editor.action.inlineSuggest.toggleAlwaysShowToolbar';\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 { autorun } from '../../../../base/common/observable.js';\nimport { firstNonWhitespaceIndex } from '../../../../base/common/strings.js';\nimport { CursorColumns } from '../../../common/core/cursorColumns.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { localize } from '../../../../nls.js';\nexport class InlineCompletionContextKeys extends Disposable {\n    constructor(contextKeyService, model) {\n        super();\n        this.contextKeyService = contextKeyService;\n        this.model = model;\n        this.inlineCompletionVisible = InlineCompletionContextKeys.inlineSuggestionVisible.bindTo(this.contextKeyService);\n        this.inlineCompletionSuggestsIndentation = InlineCompletionContextKeys.inlineSuggestionHasIndentation.bindTo(this.contextKeyService);\n        this.inlineCompletionSuggestsIndentationLessThanTabSize = InlineCompletionContextKeys.inlineSuggestionHasIndentationLessThanTabSize.bindTo(this.contextKeyService);\n        this.suppressSuggestions = InlineCompletionContextKeys.suppressSuggestions.bindTo(this.contextKeyService);\n        this._register(autorun(reader => {\n            /** @description update context key: inlineCompletionVisible, suppressSuggestions */\n            const model = this.model.read(reader);\n            const state = model === null || model === void 0 ? void 0 : model.state.read(reader);\n            const isInlineCompletionVisible = !!(state === null || state === void 0 ? void 0 : state.inlineCompletion) && (state === null || state === void 0 ? void 0 : state.primaryGhostText) !== undefined && !(state === null || state === void 0 ? void 0 : state.primaryGhostText.isEmpty());\n            this.inlineCompletionVisible.set(isInlineCompletionVisible);\n            if ((state === null || state === void 0 ? void 0 : state.primaryGhostText) && (state === null || state === void 0 ? void 0 : state.inlineCompletion)) {\n                this.suppressSuggestions.set(state.inlineCompletion.inlineCompletion.source.inlineCompletions.suppressSuggestions);\n            }\n        }));\n        this._register(autorun(reader => {\n            /** @description update context key: inlineCompletionSuggestsIndentation, inlineCompletionSuggestsIndentationLessThanTabSize */\n            const model = this.model.read(reader);\n            let startsWithIndentation = false;\n            let startsWithIndentationLessThanTabSize = true;\n            const ghostText = model === null || model === void 0 ? void 0 : model.primaryGhostText.read(reader);\n            if (!!(model === null || model === void 0 ? void 0 : model.selectedSuggestItem) && ghostText && ghostText.parts.length > 0) {\n                const { column, lines } = ghostText.parts[0];\n                const firstLine = lines[0];\n                const indentationEndColumn = model.textModel.getLineIndentColumn(ghostText.lineNumber);\n                const inIndentation = column <= indentationEndColumn;\n                if (inIndentation) {\n                    let firstNonWsIdx = firstNonWhitespaceIndex(firstLine);\n                    if (firstNonWsIdx === -1) {\n                        firstNonWsIdx = firstLine.length - 1;\n                    }\n                    startsWithIndentation = firstNonWsIdx > 0;\n                    const tabSize = model.textModel.getOptions().tabSize;\n                    const visibleColumnIndentation = CursorColumns.visibleColumnFromColumn(firstLine, firstNonWsIdx + 1, tabSize);\n                    startsWithIndentationLessThanTabSize = visibleColumnIndentation < tabSize;\n                }\n            }\n            this.inlineCompletionSuggestsIndentation.set(startsWithIndentation);\n            this.inlineCompletionSuggestsIndentationLessThanTabSize.set(startsWithIndentationLessThanTabSize);\n        }));\n    }\n}\nInlineCompletionContextKeys.inlineSuggestionVisible = new RawContextKey('inlineSuggestionVisible', false, localize('inlineSuggestionVisible', \"Whether an inline suggestion is visible\"));\nInlineCompletionContextKeys.inlineSuggestionHasIndentation = new RawContextKey('inlineSuggestionHasIndentation', false, localize('inlineSuggestionHasIndentation', \"Whether the inline suggestion starts with whitespace\"));\nInlineCompletionContextKeys.inlineSuggestionHasIndentationLessThanTabSize = new RawContextKey('inlineSuggestionHasIndentationLessThanTabSize', true, localize('inlineSuggestionHasIndentationLessThanTabSize', \"Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab\"));\nInlineCompletionContextKeys.suppressSuggestions = new RawContextKey('inlineSuggestionSuppressSuggestions', undefined, localize('suppressSuggestions', \"Whether suggestions should be suppressed for the current suggestion\"));\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 InlineCompletionsController_1;\nimport { createStyleSheet2 } from '../../../../base/browser/dom.js';\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { timeout } from '../../../../base/common/async.js';\nimport { cancelOnDispose } from '../../../../base/common/cancellation.js';\nimport { itemEquals, itemsEquals } from '../../../../base/common/equals.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { autorun, autorunHandleChanges, constObservable, derived, disposableObservableValue, observableFromEvent, observableSignal, observableValue, transaction, waitForState } from '../../../../base/common/observable.js';\nimport { observableValueOpts } from '../../../../base/common/observableInternal/base.js';\nimport { mapObservableArrayCached } from '../../../../base/common/observableInternal/utils.js';\nimport { isUndefined } from '../../../../base/common/types.js';\nimport { CoreEditingCommands } from '../../../browser/coreCommands.js';\nimport { Position } from '../../../common/core/position.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { inlineSuggestCommitId } from './commandIds.js';\nimport { GhostTextWidget } from './ghostTextWidget.js';\nimport { InlineCompletionContextKeys } from './inlineCompletionContextKeys.js';\nimport { InlineCompletionsHintsWidget, InlineSuggestionHintsContentWidget } from './inlineCompletionsHintsWidget.js';\nimport { InlineCompletionsModel, VersionIdChangeReason } from './inlineCompletionsModel.js';\nimport { SuggestWidgetAdaptor } from './suggestWidgetInlineCompletionProvider.js';\nimport { localize } from '../../../../nls.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nlet InlineCompletionsController = InlineCompletionsController_1 = class InlineCompletionsController extends Disposable {\n    static get(editor) {\n        return editor.getContribution(InlineCompletionsController_1.ID);\n    }\n    constructor(editor, _instantiationService, _contextKeyService, _configurationService, _commandService, _debounceService, _languageFeaturesService, _accessibilitySignalService, _keybindingService, _accessibilityService) {\n        super();\n        this.editor = editor;\n        this._instantiationService = _instantiationService;\n        this._contextKeyService = _contextKeyService;\n        this._configurationService = _configurationService;\n        this._commandService = _commandService;\n        this._debounceService = _debounceService;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._accessibilitySignalService = _accessibilitySignalService;\n        this._keybindingService = _keybindingService;\n        this._accessibilityService = _accessibilityService;\n        this.model = this._register(disposableObservableValue('inlineCompletionModel', undefined));\n        this._textModelVersionId = observableValue(this, -1);\n        this._positions = observableValueOpts({ owner: this, equalsFn: itemsEquals(itemEquals()) }, [new Position(1, 1)]);\n        this._suggestWidgetAdaptor = this._register(new SuggestWidgetAdaptor(this.editor, () => { var _a, _b; return (_b = (_a = this.model.get()) === null || _a === void 0 ? void 0 : _a.selectedInlineCompletion.get()) === null || _b === void 0 ? void 0 : _b.toSingleTextEdit(undefined); }, (tx) => this.updateObservables(tx, VersionIdChangeReason.Other), (item) => {\n            transaction(tx => {\n                var _a;\n                /** @description InlineCompletionsController.handleSuggestAccepted */\n                this.updateObservables(tx, VersionIdChangeReason.Other);\n                (_a = this.model.get()) === null || _a === void 0 ? void 0 : _a.handleSuggestAccepted(item);\n            });\n        }));\n        this._enabledInConfig = observableFromEvent(this.editor.onDidChangeConfiguration, () => this.editor.getOption(62 /* EditorOption.inlineSuggest */).enabled);\n        this._isScreenReaderEnabled = observableFromEvent(this._accessibilityService.onDidChangeScreenReaderOptimized, () => this._accessibilityService.isScreenReaderOptimized());\n        this._editorDictationInProgress = observableFromEvent(this._contextKeyService.onDidChangeContext, () => this._contextKeyService.getContext(this.editor.getDomNode()).getValue('editorDictation.inProgress') === true);\n        this._enabled = derived(this, reader => this._enabledInConfig.read(reader) && (!this._isScreenReaderEnabled.read(reader) || !this._editorDictationInProgress.read(reader)));\n        this._fontFamily = observableFromEvent(this.editor.onDidChangeConfiguration, () => this.editor.getOption(62 /* EditorOption.inlineSuggest */).fontFamily);\n        this._ghostTexts = derived(this, (reader) => {\n            var _a;\n            const model = this.model.read(reader);\n            return (_a = model === null || model === void 0 ? void 0 : model.ghostTexts.read(reader)) !== null && _a !== void 0 ? _a : [];\n        });\n        this._stablizedGhostTexts = convertItemsToStableObservables(this._ghostTexts, this._store);\n        this._ghostTextWidgets = mapObservableArrayCached(this, this._stablizedGhostTexts, (ghostText, store) => {\n            return store.add(this._instantiationService.createInstance(GhostTextWidget, this.editor, {\n                ghostText: ghostText,\n                minReservedLineCount: constObservable(0),\n                targetTextModel: this.model.map(v => v === null || v === void 0 ? void 0 : v.textModel),\n            }));\n        }).recomputeInitiallyAndOnChange(this._store);\n        this._debounceValue = this._debounceService.for(this._languageFeaturesService.inlineCompletionsProvider, 'InlineCompletionsDebounce', { min: 50, max: 50 });\n        this._playAccessibilitySignal = observableSignal(this);\n        this._isReadonly = observableFromEvent(this.editor.onDidChangeConfiguration, () => this.editor.getOption(91 /* EditorOption.readOnly */));\n        this._textModel = observableFromEvent(this.editor.onDidChangeModel, () => this.editor.getModel());\n        this._textModelIfWritable = derived(reader => this._isReadonly.read(reader) ? undefined : this._textModel.read(reader));\n        this._register(new InlineCompletionContextKeys(this._contextKeyService, this.model));\n        this._register(autorun(reader => {\n            /** @description InlineCompletionsController.update model */\n            const textModel = this._textModelIfWritable.read(reader);\n            transaction(tx => {\n                /** @description InlineCompletionsController.onDidChangeModel/readonly */\n                this.model.set(undefined, tx);\n                this.updateObservables(tx, VersionIdChangeReason.Other);\n                if (textModel) {\n                    const model = _instantiationService.createInstance(InlineCompletionsModel, textModel, this._suggestWidgetAdaptor.selectedItem, this._textModelVersionId, this._positions, this._debounceValue, observableFromEvent(editor.onDidChangeConfiguration, () => editor.getOption(118 /* EditorOption.suggest */).preview), observableFromEvent(editor.onDidChangeConfiguration, () => editor.getOption(118 /* EditorOption.suggest */).previewMode), observableFromEvent(editor.onDidChangeConfiguration, () => editor.getOption(62 /* EditorOption.inlineSuggest */).mode), this._enabled);\n                    this.model.set(model, tx);\n                }\n            });\n        }));\n        const styleElement = this._register(createStyleSheet2());\n        this._register(autorun(reader => {\n            const fontFamily = this._fontFamily.read(reader);\n            styleElement.setStyle(fontFamily === '' || fontFamily === 'default' ? `` : `\n.monaco-editor .ghost-text-decoration,\n.monaco-editor .ghost-text-decoration-preview,\n.monaco-editor .ghost-text {\n\tfont-family: ${fontFamily};\n}`);\n        }));\n        const getReason = (e) => {\n            var _a;\n            if (e.isUndoing) {\n                return VersionIdChangeReason.Undo;\n            }\n            if (e.isRedoing) {\n                return VersionIdChangeReason.Redo;\n            }\n            if ((_a = this.model.get()) === null || _a === void 0 ? void 0 : _a.isAcceptingPartially) {\n                return VersionIdChangeReason.AcceptWord;\n            }\n            return VersionIdChangeReason.Other;\n        };\n        this._register(editor.onDidChangeModelContent((e) => transaction(tx => \n        /** @description InlineCompletionsController.onDidChangeModelContent */\n        this.updateObservables(tx, getReason(e)))));\n        this._register(editor.onDidChangeCursorPosition(e => transaction(tx => {\n            var _a;\n            /** @description InlineCompletionsController.onDidChangeCursorPosition */\n            this.updateObservables(tx, VersionIdChangeReason.Other);\n            if (e.reason === 3 /* CursorChangeReason.Explicit */ || e.source === 'api') {\n                (_a = this.model.get()) === null || _a === void 0 ? void 0 : _a.stop(tx);\n            }\n        })));\n        this._register(editor.onDidType(() => transaction(tx => {\n            var _a;\n            /** @description InlineCompletionsController.onDidType */\n            this.updateObservables(tx, VersionIdChangeReason.Other);\n            if (this._enabled.get()) {\n                (_a = this.model.get()) === null || _a === void 0 ? void 0 : _a.trigger(tx);\n            }\n        })));\n        this._register(this._commandService.onDidExecuteCommand((e) => {\n            // These commands don't trigger onDidType.\n            const commands = new Set([\n                CoreEditingCommands.Tab.id,\n                CoreEditingCommands.DeleteLeft.id,\n                CoreEditingCommands.DeleteRight.id,\n                inlineSuggestCommitId,\n                'acceptSelectedSuggestion',\n            ]);\n            if (commands.has(e.commandId) && editor.hasTextFocus() && this._enabled.get()) {\n                transaction(tx => {\n                    var _a;\n                    /** @description onDidExecuteCommand */\n                    (_a = this.model.get()) === null || _a === void 0 ? void 0 : _a.trigger(tx);\n                });\n            }\n        }));\n        this._register(this.editor.onDidBlurEditorWidget(() => {\n            // This is a hidden setting very useful for debugging\n            if (this._contextKeyService.getContextKeyValue('accessibleViewIsShown') || this._configurationService.getValue('editor.inlineSuggest.keepOnBlur') ||\n                editor.getOption(62 /* EditorOption.inlineSuggest */).keepOnBlur) {\n                return;\n            }\n            if (InlineSuggestionHintsContentWidget.dropDownVisible) {\n                return;\n            }\n            transaction(tx => {\n                var _a;\n                /** @description InlineCompletionsController.onDidBlurEditorWidget */\n                (_a = this.model.get()) === null || _a === void 0 ? void 0 : _a.stop(tx);\n            });\n        }));\n        this._register(autorun(reader => {\n            var _a;\n            /** @description InlineCompletionsController.forceRenderingAbove */\n            const state = (_a = this.model.read(reader)) === null || _a === void 0 ? void 0 : _a.state.read(reader);\n            if (state === null || state === void 0 ? void 0 : state.suggestItem) {\n                if (state.primaryGhostText.lineCount >= 2) {\n                    this._suggestWidgetAdaptor.forceRenderingAbove();\n                }\n            }\n            else {\n                this._suggestWidgetAdaptor.stopForceRenderingAbove();\n            }\n        }));\n        this._register(toDisposable(() => {\n            this._suggestWidgetAdaptor.stopForceRenderingAbove();\n        }));\n        const cancellationStore = this._register(new DisposableStore());\n        let lastInlineCompletionId = undefined;\n        this._register(autorunHandleChanges({\n            handleChange: (context, changeSummary) => {\n                if (context.didChange(this._playAccessibilitySignal)) {\n                    lastInlineCompletionId = undefined;\n                }\n                return true;\n            },\n        }, async (reader, _) => {\n            /** @description InlineCompletionsController.playAccessibilitySignalAndReadSuggestion */\n            this._playAccessibilitySignal.read(reader);\n            const model = this.model.read(reader);\n            const state = model === null || model === void 0 ? void 0 : model.state.read(reader);\n            if (!model || !state || !state.inlineCompletion) {\n                lastInlineCompletionId = undefined;\n                return;\n            }\n            if (state.inlineCompletion.semanticId !== lastInlineCompletionId) {\n                cancellationStore.clear();\n                lastInlineCompletionId = state.inlineCompletion.semanticId;\n                const lineText = model.textModel.getLineContent(state.primaryGhostText.lineNumber);\n                await timeout(50, cancelOnDispose(cancellationStore));\n                await waitForState(this._suggestWidgetAdaptor.selectedItem, isUndefined, () => false, cancelOnDispose(cancellationStore));\n                await this._accessibilitySignalService.playSignal(AccessibilitySignal.inlineSuggestion);\n                if (this.editor.getOption(8 /* EditorOption.screenReaderAnnounceInlineSuggestion */)) {\n                    this.provideScreenReaderUpdate(state.primaryGhostText.renderForScreenReader(lineText));\n                }\n            }\n        }));\n        this._register(new InlineCompletionsHintsWidget(this.editor, this.model, this._instantiationService));\n        this._register(this._configurationService.onDidChangeConfiguration(e => {\n            if (e.affectsConfiguration('accessibility.verbosity.inlineCompletions')) {\n                this.editor.updateOptions({ inlineCompletionsAccessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.inlineCompletions') });\n            }\n        }));\n        this.editor.updateOptions({ inlineCompletionsAccessibilityVerbose: this._configurationService.getValue('accessibility.verbosity.inlineCompletions') });\n    }\n    playAccessibilitySignal(tx) {\n        this._playAccessibilitySignal.trigger(tx);\n    }\n    provideScreenReaderUpdate(content) {\n        const accessibleViewShowing = this._contextKeyService.getContextKeyValue('accessibleViewIsShown');\n        const accessibleViewKeybinding = this._keybindingService.lookupKeybinding('editor.action.accessibleView');\n        let hint;\n        if (!accessibleViewShowing && accessibleViewKeybinding && this.editor.getOption(149 /* EditorOption.inlineCompletionsAccessibilityVerbose */)) {\n            hint = localize('showAccessibleViewHint', \"Inspect this in the accessible view ({0})\", accessibleViewKeybinding.getAriaLabel());\n        }\n        hint ? alert(content + ', ' + hint) : alert(content);\n    }\n    /**\n     * Copies over the relevant state from the text model to observables.\n     * This solves all kind of eventing issues, as we make sure we always operate on the latest state,\n     * regardless of who calls into us.\n     */\n    updateObservables(tx, changeReason) {\n        var _a, _b, _c;\n        const newModel = this.editor.getModel();\n        this._textModelVersionId.set((_a = newModel === null || newModel === void 0 ? void 0 : newModel.getVersionId()) !== null && _a !== void 0 ? _a : -1, tx, changeReason);\n        this._positions.set((_c = (_b = this.editor.getSelections()) === null || _b === void 0 ? void 0 : _b.map(selection => selection.getPosition())) !== null && _c !== void 0 ? _c : [new Position(1, 1)], tx);\n    }\n    shouldShowHoverAt(range) {\n        var _a;\n        const ghostText = (_a = this.model.get()) === null || _a === void 0 ? void 0 : _a.primaryGhostText.get();\n        if (ghostText) {\n            return ghostText.parts.some(p => range.containsPosition(new Position(ghostText.lineNumber, p.column)));\n        }\n        return false;\n    }\n    shouldShowHoverAtViewZone(viewZoneId) {\n        var _a, _b;\n        return (_b = (_a = this._ghostTextWidgets.get()[0]) === null || _a === void 0 ? void 0 : _a.ownsViewZone(viewZoneId)) !== null && _b !== void 0 ? _b : false;\n    }\n};\nInlineCompletionsController.ID = 'editor.contrib.inlineCompletionsController';\nInlineCompletionsController = InlineCompletionsController_1 = __decorate([\n    __param(1, IInstantiationService),\n    __param(2, IContextKeyService),\n    __param(3, IConfigurationService),\n    __param(4, ICommandService),\n    __param(5, ILanguageFeatureDebounceService),\n    __param(6, ILanguageFeaturesService),\n    __param(7, IAccessibilitySignalService),\n    __param(8, IKeybindingService),\n    __param(9, IAccessibilityService)\n], InlineCompletionsController);\nexport { InlineCompletionsController };\nfunction convertItemsToStableObservables(items, store) {\n    const result = observableValue('result', []);\n    const innerObservables = [];\n    store.add(autorun(reader => {\n        const itemsValue = items.read(reader);\n        transaction(tx => {\n            if (itemsValue.length !== innerObservables.length) {\n                innerObservables.length = itemsValue.length;\n                for (let i = 0; i < innerObservables.length; i++) {\n                    if (!innerObservables[i]) {\n                        innerObservables[i] = observableValue('item', itemsValue[i]);\n                    }\n                }\n                result.set([...innerObservables], tx);\n            }\n            innerObservables.forEach((o, i) => o.set(itemsValue[i], tx));\n        });\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 *--------------------------------------------------------------------------------------------*/\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 { createTrustedTypesPolicy } from '../../../../base/browser/trustedTypes.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { Disposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { autorun, derived, observableFromEvent, observableSignalFromEvent, observableValue } from '../../../../base/common/observable.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport './ghostText.css';\nimport { applyFontInfo } from '../../../browser/config/domFontInfo.js';\nimport { EditorFontLigatures } from '../../../common/config/editorOptions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { StringBuilder } from '../../../common/core/stringBuilder.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { InjectedTextCursorStops } from '../../../common/model.js';\nimport { LineTokens } from '../../../common/tokens/lineTokens.js';\nimport { LineDecoration } from '../../../common/viewLayout/lineDecorations.js';\nimport { RenderLineInput, renderViewLine } from '../../../common/viewLayout/viewLineRenderer.js';\nimport { GhostTextReplacement } from './ghostText.js';\nimport { ColumnRange, applyObservableDecorations } from './utils.js';\nexport const GHOST_TEXT_DESCRIPTION = 'ghost-text';\nlet GhostTextWidget = class GhostTextWidget extends Disposable {\n    constructor(editor, model, languageService) {\n        super();\n        this.editor = editor;\n        this.model = model;\n        this.languageService = languageService;\n        this.isDisposed = observableValue(this, false);\n        this.currentTextModel = observableFromEvent(this.editor.onDidChangeModel, () => /** @description editor.model */ this.editor.getModel());\n        this.uiState = derived(this, reader => {\n            if (this.isDisposed.read(reader)) {\n                return undefined;\n            }\n            const textModel = this.currentTextModel.read(reader);\n            if (textModel !== this.model.targetTextModel.read(reader)) {\n                return undefined;\n            }\n            const ghostText = this.model.ghostText.read(reader);\n            if (!ghostText) {\n                return undefined;\n            }\n            const replacedRange = ghostText instanceof GhostTextReplacement ? ghostText.columnRange : undefined;\n            const inlineTexts = [];\n            const additionalLines = [];\n            function addToAdditionalLines(lines, className) {\n                if (additionalLines.length > 0) {\n                    const lastLine = additionalLines[additionalLines.length - 1];\n                    if (className) {\n                        lastLine.decorations.push(new LineDecoration(lastLine.content.length + 1, lastLine.content.length + 1 + lines[0].length, className, 0 /* InlineDecorationType.Regular */));\n                    }\n                    lastLine.content += lines[0];\n                    lines = lines.slice(1);\n                }\n                for (const line of lines) {\n                    additionalLines.push({\n                        content: line,\n                        decorations: className ? [new LineDecoration(1, line.length + 1, className, 0 /* InlineDecorationType.Regular */)] : []\n                    });\n                }\n            }\n            const textBufferLine = textModel.getLineContent(ghostText.lineNumber);\n            let hiddenTextStartColumn = undefined;\n            let lastIdx = 0;\n            for (const part of ghostText.parts) {\n                let lines = part.lines;\n                if (hiddenTextStartColumn === undefined) {\n                    inlineTexts.push({\n                        column: part.column,\n                        text: lines[0],\n                        preview: part.preview,\n                    });\n                    lines = lines.slice(1);\n                }\n                else {\n                    addToAdditionalLines([textBufferLine.substring(lastIdx, part.column - 1)], undefined);\n                }\n                if (lines.length > 0) {\n                    addToAdditionalLines(lines, GHOST_TEXT_DESCRIPTION);\n                    if (hiddenTextStartColumn === undefined && part.column <= textBufferLine.length) {\n                        hiddenTextStartColumn = part.column;\n                    }\n                }\n                lastIdx = part.column - 1;\n            }\n            if (hiddenTextStartColumn !== undefined) {\n                addToAdditionalLines([textBufferLine.substring(lastIdx)], undefined);\n            }\n            const hiddenRange = hiddenTextStartColumn !== undefined ? new ColumnRange(hiddenTextStartColumn, textBufferLine.length + 1) : undefined;\n            return {\n                replacedRange,\n                inlineTexts,\n                additionalLines,\n                hiddenRange,\n                lineNumber: ghostText.lineNumber,\n                additionalReservedLineCount: this.model.minReservedLineCount.read(reader),\n                targetTextModel: textModel,\n            };\n        });\n        this.decorations = derived(this, reader => {\n            const uiState = this.uiState.read(reader);\n            if (!uiState) {\n                return [];\n            }\n            const decorations = [];\n            if (uiState.replacedRange) {\n                decorations.push({\n                    range: uiState.replacedRange.toRange(uiState.lineNumber),\n                    options: { inlineClassName: 'inline-completion-text-to-replace', description: 'GhostTextReplacement' }\n                });\n            }\n            if (uiState.hiddenRange) {\n                decorations.push({\n                    range: uiState.hiddenRange.toRange(uiState.lineNumber),\n                    options: { inlineClassName: 'ghost-text-hidden', description: 'ghost-text-hidden', }\n                });\n            }\n            for (const p of uiState.inlineTexts) {\n                decorations.push({\n                    range: Range.fromPositions(new Position(uiState.lineNumber, p.column)),\n                    options: {\n                        description: GHOST_TEXT_DESCRIPTION,\n                        after: { content: p.text, inlineClassName: p.preview ? 'ghost-text-decoration-preview' : 'ghost-text-decoration', cursorStops: InjectedTextCursorStops.Left },\n                        showIfCollapsed: true,\n                    }\n                });\n            }\n            return decorations;\n        });\n        this.additionalLinesWidget = this._register(new AdditionalLinesWidget(this.editor, this.languageService.languageIdCodec, derived(reader => {\n            /** @description lines */\n            const uiState = this.uiState.read(reader);\n            return uiState ? {\n                lineNumber: uiState.lineNumber,\n                additionalLines: uiState.additionalLines,\n                minReservedLineCount: uiState.additionalReservedLineCount,\n                targetTextModel: uiState.targetTextModel,\n            } : undefined;\n        })));\n        this._register(toDisposable(() => { this.isDisposed.set(true, undefined); }));\n        this._register(applyObservableDecorations(this.editor, this.decorations));\n    }\n    ownsViewZone(viewZoneId) {\n        return this.additionalLinesWidget.viewZoneId === viewZoneId;\n    }\n};\nGhostTextWidget = __decorate([\n    __param(2, ILanguageService)\n], GhostTextWidget);\nexport { GhostTextWidget };\nexport class AdditionalLinesWidget extends Disposable {\n    get viewZoneId() { return this._viewZoneId; }\n    constructor(editor, languageIdCodec, lines) {\n        super();\n        this.editor = editor;\n        this.languageIdCodec = languageIdCodec;\n        this.lines = lines;\n        this._viewZoneId = undefined;\n        this.editorOptionsChanged = observableSignalFromEvent('editorOptionChanged', Event.filter(this.editor.onDidChangeConfiguration, e => e.hasChanged(33 /* EditorOption.disableMonospaceOptimizations */)\n            || e.hasChanged(117 /* EditorOption.stopRenderingLineAfter */)\n            || e.hasChanged(99 /* EditorOption.renderWhitespace */)\n            || e.hasChanged(94 /* EditorOption.renderControlCharacters */)\n            || e.hasChanged(51 /* EditorOption.fontLigatures */)\n            || e.hasChanged(50 /* EditorOption.fontInfo */)\n            || e.hasChanged(67 /* EditorOption.lineHeight */)));\n        this._register(autorun(reader => {\n            /** @description update view zone */\n            const lines = this.lines.read(reader);\n            this.editorOptionsChanged.read(reader);\n            if (lines) {\n                this.updateLines(lines.lineNumber, lines.additionalLines, lines.minReservedLineCount);\n            }\n            else {\n                this.clear();\n            }\n        }));\n    }\n    dispose() {\n        super.dispose();\n        this.clear();\n    }\n    clear() {\n        this.editor.changeViewZones((changeAccessor) => {\n            if (this._viewZoneId) {\n                changeAccessor.removeZone(this._viewZoneId);\n                this._viewZoneId = undefined;\n            }\n        });\n    }\n    updateLines(lineNumber, additionalLines, minReservedLineCount) {\n        const textModel = this.editor.getModel();\n        if (!textModel) {\n            return;\n        }\n        const { tabSize } = textModel.getOptions();\n        this.editor.changeViewZones((changeAccessor) => {\n            if (this._viewZoneId) {\n                changeAccessor.removeZone(this._viewZoneId);\n                this._viewZoneId = undefined;\n            }\n            const heightInLines = Math.max(additionalLines.length, minReservedLineCount);\n            if (heightInLines > 0) {\n                const domNode = document.createElement('div');\n                renderLines(domNode, tabSize, additionalLines, this.editor.getOptions(), this.languageIdCodec);\n                this._viewZoneId = changeAccessor.addZone({\n                    afterLineNumber: lineNumber,\n                    heightInLines: heightInLines,\n                    domNode,\n                    afterColumnAffinity: 1 /* PositionAffinity.Right */\n                });\n            }\n        });\n    }\n}\nfunction renderLines(domNode, tabSize, lines, opts, languageIdCodec) {\n    const disableMonospaceOptimizations = opts.get(33 /* EditorOption.disableMonospaceOptimizations */);\n    const stopRenderingLineAfter = opts.get(117 /* EditorOption.stopRenderingLineAfter */);\n    // To avoid visual confusion, we don't want to render visible whitespace\n    const renderWhitespace = 'none';\n    const renderControlCharacters = opts.get(94 /* EditorOption.renderControlCharacters */);\n    const fontLigatures = opts.get(51 /* EditorOption.fontLigatures */);\n    const fontInfo = opts.get(50 /* EditorOption.fontInfo */);\n    const lineHeight = opts.get(67 /* EditorOption.lineHeight */);\n    const sb = new StringBuilder(10000);\n    sb.appendString('<div class=\"suggest-preview-text\">');\n    for (let i = 0, len = lines.length; i < len; i++) {\n        const lineData = lines[i];\n        const line = lineData.content;\n        sb.appendString('<div class=\"view-line');\n        sb.appendString('\" style=\"top:');\n        sb.appendString(String(i * lineHeight));\n        sb.appendString('px;width:1000000px;\">');\n        const isBasicASCII = strings.isBasicASCII(line);\n        const containsRTL = strings.containsRTL(line);\n        const lineTokens = LineTokens.createEmpty(line, languageIdCodec);\n        renderViewLine(new RenderLineInput((fontInfo.isMonospace && !disableMonospaceOptimizations), fontInfo.canUseHalfwidthRightwardsArrow, line, false, isBasicASCII, containsRTL, 0, lineTokens, lineData.decorations, tabSize, 0, fontInfo.spaceWidth, fontInfo.middotWidth, fontInfo.wsmiddotWidth, stopRenderingLineAfter, renderWhitespace, renderControlCharacters, fontLigatures !== EditorFontLigatures.OFF, null), sb);\n        sb.appendString('</div>');\n    }\n    sb.appendString('</div>');\n    applyFontInfo(domNode, fontInfo);\n    const html = sb.build();\n    const trustedhtml = ttPolicy ? ttPolicy.createHTML(html) : html;\n    domNode.innerHTML = trustedhtml;\n}\nexport const ttPolicy = createTrustedTypesPolicy('editorGhostText', { createHTML: value => value });\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 { equals } from '../../../../base/common/arrays.js';\nimport { splitLines } from '../../../../base/common/strings.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { SingleTextEdit, TextEdit } from '../../../common/core/textEdit.js';\nexport class GhostText {\n    constructor(lineNumber, parts) {\n        this.lineNumber = lineNumber;\n        this.parts = parts;\n    }\n    equals(other) {\n        return this.lineNumber === other.lineNumber &&\n            this.parts.length === other.parts.length &&\n            this.parts.every((part, index) => part.equals(other.parts[index]));\n    }\n    renderForScreenReader(lineText) {\n        if (this.parts.length === 0) {\n            return '';\n        }\n        const lastPart = this.parts[this.parts.length - 1];\n        const cappedLineText = lineText.substr(0, lastPart.column - 1);\n        const text = new TextEdit([\n            ...this.parts.map(p => new SingleTextEdit(Range.fromPositions(new Position(1, p.column)), p.lines.join('\\n'))),\n        ]).applyToString(cappedLineText);\n        return text.substring(this.parts[0].column - 1);\n    }\n    isEmpty() {\n        return this.parts.every(p => p.lines.length === 0);\n    }\n    get lineCount() {\n        return 1 + this.parts.reduce((r, p) => r + p.lines.length - 1, 0);\n    }\n}\nexport class GhostTextPart {\n    constructor(column, text, \n    /**\n     * Indicates if this part is a preview of an inline suggestion when a suggestion is previewed.\n    */\n    preview) {\n        this.column = column;\n        this.text = text;\n        this.preview = preview;\n        this.lines = splitLines(this.text);\n    }\n    equals(other) {\n        return this.column === other.column &&\n            this.lines.length === other.lines.length &&\n            this.lines.every((line, index) => line === other.lines[index]);\n    }\n}\nexport class GhostTextReplacement {\n    constructor(lineNumber, columnRange, text, additionalReservedLineCount = 0) {\n        this.lineNumber = lineNumber;\n        this.columnRange = columnRange;\n        this.text = text;\n        this.additionalReservedLineCount = additionalReservedLineCount;\n        this.parts = [\n            new GhostTextPart(this.columnRange.endColumnExclusive, this.text, false),\n        ];\n        this.newLines = splitLines(this.text);\n    }\n    renderForScreenReader(_lineText) {\n        return this.newLines.join('\\n');\n    }\n    get lineCount() {\n        return this.newLines.length;\n    }\n    isEmpty() {\n        return this.parts.every(p => p.lines.length === 0);\n    }\n    equals(other) {\n        return this.lineNumber === other.lineNumber &&\n            this.columnRange.equals(other.columnRange) &&\n            this.newLines.length === other.newLines.length &&\n            this.newLines.every((line, index) => line === other.newLines[index]) &&\n            this.additionalReservedLineCount === other.additionalReservedLineCount;\n    }\n}\nexport function ghostTextsOrReplacementsEqual(a, b) {\n    return equals(a, b, ghostTextOrReplacementEquals);\n}\nexport function ghostTextOrReplacementEquals(a, b) {\n    if (a === b) {\n        return true;\n    }\n    if (!a || !b) {\n        return false;\n    }\n    if (a instanceof GhostText && b instanceof GhostText) {\n        return a.equals(b);\n    }\n    if (a instanceof GhostTextReplacement && b instanceof GhostTextReplacement) {\n        return a.equals(b);\n    }\n    return false;\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 { BugIndicatingError } from '../../../../base/common/errors.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { autorunOpts } from '../../../../base/common/observable.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nconst array = [];\nexport function getReadonlyEmptyArray() {\n    return array;\n}\nexport class ColumnRange {\n    constructor(startColumn, endColumnExclusive) {\n        this.startColumn = startColumn;\n        this.endColumnExclusive = endColumnExclusive;\n        if (startColumn > endColumnExclusive) {\n            throw new BugIndicatingError(`startColumn ${startColumn} cannot be after endColumnExclusive ${endColumnExclusive}`);\n        }\n    }\n    toRange(lineNumber) {\n        return new Range(lineNumber, this.startColumn, lineNumber, this.endColumnExclusive);\n    }\n    equals(other) {\n        return this.startColumn === other.startColumn\n            && this.endColumnExclusive === other.endColumnExclusive;\n    }\n}\nexport function applyObservableDecorations(editor, decorations) {\n    const d = new DisposableStore();\n    const decorationsCollection = editor.createDecorationsCollection();\n    d.add(autorunOpts({ debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n        const d = decorations.read(reader);\n        decorationsCollection.set(d);\n    }));\n    d.add({\n        dispose: () => {\n            decorationsCollection.clear();\n        }\n    });\n    return d;\n}\nexport function addPositions(pos1, pos2) {\n    return new Position(pos1.lineNumber + pos2.lineNumber - 1, pos2.lineNumber === 1 ? pos1.column + pos2.column - 1 : pos2.column);\n}\nexport function subtractPositions(pos1, pos2) {\n    return new Position(pos1.lineNumber - pos2.lineNumber + 1, pos1.lineNumber - pos2.lineNumber === 0 ? pos1.column - pos2.column + 1 : pos1.column);\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 { Permutation } from '../../../../base/common/arrays.js';\nimport { mapFindFirst } from '../../../../base/common/arraysFind.js';\nimport { itemsEquals } from '../../../../base/common/equals.js';\nimport { BugIndicatingError, onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { autorun, derived, derivedHandleChanges, derivedOpts, observableSignal, observableValue, recomputeInitiallyAndOnChange, subtransaction, transaction } from '../../../../base/common/observable.js';\nimport { commonPrefixLength, splitLinesIncludeSeparators } from '../../../../base/common/strings.js';\nimport { isDefined } from '../../../../base/common/types.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { SingleTextEdit, TextEdit } from '../../../common/core/textEdit.js';\nimport { TextLength } from '../../../common/core/textLength.js';\nimport { InlineCompletionTriggerKind } from '../../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { GhostText, ghostTextOrReplacementEquals, ghostTextsOrReplacementsEqual } from './ghostText.js';\nimport { InlineCompletionsSource } from './inlineCompletionsSource.js';\nimport { computeGhostText, singleTextEditAugments, singleTextRemoveCommonPrefix } from './singleTextEdit.js';\nimport { addPositions, subtractPositions } from './utils.js';\nimport { SnippetController2 } from '../../snippet/browser/snippetController2.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nexport var VersionIdChangeReason;\n(function (VersionIdChangeReason) {\n    VersionIdChangeReason[VersionIdChangeReason[\"Undo\"] = 0] = \"Undo\";\n    VersionIdChangeReason[VersionIdChangeReason[\"Redo\"] = 1] = \"Redo\";\n    VersionIdChangeReason[VersionIdChangeReason[\"AcceptWord\"] = 2] = \"AcceptWord\";\n    VersionIdChangeReason[VersionIdChangeReason[\"Other\"] = 3] = \"Other\";\n})(VersionIdChangeReason || (VersionIdChangeReason = {}));\nlet InlineCompletionsModel = class InlineCompletionsModel extends Disposable {\n    get isAcceptingPartially() { return this._isAcceptingPartially; }\n    constructor(textModel, selectedSuggestItem, textModelVersionId, _positions, _debounceValue, _suggestPreviewEnabled, _suggestPreviewMode, _inlineSuggestMode, _enabled, _instantiationService, _commandService, _languageConfigurationService) {\n        super();\n        this.textModel = textModel;\n        this.selectedSuggestItem = selectedSuggestItem;\n        this.textModelVersionId = textModelVersionId;\n        this._positions = _positions;\n        this._debounceValue = _debounceValue;\n        this._suggestPreviewEnabled = _suggestPreviewEnabled;\n        this._suggestPreviewMode = _suggestPreviewMode;\n        this._inlineSuggestMode = _inlineSuggestMode;\n        this._enabled = _enabled;\n        this._instantiationService = _instantiationService;\n        this._commandService = _commandService;\n        this._languageConfigurationService = _languageConfigurationService;\n        this._source = this._register(this._instantiationService.createInstance(InlineCompletionsSource, this.textModel, this.textModelVersionId, this._debounceValue));\n        this._isActive = observableValue(this, false);\n        this._forceUpdateExplicitlySignal = observableSignal(this);\n        // We use a semantic id to keep the same inline completion selected even if the provider reorders the completions.\n        this._selectedInlineCompletionId = observableValue(this, undefined);\n        this._primaryPosition = derived(this, reader => { var _a; return (_a = this._positions.read(reader)[0]) !== null && _a !== void 0 ? _a : new Position(1, 1); });\n        this._isAcceptingPartially = false;\n        this._preserveCurrentCompletionReasons = new Set([\n            VersionIdChangeReason.Redo,\n            VersionIdChangeReason.Undo,\n            VersionIdChangeReason.AcceptWord,\n        ]);\n        this._fetchInlineCompletionsPromise = derivedHandleChanges({\n            owner: this,\n            createEmptyChangeSummary: () => ({\n                preserveCurrentCompletion: false,\n                inlineCompletionTriggerKind: InlineCompletionTriggerKind.Automatic\n            }),\n            handleChange: (ctx, changeSummary) => {\n                /** @description fetch inline completions */\n                if (ctx.didChange(this.textModelVersionId) && this._preserveCurrentCompletionReasons.has(ctx.change)) {\n                    changeSummary.preserveCurrentCompletion = true;\n                }\n                else if (ctx.didChange(this._forceUpdateExplicitlySignal)) {\n                    changeSummary.inlineCompletionTriggerKind = InlineCompletionTriggerKind.Explicit;\n                }\n                return true;\n            },\n        }, (reader, changeSummary) => {\n            this._forceUpdateExplicitlySignal.read(reader);\n            const shouldUpdate = (this._enabled.read(reader) && this.selectedSuggestItem.read(reader)) || this._isActive.read(reader);\n            if (!shouldUpdate) {\n                this._source.cancelUpdate();\n                return undefined;\n            }\n            this.textModelVersionId.read(reader); // Refetch on text change\n            const suggestWidgetInlineCompletions = this._source.suggestWidgetInlineCompletions.get();\n            const suggestItem = this.selectedSuggestItem.read(reader);\n            if (suggestWidgetInlineCompletions && !suggestItem) {\n                const inlineCompletions = this._source.inlineCompletions.get();\n                transaction(tx => {\n                    /** @description Seed inline completions with (newer) suggest widget inline completions */\n                    if (!inlineCompletions || suggestWidgetInlineCompletions.request.versionId > inlineCompletions.request.versionId) {\n                        this._source.inlineCompletions.set(suggestWidgetInlineCompletions.clone(), tx);\n                    }\n                    this._source.clearSuggestWidgetInlineCompletions(tx);\n                });\n            }\n            const cursorPosition = this._primaryPosition.read(reader);\n            const context = {\n                triggerKind: changeSummary.inlineCompletionTriggerKind,\n                selectedSuggestionInfo: suggestItem === null || suggestItem === void 0 ? void 0 : suggestItem.toSelectedSuggestionInfo(),\n            };\n            const itemToPreserveCandidate = this.selectedInlineCompletion.get();\n            const itemToPreserve = changeSummary.preserveCurrentCompletion || (itemToPreserveCandidate === null || itemToPreserveCandidate === void 0 ? void 0 : itemToPreserveCandidate.forwardStable)\n                ? itemToPreserveCandidate : undefined;\n            return this._source.fetch(cursorPosition, context, itemToPreserve);\n        });\n        this._filteredInlineCompletionItems = derivedOpts({ owner: this, equalsFn: itemsEquals() }, reader => {\n            const c = this._source.inlineCompletions.read(reader);\n            if (!c) {\n                return [];\n            }\n            const cursorPosition = this._primaryPosition.read(reader);\n            const filteredCompletions = c.inlineCompletions.filter(c => c.isVisible(this.textModel, cursorPosition, reader));\n            return filteredCompletions;\n        });\n        this.selectedInlineCompletionIndex = derived(this, (reader) => {\n            const selectedInlineCompletionId = this._selectedInlineCompletionId.read(reader);\n            const filteredCompletions = this._filteredInlineCompletionItems.read(reader);\n            const idx = this._selectedInlineCompletionId === undefined ? -1\n                : filteredCompletions.findIndex(v => v.semanticId === selectedInlineCompletionId);\n            if (idx === -1) {\n                // Reset the selection so that the selection does not jump back when it appears again\n                this._selectedInlineCompletionId.set(undefined, undefined);\n                return 0;\n            }\n            return idx;\n        });\n        this.selectedInlineCompletion = derived(this, (reader) => {\n            const filteredCompletions = this._filteredInlineCompletionItems.read(reader);\n            const idx = this.selectedInlineCompletionIndex.read(reader);\n            return filteredCompletions[idx];\n        });\n        this.activeCommands = derivedOpts({ owner: this, equalsFn: itemsEquals() }, r => { var _a, _b; return (_b = (_a = this.selectedInlineCompletion.read(r)) === null || _a === void 0 ? void 0 : _a.inlineCompletion.source.inlineCompletions.commands) !== null && _b !== void 0 ? _b : []; });\n        this.lastTriggerKind = this._source.inlineCompletions.map(this, v => v === null || v === void 0 ? void 0 : v.request.context.triggerKind);\n        this.inlineCompletionsCount = derived(this, reader => {\n            if (this.lastTriggerKind.read(reader) === InlineCompletionTriggerKind.Explicit) {\n                return this._filteredInlineCompletionItems.read(reader).length;\n            }\n            else {\n                return undefined;\n            }\n        });\n        this.state = derivedOpts({\n            owner: this,\n            equalsFn: (a, b) => {\n                if (!a || !b) {\n                    return a === b;\n                }\n                return ghostTextsOrReplacementsEqual(a.ghostTexts, b.ghostTexts)\n                    && a.inlineCompletion === b.inlineCompletion\n                    && a.suggestItem === b.suggestItem;\n            }\n        }, (reader) => {\n            var _a, _b;\n            const model = this.textModel;\n            const suggestItem = this.selectedSuggestItem.read(reader);\n            if (suggestItem) {\n                const suggestCompletionEdit = singleTextRemoveCommonPrefix(suggestItem.toSingleTextEdit(), model);\n                const augmentation = this._computeAugmentation(suggestCompletionEdit, reader);\n                const isSuggestionPreviewEnabled = this._suggestPreviewEnabled.read(reader);\n                if (!isSuggestionPreviewEnabled && !augmentation) {\n                    return undefined;\n                }\n                const fullEdit = (_a = augmentation === null || augmentation === void 0 ? void 0 : augmentation.edit) !== null && _a !== void 0 ? _a : suggestCompletionEdit;\n                const fullEditPreviewLength = augmentation ? augmentation.edit.text.length - suggestCompletionEdit.text.length : 0;\n                const mode = this._suggestPreviewMode.read(reader);\n                const positions = this._positions.read(reader);\n                const edits = [fullEdit, ...getSecondaryEdits(this.textModel, positions, fullEdit)];\n                const ghostTexts = edits\n                    .map((edit, idx) => computeGhostText(edit, model, mode, positions[idx], fullEditPreviewLength))\n                    .filter(isDefined);\n                const primaryGhostText = (_b = ghostTexts[0]) !== null && _b !== void 0 ? _b : new GhostText(fullEdit.range.endLineNumber, []);\n                return { edits, primaryGhostText, ghostTexts, inlineCompletion: augmentation === null || augmentation === void 0 ? void 0 : augmentation.completion, suggestItem };\n            }\n            else {\n                if (!this._isActive.read(reader)) {\n                    return undefined;\n                }\n                const inlineCompletion = this.selectedInlineCompletion.read(reader);\n                if (!inlineCompletion) {\n                    return undefined;\n                }\n                const replacement = inlineCompletion.toSingleTextEdit(reader);\n                const mode = this._inlineSuggestMode.read(reader);\n                const positions = this._positions.read(reader);\n                const edits = [replacement, ...getSecondaryEdits(this.textModel, positions, replacement)];\n                const ghostTexts = edits\n                    .map((edit, idx) => computeGhostText(edit, model, mode, positions[idx], 0))\n                    .filter(isDefined);\n                if (!ghostTexts[0]) {\n                    return undefined;\n                }\n                return { edits, primaryGhostText: ghostTexts[0], ghostTexts, inlineCompletion, suggestItem: undefined };\n            }\n        });\n        this.ghostTexts = derivedOpts({\n            owner: this,\n            equalsFn: ghostTextsOrReplacementsEqual\n        }, reader => {\n            const v = this.state.read(reader);\n            if (!v) {\n                return undefined;\n            }\n            return v.ghostTexts;\n        });\n        this.primaryGhostText = derivedOpts({\n            owner: this,\n            equalsFn: ghostTextOrReplacementEquals\n        }, reader => {\n            const v = this.state.read(reader);\n            if (!v) {\n                return undefined;\n            }\n            return v === null || v === void 0 ? void 0 : v.primaryGhostText;\n        });\n        this._register(recomputeInitiallyAndOnChange(this._fetchInlineCompletionsPromise));\n        let lastItem = undefined;\n        this._register(autorun(reader => {\n            var _a, _b;\n            /** @description call handleItemDidShow */\n            const item = this.state.read(reader);\n            const completion = item === null || item === void 0 ? void 0 : item.inlineCompletion;\n            if ((completion === null || completion === void 0 ? void 0 : completion.semanticId) !== (lastItem === null || lastItem === void 0 ? void 0 : lastItem.semanticId)) {\n                lastItem = completion;\n                if (completion) {\n                    const i = completion.inlineCompletion;\n                    const src = i.source;\n                    (_b = (_a = src.provider).handleItemDidShow) === null || _b === void 0 ? void 0 : _b.call(_a, src.inlineCompletions, i.sourceInlineCompletion, i.insertText);\n                }\n            }\n        }));\n    }\n    async trigger(tx) {\n        this._isActive.set(true, tx);\n        await this._fetchInlineCompletionsPromise.get();\n    }\n    async triggerExplicitly(tx) {\n        subtransaction(tx, tx => {\n            this._isActive.set(true, tx);\n            this._forceUpdateExplicitlySignal.trigger(tx);\n        });\n        await this._fetchInlineCompletionsPromise.get();\n    }\n    stop(tx) {\n        subtransaction(tx, tx => {\n            this._isActive.set(false, tx);\n            this._source.clear(tx);\n        });\n    }\n    _computeAugmentation(suggestCompletion, reader) {\n        const model = this.textModel;\n        const suggestWidgetInlineCompletions = this._source.suggestWidgetInlineCompletions.read(reader);\n        const candidateInlineCompletions = suggestWidgetInlineCompletions\n            ? suggestWidgetInlineCompletions.inlineCompletions\n            : [this.selectedInlineCompletion.read(reader)].filter(isDefined);\n        const augmentedCompletion = mapFindFirst(candidateInlineCompletions, completion => {\n            let r = completion.toSingleTextEdit(reader);\n            r = singleTextRemoveCommonPrefix(r, model, Range.fromPositions(r.range.getStartPosition(), suggestCompletion.range.getEndPosition()));\n            return singleTextEditAugments(r, suggestCompletion) ? { completion, edit: r } : undefined;\n        });\n        return augmentedCompletion;\n    }\n    async _deltaSelectedInlineCompletionIndex(delta) {\n        await this.triggerExplicitly();\n        const completions = this._filteredInlineCompletionItems.get() || [];\n        if (completions.length > 0) {\n            const newIdx = (this.selectedInlineCompletionIndex.get() + delta + completions.length) % completions.length;\n            this._selectedInlineCompletionId.set(completions[newIdx].semanticId, undefined);\n        }\n        else {\n            this._selectedInlineCompletionId.set(undefined, undefined);\n        }\n    }\n    async next() {\n        await this._deltaSelectedInlineCompletionIndex(1);\n    }\n    async previous() {\n        await this._deltaSelectedInlineCompletionIndex(-1);\n    }\n    async accept(editor) {\n        var _a;\n        if (editor.getModel() !== this.textModel) {\n            throw new BugIndicatingError();\n        }\n        const state = this.state.get();\n        if (!state || state.primaryGhostText.isEmpty() || !state.inlineCompletion) {\n            return;\n        }\n        const completion = state.inlineCompletion.toInlineCompletion(undefined);\n        editor.pushUndoStop();\n        if (completion.snippetInfo) {\n            editor.executeEdits('inlineSuggestion.accept', [\n                EditOperation.replace(completion.range, ''),\n                ...completion.additionalTextEdits\n            ]);\n            editor.setPosition(completion.snippetInfo.range.getStartPosition(), 'inlineCompletionAccept');\n            (_a = SnippetController2.get(editor)) === null || _a === void 0 ? void 0 : _a.insert(completion.snippetInfo.snippet, { undoStopBefore: false });\n        }\n        else {\n            const edits = state.edits;\n            const selections = getEndPositionsAfterApplying(edits).map(p => Selection.fromPositions(p));\n            editor.executeEdits('inlineSuggestion.accept', [\n                ...edits.map(edit => EditOperation.replace(edit.range, edit.text)),\n                ...completion.additionalTextEdits\n            ]);\n            editor.setSelections(selections, 'inlineCompletionAccept');\n        }\n        if (completion.command) {\n            // Make sure the completion list will not be disposed.\n            completion.source.addRef();\n        }\n        // Reset before invoking the command, since the command might cause a follow up trigger.\n        transaction(tx => {\n            this._source.clear(tx);\n            // Potentially, isActive will get set back to true by the typing or accept inline suggest event\n            // if automatic inline suggestions are enabled.\n            this._isActive.set(false, tx);\n        });\n        if (completion.command) {\n            await this._commandService\n                .executeCommand(completion.command.id, ...(completion.command.arguments || []))\n                .then(undefined, onUnexpectedExternalError);\n            completion.source.removeRef();\n        }\n    }\n    async acceptNextWord(editor) {\n        await this._acceptNext(editor, (pos, text) => {\n            const langId = this.textModel.getLanguageIdAtPosition(pos.lineNumber, pos.column);\n            const config = this._languageConfigurationService.getLanguageConfiguration(langId);\n            const wordRegExp = new RegExp(config.wordDefinition.source, config.wordDefinition.flags.replace('g', ''));\n            const m1 = text.match(wordRegExp);\n            let acceptUntilIndexExclusive = 0;\n            if (m1 && m1.index !== undefined) {\n                if (m1.index === 0) {\n                    acceptUntilIndexExclusive = m1[0].length;\n                }\n                else {\n                    acceptUntilIndexExclusive = m1.index;\n                }\n            }\n            else {\n                acceptUntilIndexExclusive = text.length;\n            }\n            const wsRegExp = /\\s+/g;\n            const m2 = wsRegExp.exec(text);\n            if (m2 && m2.index !== undefined) {\n                if (m2.index + m2[0].length < acceptUntilIndexExclusive) {\n                    acceptUntilIndexExclusive = m2.index + m2[0].length;\n                }\n            }\n            return acceptUntilIndexExclusive;\n        }, 0 /* PartialAcceptTriggerKind.Word */);\n    }\n    async acceptNextLine(editor) {\n        await this._acceptNext(editor, (pos, text) => {\n            const m = text.match(/\\n/);\n            if (m && m.index !== undefined) {\n                return m.index + 1;\n            }\n            return text.length;\n        }, 1 /* PartialAcceptTriggerKind.Line */);\n    }\n    async _acceptNext(editor, getAcceptUntilIndex, kind) {\n        if (editor.getModel() !== this.textModel) {\n            throw new BugIndicatingError();\n        }\n        const state = this.state.get();\n        if (!state || state.primaryGhostText.isEmpty() || !state.inlineCompletion) {\n            return;\n        }\n        const ghostText = state.primaryGhostText;\n        const completion = state.inlineCompletion.toInlineCompletion(undefined);\n        if (completion.snippetInfo || completion.filterText !== completion.insertText) {\n            // not in WYSIWYG mode, partial commit might change completion, thus it is not supported\n            await this.accept(editor);\n            return;\n        }\n        const firstPart = ghostText.parts[0];\n        const ghostTextPos = new Position(ghostText.lineNumber, firstPart.column);\n        const ghostTextVal = firstPart.text;\n        const acceptUntilIndexExclusive = getAcceptUntilIndex(ghostTextPos, ghostTextVal);\n        if (acceptUntilIndexExclusive === ghostTextVal.length && ghostText.parts.length === 1) {\n            this.accept(editor);\n            return;\n        }\n        const partialGhostTextVal = ghostTextVal.substring(0, acceptUntilIndexExclusive);\n        const positions = this._positions.get();\n        const cursorPosition = positions[0];\n        // Executing the edit might free the completion, so we have to hold a reference on it.\n        completion.source.addRef();\n        try {\n            this._isAcceptingPartially = true;\n            try {\n                editor.pushUndoStop();\n                const replaceRange = Range.fromPositions(cursorPosition, ghostTextPos);\n                const newText = editor.getModel().getValueInRange(replaceRange) + partialGhostTextVal;\n                const primaryEdit = new SingleTextEdit(replaceRange, newText);\n                const edits = [primaryEdit, ...getSecondaryEdits(this.textModel, positions, primaryEdit)];\n                const selections = getEndPositionsAfterApplying(edits).map(p => Selection.fromPositions(p));\n                editor.executeEdits('inlineSuggestion.accept', edits.map(edit => EditOperation.replace(edit.range, edit.text)));\n                editor.setSelections(selections, 'inlineCompletionPartialAccept');\n            }\n            finally {\n                this._isAcceptingPartially = false;\n            }\n            if (completion.source.provider.handlePartialAccept) {\n                const acceptedRange = Range.fromPositions(completion.range.getStartPosition(), TextLength.ofText(partialGhostTextVal).addToPosition(ghostTextPos));\n                // This assumes that the inline completion and the model use the same EOL style.\n                const text = editor.getModel().getValueInRange(acceptedRange, 1 /* EndOfLinePreference.LF */);\n                completion.source.provider.handlePartialAccept(completion.source.inlineCompletions, completion.sourceInlineCompletion, text.length, {\n                    kind,\n                });\n            }\n        }\n        finally {\n            completion.source.removeRef();\n        }\n    }\n    handleSuggestAccepted(item) {\n        var _a, _b;\n        const itemEdit = singleTextRemoveCommonPrefix(item.toSingleTextEdit(), this.textModel);\n        const augmentedCompletion = this._computeAugmentation(itemEdit, undefined);\n        if (!augmentedCompletion) {\n            return;\n        }\n        const inlineCompletion = augmentedCompletion.completion.inlineCompletion;\n        (_b = (_a = inlineCompletion.source.provider).handlePartialAccept) === null || _b === void 0 ? void 0 : _b.call(_a, inlineCompletion.source.inlineCompletions, inlineCompletion.sourceInlineCompletion, itemEdit.text.length, {\n            kind: 2 /* PartialAcceptTriggerKind.Suggest */,\n        });\n    }\n};\nInlineCompletionsModel = __decorate([\n    __param(9, IInstantiationService),\n    __param(10, ICommandService),\n    __param(11, ILanguageConfigurationService)\n], InlineCompletionsModel);\nexport { InlineCompletionsModel };\nexport function getSecondaryEdits(textModel, positions, primaryEdit) {\n    if (positions.length === 1) {\n        // No secondary cursor positions\n        return [];\n    }\n    const primaryPosition = positions[0];\n    const secondaryPositions = positions.slice(1);\n    const primaryEditStartPosition = primaryEdit.range.getStartPosition();\n    const primaryEditEndPosition = primaryEdit.range.getEndPosition();\n    const replacedTextAfterPrimaryCursor = textModel.getValueInRange(Range.fromPositions(primaryPosition, primaryEditEndPosition));\n    const positionWithinTextEdit = subtractPositions(primaryPosition, primaryEditStartPosition);\n    if (positionWithinTextEdit.lineNumber < 1) {\n        onUnexpectedError(new BugIndicatingError(`positionWithinTextEdit line number should be bigger than 0.\n\t\t\tInvalid subtraction between ${primaryPosition.toString()} and ${primaryEditStartPosition.toString()}`));\n        return [];\n    }\n    const secondaryEditText = substringPos(primaryEdit.text, positionWithinTextEdit);\n    return secondaryPositions.map(pos => {\n        const posEnd = addPositions(subtractPositions(pos, primaryEditStartPosition), primaryEditEndPosition);\n        const textAfterSecondaryCursor = textModel.getValueInRange(Range.fromPositions(pos, posEnd));\n        const l = commonPrefixLength(replacedTextAfterPrimaryCursor, textAfterSecondaryCursor);\n        const range = Range.fromPositions(pos, pos.delta(0, l));\n        return new SingleTextEdit(range, secondaryEditText);\n    });\n}\nfunction substringPos(text, pos) {\n    let subtext = '';\n    const lines = splitLinesIncludeSeparators(text);\n    for (let i = pos.lineNumber - 1; i < lines.length; i++) {\n        subtext += lines[i].substring(i === pos.lineNumber - 1 ? pos.column - 1 : 0);\n    }\n    return subtext;\n}\nfunction getEndPositionsAfterApplying(edits) {\n    const sortPerm = Permutation.createSortPermutation(edits, (edit1, edit2) => Range.compareRangesUsingStarts(edit1.range, edit2.range));\n    const edit = new TextEdit(sortPerm.apply(edits));\n    const sortedNewRanges = edit.getNewRanges();\n    const newRanges = sortPerm.inverse().apply(sortedNewRanges);\n    return newRanges.map(range => range.getEndPosition());\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 { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { equalsIfDefined, itemEquals } from '../../../../base/common/equals.js';\nimport { matchesSubString } from '../../../../base/common/filters.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { derivedOpts, disposableObservableValue, transaction } from '../../../../base/common/observable.js';\nimport { Range } from '../../../common/core/range.js';\nimport { SingleTextEdit } from '../../../common/core/textEdit.js';\nimport { TextLength } from '../../../common/core/textLength.js';\nimport { InlineCompletionTriggerKind } from '../../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { provideInlineCompletions } from './provideInlineCompletions.js';\nimport { singleTextRemoveCommonPrefix } from './singleTextEdit.js';\nlet InlineCompletionsSource = class InlineCompletionsSource extends Disposable {\n    constructor(textModel, versionId, _debounceValue, languageFeaturesService, languageConfigurationService) {\n        super();\n        this.textModel = textModel;\n        this.versionId = versionId;\n        this._debounceValue = _debounceValue;\n        this.languageFeaturesService = languageFeaturesService;\n        this.languageConfigurationService = languageConfigurationService;\n        this._updateOperation = this._register(new MutableDisposable());\n        this.inlineCompletions = disposableObservableValue('inlineCompletions', undefined);\n        this.suggestWidgetInlineCompletions = disposableObservableValue('suggestWidgetInlineCompletions', undefined);\n        this._register(this.textModel.onDidChangeContent(() => {\n            this._updateOperation.clear();\n        }));\n    }\n    fetch(position, context, activeInlineCompletion) {\n        var _a, _b;\n        const request = new UpdateRequest(position, context, this.textModel.getVersionId());\n        const target = context.selectedSuggestionInfo ? this.suggestWidgetInlineCompletions : this.inlineCompletions;\n        if ((_a = this._updateOperation.value) === null || _a === void 0 ? void 0 : _a.request.satisfies(request)) {\n            return this._updateOperation.value.promise;\n        }\n        else if ((_b = target.get()) === null || _b === void 0 ? void 0 : _b.request.satisfies(request)) {\n            return Promise.resolve(true);\n        }\n        const updateOngoing = !!this._updateOperation.value;\n        this._updateOperation.clear();\n        const source = new CancellationTokenSource();\n        const promise = (async () => {\n            const shouldDebounce = updateOngoing || context.triggerKind === InlineCompletionTriggerKind.Automatic;\n            if (shouldDebounce) {\n                // This debounces the operation\n                await wait(this._debounceValue.get(this.textModel), source.token);\n            }\n            if (source.token.isCancellationRequested || this.textModel.getVersionId() !== request.versionId) {\n                return false;\n            }\n            const startTime = new Date();\n            const updatedCompletions = await provideInlineCompletions(this.languageFeaturesService.inlineCompletionsProvider, position, this.textModel, context, source.token, this.languageConfigurationService);\n            if (source.token.isCancellationRequested || this.textModel.getVersionId() !== request.versionId) {\n                return false;\n            }\n            const endTime = new Date();\n            this._debounceValue.update(this.textModel, endTime.getTime() - startTime.getTime());\n            const completions = new UpToDateInlineCompletions(updatedCompletions, request, this.textModel, this.versionId);\n            if (activeInlineCompletion) {\n                const asInlineCompletion = activeInlineCompletion.toInlineCompletion(undefined);\n                if (activeInlineCompletion.canBeReused(this.textModel, position) && !updatedCompletions.has(asInlineCompletion)) {\n                    completions.prepend(activeInlineCompletion.inlineCompletion, asInlineCompletion.range, true);\n                }\n            }\n            this._updateOperation.clear();\n            transaction(tx => {\n                /** @description Update completions with provider result */\n                target.set(completions, tx);\n            });\n            return true;\n        })();\n        const updateOperation = new UpdateOperation(request, source, promise);\n        this._updateOperation.value = updateOperation;\n        return promise;\n    }\n    clear(tx) {\n        this._updateOperation.clear();\n        this.inlineCompletions.set(undefined, tx);\n        this.suggestWidgetInlineCompletions.set(undefined, tx);\n    }\n    clearSuggestWidgetInlineCompletions(tx) {\n        var _a;\n        if ((_a = this._updateOperation.value) === null || _a === void 0 ? void 0 : _a.request.context.selectedSuggestionInfo) {\n            this._updateOperation.clear();\n        }\n        this.suggestWidgetInlineCompletions.set(undefined, tx);\n    }\n    cancelUpdate() {\n        this._updateOperation.clear();\n    }\n};\nInlineCompletionsSource = __decorate([\n    __param(3, ILanguageFeaturesService),\n    __param(4, ILanguageConfigurationService)\n], InlineCompletionsSource);\nexport { InlineCompletionsSource };\nfunction wait(ms, cancellationToken) {\n    return new Promise(resolve => {\n        let d = undefined;\n        const handle = setTimeout(() => {\n            if (d) {\n                d.dispose();\n            }\n            resolve();\n        }, ms);\n        if (cancellationToken) {\n            d = cancellationToken.onCancellationRequested(() => {\n                clearTimeout(handle);\n                if (d) {\n                    d.dispose();\n                }\n                resolve();\n            });\n        }\n    });\n}\nclass UpdateRequest {\n    constructor(position, context, versionId) {\n        this.position = position;\n        this.context = context;\n        this.versionId = versionId;\n    }\n    satisfies(other) {\n        return this.position.equals(other.position)\n            && equalsIfDefined(this.context.selectedSuggestionInfo, other.context.selectedSuggestionInfo, itemEquals())\n            && (other.context.triggerKind === InlineCompletionTriggerKind.Automatic\n                || this.context.triggerKind === InlineCompletionTriggerKind.Explicit)\n            && this.versionId === other.versionId;\n    }\n}\nclass UpdateOperation {\n    constructor(request, cancellationTokenSource, promise) {\n        this.request = request;\n        this.cancellationTokenSource = cancellationTokenSource;\n        this.promise = promise;\n    }\n    dispose() {\n        this.cancellationTokenSource.cancel();\n    }\n}\nexport class UpToDateInlineCompletions {\n    get inlineCompletions() { return this._inlineCompletions; }\n    constructor(inlineCompletionProviderResult, request, _textModel, _versionId) {\n        this.inlineCompletionProviderResult = inlineCompletionProviderResult;\n        this.request = request;\n        this._textModel = _textModel;\n        this._versionId = _versionId;\n        this._refCount = 1;\n        this._prependedInlineCompletionItems = [];\n        const ids = _textModel.deltaDecorations([], inlineCompletionProviderResult.completions.map(i => ({\n            range: i.range,\n            options: {\n                description: 'inline-completion-tracking-range'\n            },\n        })));\n        this._inlineCompletions = inlineCompletionProviderResult.completions.map((i, index) => new InlineCompletionWithUpdatedRange(i, ids[index], this._textModel, this._versionId));\n    }\n    clone() {\n        this._refCount++;\n        return this;\n    }\n    dispose() {\n        this._refCount--;\n        if (this._refCount === 0) {\n            setTimeout(() => {\n                // To fix https://github.com/microsoft/vscode/issues/188348\n                if (!this._textModel.isDisposed()) {\n                    // This is just cleanup. It's ok if it happens with a delay.\n                    this._textModel.deltaDecorations(this._inlineCompletions.map(i => i.decorationId), []);\n                }\n            }, 0);\n            this.inlineCompletionProviderResult.dispose();\n            for (const i of this._prependedInlineCompletionItems) {\n                i.source.removeRef();\n            }\n        }\n    }\n    prepend(inlineCompletion, range, addRefToSource) {\n        if (addRefToSource) {\n            inlineCompletion.source.addRef();\n        }\n        const id = this._textModel.deltaDecorations([], [{\n                range,\n                options: {\n                    description: 'inline-completion-tracking-range'\n                },\n            }])[0];\n        this._inlineCompletions.unshift(new InlineCompletionWithUpdatedRange(inlineCompletion, id, this._textModel, this._versionId));\n        this._prependedInlineCompletionItems.push(inlineCompletion);\n    }\n}\nexport class InlineCompletionWithUpdatedRange {\n    get forwardStable() {\n        var _a;\n        return (_a = this.inlineCompletion.source.inlineCompletions.enableForwardStability) !== null && _a !== void 0 ? _a : false;\n    }\n    constructor(inlineCompletion, decorationId, _textModel, _modelVersion) {\n        this.inlineCompletion = inlineCompletion;\n        this.decorationId = decorationId;\n        this._textModel = _textModel;\n        this._modelVersion = _modelVersion;\n        this.semanticId = JSON.stringify([\n            this.inlineCompletion.filterText,\n            this.inlineCompletion.insertText,\n            this.inlineCompletion.range.getStartPosition().toString()\n        ]);\n        this._updatedRange = derivedOpts({ owner: this, equalsFn: Range.equalsRange }, reader => {\n            this._modelVersion.read(reader);\n            return this._textModel.getDecorationRange(this.decorationId);\n        });\n    }\n    toInlineCompletion(reader) {\n        var _a;\n        return this.inlineCompletion.withRange((_a = this._updatedRange.read(reader)) !== null && _a !== void 0 ? _a : emptyRange);\n    }\n    toSingleTextEdit(reader) {\n        var _a;\n        return new SingleTextEdit((_a = this._updatedRange.read(reader)) !== null && _a !== void 0 ? _a : emptyRange, this.inlineCompletion.insertText);\n    }\n    isVisible(model, cursorPosition, reader) {\n        const minimizedReplacement = singleTextRemoveCommonPrefix(this._toFilterTextReplacement(reader), model);\n        const updatedRange = this._updatedRange.read(reader);\n        if (!updatedRange\n            || !this.inlineCompletion.range.getStartPosition().equals(updatedRange.getStartPosition())\n            || cursorPosition.lineNumber !== minimizedReplacement.range.startLineNumber) {\n            return false;\n        }\n        // We might consider comparing by .toLowerText, but this requires GhostTextReplacement\n        const originalValue = model.getValueInRange(minimizedReplacement.range, 1 /* EndOfLinePreference.LF */);\n        const filterText = minimizedReplacement.text;\n        const cursorPosIndex = Math.max(0, cursorPosition.column - minimizedReplacement.range.startColumn);\n        let filterTextBefore = filterText.substring(0, cursorPosIndex);\n        let filterTextAfter = filterText.substring(cursorPosIndex);\n        let originalValueBefore = originalValue.substring(0, cursorPosIndex);\n        let originalValueAfter = originalValue.substring(cursorPosIndex);\n        const originalValueIndent = model.getLineIndentColumn(minimizedReplacement.range.startLineNumber);\n        if (minimizedReplacement.range.startColumn <= originalValueIndent) {\n            // Remove indentation\n            originalValueBefore = originalValueBefore.trimStart();\n            if (originalValueBefore.length === 0) {\n                originalValueAfter = originalValueAfter.trimStart();\n            }\n            filterTextBefore = filterTextBefore.trimStart();\n            if (filterTextBefore.length === 0) {\n                filterTextAfter = filterTextAfter.trimStart();\n            }\n        }\n        return filterTextBefore.startsWith(originalValueBefore)\n            && !!matchesSubString(originalValueAfter, filterTextAfter);\n    }\n    canBeReused(model, position) {\n        const updatedRange = this._updatedRange.read(undefined);\n        const result = !!updatedRange\n            && updatedRange.containsPosition(position)\n            && this.isVisible(model, position, undefined)\n            && TextLength.ofRange(updatedRange).isGreaterThanOrEqualTo(TextLength.ofRange(this.inlineCompletion.range));\n        return result;\n    }\n    _toFilterTextReplacement(reader) {\n        var _a;\n        return new SingleTextEdit((_a = this._updatedRange.read(reader)) !== null && _a !== void 0 ? _a : emptyRange, this.inlineCompletion.filterText);\n    }\n}\nconst emptyRange = new Range(1, 1, 1, 1);\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 { assertNever } from '../../../../base/common/assert.js';\nimport { DeferredPromise } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { SetMap } from '../../../../base/common/map.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Range } from '../../../common/core/range.js';\nimport { fixBracketsInLine } from '../../../common/model/bracketPairsTextModelPart/fixBrackets.js';\nimport { getReadonlyEmptyArray } from './utils.js';\nimport { SnippetParser, Text } from '../../snippet/browser/snippetParser.js';\nexport async function provideInlineCompletions(registry, position, model, context, token = CancellationToken.None, languageConfigurationService) {\n    // Important: Don't use position after the await calls, as the model could have been changed in the meantime!\n    const defaultReplaceRange = getDefaultRange(position, model);\n    const providers = registry.all(model);\n    const multiMap = new SetMap();\n    for (const provider of providers) {\n        if (provider.groupId) {\n            multiMap.add(provider.groupId, provider);\n        }\n    }\n    function getPreferredProviders(provider) {\n        if (!provider.yieldsToGroupIds) {\n            return [];\n        }\n        const result = [];\n        for (const groupId of provider.yieldsToGroupIds || []) {\n            const providers = multiMap.get(groupId);\n            for (const p of providers) {\n                result.push(p);\n            }\n        }\n        return result;\n    }\n    const states = new Map();\n    const seen = new Set();\n    function findPreferredProviderCircle(provider, stack) {\n        stack = [...stack, provider];\n        if (seen.has(provider)) {\n            return stack;\n        }\n        seen.add(provider);\n        try {\n            const preferred = getPreferredProviders(provider);\n            for (const p of preferred) {\n                const c = findPreferredProviderCircle(p, stack);\n                if (c) {\n                    return c;\n                }\n            }\n        }\n        finally {\n            seen.delete(provider);\n        }\n        return undefined;\n    }\n    function processProvider(provider) {\n        const state = states.get(provider);\n        if (state) {\n            return state;\n        }\n        const circle = findPreferredProviderCircle(provider, []);\n        if (circle) {\n            onUnexpectedExternalError(new Error(`Inline completions: cyclic yield-to dependency detected. Path: ${circle.map(s => s.toString ? s.toString() : ('' + s)).join(' -> ')}`));\n        }\n        const deferredPromise = new DeferredPromise();\n        states.set(provider, deferredPromise.p);\n        (async () => {\n            if (!circle) {\n                const preferred = getPreferredProviders(provider);\n                for (const p of preferred) {\n                    const result = await processProvider(p);\n                    if (result && result.items.length > 0) {\n                        // Skip provider\n                        return undefined;\n                    }\n                }\n            }\n            try {\n                const completions = await provider.provideInlineCompletions(model, position, context, token);\n                return completions;\n            }\n            catch (e) {\n                onUnexpectedExternalError(e);\n                return undefined;\n            }\n        })().then(c => deferredPromise.complete(c), e => deferredPromise.error(e));\n        return deferredPromise.p;\n    }\n    const providerResults = await Promise.all(providers.map(async (provider) => ({ provider, completions: await processProvider(provider) })));\n    const itemsByHash = new Map();\n    const lists = [];\n    for (const result of providerResults) {\n        const completions = result.completions;\n        if (!completions) {\n            continue;\n        }\n        const list = new InlineCompletionList(completions, result.provider);\n        lists.push(list);\n        for (const item of completions.items) {\n            const inlineCompletionItem = InlineCompletionItem.from(item, list, defaultReplaceRange, model, languageConfigurationService);\n            itemsByHash.set(inlineCompletionItem.hash(), inlineCompletionItem);\n        }\n    }\n    return new InlineCompletionProviderResult(Array.from(itemsByHash.values()), new Set(itemsByHash.keys()), lists);\n}\nexport class InlineCompletionProviderResult {\n    constructor(\n    /**\n     * Free of duplicates.\n     */\n    completions, hashs, providerResults) {\n        this.completions = completions;\n        this.hashs = hashs;\n        this.providerResults = providerResults;\n    }\n    has(item) {\n        return this.hashs.has(item.hash());\n    }\n    dispose() {\n        for (const result of this.providerResults) {\n            result.removeRef();\n        }\n    }\n}\n/**\n * A ref counted pointer to the computed `InlineCompletions` and the `InlineCompletionsProvider` that\n * computed them.\n */\nexport class InlineCompletionList {\n    constructor(inlineCompletions, provider) {\n        this.inlineCompletions = inlineCompletions;\n        this.provider = provider;\n        this.refCount = 1;\n    }\n    addRef() {\n        this.refCount++;\n    }\n    removeRef() {\n        this.refCount--;\n        if (this.refCount === 0) {\n            this.provider.freeInlineCompletions(this.inlineCompletions);\n        }\n    }\n}\nexport class InlineCompletionItem {\n    static from(inlineCompletion, source, defaultReplaceRange, textModel, languageConfigurationService) {\n        let insertText;\n        let snippetInfo;\n        let range = inlineCompletion.range ? Range.lift(inlineCompletion.range) : defaultReplaceRange;\n        if (typeof inlineCompletion.insertText === 'string') {\n            insertText = inlineCompletion.insertText;\n            if (languageConfigurationService && inlineCompletion.completeBracketPairs) {\n                insertText = closeBrackets(insertText, range.getStartPosition(), textModel, languageConfigurationService);\n                // Modify range depending on if brackets are added or removed\n                const diff = insertText.length - inlineCompletion.insertText.length;\n                if (diff !== 0) {\n                    range = new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn + diff);\n                }\n            }\n            snippetInfo = undefined;\n        }\n        else if ('snippet' in inlineCompletion.insertText) {\n            const preBracketCompletionLength = inlineCompletion.insertText.snippet.length;\n            if (languageConfigurationService && inlineCompletion.completeBracketPairs) {\n                inlineCompletion.insertText.snippet = closeBrackets(inlineCompletion.insertText.snippet, range.getStartPosition(), textModel, languageConfigurationService);\n                // Modify range depending on if brackets are added or removed\n                const diff = inlineCompletion.insertText.snippet.length - preBracketCompletionLength;\n                if (diff !== 0) {\n                    range = new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn + diff);\n                }\n            }\n            const snippet = new SnippetParser().parse(inlineCompletion.insertText.snippet);\n            if (snippet.children.length === 1 && snippet.children[0] instanceof Text) {\n                insertText = snippet.children[0].value;\n                snippetInfo = undefined;\n            }\n            else {\n                insertText = snippet.toString();\n                snippetInfo = {\n                    snippet: inlineCompletion.insertText.snippet,\n                    range: range\n                };\n            }\n        }\n        else {\n            assertNever(inlineCompletion.insertText);\n        }\n        return new InlineCompletionItem(insertText, inlineCompletion.command, range, insertText, snippetInfo, inlineCompletion.additionalTextEdits || getReadonlyEmptyArray(), inlineCompletion, source);\n    }\n    constructor(filterText, command, range, insertText, snippetInfo, additionalTextEdits, \n    /**\n     * A reference to the original inline completion this inline completion has been constructed from.\n     * Used for event data to ensure referential equality.\n    */\n    sourceInlineCompletion, \n    /**\n     * A reference to the original inline completion list this inline completion has been constructed from.\n     * Used for event data to ensure referential equality.\n    */\n    source) {\n        this.filterText = filterText;\n        this.command = command;\n        this.range = range;\n        this.insertText = insertText;\n        this.snippetInfo = snippetInfo;\n        this.additionalTextEdits = additionalTextEdits;\n        this.sourceInlineCompletion = sourceInlineCompletion;\n        this.source = source;\n        filterText = filterText.replace(/\\r\\n|\\r/g, '\\n');\n        insertText = filterText.replace(/\\r\\n|\\r/g, '\\n');\n    }\n    withRange(updatedRange) {\n        return new InlineCompletionItem(this.filterText, this.command, updatedRange, this.insertText, this.snippetInfo, this.additionalTextEdits, this.sourceInlineCompletion, this.source);\n    }\n    hash() {\n        return JSON.stringify({ insertText: this.insertText, range: this.range.toString() });\n    }\n}\nfunction getDefaultRange(position, model) {\n    const word = model.getWordAtPosition(position);\n    const maxColumn = model.getLineMaxColumn(position.lineNumber);\n    // By default, always replace up until the end of the current line.\n    // This default might be subject to change!\n    return word\n        ? new Range(position.lineNumber, word.startColumn, position.lineNumber, maxColumn)\n        : Range.fromPositions(position, position.with(undefined, maxColumn));\n}\nfunction closeBrackets(text, position, model, languageConfigurationService) {\n    const lineStart = model.getLineContent(position.lineNumber).substring(0, position.column - 1);\n    const newLine = lineStart + text;\n    const newTokens = model.tokenization.tokenizeLineWithEdit(position, newLine.length - (position.column - 1), text);\n    const slicedTokens = newTokens === null || newTokens === void 0 ? void 0 : newTokens.sliceAndInflate(position.column - 1, newLine.length, 0);\n    if (!slicedTokens) {\n        return text;\n    }\n    const newText = fixBracketsInLine(slicedTokens, languageConfigurationService);\n    return newText;\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 { LanguageAgnosticBracketTokens } from './bracketPairsTree/brackets.js';\nimport { lengthAdd, lengthGetColumnCountIfZeroLineCount, lengthZero } from './bracketPairsTree/length.js';\nimport { parseDocument } from './bracketPairsTree/parser.js';\nimport { DenseKeyProvider } from './bracketPairsTree/smallImmutableSet.js';\nimport { TextBufferTokenizer } from './bracketPairsTree/tokenizer.js';\nexport function fixBracketsInLine(tokens, languageConfigurationService) {\n    const denseKeyProvider = new DenseKeyProvider();\n    const bracketTokens = new LanguageAgnosticBracketTokens(denseKeyProvider, (languageId) => languageConfigurationService.getLanguageConfiguration(languageId));\n    const tokenizer = new TextBufferTokenizer(new StaticTokenizerSource([tokens]), bracketTokens);\n    const node = parseDocument(tokenizer, [], undefined, true);\n    let str = '';\n    const line = tokens.getLineContent();\n    function processNode(node, offset) {\n        if (node.kind === 2 /* AstNodeKind.Pair */) {\n            processNode(node.openingBracket, offset);\n            offset = lengthAdd(offset, node.openingBracket.length);\n            if (node.child) {\n                processNode(node.child, offset);\n                offset = lengthAdd(offset, node.child.length);\n            }\n            if (node.closingBracket) {\n                processNode(node.closingBracket, offset);\n                offset = lengthAdd(offset, node.closingBracket.length);\n            }\n            else {\n                const singleLangBracketTokens = bracketTokens.getSingleLanguageBracketTokens(node.openingBracket.languageId);\n                const closingTokenText = singleLangBracketTokens.findClosingTokenText(node.openingBracket.bracketIds);\n                str += closingTokenText;\n            }\n        }\n        else if (node.kind === 3 /* AstNodeKind.UnexpectedClosingBracket */) {\n            // remove the bracket\n        }\n        else if (node.kind === 0 /* AstNodeKind.Text */ || node.kind === 1 /* AstNodeKind.Bracket */) {\n            str += line.substring(lengthGetColumnCountIfZeroLineCount(offset), lengthGetColumnCountIfZeroLineCount(lengthAdd(offset, node.length)));\n        }\n        else if (node.kind === 4 /* AstNodeKind.List */) {\n            for (const child of node.children) {\n                processNode(child, offset);\n                offset = lengthAdd(offset, child.length);\n            }\n        }\n    }\n    processNode(node, lengthZero);\n    return str;\n}\nclass StaticTokenizerSource {\n    constructor(lines) {\n        this.lines = lines;\n        this.tokenization = {\n            getLineTokens: (lineNumber) => {\n                return this.lines[lineNumber - 1];\n            }\n        };\n    }\n    getLineCount() {\n        return this.lines.length;\n    }\n    getLineLength(lineNumber) {\n        return this.lines[lineNumber - 1].getLineContent().length;\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 { LcsDiff } from '../../../../base/common/diff/diff.js';\nimport { commonPrefixLength, getLeadingWhitespace } from '../../../../base/common/strings.js';\nimport { Range } from '../../../common/core/range.js';\nimport { TextLength } from '../../../common/core/textLength.js';\nimport { SingleTextEdit } from '../../../common/core/textEdit.js';\nimport { GhostText, GhostTextPart } from './ghostText.js';\nexport function singleTextRemoveCommonPrefix(edit, model, validModelRange) {\n    const modelRange = validModelRange ? edit.range.intersectRanges(validModelRange) : edit.range;\n    if (!modelRange) {\n        return edit;\n    }\n    const valueToReplace = model.getValueInRange(modelRange, 1 /* EndOfLinePreference.LF */);\n    const commonPrefixLen = commonPrefixLength(valueToReplace, edit.text);\n    const start = TextLength.ofText(valueToReplace.substring(0, commonPrefixLen)).addToPosition(edit.range.getStartPosition());\n    const text = edit.text.substring(commonPrefixLen);\n    const range = Range.fromPositions(start, edit.range.getEndPosition());\n    return new SingleTextEdit(range, text);\n}\nexport function singleTextEditAugments(edit, base) {\n    // The augmented completion must replace the base range, but can replace even more\n    return edit.text.startsWith(base.text) && rangeExtends(edit.range, base.range);\n}\n/**\n * @param previewSuffixLength Sets where to split `inlineCompletion.text`.\n * \tIf the text is `hello` and the suffix length is 2, the non-preview part is `hel` and the preview-part is `lo`.\n*/\nexport function computeGhostText(edit, model, mode, cursorPosition, previewSuffixLength = 0) {\n    let e = singleTextRemoveCommonPrefix(edit, model);\n    if (e.range.endLineNumber !== e.range.startLineNumber) {\n        // This edit might span multiple lines, but the first lines must be a common prefix.\n        return undefined;\n    }\n    const sourceLine = model.getLineContent(e.range.startLineNumber);\n    const sourceIndentationLength = getLeadingWhitespace(sourceLine).length;\n    const suggestionTouchesIndentation = e.range.startColumn - 1 <= sourceIndentationLength;\n    if (suggestionTouchesIndentation) {\n        // source:      \u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7[\u00B7\u00B7\u00B7\u00B7\u00B7\u00B7abc]\n        //                         ^^^^^^^^^ inlineCompletion.range\n        //              ^^^^^^^^^^ ^^^^^^ sourceIndentationLength\n        //                         ^^^^^^ replacedIndentation.length\n        //                               ^^^ rangeThatDoesNotReplaceIndentation\n        // inlineCompletion.text: '\u00B7\u00B7foo'\n        //                         ^^ suggestionAddedIndentationLength\n        const suggestionAddedIndentationLength = getLeadingWhitespace(e.text).length;\n        const replacedIndentation = sourceLine.substring(e.range.startColumn - 1, sourceIndentationLength);\n        const [startPosition, endPosition] = [e.range.getStartPosition(), e.range.getEndPosition()];\n        const newStartPosition = startPosition.column + replacedIndentation.length <= endPosition.column\n            ? startPosition.delta(0, replacedIndentation.length)\n            : endPosition;\n        const rangeThatDoesNotReplaceIndentation = Range.fromPositions(newStartPosition, endPosition);\n        const suggestionWithoutIndentationChange = e.text.startsWith(replacedIndentation)\n            // Adds more indentation without changing existing indentation: We can add ghost text for this\n            ? e.text.substring(replacedIndentation.length)\n            // Changes or removes existing indentation. Only add ghost text for the non-indentation part.\n            : e.text.substring(suggestionAddedIndentationLength);\n        e = new SingleTextEdit(rangeThatDoesNotReplaceIndentation, suggestionWithoutIndentationChange);\n    }\n    // This is a single line string\n    const valueToBeReplaced = model.getValueInRange(e.range);\n    const changes = cachingDiff(valueToBeReplaced, e.text);\n    if (!changes) {\n        // No ghost text in case the diff would be too slow to compute\n        return undefined;\n    }\n    const lineNumber = e.range.startLineNumber;\n    const parts = new Array();\n    if (mode === 'prefix') {\n        const filteredChanges = changes.filter(c => c.originalLength === 0);\n        if (filteredChanges.length > 1 || filteredChanges.length === 1 && filteredChanges[0].originalStart !== valueToBeReplaced.length) {\n            // Prefixes only have a single change.\n            return undefined;\n        }\n    }\n    const previewStartInCompletionText = e.text.length - previewSuffixLength;\n    for (const c of changes) {\n        const insertColumn = e.range.startColumn + c.originalStart + c.originalLength;\n        if (mode === 'subwordSmart' && cursorPosition && cursorPosition.lineNumber === e.range.startLineNumber && insertColumn < cursorPosition.column) {\n            // No ghost text before cursor\n            return undefined;\n        }\n        if (c.originalLength > 0) {\n            return undefined;\n        }\n        if (c.modifiedLength === 0) {\n            continue;\n        }\n        const modifiedEnd = c.modifiedStart + c.modifiedLength;\n        const nonPreviewTextEnd = Math.max(c.modifiedStart, Math.min(modifiedEnd, previewStartInCompletionText));\n        const nonPreviewText = e.text.substring(c.modifiedStart, nonPreviewTextEnd);\n        const italicText = e.text.substring(nonPreviewTextEnd, Math.max(c.modifiedStart, modifiedEnd));\n        if (nonPreviewText.length > 0) {\n            parts.push(new GhostTextPart(insertColumn, nonPreviewText, false));\n        }\n        if (italicText.length > 0) {\n            parts.push(new GhostTextPart(insertColumn, italicText, true));\n        }\n    }\n    return new GhostText(lineNumber, parts);\n}\nfunction rangeExtends(extendingRange, rangeToExtend) {\n    return rangeToExtend.getStartPosition().equals(extendingRange.getStartPosition())\n        && rangeToExtend.getEndPosition().isBeforeOrEqual(extendingRange.getEndPosition());\n}\nlet lastRequest = undefined;\nfunction cachingDiff(originalValue, newValue) {\n    if ((lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.originalValue) === originalValue && (lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.newValue) === newValue) {\n        return lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.changes;\n    }\n    else {\n        let changes = smartDiff(originalValue, newValue, true);\n        if (changes) {\n            const deletedChars = deletedCharacters(changes);\n            if (deletedChars > 0) {\n                // For performance reasons, don't compute diff if there is nothing to improve\n                const newChanges = smartDiff(originalValue, newValue, false);\n                if (newChanges && deletedCharacters(newChanges) < deletedChars) {\n                    // Disabling smartness seems to be better here\n                    changes = newChanges;\n                }\n            }\n        }\n        lastRequest = {\n            originalValue,\n            newValue,\n            changes\n        };\n        return changes;\n    }\n}\nfunction deletedCharacters(changes) {\n    let sum = 0;\n    for (const c of changes) {\n        sum += c.originalLength;\n    }\n    return sum;\n}\n/**\n * When matching `if ()` with `if (f() = 1) { g(); }`,\n * align it like this:        `if (       )`\n * Not like this:\t\t\t  `if (  )`\n * Also not like this:\t\t  `if (             )`.\n *\n * The parenthesis are preprocessed to ensure that they match correctly.\n */\nfunction smartDiff(originalValue, newValue, smartBracketMatching) {\n    if (originalValue.length > 5000 || newValue.length > 5000) {\n        // We don't want to work on strings that are too big\n        return undefined;\n    }\n    function getMaxCharCode(val) {\n        let maxCharCode = 0;\n        for (let i = 0, len = val.length; i < len; i++) {\n            const charCode = val.charCodeAt(i);\n            if (charCode > maxCharCode) {\n                maxCharCode = charCode;\n            }\n        }\n        return maxCharCode;\n    }\n    const maxCharCode = Math.max(getMaxCharCode(originalValue), getMaxCharCode(newValue));\n    function getUniqueCharCode(id) {\n        if (id < 0) {\n            throw new Error('unexpected');\n        }\n        return maxCharCode + id + 1;\n    }\n    function getElements(source) {\n        let level = 0;\n        let group = 0;\n        const characters = new Int32Array(source.length);\n        for (let i = 0, len = source.length; i < len; i++) {\n            // TODO support more brackets\n            if (smartBracketMatching && source[i] === '(') {\n                const id = group * 100 + level;\n                characters[i] = getUniqueCharCode(2 * id);\n                level++;\n            }\n            else if (smartBracketMatching && source[i] === ')') {\n                level = Math.max(level - 1, 0);\n                const id = group * 100 + level;\n                characters[i] = getUniqueCharCode(2 * id + 1);\n                if (level === 0) {\n                    group++;\n                }\n            }\n            else {\n                characters[i] = source.charCodeAt(i);\n            }\n        }\n        return characters;\n    }\n    const elements1 = getElements(originalValue);\n    const elements2 = getElements(newValue);\n    return new LcsDiff({ getElements: () => elements1 }, { getElements: () => elements2 }).ComputeDiff(false).changes;\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 SnippetController2_1;\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { EditorCommand, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { showSimpleSuggestions } from '../../suggest/browser/suggest.js';\nimport { localize } from '../../../../nls.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { SnippetSession } from './snippetSession.js';\nconst _defaultOptions = {\n    overwriteBefore: 0,\n    overwriteAfter: 0,\n    undoStopBefore: true,\n    undoStopAfter: true,\n    adjustWhitespace: true,\n    clipboardText: undefined,\n    overtypingCapturer: undefined\n};\nlet SnippetController2 = SnippetController2_1 = class SnippetController2 {\n    static get(editor) {\n        return editor.getContribution(SnippetController2_1.ID);\n    }\n    constructor(_editor, _logService, _languageFeaturesService, contextKeyService, _languageConfigurationService) {\n        this._editor = _editor;\n        this._logService = _logService;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._languageConfigurationService = _languageConfigurationService;\n        this._snippetListener = new DisposableStore();\n        this._modelVersionId = -1;\n        this._inSnippet = SnippetController2_1.InSnippetMode.bindTo(contextKeyService);\n        this._hasNextTabstop = SnippetController2_1.HasNextTabstop.bindTo(contextKeyService);\n        this._hasPrevTabstop = SnippetController2_1.HasPrevTabstop.bindTo(contextKeyService);\n    }\n    dispose() {\n        var _a;\n        this._inSnippet.reset();\n        this._hasPrevTabstop.reset();\n        this._hasNextTabstop.reset();\n        (_a = this._session) === null || _a === void 0 ? void 0 : _a.dispose();\n        this._snippetListener.dispose();\n    }\n    insert(template, opts) {\n        // this is here to find out more about the yet-not-understood\n        // error that sometimes happens when we fail to inserted a nested\n        // snippet\n        try {\n            this._doInsert(template, typeof opts === 'undefined' ? _defaultOptions : { ..._defaultOptions, ...opts });\n        }\n        catch (e) {\n            this.cancel();\n            this._logService.error(e);\n            this._logService.error('snippet_error');\n            this._logService.error('insert_template=', template);\n            this._logService.error('existing_template=', this._session ? this._session._logInfo() : '<no_session>');\n        }\n    }\n    _doInsert(template, opts) {\n        var _a;\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        // don't listen while inserting the snippet\n        // as that is the inflight state causing cancelation\n        this._snippetListener.clear();\n        if (opts.undoStopBefore) {\n            this._editor.getModel().pushStackElement();\n        }\n        // don't merge\n        if (this._session && typeof template !== 'string') {\n            this.cancel();\n        }\n        if (!this._session) {\n            this._modelVersionId = this._editor.getModel().getAlternativeVersionId();\n            this._session = new SnippetSession(this._editor, template, opts, this._languageConfigurationService);\n            this._session.insert();\n        }\n        else {\n            assertType(typeof template === 'string');\n            this._session.merge(template, opts);\n        }\n        if (opts.undoStopAfter) {\n            this._editor.getModel().pushStackElement();\n        }\n        // regster completion item provider when there is any choice element\n        if ((_a = this._session) === null || _a === void 0 ? void 0 : _a.hasChoice) {\n            const provider = {\n                _debugDisplayName: 'snippetChoiceCompletions',\n                provideCompletionItems: (model, position) => {\n                    if (!this._session || model !== this._editor.getModel() || !Position.equals(this._editor.getPosition(), position)) {\n                        return undefined;\n                    }\n                    const { activeChoice } = this._session;\n                    if (!activeChoice || activeChoice.choice.options.length === 0) {\n                        return undefined;\n                    }\n                    const word = model.getValueInRange(activeChoice.range);\n                    const isAnyOfOptions = Boolean(activeChoice.choice.options.find(o => o.value === word));\n                    const suggestions = [];\n                    for (let i = 0; i < activeChoice.choice.options.length; i++) {\n                        const option = activeChoice.choice.options[i];\n                        suggestions.push({\n                            kind: 13 /* CompletionItemKind.Value */,\n                            label: option.value,\n                            insertText: option.value,\n                            sortText: 'a'.repeat(i + 1),\n                            range: activeChoice.range,\n                            filterText: isAnyOfOptions ? `${word}_${option.value}` : undefined,\n                            command: { id: 'jumpToNextSnippetPlaceholder', title: localize('next', 'Go to next placeholder...') }\n                        });\n                    }\n                    return { suggestions };\n                }\n            };\n            const model = this._editor.getModel();\n            let registration;\n            let isRegistered = false;\n            const disable = () => {\n                registration === null || registration === void 0 ? void 0 : registration.dispose();\n                isRegistered = false;\n            };\n            const enable = () => {\n                if (!isRegistered) {\n                    registration = this._languageFeaturesService.completionProvider.register({\n                        language: model.getLanguageId(),\n                        pattern: model.uri.fsPath,\n                        scheme: model.uri.scheme,\n                        exclusive: true\n                    }, provider);\n                    this._snippetListener.add(registration);\n                    isRegistered = true;\n                }\n            };\n            this._choiceCompletions = { provider, enable, disable };\n        }\n        this._updateState();\n        this._snippetListener.add(this._editor.onDidChangeModelContent(e => e.isFlush && this.cancel()));\n        this._snippetListener.add(this._editor.onDidChangeModel(() => this.cancel()));\n        this._snippetListener.add(this._editor.onDidChangeCursorSelection(() => this._updateState()));\n    }\n    _updateState() {\n        if (!this._session || !this._editor.hasModel()) {\n            // canceled in the meanwhile\n            return;\n        }\n        if (this._modelVersionId === this._editor.getModel().getAlternativeVersionId()) {\n            // undo until the 'before' state happened\n            // and makes use cancel snippet mode\n            return this.cancel();\n        }\n        if (!this._session.hasPlaceholder) {\n            // don't listen for selection changes and don't\n            // update context keys when the snippet is plain text\n            return this.cancel();\n        }\n        if (this._session.isAtLastPlaceholder || !this._session.isSelectionWithinPlaceholders()) {\n            this._editor.getModel().pushStackElement();\n            return this.cancel();\n        }\n        this._inSnippet.set(true);\n        this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder);\n        this._hasNextTabstop.set(!this._session.isAtLastPlaceholder);\n        this._handleChoice();\n    }\n    _handleChoice() {\n        var _a;\n        if (!this._session || !this._editor.hasModel()) {\n            this._currentChoice = undefined;\n            return;\n        }\n        const { activeChoice } = this._session;\n        if (!activeChoice || !this._choiceCompletions) {\n            (_a = this._choiceCompletions) === null || _a === void 0 ? void 0 : _a.disable();\n            this._currentChoice = undefined;\n            return;\n        }\n        if (this._currentChoice !== activeChoice.choice) {\n            this._currentChoice = activeChoice.choice;\n            this._choiceCompletions.enable();\n            // trigger suggest with the special choice completion provider\n            queueMicrotask(() => {\n                showSimpleSuggestions(this._editor, this._choiceCompletions.provider);\n            });\n        }\n    }\n    finish() {\n        while (this._inSnippet.get()) {\n            this.next();\n        }\n    }\n    cancel(resetSelection = false) {\n        var _a;\n        this._inSnippet.reset();\n        this._hasPrevTabstop.reset();\n        this._hasNextTabstop.reset();\n        this._snippetListener.clear();\n        this._currentChoice = undefined;\n        (_a = this._session) === null || _a === void 0 ? void 0 : _a.dispose();\n        this._session = undefined;\n        this._modelVersionId = -1;\n        if (resetSelection) {\n            // reset selection to the primary cursor when being asked\n            // for. this happens when explicitly cancelling snippet mode,\n            // e.g. when pressing ESC\n            this._editor.setSelections([this._editor.getSelection()]);\n        }\n    }\n    prev() {\n        var _a;\n        (_a = this._session) === null || _a === void 0 ? void 0 : _a.prev();\n        this._updateState();\n    }\n    next() {\n        var _a;\n        (_a = this._session) === null || _a === void 0 ? void 0 : _a.next();\n        this._updateState();\n    }\n    isInSnippet() {\n        return Boolean(this._inSnippet.get());\n    }\n};\nSnippetController2.ID = 'snippetController2';\nSnippetController2.InSnippetMode = new RawContextKey('inSnippetMode', false, localize('inSnippetMode', \"Whether the editor in current in snippet mode\"));\nSnippetController2.HasNextTabstop = new RawContextKey('hasNextTabstop', false, localize('hasNextTabstop', \"Whether there is a next tab stop when in snippet mode\"));\nSnippetController2.HasPrevTabstop = new RawContextKey('hasPrevTabstop', false, localize('hasPrevTabstop', \"Whether there is a previous tab stop when in snippet mode\"));\nSnippetController2 = SnippetController2_1 = __decorate([\n    __param(1, ILogService),\n    __param(2, ILanguageFeaturesService),\n    __param(3, IContextKeyService),\n    __param(4, ILanguageConfigurationService)\n], SnippetController2);\nexport { SnippetController2 };\nregisterEditorContribution(SnippetController2.ID, SnippetController2, 4 /* EditorContributionInstantiation.Lazy */);\nconst CommandCtor = EditorCommand.bindToContribution(SnippetController2.get);\nregisterEditorCommand(new CommandCtor({\n    id: 'jumpToNextSnippetPlaceholder',\n    precondition: ContextKeyExpr.and(SnippetController2.InSnippetMode, SnippetController2.HasNextTabstop),\n    handler: ctrl => ctrl.next(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 30,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 2 /* KeyCode.Tab */\n    }\n}));\nregisterEditorCommand(new CommandCtor({\n    id: 'jumpToPrevSnippetPlaceholder',\n    precondition: ContextKeyExpr.and(SnippetController2.InSnippetMode, SnippetController2.HasPrevTabstop),\n    handler: ctrl => ctrl.prev(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 30,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */\n    }\n}));\nregisterEditorCommand(new CommandCtor({\n    id: 'leaveSnippet',\n    precondition: SnippetController2.InSnippetMode,\n    handler: ctrl => ctrl.cancel(true),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 30,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 9 /* KeyCode.Escape */,\n        secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n    }\n}));\nregisterEditorCommand(new CommandCtor({\n    id: 'acceptSnippet',\n    precondition: SnippetController2.InSnippetMode,\n    handler: ctrl => ctrl.finish(),\n    // kbOpts: {\n    // \tweight: KeybindingWeight.EditorContrib + 30,\n    // \tkbExpr: EditorContextKeys.textFocus,\n    // \tprimary: KeyCode.Enter,\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 { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { CancellationError, isCancellationError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { FuzzyScore } from '../../../../base/common/filters.js';\nimport { DisposableStore, isDisposable } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { localize } from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { historyNavigationVisible } from '../../../../platform/history/browser/contextScopedHistoryWidget.js';\nexport const Context = {\n    Visible: historyNavigationVisible,\n    HasFocusedSuggestion: new RawContextKey('suggestWidgetHasFocusedSuggestion', false, localize('suggestWidgetHasSelection', \"Whether any suggestion is focused\")),\n    DetailsVisible: new RawContextKey('suggestWidgetDetailsVisible', false, localize('suggestWidgetDetailsVisible', \"Whether suggestion details are visible\")),\n    MultipleSuggestions: new RawContextKey('suggestWidgetMultipleSuggestions', false, localize('suggestWidgetMultipleSuggestions', \"Whether there are multiple suggestions to pick from\")),\n    MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true, localize('suggestionMakesTextEdit', \"Whether inserting the current suggestion yields in a change or has everything already been typed\")),\n    AcceptSuggestionsOnEnter: new RawContextKey('acceptSuggestionOnEnter', true, localize('acceptSuggestionOnEnter', \"Whether suggestions are inserted when pressing Enter\")),\n    HasInsertAndReplaceRange: new RawContextKey('suggestionHasInsertAndReplaceRange', false, localize('suggestionHasInsertAndReplaceRange', \"Whether the current suggestion has insert and replace behaviour\")),\n    InsertMode: new RawContextKey('suggestionInsertMode', undefined, { type: 'string', description: localize('suggestionInsertMode', \"Whether the default behaviour is to insert or replace\") }),\n    CanResolve: new RawContextKey('suggestionCanResolve', false, localize('suggestionCanResolve', \"Whether the current suggestion supports to resolve further details\")),\n};\nexport const suggestWidgetStatusbarMenu = new MenuId('suggestWidgetStatusBar');\nexport class CompletionItem {\n    constructor(position, completion, container, provider) {\n        var _a;\n        this.position = position;\n        this.completion = completion;\n        this.container = container;\n        this.provider = provider;\n        // validation\n        this.isInvalid = false;\n        // sorting, filtering\n        this.score = FuzzyScore.Default;\n        this.distance = 0;\n        this.textLabel = typeof completion.label === 'string'\n            ? completion.label\n            : (_a = completion.label) === null || _a === void 0 ? void 0 : _a.label;\n        // ensure lower-variants (perf)\n        this.labelLow = this.textLabel.toLowerCase();\n        // validate label\n        this.isInvalid = !this.textLabel;\n        this.sortTextLow = completion.sortText && completion.sortText.toLowerCase();\n        this.filterTextLow = completion.filterText && completion.filterText.toLowerCase();\n        this.extensionId = completion.extensionId;\n        // normalize ranges\n        if (Range.isIRange(completion.range)) {\n            this.editStart = new Position(completion.range.startLineNumber, completion.range.startColumn);\n            this.editInsertEnd = new Position(completion.range.endLineNumber, completion.range.endColumn);\n            this.editReplaceEnd = new Position(completion.range.endLineNumber, completion.range.endColumn);\n            // validate range\n            this.isInvalid = this.isInvalid\n                || Range.spansMultipleLines(completion.range) || completion.range.startLineNumber !== position.lineNumber;\n        }\n        else {\n            this.editStart = new Position(completion.range.insert.startLineNumber, completion.range.insert.startColumn);\n            this.editInsertEnd = new Position(completion.range.insert.endLineNumber, completion.range.insert.endColumn);\n            this.editReplaceEnd = new Position(completion.range.replace.endLineNumber, completion.range.replace.endColumn);\n            // validate ranges\n            this.isInvalid = this.isInvalid\n                || Range.spansMultipleLines(completion.range.insert) || Range.spansMultipleLines(completion.range.replace)\n                || completion.range.insert.startLineNumber !== position.lineNumber || completion.range.replace.startLineNumber !== position.lineNumber\n                || completion.range.insert.startColumn !== completion.range.replace.startColumn;\n        }\n        // create the suggestion resolver\n        if (typeof provider.resolveCompletionItem !== 'function') {\n            this._resolveCache = Promise.resolve();\n            this._resolveDuration = 0;\n        }\n    }\n    // ---- resolving\n    get isResolved() {\n        return this._resolveDuration !== undefined;\n    }\n    get resolveDuration() {\n        return this._resolveDuration !== undefined ? this._resolveDuration : -1;\n    }\n    async resolve(token) {\n        if (!this._resolveCache) {\n            const sub = token.onCancellationRequested(() => {\n                this._resolveCache = undefined;\n                this._resolveDuration = undefined;\n            });\n            const sw = new StopWatch(true);\n            this._resolveCache = Promise.resolve(this.provider.resolveCompletionItem(this.completion, token)).then(value => {\n                Object.assign(this.completion, value);\n                this._resolveDuration = sw.elapsed();\n            }, err => {\n                if (isCancellationError(err)) {\n                    // the IPC queue will reject the request with the\n                    // cancellation error -> reset cached\n                    this._resolveCache = undefined;\n                    this._resolveDuration = undefined;\n                }\n            }).finally(() => {\n                sub.dispose();\n            });\n        }\n        return this._resolveCache;\n    }\n}\nexport class CompletionOptions {\n    constructor(snippetSortOrder = 2 /* SnippetSortOrder.Bottom */, kindFilter = new Set(), providerFilter = new Set(), providerItemsToReuse = new Map(), showDeprecated = true) {\n        this.snippetSortOrder = snippetSortOrder;\n        this.kindFilter = kindFilter;\n        this.providerFilter = providerFilter;\n        this.providerItemsToReuse = providerItemsToReuse;\n        this.showDeprecated = showDeprecated;\n    }\n}\nCompletionOptions.default = new CompletionOptions();\nlet _snippetSuggestSupport;\nexport function getSnippetSuggestSupport() {\n    return _snippetSuggestSupport;\n}\nexport class CompletionItemModel {\n    constructor(items, needsClipboard, durations, disposable) {\n        this.items = items;\n        this.needsClipboard = needsClipboard;\n        this.durations = durations;\n        this.disposable = disposable;\n    }\n}\nexport async function provideSuggestionItems(registry, model, position, options = CompletionOptions.default, context = { triggerKind: 0 /* languages.CompletionTriggerKind.Invoke */ }, token = CancellationToken.None) {\n    const sw = new StopWatch();\n    position = position.clone();\n    const word = model.getWordAtPosition(position);\n    const defaultReplaceRange = word ? new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn) : Range.fromPositions(position);\n    const defaultRange = { replace: defaultReplaceRange, insert: defaultReplaceRange.setEndPosition(position.lineNumber, position.column) };\n    const result = [];\n    const disposables = new DisposableStore();\n    const durations = [];\n    let needsClipboard = false;\n    const onCompletionList = (provider, container, sw) => {\n        var _a, _b, _c;\n        let didAddResult = false;\n        if (!container) {\n            return didAddResult;\n        }\n        for (const suggestion of container.suggestions) {\n            if (!options.kindFilter.has(suggestion.kind)) {\n                // skip if not showing deprecated suggestions\n                if (!options.showDeprecated && ((_a = suggestion === null || suggestion === void 0 ? void 0 : suggestion.tags) === null || _a === void 0 ? void 0 : _a.includes(1 /* languages.CompletionItemTag.Deprecated */))) {\n                    continue;\n                }\n                // fill in default range when missing\n                if (!suggestion.range) {\n                    suggestion.range = defaultRange;\n                }\n                // fill in default sortText when missing\n                if (!suggestion.sortText) {\n                    suggestion.sortText = typeof suggestion.label === 'string' ? suggestion.label : suggestion.label.label;\n                }\n                if (!needsClipboard && suggestion.insertTextRules && suggestion.insertTextRules & 4 /* languages.CompletionItemInsertTextRule.InsertAsSnippet */) {\n                    needsClipboard = SnippetParser.guessNeedsClipboard(suggestion.insertText);\n                }\n                result.push(new CompletionItem(position, suggestion, container, provider));\n                didAddResult = true;\n            }\n        }\n        if (isDisposable(container)) {\n            disposables.add(container);\n        }\n        durations.push({\n            providerName: (_b = provider._debugDisplayName) !== null && _b !== void 0 ? _b : 'unknown_provider', elapsedProvider: (_c = container.duration) !== null && _c !== void 0 ? _c : -1, elapsedOverall: sw.elapsed()\n        });\n        return didAddResult;\n    };\n    // ask for snippets in parallel to asking \"real\" providers. Only do something if configured to\n    // do so - no snippet filter, no special-providers-only request\n    const snippetCompletions = (async () => {\n        if (!_snippetSuggestSupport || options.kindFilter.has(27 /* languages.CompletionItemKind.Snippet */)) {\n            return;\n        }\n        // we have items from a previous session that we can reuse\n        const reuseItems = options.providerItemsToReuse.get(_snippetSuggestSupport);\n        if (reuseItems) {\n            reuseItems.forEach(item => result.push(item));\n            return;\n        }\n        if (options.providerFilter.size > 0 && !options.providerFilter.has(_snippetSuggestSupport)) {\n            return;\n        }\n        const sw = new StopWatch();\n        const list = await _snippetSuggestSupport.provideCompletionItems(model, position, context, token);\n        onCompletionList(_snippetSuggestSupport, list, sw);\n    })();\n    // add suggestions from contributed providers - providers are ordered in groups of\n    // equal score and once a group produces a result the process stops\n    // get provider groups, always add snippet suggestion provider\n    for (const providerGroup of registry.orderedGroups(model)) {\n        // for each support in the group ask for suggestions\n        let didAddResult = false;\n        await Promise.all(providerGroup.map(async (provider) => {\n            // we have items from a previous session that we can reuse\n            if (options.providerItemsToReuse.has(provider)) {\n                const items = options.providerItemsToReuse.get(provider);\n                items.forEach(item => result.push(item));\n                didAddResult = didAddResult || items.length > 0;\n                return;\n            }\n            // check if this provider is filtered out\n            if (options.providerFilter.size > 0 && !options.providerFilter.has(provider)) {\n                return;\n            }\n            try {\n                const sw = new StopWatch();\n                const list = await provider.provideCompletionItems(model, position, context, token);\n                didAddResult = onCompletionList(provider, list, sw) || didAddResult;\n            }\n            catch (err) {\n                onUnexpectedExternalError(err);\n            }\n        }));\n        if (didAddResult || token.isCancellationRequested) {\n            break;\n        }\n    }\n    await snippetCompletions;\n    if (token.isCancellationRequested) {\n        disposables.dispose();\n        return Promise.reject(new CancellationError());\n    }\n    return new CompletionItemModel(result.sort(getSuggestionComparator(options.snippetSortOrder)), needsClipboard, { entries: durations, elapsed: sw.elapsed() }, disposables);\n}\nfunction defaultComparator(a, b) {\n    // check with 'sortText'\n    if (a.sortTextLow && b.sortTextLow) {\n        if (a.sortTextLow < b.sortTextLow) {\n            return -1;\n        }\n        else if (a.sortTextLow > b.sortTextLow) {\n            return 1;\n        }\n    }\n    // check with 'label'\n    if (a.textLabel < b.textLabel) {\n        return -1;\n    }\n    else if (a.textLabel > b.textLabel) {\n        return 1;\n    }\n    // check with 'type'\n    return a.completion.kind - b.completion.kind;\n}\nfunction snippetUpComparator(a, b) {\n    if (a.completion.kind !== b.completion.kind) {\n        if (a.completion.kind === 27 /* languages.CompletionItemKind.Snippet */) {\n            return -1;\n        }\n        else if (b.completion.kind === 27 /* languages.CompletionItemKind.Snippet */) {\n            return 1;\n        }\n    }\n    return defaultComparator(a, b);\n}\nfunction snippetDownComparator(a, b) {\n    if (a.completion.kind !== b.completion.kind) {\n        if (a.completion.kind === 27 /* languages.CompletionItemKind.Snippet */) {\n            return 1;\n        }\n        else if (b.completion.kind === 27 /* languages.CompletionItemKind.Snippet */) {\n            return -1;\n        }\n    }\n    return defaultComparator(a, b);\n}\nconst _snippetComparators = new Map();\n_snippetComparators.set(0 /* SnippetSortOrder.Top */, snippetUpComparator);\n_snippetComparators.set(2 /* SnippetSortOrder.Bottom */, snippetDownComparator);\n_snippetComparators.set(1 /* SnippetSortOrder.Inline */, defaultComparator);\nexport function getSuggestionComparator(snippetConfig) {\n    return _snippetComparators.get(snippetConfig);\n}\nCommandsRegistry.registerCommand('_executeCompletionItemProvider', async (accessor, ...args) => {\n    const [uri, position, triggerCharacter, maxItemsToResolve] = args;\n    assertType(URI.isUri(uri));\n    assertType(Position.isIPosition(position));\n    assertType(typeof triggerCharacter === 'string' || !triggerCharacter);\n    assertType(typeof maxItemsToResolve === 'number' || !maxItemsToResolve);\n    const { completionProvider } = accessor.get(ILanguageFeaturesService);\n    const ref = await accessor.get(ITextModelService).createModelReference(uri);\n    try {\n        const result = {\n            incomplete: false,\n            suggestions: []\n        };\n        const resolving = [];\n        const actualPosition = ref.object.textEditorModel.validatePosition(position);\n        const completions = await provideSuggestionItems(completionProvider, ref.object.textEditorModel, actualPosition, undefined, { triggerCharacter: triggerCharacter !== null && triggerCharacter !== void 0 ? triggerCharacter : undefined, triggerKind: triggerCharacter ? 1 /* languages.CompletionTriggerKind.TriggerCharacter */ : 0 /* languages.CompletionTriggerKind.Invoke */ });\n        for (const item of completions.items) {\n            if (resolving.length < (maxItemsToResolve !== null && maxItemsToResolve !== void 0 ? maxItemsToResolve : 0)) {\n                resolving.push(item.resolve(CancellationToken.None));\n            }\n            result.incomplete = result.incomplete || item.container.incomplete;\n            result.suggestions.push(item.completion);\n        }\n        try {\n            await Promise.all(resolving);\n            return result;\n        }\n        finally {\n            setTimeout(() => completions.disposable.dispose(), 100);\n        }\n    }\n    finally {\n        ref.dispose();\n    }\n});\nexport function showSimpleSuggestions(editor, provider) {\n    var _a;\n    (_a = editor.getContribution('editor.contrib.suggestController')) === null || _a === void 0 ? void 0 : _a.triggerSuggest(new Set().add(provider), undefined, true);\n}\nexport class QuickSuggestionsOptions {\n    static isAllOff(config) {\n        return config.other === 'off' && config.comments === 'off' && config.strings === 'off';\n    }\n    static isAllOn(config) {\n        return config.other === 'on' && config.comments === 'on' && config.strings === 'on';\n    }\n    static valueFor(config, tokenType) {\n        switch (tokenType) {\n            case 1 /* StandardTokenType.Comment */: return config.comments;\n            case 2 /* StandardTokenType.String */: return config.strings;\n            default: return config.other;\n        }\n    }\n}\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar SnippetSession_1;\nimport { groupBy } from '../../../../base/common/arrays.js';\nimport { dispose } from '../../../../base/common/lifecycle.js';\nimport { getLeadingWhitespace } from '../../../../base/common/strings.js';\nimport './snippetSession.css';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILabelService } from '../../../../platform/label/common/label.js';\nimport { IWorkspaceContextService } from '../../../../platform/workspace/common/workspace.js';\nimport { Choice, Placeholder, SnippetParser, Text, TextmateSnippet } from './snippetParser.js';\nimport { ClipboardBasedVariableResolver, CommentBasedVariableResolver, CompositeSnippetVariableResolver, ModelBasedVariableResolver, RandomBasedVariableResolver, SelectionBasedVariableResolver, TimeBasedVariableResolver, WorkspaceBasedVariableResolver } from './snippetVariables.js';\nexport class OneSnippet {\n    constructor(_editor, _snippet, _snippetLineLeadingWhitespace) {\n        this._editor = _editor;\n        this._snippet = _snippet;\n        this._snippetLineLeadingWhitespace = _snippetLineLeadingWhitespace;\n        this._offset = -1;\n        this._nestingLevel = 1;\n        this._placeholderGroups = groupBy(_snippet.placeholders, Placeholder.compareByIndex);\n        this._placeholderGroupsIdx = -1;\n    }\n    initialize(textChange) {\n        this._offset = textChange.newPosition;\n    }\n    dispose() {\n        if (this._placeholderDecorations) {\n            this._editor.removeDecorations([...this._placeholderDecorations.values()]);\n        }\n        this._placeholderGroups.length = 0;\n    }\n    _initDecorations() {\n        if (this._offset === -1) {\n            throw new Error(`Snippet not initialized!`);\n        }\n        if (this._placeholderDecorations) {\n            // already initialized\n            return;\n        }\n        this._placeholderDecorations = new Map();\n        const model = this._editor.getModel();\n        this._editor.changeDecorations(accessor => {\n            // create a decoration for each placeholder\n            for (const placeholder of this._snippet.placeholders) {\n                const placeholderOffset = this._snippet.offset(placeholder);\n                const placeholderLen = this._snippet.fullLen(placeholder);\n                const range = Range.fromPositions(model.getPositionAt(this._offset + placeholderOffset), model.getPositionAt(this._offset + placeholderOffset + placeholderLen));\n                const options = placeholder.isFinalTabstop ? OneSnippet._decor.inactiveFinal : OneSnippet._decor.inactive;\n                const handle = accessor.addDecoration(range, options);\n                this._placeholderDecorations.set(placeholder, handle);\n            }\n        });\n    }\n    move(fwd) {\n        if (!this._editor.hasModel()) {\n            return [];\n        }\n        this._initDecorations();\n        // Transform placeholder text if necessary\n        if (this._placeholderGroupsIdx >= 0) {\n            const operations = [];\n            for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\n                // Check if the placeholder has a transformation\n                if (placeholder.transform) {\n                    const id = this._placeholderDecorations.get(placeholder);\n                    const range = this._editor.getModel().getDecorationRange(id);\n                    const currentValue = this._editor.getModel().getValueInRange(range);\n                    const transformedValueLines = placeholder.transform.resolve(currentValue).split(/\\r\\n|\\r|\\n/);\n                    // fix indentation for transformed lines\n                    for (let i = 1; i < transformedValueLines.length; i++) {\n                        transformedValueLines[i] = this._editor.getModel().normalizeIndentation(this._snippetLineLeadingWhitespace + transformedValueLines[i]);\n                    }\n                    operations.push(EditOperation.replace(range, transformedValueLines.join(this._editor.getModel().getEOL())));\n                }\n            }\n            if (operations.length > 0) {\n                this._editor.executeEdits('snippet.placeholderTransform', operations);\n            }\n        }\n        let couldSkipThisPlaceholder = false;\n        if (fwd === true && this._placeholderGroupsIdx < this._placeholderGroups.length - 1) {\n            this._placeholderGroupsIdx += 1;\n            couldSkipThisPlaceholder = true;\n        }\n        else if (fwd === false && this._placeholderGroupsIdx > 0) {\n            this._placeholderGroupsIdx -= 1;\n            couldSkipThisPlaceholder = true;\n        }\n        else {\n            // the selection of the current placeholder might\n            // not acurate any more -> simply restore it\n        }\n        const newSelections = this._editor.getModel().changeDecorations(accessor => {\n            const activePlaceholders = new Set();\n            // change stickiness to always grow when typing at its edges\n            // because these decorations represent the currently active\n            // tabstop.\n            // Special case #1: reaching the final tabstop\n            // Special case #2: placeholders enclosing active placeholders\n            const selections = [];\n            for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\n                const id = this._placeholderDecorations.get(placeholder);\n                const range = this._editor.getModel().getDecorationRange(id);\n                selections.push(new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn));\n                // consider to skip this placeholder index when the decoration\n                // range is empty but when the placeholder wasn't. that's a strong\n                // hint that the placeholder has been deleted. (all placeholder must match this)\n                couldSkipThisPlaceholder = couldSkipThisPlaceholder && this._hasPlaceholderBeenCollapsed(placeholder);\n                accessor.changeDecorationOptions(id, placeholder.isFinalTabstop ? OneSnippet._decor.activeFinal : OneSnippet._decor.active);\n                activePlaceholders.add(placeholder);\n                for (const enclosingPlaceholder of this._snippet.enclosingPlaceholders(placeholder)) {\n                    const id = this._placeholderDecorations.get(enclosingPlaceholder);\n                    accessor.changeDecorationOptions(id, enclosingPlaceholder.isFinalTabstop ? OneSnippet._decor.activeFinal : OneSnippet._decor.active);\n                    activePlaceholders.add(enclosingPlaceholder);\n                }\n            }\n            // change stickness to never grow when typing at its edges\n            // so that in-active tabstops never grow\n            for (const [placeholder, id] of this._placeholderDecorations) {\n                if (!activePlaceholders.has(placeholder)) {\n                    accessor.changeDecorationOptions(id, placeholder.isFinalTabstop ? OneSnippet._decor.inactiveFinal : OneSnippet._decor.inactive);\n                }\n            }\n            return selections;\n        });\n        return !couldSkipThisPlaceholder ? newSelections !== null && newSelections !== void 0 ? newSelections : [] : this.move(fwd);\n    }\n    _hasPlaceholderBeenCollapsed(placeholder) {\n        // A placeholder is empty when it wasn't empty when authored but\n        // when its tracking decoration is empty. This also applies to all\n        // potential parent placeholders\n        let marker = placeholder;\n        while (marker) {\n            if (marker instanceof Placeholder) {\n                const id = this._placeholderDecorations.get(marker);\n                const range = this._editor.getModel().getDecorationRange(id);\n                if (range.isEmpty() && marker.toString().length > 0) {\n                    return true;\n                }\n            }\n            marker = marker.parent;\n        }\n        return false;\n    }\n    get isAtFirstPlaceholder() {\n        return this._placeholderGroupsIdx <= 0 || this._placeholderGroups.length === 0;\n    }\n    get isAtLastPlaceholder() {\n        return this._placeholderGroupsIdx === this._placeholderGroups.length - 1;\n    }\n    get hasPlaceholder() {\n        return this._snippet.placeholders.length > 0;\n    }\n    /**\n     * A snippet is trivial when it has no placeholder or only a final placeholder at\n     * its very end\n     */\n    get isTrivialSnippet() {\n        if (this._snippet.placeholders.length === 0) {\n            return true;\n        }\n        if (this._snippet.placeholders.length === 1) {\n            const [placeholder] = this._snippet.placeholders;\n            if (placeholder.isFinalTabstop) {\n                if (this._snippet.rightMostDescendant === placeholder) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n    computePossibleSelections() {\n        const result = new Map();\n        for (const placeholdersWithEqualIndex of this._placeholderGroups) {\n            let ranges;\n            for (const placeholder of placeholdersWithEqualIndex) {\n                if (placeholder.isFinalTabstop) {\n                    // ignore those\n                    break;\n                }\n                if (!ranges) {\n                    ranges = [];\n                    result.set(placeholder.index, ranges);\n                }\n                const id = this._placeholderDecorations.get(placeholder);\n                const range = this._editor.getModel().getDecorationRange(id);\n                if (!range) {\n                    // one of the placeholder lost its decoration and\n                    // therefore we bail out and pretend the placeholder\n                    // (with its mirrors) doesn't exist anymore.\n                    result.delete(placeholder.index);\n                    break;\n                }\n                ranges.push(range);\n            }\n        }\n        return result;\n    }\n    get activeChoice() {\n        if (!this._placeholderDecorations) {\n            return undefined;\n        }\n        const placeholder = this._placeholderGroups[this._placeholderGroupsIdx][0];\n        if (!(placeholder === null || placeholder === void 0 ? void 0 : placeholder.choice)) {\n            return undefined;\n        }\n        const id = this._placeholderDecorations.get(placeholder);\n        if (!id) {\n            return undefined;\n        }\n        const range = this._editor.getModel().getDecorationRange(id);\n        if (!range) {\n            return undefined;\n        }\n        return { range, choice: placeholder.choice };\n    }\n    get hasChoice() {\n        let result = false;\n        this._snippet.walk(marker => {\n            result = marker instanceof Choice;\n            return !result;\n        });\n        return result;\n    }\n    merge(others) {\n        const model = this._editor.getModel();\n        this._nestingLevel *= 10;\n        this._editor.changeDecorations(accessor => {\n            // For each active placeholder take one snippet and merge it\n            // in that the placeholder (can be many for `$1foo$1foo`). Because\n            // everything is sorted by editor selection we can simply remove\n            // elements from the beginning of the array\n            for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\n                const nested = others.shift();\n                console.assert(nested._offset !== -1);\n                console.assert(!nested._placeholderDecorations);\n                // Massage placeholder-indicies of the nested snippet to be\n                // sorted right after the insertion point. This ensures we move\n                // through the placeholders in the correct order\n                const indexLastPlaceholder = nested._snippet.placeholderInfo.last.index;\n                for (const nestedPlaceholder of nested._snippet.placeholderInfo.all) {\n                    if (nestedPlaceholder.isFinalTabstop) {\n                        nestedPlaceholder.index = placeholder.index + ((indexLastPlaceholder + 1) / this._nestingLevel);\n                    }\n                    else {\n                        nestedPlaceholder.index = placeholder.index + (nestedPlaceholder.index / this._nestingLevel);\n                    }\n                }\n                this._snippet.replace(placeholder, nested._snippet.children);\n                // Remove the placeholder at which position are inserting\n                // the snippet and also remove its decoration.\n                const id = this._placeholderDecorations.get(placeholder);\n                accessor.removeDecoration(id);\n                this._placeholderDecorations.delete(placeholder);\n                // For each *new* placeholder we create decoration to monitor\n                // how and if it grows/shrinks.\n                for (const placeholder of nested._snippet.placeholders) {\n                    const placeholderOffset = nested._snippet.offset(placeholder);\n                    const placeholderLen = nested._snippet.fullLen(placeholder);\n                    const range = Range.fromPositions(model.getPositionAt(nested._offset + placeholderOffset), model.getPositionAt(nested._offset + placeholderOffset + placeholderLen));\n                    const handle = accessor.addDecoration(range, OneSnippet._decor.inactive);\n                    this._placeholderDecorations.set(placeholder, handle);\n                }\n            }\n            // Last, re-create the placeholder groups by sorting placeholders by their index.\n            this._placeholderGroups = groupBy(this._snippet.placeholders, Placeholder.compareByIndex);\n        });\n    }\n}\nOneSnippet._decor = {\n    active: ModelDecorationOptions.register({ description: 'snippet-placeholder-1', stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */, className: 'snippet-placeholder' }),\n    inactive: ModelDecorationOptions.register({ description: 'snippet-placeholder-2', stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */, className: 'snippet-placeholder' }),\n    activeFinal: ModelDecorationOptions.register({ description: 'snippet-placeholder-3', stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */, className: 'finish-snippet-placeholder' }),\n    inactiveFinal: ModelDecorationOptions.register({ description: 'snippet-placeholder-4', stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */, className: 'finish-snippet-placeholder' }),\n};\nconst _defaultOptions = {\n    overwriteBefore: 0,\n    overwriteAfter: 0,\n    adjustWhitespace: true,\n    clipboardText: undefined,\n    overtypingCapturer: undefined\n};\nlet SnippetSession = SnippetSession_1 = class SnippetSession {\n    static adjustWhitespace(model, position, adjustIndentation, snippet, filter) {\n        const line = model.getLineContent(position.lineNumber);\n        const lineLeadingWhitespace = getLeadingWhitespace(line, 0, position.column - 1);\n        // the snippet as inserted\n        let snippetTextString;\n        snippet.walk(marker => {\n            // all text elements that are not inside choice\n            if (!(marker instanceof Text) || marker.parent instanceof Choice) {\n                return true;\n            }\n            // check with filter (iff provided)\n            if (filter && !filter.has(marker)) {\n                return true;\n            }\n            const lines = marker.value.split(/\\r\\n|\\r|\\n/);\n            if (adjustIndentation) {\n                // adjust indentation of snippet test\n                // -the snippet-start doesn't get extra-indented (lineLeadingWhitespace), only normalized\n                // -all N+1 lines get extra-indented and normalized\n                // -the text start get extra-indented and normalized when following a linebreak\n                const offset = snippet.offset(marker);\n                if (offset === 0) {\n                    // snippet start\n                    lines[0] = model.normalizeIndentation(lines[0]);\n                }\n                else {\n                    // check if text start is after a linebreak\n                    snippetTextString = snippetTextString !== null && snippetTextString !== void 0 ? snippetTextString : snippet.toString();\n                    const prevChar = snippetTextString.charCodeAt(offset - 1);\n                    if (prevChar === 10 /* CharCode.LineFeed */ || prevChar === 13 /* CharCode.CarriageReturn */) {\n                        lines[0] = model.normalizeIndentation(lineLeadingWhitespace + lines[0]);\n                    }\n                }\n                for (let i = 1; i < lines.length; i++) {\n                    lines[i] = model.normalizeIndentation(lineLeadingWhitespace + lines[i]);\n                }\n            }\n            const newValue = lines.join(model.getEOL());\n            if (newValue !== marker.value) {\n                marker.parent.replace(marker, [new Text(newValue)]);\n                snippetTextString = undefined;\n            }\n            return true;\n        });\n        return lineLeadingWhitespace;\n    }\n    static adjustSelection(model, selection, overwriteBefore, overwriteAfter) {\n        if (overwriteBefore !== 0 || overwriteAfter !== 0) {\n            // overwrite[Before|After] is compute using the position, not the whole\n            // selection. therefore we adjust the selection around that position\n            const { positionLineNumber, positionColumn } = selection;\n            const positionColumnBefore = positionColumn - overwriteBefore;\n            const positionColumnAfter = positionColumn + overwriteAfter;\n            const range = model.validateRange({\n                startLineNumber: positionLineNumber,\n                startColumn: positionColumnBefore,\n                endLineNumber: positionLineNumber,\n                endColumn: positionColumnAfter\n            });\n            selection = Selection.createWithDirection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn, selection.getDirection());\n        }\n        return selection;\n    }\n    static createEditsAndSnippetsFromSelections(editor, template, overwriteBefore, overwriteAfter, enforceFinalTabstop, adjustWhitespace, clipboardText, overtypingCapturer, languageConfigurationService) {\n        const edits = [];\n        const snippets = [];\n        if (!editor.hasModel()) {\n            return { edits, snippets };\n        }\n        const model = editor.getModel();\n        const workspaceService = editor.invokeWithinContext(accessor => accessor.get(IWorkspaceContextService));\n        const modelBasedVariableResolver = editor.invokeWithinContext(accessor => new ModelBasedVariableResolver(accessor.get(ILabelService), model));\n        const readClipboardText = () => clipboardText;\n        // know what text the overwrite[Before|After] extensions\n        // of the primary curser have selected because only when\n        // secondary selections extend to the same text we can grow them\n        const firstBeforeText = model.getValueInRange(SnippetSession_1.adjustSelection(model, editor.getSelection(), overwriteBefore, 0));\n        const firstAfterText = model.getValueInRange(SnippetSession_1.adjustSelection(model, editor.getSelection(), 0, overwriteAfter));\n        // remember the first non-whitespace column to decide if\n        // `keepWhitespace` should be overruled for secondary selections\n        const firstLineFirstNonWhitespace = model.getLineFirstNonWhitespaceColumn(editor.getSelection().positionLineNumber);\n        // sort selections by their start position but remeber\n        // the original index. that allows you to create correct\n        // offset-based selection logic without changing the\n        // primary selection\n        const indexedSelections = editor.getSelections()\n            .map((selection, idx) => ({ selection, idx }))\n            .sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\n        for (const { selection, idx } of indexedSelections) {\n            // extend selection with the `overwriteBefore` and `overwriteAfter` and then\n            // compare if this matches the extensions of the primary selection\n            let extensionBefore = SnippetSession_1.adjustSelection(model, selection, overwriteBefore, 0);\n            let extensionAfter = SnippetSession_1.adjustSelection(model, selection, 0, overwriteAfter);\n            if (firstBeforeText !== model.getValueInRange(extensionBefore)) {\n                extensionBefore = selection;\n            }\n            if (firstAfterText !== model.getValueInRange(extensionAfter)) {\n                extensionAfter = selection;\n            }\n            // merge the before and after selection into one\n            const snippetSelection = selection\n                .setStartPosition(extensionBefore.startLineNumber, extensionBefore.startColumn)\n                .setEndPosition(extensionAfter.endLineNumber, extensionAfter.endColumn);\n            const snippet = new SnippetParser().parse(template, true, enforceFinalTabstop);\n            // adjust the template string to match the indentation and\n            // whitespace rules of this insert location (can be different for each cursor)\n            // happens when being asked for (default) or when this is a secondary\n            // cursor and the leading whitespace is different\n            const start = snippetSelection.getStartPosition();\n            const snippetLineLeadingWhitespace = SnippetSession_1.adjustWhitespace(model, start, adjustWhitespace || (idx > 0 && firstLineFirstNonWhitespace !== model.getLineFirstNonWhitespaceColumn(selection.positionLineNumber)), snippet);\n            snippet.resolveVariables(new CompositeSnippetVariableResolver([\n                modelBasedVariableResolver,\n                new ClipboardBasedVariableResolver(readClipboardText, idx, indexedSelections.length, editor.getOption(79 /* EditorOption.multiCursorPaste */) === 'spread'),\n                new SelectionBasedVariableResolver(model, selection, idx, overtypingCapturer),\n                new CommentBasedVariableResolver(model, selection, languageConfigurationService),\n                new TimeBasedVariableResolver,\n                new WorkspaceBasedVariableResolver(workspaceService),\n                new RandomBasedVariableResolver,\n            ]));\n            // store snippets with the index of their originating selection.\n            // that ensures the primiary cursor stays primary despite not being\n            // the one with lowest start position\n            edits[idx] = EditOperation.replace(snippetSelection, snippet.toString());\n            edits[idx].identifier = { major: idx, minor: 0 }; // mark the edit so only our undo edits will be used to generate end cursors\n            edits[idx]._isTracked = true;\n            snippets[idx] = new OneSnippet(editor, snippet, snippetLineLeadingWhitespace);\n        }\n        return { edits, snippets };\n    }\n    static createEditsAndSnippetsFromEdits(editor, snippetEdits, enforceFinalTabstop, adjustWhitespace, clipboardText, overtypingCapturer, languageConfigurationService) {\n        if (!editor.hasModel() || snippetEdits.length === 0) {\n            return { edits: [], snippets: [] };\n        }\n        const edits = [];\n        const model = editor.getModel();\n        const parser = new SnippetParser();\n        const snippet = new TextmateSnippet();\n        // snippet variables resolver\n        const resolver = new CompositeSnippetVariableResolver([\n            editor.invokeWithinContext(accessor => new ModelBasedVariableResolver(accessor.get(ILabelService), model)),\n            new ClipboardBasedVariableResolver(() => clipboardText, 0, editor.getSelections().length, editor.getOption(79 /* EditorOption.multiCursorPaste */) === 'spread'),\n            new SelectionBasedVariableResolver(model, editor.getSelection(), 0, overtypingCapturer),\n            new CommentBasedVariableResolver(model, editor.getSelection(), languageConfigurationService),\n            new TimeBasedVariableResolver,\n            new WorkspaceBasedVariableResolver(editor.invokeWithinContext(accessor => accessor.get(IWorkspaceContextService))),\n            new RandomBasedVariableResolver,\n        ]);\n        //\n        snippetEdits = snippetEdits.sort((a, b) => Range.compareRangesUsingStarts(a.range, b.range));\n        let offset = 0;\n        for (let i = 0; i < snippetEdits.length; i++) {\n            const { range, template } = snippetEdits[i];\n            // gaps between snippet edits are appended as text nodes. this\n            // ensures placeholder-offsets are later correct\n            if (i > 0) {\n                const lastRange = snippetEdits[i - 1].range;\n                const textRange = Range.fromPositions(lastRange.getEndPosition(), range.getStartPosition());\n                const textNode = new Text(model.getValueInRange(textRange));\n                snippet.appendChild(textNode);\n                offset += textNode.value.length;\n            }\n            const newNodes = parser.parseFragment(template, snippet);\n            SnippetSession_1.adjustWhitespace(model, range.getStartPosition(), true, snippet, new Set(newNodes));\n            snippet.resolveVariables(resolver);\n            const snippetText = snippet.toString();\n            const snippetFragmentText = snippetText.slice(offset);\n            offset = snippetText.length;\n            // make edit\n            const edit = EditOperation.replace(range, snippetFragmentText);\n            edit.identifier = { major: i, minor: 0 }; // mark the edit so only our undo edits will be used to generate end cursors\n            edit._isTracked = true;\n            edits.push(edit);\n        }\n        //\n        parser.ensureFinalTabstop(snippet, enforceFinalTabstop, true);\n        return {\n            edits,\n            snippets: [new OneSnippet(editor, snippet, '')]\n        };\n    }\n    constructor(_editor, _template, _options = _defaultOptions, _languageConfigurationService) {\n        this._editor = _editor;\n        this._template = _template;\n        this._options = _options;\n        this._languageConfigurationService = _languageConfigurationService;\n        this._templateMerges = [];\n        this._snippets = [];\n    }\n    dispose() {\n        dispose(this._snippets);\n    }\n    _logInfo() {\n        return `template=\"${this._template}\", merged_templates=\"${this._templateMerges.join(' -> ')}\"`;\n    }\n    insert() {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        // make insert edit and start with first selections\n        const { edits, snippets } = typeof this._template === 'string'\n            ? SnippetSession_1.createEditsAndSnippetsFromSelections(this._editor, this._template, this._options.overwriteBefore, this._options.overwriteAfter, false, this._options.adjustWhitespace, this._options.clipboardText, this._options.overtypingCapturer, this._languageConfigurationService)\n            : SnippetSession_1.createEditsAndSnippetsFromEdits(this._editor, this._template, false, this._options.adjustWhitespace, this._options.clipboardText, this._options.overtypingCapturer, this._languageConfigurationService);\n        this._snippets = snippets;\n        this._editor.executeEdits('snippet', edits, _undoEdits => {\n            // Sometimes, the text buffer will remove automatic whitespace when doing any edits,\n            // so we need to look only at the undo edits relevant for us.\n            // Our edits have an identifier set so that's how we can distinguish them\n            const undoEdits = _undoEdits.filter(edit => !!edit.identifier);\n            for (let idx = 0; idx < snippets.length; idx++) {\n                snippets[idx].initialize(undoEdits[idx].textChange);\n            }\n            if (this._snippets[0].hasPlaceholder) {\n                return this._move(true);\n            }\n            else {\n                return undoEdits\n                    .map(edit => Selection.fromPositions(edit.range.getEndPosition()));\n            }\n        });\n        this._editor.revealRange(this._editor.getSelections()[0]);\n    }\n    merge(template, options = _defaultOptions) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        this._templateMerges.push([this._snippets[0]._nestingLevel, this._snippets[0]._placeholderGroupsIdx, template]);\n        const { edits, snippets } = SnippetSession_1.createEditsAndSnippetsFromSelections(this._editor, template, options.overwriteBefore, options.overwriteAfter, true, options.adjustWhitespace, options.clipboardText, options.overtypingCapturer, this._languageConfigurationService);\n        this._editor.executeEdits('snippet', edits, _undoEdits => {\n            // Sometimes, the text buffer will remove automatic whitespace when doing any edits,\n            // so we need to look only at the undo edits relevant for us.\n            // Our edits have an identifier set so that's how we can distinguish them\n            const undoEdits = _undoEdits.filter(edit => !!edit.identifier);\n            for (let idx = 0; idx < snippets.length; idx++) {\n                snippets[idx].initialize(undoEdits[idx].textChange);\n            }\n            // Trivial snippets have no placeholder or are just the final placeholder. That means they\n            // are just text insertions and we don't need to merge the nested snippet into the existing\n            // snippet\n            const isTrivialSnippet = snippets[0].isTrivialSnippet;\n            if (!isTrivialSnippet) {\n                for (const snippet of this._snippets) {\n                    snippet.merge(snippets);\n                }\n                console.assert(snippets.length === 0);\n            }\n            if (this._snippets[0].hasPlaceholder && !isTrivialSnippet) {\n                return this._move(undefined);\n            }\n            else {\n                return undoEdits.map(edit => Selection.fromPositions(edit.range.getEndPosition()));\n            }\n        });\n    }\n    next() {\n        const newSelections = this._move(true);\n        this._editor.setSelections(newSelections);\n        this._editor.revealPositionInCenterIfOutsideViewport(newSelections[0].getPosition());\n    }\n    prev() {\n        const newSelections = this._move(false);\n        this._editor.setSelections(newSelections);\n        this._editor.revealPositionInCenterIfOutsideViewport(newSelections[0].getPosition());\n    }\n    _move(fwd) {\n        const selections = [];\n        for (const snippet of this._snippets) {\n            const oneSelection = snippet.move(fwd);\n            selections.push(...oneSelection);\n        }\n        return selections;\n    }\n    get isAtFirstPlaceholder() {\n        return this._snippets[0].isAtFirstPlaceholder;\n    }\n    get isAtLastPlaceholder() {\n        return this._snippets[0].isAtLastPlaceholder;\n    }\n    get hasPlaceholder() {\n        return this._snippets[0].hasPlaceholder;\n    }\n    get hasChoice() {\n        return this._snippets[0].hasChoice;\n    }\n    get activeChoice() {\n        return this._snippets[0].activeChoice;\n    }\n    isSelectionWithinPlaceholders() {\n        if (!this.hasPlaceholder) {\n            return false;\n        }\n        const selections = this._editor.getSelections();\n        if (selections.length < this._snippets.length) {\n            // this means we started snippet mode with N\n            // selections and have M (N > M) selections.\n            // So one snippet is without selection -> cancel\n            return false;\n        }\n        const allPossibleSelections = new Map();\n        for (const snippet of this._snippets) {\n            const possibleSelections = snippet.computePossibleSelections();\n            // for the first snippet find the placeholder (and its ranges)\n            // that contain at least one selection. for all remaining snippets\n            // the same placeholder (and their ranges) must be used.\n            if (allPossibleSelections.size === 0) {\n                for (const [index, ranges] of possibleSelections) {\n                    ranges.sort(Range.compareRangesUsingStarts);\n                    for (const selection of selections) {\n                        if (ranges[0].containsRange(selection)) {\n                            allPossibleSelections.set(index, []);\n                            break;\n                        }\n                    }\n                }\n            }\n            if (allPossibleSelections.size === 0) {\n                // return false if we couldn't associate a selection to\n                // this (the first) snippet\n                return false;\n            }\n            // add selections from 'this' snippet so that we know all\n            // selections for this placeholder\n            allPossibleSelections.forEach((array, index) => {\n                array.push(...possibleSelections.get(index));\n            });\n        }\n        // sort selections (and later placeholder-ranges). then walk both\n        // arrays and make sure the placeholder-ranges contain the corresponding\n        // selection\n        selections.sort(Range.compareRangesUsingStarts);\n        for (const [index, ranges] of allPossibleSelections) {\n            if (ranges.length !== selections.length) {\n                allPossibleSelections.delete(index);\n                continue;\n            }\n            ranges.sort(Range.compareRangesUsingStarts);\n            for (let i = 0; i < ranges.length; i++) {\n                if (!ranges[i].containsRange(selections[i])) {\n                    allPossibleSelections.delete(index);\n                    continue;\n                }\n            }\n        }\n        // from all possible selections we have deleted those\n        // that don't match with the current selection. if we don't\n        // have any left, we don't have a selection anymore\n        return allPossibleSelections.size > 0;\n    }\n};\nSnippetSession = SnippetSession_1 = __decorate([\n    __param(3, ILanguageConfigurationService)\n], SnippetSession);\nexport { SnippetSession };\n", "import { hasDriveLetter } from './extpath.js';\nimport { isWindows } from './platform.js';\nexport function normalizeDriveLetter(path, isWindowsOS = isWindows) {\n    if (hasDriveLetter(path, isWindowsOS)) {\n        return path.charAt(0).toUpperCase() + path.slice(1);\n    }\n    return path;\n}\nlet normalizedUserHomeCached = Object.create(null);\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 { normalizeDriveLetter } from '../../../../base/common/labels.js';\nimport * as path from '../../../../base/common/path.js';\nimport { dirname } from '../../../../base/common/resources.js';\nimport { commonPrefixLength, getLeadingWhitespace, isFalsyOrWhitespace, splitLines } from '../../../../base/common/strings.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { Text } from './snippetParser.js';\nimport * as nls from '../../../../nls.js';\nimport { WORKSPACE_EXTENSION, isSingleFolderWorkspaceIdentifier, toWorkspaceIdentifier, isEmptyWorkspaceIdentifier } from '../../../../platform/workspace/common/workspace.js';\nexport const KnownSnippetVariableNames = Object.freeze({\n    'CURRENT_YEAR': true,\n    'CURRENT_YEAR_SHORT': true,\n    'CURRENT_MONTH': true,\n    'CURRENT_DATE': true,\n    'CURRENT_HOUR': true,\n    'CURRENT_MINUTE': true,\n    'CURRENT_SECOND': true,\n    'CURRENT_DAY_NAME': true,\n    'CURRENT_DAY_NAME_SHORT': true,\n    'CURRENT_MONTH_NAME': true,\n    'CURRENT_MONTH_NAME_SHORT': true,\n    'CURRENT_SECONDS_UNIX': true,\n    'CURRENT_TIMEZONE_OFFSET': true,\n    'SELECTION': true,\n    'CLIPBOARD': true,\n    'TM_SELECTED_TEXT': true,\n    'TM_CURRENT_LINE': true,\n    'TM_CURRENT_WORD': true,\n    'TM_LINE_INDEX': true,\n    'TM_LINE_NUMBER': true,\n    'TM_FILENAME': true,\n    'TM_FILENAME_BASE': true,\n    'TM_DIRECTORY': true,\n    'TM_FILEPATH': true,\n    'CURSOR_INDEX': true, // 0-offset\n    'CURSOR_NUMBER': true, // 1-offset\n    'RELATIVE_FILEPATH': true,\n    'BLOCK_COMMENT_START': true,\n    'BLOCK_COMMENT_END': true,\n    'LINE_COMMENT': true,\n    'WORKSPACE_NAME': true,\n    'WORKSPACE_FOLDER': true,\n    'RANDOM': true,\n    'RANDOM_HEX': true,\n    'UUID': true\n});\nexport class CompositeSnippetVariableResolver {\n    constructor(_delegates) {\n        this._delegates = _delegates;\n        //\n    }\n    resolve(variable) {\n        for (const delegate of this._delegates) {\n            const value = delegate.resolve(variable);\n            if (value !== undefined) {\n                return value;\n            }\n        }\n        return undefined;\n    }\n}\nexport class SelectionBasedVariableResolver {\n    constructor(_model, _selection, _selectionIdx, _overtypingCapturer) {\n        this._model = _model;\n        this._selection = _selection;\n        this._selectionIdx = _selectionIdx;\n        this._overtypingCapturer = _overtypingCapturer;\n        //\n    }\n    resolve(variable) {\n        const { name } = variable;\n        if (name === 'SELECTION' || name === 'TM_SELECTED_TEXT') {\n            let value = this._model.getValueInRange(this._selection) || undefined;\n            let isMultiline = this._selection.startLineNumber !== this._selection.endLineNumber;\n            // If there was no selected text, try to get last overtyped text\n            if (!value && this._overtypingCapturer) {\n                const info = this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);\n                if (info) {\n                    value = info.value;\n                    isMultiline = info.multiline;\n                }\n            }\n            if (value && isMultiline && variable.snippet) {\n                // Selection is a multiline string which we indentation we now\n                // need to adjust. We compare the indentation of this variable\n                // with the indentation at the editor position and add potential\n                // extra indentation to the value\n                const line = this._model.getLineContent(this._selection.startLineNumber);\n                const lineLeadingWhitespace = getLeadingWhitespace(line, 0, this._selection.startColumn - 1);\n                let varLeadingWhitespace = lineLeadingWhitespace;\n                variable.snippet.walk(marker => {\n                    if (marker === variable) {\n                        return false;\n                    }\n                    if (marker instanceof Text) {\n                        varLeadingWhitespace = getLeadingWhitespace(splitLines(marker.value).pop());\n                    }\n                    return true;\n                });\n                const whitespaceCommonLength = commonPrefixLength(varLeadingWhitespace, lineLeadingWhitespace);\n                value = value.replace(/(\\r\\n|\\r|\\n)(.*)/g, (m, newline, rest) => `${newline}${varLeadingWhitespace.substr(whitespaceCommonLength)}${rest}`);\n            }\n            return value;\n        }\n        else if (name === 'TM_CURRENT_LINE') {\n            return this._model.getLineContent(this._selection.positionLineNumber);\n        }\n        else if (name === 'TM_CURRENT_WORD') {\n            const info = this._model.getWordAtPosition({\n                lineNumber: this._selection.positionLineNumber,\n                column: this._selection.positionColumn\n            });\n            return info && info.word || undefined;\n        }\n        else if (name === 'TM_LINE_INDEX') {\n            return String(this._selection.positionLineNumber - 1);\n        }\n        else if (name === 'TM_LINE_NUMBER') {\n            return String(this._selection.positionLineNumber);\n        }\n        else if (name === 'CURSOR_INDEX') {\n            return String(this._selectionIdx);\n        }\n        else if (name === 'CURSOR_NUMBER') {\n            return String(this._selectionIdx + 1);\n        }\n        return undefined;\n    }\n}\nexport class ModelBasedVariableResolver {\n    constructor(_labelService, _model) {\n        this._labelService = _labelService;\n        this._model = _model;\n        //\n    }\n    resolve(variable) {\n        const { name } = variable;\n        if (name === 'TM_FILENAME') {\n            return path.basename(this._model.uri.fsPath);\n        }\n        else if (name === 'TM_FILENAME_BASE') {\n            const name = path.basename(this._model.uri.fsPath);\n            const idx = name.lastIndexOf('.');\n            if (idx <= 0) {\n                return name;\n            }\n            else {\n                return name.slice(0, idx);\n            }\n        }\n        else if (name === 'TM_DIRECTORY') {\n            if (path.dirname(this._model.uri.fsPath) === '.') {\n                return '';\n            }\n            return this._labelService.getUriLabel(dirname(this._model.uri));\n        }\n        else if (name === 'TM_FILEPATH') {\n            return this._labelService.getUriLabel(this._model.uri);\n        }\n        else if (name === 'RELATIVE_FILEPATH') {\n            return this._labelService.getUriLabel(this._model.uri, { relative: true, noPrefix: true });\n        }\n        return undefined;\n    }\n}\nexport class ClipboardBasedVariableResolver {\n    constructor(_readClipboardText, _selectionIdx, _selectionCount, _spread) {\n        this._readClipboardText = _readClipboardText;\n        this._selectionIdx = _selectionIdx;\n        this._selectionCount = _selectionCount;\n        this._spread = _spread;\n        //\n    }\n    resolve(variable) {\n        if (variable.name !== 'CLIPBOARD') {\n            return undefined;\n        }\n        const clipboardText = this._readClipboardText();\n        if (!clipboardText) {\n            return undefined;\n        }\n        // `spread` is assigning each cursor a line of the clipboard\n        // text whenever there the line count equals the cursor count\n        // and when enabled\n        if (this._spread) {\n            const lines = clipboardText.split(/\\r\\n|\\n|\\r/).filter(s => !isFalsyOrWhitespace(s));\n            if (lines.length === this._selectionCount) {\n                return lines[this._selectionIdx];\n            }\n        }\n        return clipboardText;\n    }\n}\nlet CommentBasedVariableResolver = class CommentBasedVariableResolver {\n    constructor(_model, _selection, _languageConfigurationService) {\n        this._model = _model;\n        this._selection = _selection;\n        this._languageConfigurationService = _languageConfigurationService;\n        //\n    }\n    resolve(variable) {\n        const { name } = variable;\n        const langId = this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber, this._selection.selectionStartColumn);\n        const config = this._languageConfigurationService.getLanguageConfiguration(langId).comments;\n        if (!config) {\n            return undefined;\n        }\n        if (name === 'LINE_COMMENT') {\n            return config.lineCommentToken || undefined;\n        }\n        else if (name === 'BLOCK_COMMENT_START') {\n            return config.blockCommentStartToken || undefined;\n        }\n        else if (name === 'BLOCK_COMMENT_END') {\n            return config.blockCommentEndToken || undefined;\n        }\n        return undefined;\n    }\n};\nCommentBasedVariableResolver = __decorate([\n    __param(2, ILanguageConfigurationService)\n], CommentBasedVariableResolver);\nexport { CommentBasedVariableResolver };\nexport class TimeBasedVariableResolver {\n    constructor() {\n        this._date = new Date();\n    }\n    resolve(variable) {\n        const { name } = variable;\n        if (name === 'CURRENT_YEAR') {\n            return String(this._date.getFullYear());\n        }\n        else if (name === 'CURRENT_YEAR_SHORT') {\n            return String(this._date.getFullYear()).slice(-2);\n        }\n        else if (name === 'CURRENT_MONTH') {\n            return String(this._date.getMonth().valueOf() + 1).padStart(2, '0');\n        }\n        else if (name === 'CURRENT_DATE') {\n            return String(this._date.getDate().valueOf()).padStart(2, '0');\n        }\n        else if (name === 'CURRENT_HOUR') {\n            return String(this._date.getHours().valueOf()).padStart(2, '0');\n        }\n        else if (name === 'CURRENT_MINUTE') {\n            return String(this._date.getMinutes().valueOf()).padStart(2, '0');\n        }\n        else if (name === 'CURRENT_SECOND') {\n            return String(this._date.getSeconds().valueOf()).padStart(2, '0');\n        }\n        else if (name === 'CURRENT_DAY_NAME') {\n            return TimeBasedVariableResolver.dayNames[this._date.getDay()];\n        }\n        else if (name === 'CURRENT_DAY_NAME_SHORT') {\n            return TimeBasedVariableResolver.dayNamesShort[this._date.getDay()];\n        }\n        else if (name === 'CURRENT_MONTH_NAME') {\n            return TimeBasedVariableResolver.monthNames[this._date.getMonth()];\n        }\n        else if (name === 'CURRENT_MONTH_NAME_SHORT') {\n            return TimeBasedVariableResolver.monthNamesShort[this._date.getMonth()];\n        }\n        else if (name === 'CURRENT_SECONDS_UNIX') {\n            return String(Math.floor(this._date.getTime() / 1000));\n        }\n        else if (name === 'CURRENT_TIMEZONE_OFFSET') {\n            const rawTimeOffset = this._date.getTimezoneOffset();\n            const sign = rawTimeOffset > 0 ? '-' : '+';\n            const hours = Math.trunc(Math.abs(rawTimeOffset / 60));\n            const hoursString = (hours < 10 ? '0' + hours : hours);\n            const minutes = Math.abs(rawTimeOffset) - hours * 60;\n            const minutesString = (minutes < 10 ? '0' + minutes : minutes);\n            return sign + hoursString + ':' + minutesString;\n        }\n        return undefined;\n    }\n}\nTimeBasedVariableResolver.dayNames = [nls.localize('Sunday', \"Sunday\"), nls.localize('Monday', \"Monday\"), nls.localize('Tuesday', \"Tuesday\"), nls.localize('Wednesday', \"Wednesday\"), nls.localize('Thursday', \"Thursday\"), nls.localize('Friday', \"Friday\"), nls.localize('Saturday', \"Saturday\")];\nTimeBasedVariableResolver.dayNamesShort = [nls.localize('SundayShort', \"Sun\"), nls.localize('MondayShort', \"Mon\"), nls.localize('TuesdayShort', \"Tue\"), nls.localize('WednesdayShort', \"Wed\"), nls.localize('ThursdayShort', \"Thu\"), nls.localize('FridayShort', \"Fri\"), nls.localize('SaturdayShort', \"Sat\")];\nTimeBasedVariableResolver.monthNames = [nls.localize('January', \"January\"), nls.localize('February', \"February\"), nls.localize('March', \"March\"), nls.localize('April', \"April\"), nls.localize('May', \"May\"), nls.localize('June', \"June\"), nls.localize('July', \"July\"), nls.localize('August', \"August\"), nls.localize('September', \"September\"), nls.localize('October', \"October\"), nls.localize('November', \"November\"), nls.localize('December', \"December\")];\nTimeBasedVariableResolver.monthNamesShort = [nls.localize('JanuaryShort', \"Jan\"), nls.localize('FebruaryShort', \"Feb\"), nls.localize('MarchShort', \"Mar\"), nls.localize('AprilShort', \"Apr\"), nls.localize('MayShort', \"May\"), nls.localize('JuneShort', \"Jun\"), nls.localize('JulyShort', \"Jul\"), nls.localize('AugustShort', \"Aug\"), nls.localize('SeptemberShort', \"Sep\"), nls.localize('OctoberShort', \"Oct\"), nls.localize('NovemberShort', \"Nov\"), nls.localize('DecemberShort', \"Dec\")];\nexport class WorkspaceBasedVariableResolver {\n    constructor(_workspaceService) {\n        this._workspaceService = _workspaceService;\n        //\n    }\n    resolve(variable) {\n        if (!this._workspaceService) {\n            return undefined;\n        }\n        const workspaceIdentifier = toWorkspaceIdentifier(this._workspaceService.getWorkspace());\n        if (isEmptyWorkspaceIdentifier(workspaceIdentifier)) {\n            return undefined;\n        }\n        if (variable.name === 'WORKSPACE_NAME') {\n            return this._resolveWorkspaceName(workspaceIdentifier);\n        }\n        else if (variable.name === 'WORKSPACE_FOLDER') {\n            return this._resoveWorkspacePath(workspaceIdentifier);\n        }\n        return undefined;\n    }\n    _resolveWorkspaceName(workspaceIdentifier) {\n        if (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\n            return path.basename(workspaceIdentifier.uri.path);\n        }\n        let filename = path.basename(workspaceIdentifier.configPath.path);\n        if (filename.endsWith(WORKSPACE_EXTENSION)) {\n            filename = filename.substr(0, filename.length - WORKSPACE_EXTENSION.length - 1);\n        }\n        return filename;\n    }\n    _resoveWorkspacePath(workspaceIdentifier) {\n        if (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\n            return normalizeDriveLetter(workspaceIdentifier.uri.fsPath);\n        }\n        const filename = path.basename(workspaceIdentifier.configPath.path);\n        let folderpath = workspaceIdentifier.configPath.fsPath;\n        if (folderpath.endsWith(filename)) {\n            folderpath = folderpath.substr(0, folderpath.length - filename.length - 1);\n        }\n        return (folderpath ? normalizeDriveLetter(folderpath) : '/');\n    }\n}\nexport class RandomBasedVariableResolver {\n    resolve(variable) {\n        const { name } = variable;\n        if (name === 'RANDOM') {\n            return Math.random().toString().slice(-6);\n        }\n        else if (name === 'RANDOM_HEX') {\n            return Math.random().toString(16).slice(-6);\n        }\n        else if (name === 'UUID') {\n            return generateUuid();\n        }\n        return undefined;\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 { Event } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { SelectedSuggestionInfo } from '../../../common/languages.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { SnippetSession } from '../../snippet/browser/snippetSession.js';\nimport { SuggestController } from '../../suggest/browser/suggestController.js';\nimport { observableValue, transaction } from '../../../../base/common/observable.js';\nimport { SingleTextEdit } from '../../../common/core/textEdit.js';\nimport { compareBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { findFirstMax } from '../../../../base/common/arraysFind.js';\nimport { singleTextEditAugments, singleTextRemoveCommonPrefix } from './singleTextEdit.js';\nexport class SuggestWidgetAdaptor extends Disposable {\n    get selectedItem() {\n        return this._selectedItem;\n    }\n    constructor(editor, suggestControllerPreselector, checkModelVersion, onWillAccept) {\n        super();\n        this.editor = editor;\n        this.suggestControllerPreselector = suggestControllerPreselector;\n        this.checkModelVersion = checkModelVersion;\n        this.onWillAccept = onWillAccept;\n        this.isSuggestWidgetVisible = false;\n        this.isShiftKeyPressed = false;\n        this._isActive = false;\n        this._currentSuggestItemInfo = undefined;\n        this._selectedItem = observableValue(this, undefined);\n        // See the command acceptAlternativeSelectedSuggestion that is bound to shift+tab\n        this._register(editor.onKeyDown(e => {\n            if (e.shiftKey && !this.isShiftKeyPressed) {\n                this.isShiftKeyPressed = true;\n                this.update(this._isActive);\n            }\n        }));\n        this._register(editor.onKeyUp(e => {\n            if (e.shiftKey && this.isShiftKeyPressed) {\n                this.isShiftKeyPressed = false;\n                this.update(this._isActive);\n            }\n        }));\n        const suggestController = SuggestController.get(this.editor);\n        if (suggestController) {\n            this._register(suggestController.registerSelector({\n                priority: 100,\n                select: (model, pos, suggestItems) => {\n                    transaction(tx => this.checkModelVersion(tx));\n                    const textModel = this.editor.getModel();\n                    if (!textModel) {\n                        // Should not happen\n                        return -1;\n                    }\n                    const i = this.suggestControllerPreselector();\n                    const itemToPreselect = i ? singleTextRemoveCommonPrefix(i, textModel) : undefined;\n                    if (!itemToPreselect) {\n                        return -1;\n                    }\n                    const position = Position.lift(pos);\n                    const candidates = suggestItems\n                        .map((suggestItem, index) => {\n                        const suggestItemInfo = SuggestItemInfo.fromSuggestion(suggestController, textModel, position, suggestItem, this.isShiftKeyPressed);\n                        const suggestItemTextEdit = singleTextRemoveCommonPrefix(suggestItemInfo.toSingleTextEdit(), textModel);\n                        const valid = singleTextEditAugments(itemToPreselect, suggestItemTextEdit);\n                        return { index, valid, prefixLength: suggestItemTextEdit.text.length, suggestItem };\n                    })\n                        .filter(item => item && item.valid && item.prefixLength > 0);\n                    const result = findFirstMax(candidates, compareBy(s => s.prefixLength, numberComparator));\n                    return result ? result.index : -1;\n                }\n            }));\n            let isBoundToSuggestWidget = false;\n            const bindToSuggestWidget = () => {\n                if (isBoundToSuggestWidget) {\n                    return;\n                }\n                isBoundToSuggestWidget = true;\n                this._register(suggestController.widget.value.onDidShow(() => {\n                    this.isSuggestWidgetVisible = true;\n                    this.update(true);\n                }));\n                this._register(suggestController.widget.value.onDidHide(() => {\n                    this.isSuggestWidgetVisible = false;\n                    this.update(false);\n                }));\n                this._register(suggestController.widget.value.onDidFocus(() => {\n                    this.isSuggestWidgetVisible = true;\n                    this.update(true);\n                }));\n            };\n            this._register(Event.once(suggestController.model.onDidTrigger)(e => {\n                bindToSuggestWidget();\n            }));\n            this._register(suggestController.onWillInsertSuggestItem(e => {\n                const position = this.editor.getPosition();\n                const model = this.editor.getModel();\n                if (!position || !model) {\n                    return undefined;\n                }\n                const suggestItemInfo = SuggestItemInfo.fromSuggestion(suggestController, model, position, e.item, this.isShiftKeyPressed);\n                this.onWillAccept(suggestItemInfo);\n            }));\n        }\n        this.update(this._isActive);\n    }\n    update(newActive) {\n        const newInlineCompletion = this.getSuggestItemInfo();\n        if (this._isActive !== newActive || !suggestItemInfoEquals(this._currentSuggestItemInfo, newInlineCompletion)) {\n            this._isActive = newActive;\n            this._currentSuggestItemInfo = newInlineCompletion;\n            transaction(tx => {\n                /** @description Update state from suggest widget */\n                this.checkModelVersion(tx);\n                this._selectedItem.set(this._isActive ? this._currentSuggestItemInfo : undefined, tx);\n            });\n        }\n    }\n    getSuggestItemInfo() {\n        const suggestController = SuggestController.get(this.editor);\n        if (!suggestController || !this.isSuggestWidgetVisible) {\n            return undefined;\n        }\n        const focusedItem = suggestController.widget.value.getFocusedItem();\n        const position = this.editor.getPosition();\n        const model = this.editor.getModel();\n        if (!focusedItem || !position || !model) {\n            return undefined;\n        }\n        return SuggestItemInfo.fromSuggestion(suggestController, model, position, focusedItem.item, this.isShiftKeyPressed);\n    }\n    stopForceRenderingAbove() {\n        const suggestController = SuggestController.get(this.editor);\n        suggestController === null || suggestController === void 0 ? void 0 : suggestController.stopForceRenderingAbove();\n    }\n    forceRenderingAbove() {\n        const suggestController = SuggestController.get(this.editor);\n        suggestController === null || suggestController === void 0 ? void 0 : suggestController.forceRenderingAbove();\n    }\n}\nexport class SuggestItemInfo {\n    static fromSuggestion(suggestController, model, position, item, toggleMode) {\n        let { insertText } = item.completion;\n        let isSnippetText = false;\n        if (item.completion.insertTextRules & 4 /* CompletionItemInsertTextRule.InsertAsSnippet */) {\n            const snippet = new SnippetParser().parse(insertText);\n            if (snippet.children.length < 100) {\n                // Adjust whitespace is expensive.\n                SnippetSession.adjustWhitespace(model, position, true, snippet);\n            }\n            insertText = snippet.toString();\n            isSnippetText = true;\n        }\n        const info = suggestController.getOverwriteInfo(item, toggleMode);\n        return new SuggestItemInfo(Range.fromPositions(position.delta(0, -info.overwriteBefore), position.delta(0, Math.max(info.overwriteAfter, 0))), insertText, item.completion.kind, isSnippetText);\n    }\n    constructor(range, insertText, completionItemKind, isSnippetText) {\n        this.range = range;\n        this.insertText = insertText;\n        this.completionItemKind = completionItemKind;\n        this.isSnippetText = isSnippetText;\n    }\n    equals(other) {\n        return this.range.equalsRange(other.range)\n            && this.insertText === other.insertText\n            && this.completionItemKind === other.completionItemKind\n            && this.isSnippetText === other.isSnippetText;\n    }\n    toSelectedSuggestionInfo() {\n        return new SelectedSuggestionInfo(this.range, this.insertText, this.completionItemKind, this.isSnippetText);\n    }\n    toSingleTextEdit() {\n        return new SingleTextEdit(this.range, this.insertText);\n    }\n}\nfunction suggestItemInfoEquals(a, b) {\n    if (a === b) {\n        return true;\n    }\n    if (!a || !b) {\n        return false;\n    }\n    return a.equals(b);\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 SuggestController_1;\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { KeyCodeChord } from '../../../../base/common/keybindings.js';\nimport { DisposableStore, dispose, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType, isObject } from '../../../../base/common/types.js';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { SnippetController2 } from '../../snippet/browser/snippetController2.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { ISuggestMemoryService } from './suggestMemory.js';\nimport { WordContextKey } from './wordContextKey.js';\nimport * as nls from '../../../../nls.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyExpr, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { Context as SuggestContext, suggestWidgetStatusbarMenu } from './suggest.js';\nimport { SuggestAlternatives } from './suggestAlternatives.js';\nimport { CommitCharacterController } from './suggestCommitCharacters.js';\nimport { SuggestModel } from './suggestModel.js';\nimport { OvertypingCapturer } from './suggestOvertypingCapturer.js';\nimport { SuggestWidget } from './suggestWidget.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { basename, extname } from '../../../../base/common/resources.js';\nimport { hash } from '../../../../base/common/hash.js';\nimport { WindowIdleValue, getWindow } from '../../../../base/browser/dom.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\n// sticky suggest widget which doesn't disappear on focus out and such\nconst _sticky = false;\nclass LineSuffix {\n    constructor(_model, _position) {\n        this._model = _model;\n        this._position = _position;\n        this._decorationOptions = ModelDecorationOptions.register({\n            description: 'suggest-line-suffix',\n            stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */\n        });\n        // spy on what's happening right of the cursor. two cases:\n        // 1. end of line -> check that it's still end of line\n        // 2. mid of line -> add a marker and compute the delta\n        const maxColumn = _model.getLineMaxColumn(_position.lineNumber);\n        if (maxColumn !== _position.column) {\n            const offset = _model.getOffsetAt(_position);\n            const end = _model.getPositionAt(offset + 1);\n            _model.changeDecorations(accessor => {\n                if (this._marker) {\n                    accessor.removeDecoration(this._marker);\n                }\n                this._marker = accessor.addDecoration(Range.fromPositions(_position, end), this._decorationOptions);\n            });\n        }\n    }\n    dispose() {\n        if (this._marker && !this._model.isDisposed()) {\n            this._model.changeDecorations(accessor => {\n                accessor.removeDecoration(this._marker);\n                this._marker = undefined;\n            });\n        }\n    }\n    delta(position) {\n        if (this._model.isDisposed() || this._position.lineNumber !== position.lineNumber) {\n            // bail out early if things seems fishy\n            return 0;\n        }\n        // read the marker (in case suggest was triggered at line end) or compare\n        // the cursor to the line end.\n        if (this._marker) {\n            const range = this._model.getDecorationRange(this._marker);\n            const end = this._model.getOffsetAt(range.getStartPosition());\n            return end - this._model.getOffsetAt(position);\n        }\n        else {\n            return this._model.getLineMaxColumn(position.lineNumber) - position.column;\n        }\n    }\n}\nlet SuggestController = SuggestController_1 = class SuggestController {\n    static get(editor) {\n        return editor.getContribution(SuggestController_1.ID);\n    }\n    constructor(editor, _memoryService, _commandService, _contextKeyService, _instantiationService, _logService, _telemetryService) {\n        this._memoryService = _memoryService;\n        this._commandService = _commandService;\n        this._contextKeyService = _contextKeyService;\n        this._instantiationService = _instantiationService;\n        this._logService = _logService;\n        this._telemetryService = _telemetryService;\n        this._lineSuffix = new MutableDisposable();\n        this._toDispose = new DisposableStore();\n        this._selectors = new PriorityRegistry(s => s.priority);\n        this._onWillInsertSuggestItem = new Emitter();\n        this.onWillInsertSuggestItem = this._onWillInsertSuggestItem.event;\n        this.editor = editor;\n        this.model = _instantiationService.createInstance(SuggestModel, this.editor);\n        // default selector\n        this._selectors.register({\n            priority: 0,\n            select: (model, pos, items) => this._memoryService.select(model, pos, items)\n        });\n        // context key: update insert/replace mode\n        const ctxInsertMode = SuggestContext.InsertMode.bindTo(_contextKeyService);\n        ctxInsertMode.set(editor.getOption(118 /* EditorOption.suggest */).insertMode);\n        this._toDispose.add(this.model.onDidTrigger(() => ctxInsertMode.set(editor.getOption(118 /* EditorOption.suggest */).insertMode)));\n        this.widget = this._toDispose.add(new WindowIdleValue(getWindow(editor.getDomNode()), () => {\n            const widget = this._instantiationService.createInstance(SuggestWidget, this.editor);\n            this._toDispose.add(widget);\n            this._toDispose.add(widget.onDidSelect(item => this._insertSuggestion(item, 0 /* InsertFlags.None */), this));\n            // Wire up logic to accept a suggestion on certain characters\n            const commitCharacterController = new CommitCharacterController(this.editor, widget, this.model, item => this._insertSuggestion(item, 2 /* InsertFlags.NoAfterUndoStop */));\n            this._toDispose.add(commitCharacterController);\n            // Wire up makes text edit context key\n            const ctxMakesTextEdit = SuggestContext.MakesTextEdit.bindTo(this._contextKeyService);\n            const ctxHasInsertAndReplace = SuggestContext.HasInsertAndReplaceRange.bindTo(this._contextKeyService);\n            const ctxCanResolve = SuggestContext.CanResolve.bindTo(this._contextKeyService);\n            this._toDispose.add(toDisposable(() => {\n                ctxMakesTextEdit.reset();\n                ctxHasInsertAndReplace.reset();\n                ctxCanResolve.reset();\n            }));\n            this._toDispose.add(widget.onDidFocus(({ item }) => {\n                // (ctx: makesTextEdit)\n                const position = this.editor.getPosition();\n                const startColumn = item.editStart.column;\n                const endColumn = position.column;\n                let value = true;\n                if (this.editor.getOption(1 /* EditorOption.acceptSuggestionOnEnter */) === 'smart'\n                    && this.model.state === 2 /* State.Auto */\n                    && !item.completion.additionalTextEdits\n                    && !(item.completion.insertTextRules & 4 /* CompletionItemInsertTextRule.InsertAsSnippet */)\n                    && endColumn - startColumn === item.completion.insertText.length) {\n                    const oldText = this.editor.getModel().getValueInRange({\n                        startLineNumber: position.lineNumber,\n                        startColumn,\n                        endLineNumber: position.lineNumber,\n                        endColumn\n                    });\n                    value = oldText !== item.completion.insertText;\n                }\n                ctxMakesTextEdit.set(value);\n                // (ctx: hasInsertAndReplaceRange)\n                ctxHasInsertAndReplace.set(!Position.equals(item.editInsertEnd, item.editReplaceEnd));\n                // (ctx: canResolve)\n                ctxCanResolve.set(Boolean(item.provider.resolveCompletionItem) || Boolean(item.completion.documentation) || item.completion.detail !== item.completion.label);\n            }));\n            this._toDispose.add(widget.onDetailsKeyDown(e => {\n                // cmd + c on macOS, ctrl + c on Win / Linux\n                if (e.toKeyCodeChord().equals(new KeyCodeChord(true, false, false, false, 33 /* KeyCode.KeyC */)) ||\n                    (platform.isMacintosh && e.toKeyCodeChord().equals(new KeyCodeChord(false, false, false, true, 33 /* KeyCode.KeyC */)))) {\n                    e.stopPropagation();\n                    return;\n                }\n                if (!e.toKeyCodeChord().isModifierKey()) {\n                    this.editor.focus();\n                }\n            }));\n            return widget;\n        }));\n        // Wire up text overtyping capture\n        this._overtypingCapturer = this._toDispose.add(new WindowIdleValue(getWindow(editor.getDomNode()), () => {\n            return this._toDispose.add(new OvertypingCapturer(this.editor, this.model));\n        }));\n        this._alternatives = this._toDispose.add(new WindowIdleValue(getWindow(editor.getDomNode()), () => {\n            return this._toDispose.add(new SuggestAlternatives(this.editor, this._contextKeyService));\n        }));\n        this._toDispose.add(_instantiationService.createInstance(WordContextKey, editor));\n        this._toDispose.add(this.model.onDidTrigger(e => {\n            this.widget.value.showTriggered(e.auto, e.shy ? 250 : 50);\n            this._lineSuffix.value = new LineSuffix(this.editor.getModel(), e.position);\n        }));\n        this._toDispose.add(this.model.onDidSuggest(e => {\n            if (e.triggerOptions.shy) {\n                return;\n            }\n            let index = -1;\n            for (const selector of this._selectors.itemsOrderedByPriorityDesc) {\n                index = selector.select(this.editor.getModel(), this.editor.getPosition(), e.completionModel.items);\n                if (index !== -1) {\n                    break;\n                }\n            }\n            if (index === -1) {\n                index = 0;\n            }\n            if (this.model.state === 0 /* State.Idle */) {\n                // selecting an item can \"pump\" out selection/cursor change events\n                // which can cancel suggest halfway through this function. therefore\n                // we need to check again and bail if the session has been canceled\n                return;\n            }\n            let noFocus = false;\n            if (e.triggerOptions.auto) {\n                // don't \"focus\" item when configured to do\n                const options = this.editor.getOption(118 /* EditorOption.suggest */);\n                if (options.selectionMode === 'never' || options.selectionMode === 'always') {\n                    // simple: always or never\n                    noFocus = options.selectionMode === 'never';\n                }\n                else if (options.selectionMode === 'whenTriggerCharacter') {\n                    // on with trigger character\n                    noFocus = e.triggerOptions.triggerKind !== 1 /* CompletionTriggerKind.TriggerCharacter */;\n                }\n                else if (options.selectionMode === 'whenQuickSuggestion') {\n                    // without trigger character or when refiltering\n                    noFocus = e.triggerOptions.triggerKind === 1 /* CompletionTriggerKind.TriggerCharacter */ && !e.triggerOptions.refilter;\n                }\n            }\n            this.widget.value.showSuggestions(e.completionModel, index, e.isFrozen, e.triggerOptions.auto, noFocus);\n        }));\n        this._toDispose.add(this.model.onDidCancel(e => {\n            if (!e.retrigger) {\n                this.widget.value.hideWidget();\n            }\n        }));\n        this._toDispose.add(this.editor.onDidBlurEditorWidget(() => {\n            if (!_sticky) {\n                this.model.cancel();\n                this.model.clear();\n            }\n        }));\n        // Manage the acceptSuggestionsOnEnter context key\n        const acceptSuggestionsOnEnter = SuggestContext.AcceptSuggestionsOnEnter.bindTo(_contextKeyService);\n        const updateFromConfig = () => {\n            const acceptSuggestionOnEnter = this.editor.getOption(1 /* EditorOption.acceptSuggestionOnEnter */);\n            acceptSuggestionsOnEnter.set(acceptSuggestionOnEnter === 'on' || acceptSuggestionOnEnter === 'smart');\n        };\n        this._toDispose.add(this.editor.onDidChangeConfiguration(() => updateFromConfig()));\n        updateFromConfig();\n    }\n    dispose() {\n        this._alternatives.dispose();\n        this._toDispose.dispose();\n        this.widget.dispose();\n        this.model.dispose();\n        this._lineSuffix.dispose();\n        this._onWillInsertSuggestItem.dispose();\n    }\n    _insertSuggestion(event, flags) {\n        if (!event || !event.item) {\n            this._alternatives.value.reset();\n            this.model.cancel();\n            this.model.clear();\n            return;\n        }\n        if (!this.editor.hasModel()) {\n            return;\n        }\n        const snippetController = SnippetController2.get(this.editor);\n        if (!snippetController) {\n            return;\n        }\n        this._onWillInsertSuggestItem.fire({ item: event.item });\n        const model = this.editor.getModel();\n        const modelVersionNow = model.getAlternativeVersionId();\n        const { item } = event;\n        //\n        const tasks = [];\n        const cts = new CancellationTokenSource();\n        // pushing undo stops *before* additional text edits and\n        // *after* the main edit\n        if (!(flags & 1 /* InsertFlags.NoBeforeUndoStop */)) {\n            this.editor.pushUndoStop();\n        }\n        // compute overwrite[Before|After] deltas BEFORE applying extra edits\n        const info = this.getOverwriteInfo(item, Boolean(flags & 8 /* InsertFlags.AlternativeOverwriteConfig */));\n        // keep item in memory\n        this._memoryService.memorize(model, this.editor.getPosition(), item);\n        const isResolved = item.isResolved;\n        // telemetry data points: duration of command execution, info about async additional edits (-1=n/a, -2=none, 1=success, 0=failed)\n        let _commandExectionDuration = -1;\n        let _additionalEditsAppliedAsync = -1;\n        if (Array.isArray(item.completion.additionalTextEdits)) {\n            // cancel -> stops all listening and closes widget\n            this.model.cancel();\n            // sync additional edits\n            const scrollState = StableEditorScrollState.capture(this.editor);\n            this.editor.executeEdits('suggestController.additionalTextEdits.sync', item.completion.additionalTextEdits.map(edit => {\n                let range = Range.lift(edit.range);\n                if (range.startLineNumber === item.position.lineNumber && range.startColumn > item.position.column) {\n                    // shift additional edit when it is \"after\" the completion insertion position\n                    const columnDelta = this.editor.getPosition().column - item.position.column;\n                    const startColumnDelta = columnDelta;\n                    const endColumnDelta = Range.spansMultipleLines(range) ? 0 : columnDelta;\n                    range = new Range(range.startLineNumber, range.startColumn + startColumnDelta, range.endLineNumber, range.endColumn + endColumnDelta);\n                }\n                return EditOperation.replaceMove(range, edit.text);\n            }));\n            scrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\n        }\n        else if (!isResolved) {\n            // async additional edits\n            const sw = new StopWatch();\n            let position;\n            const docListener = model.onDidChangeContent(e => {\n                if (e.isFlush) {\n                    cts.cancel();\n                    docListener.dispose();\n                    return;\n                }\n                for (const change of e.changes) {\n                    const thisPosition = Range.getEndPosition(change.range);\n                    if (!position || Position.isBefore(thisPosition, position)) {\n                        position = thisPosition;\n                    }\n                }\n            });\n            const oldFlags = flags;\n            flags |= 2 /* InsertFlags.NoAfterUndoStop */;\n            let didType = false;\n            const typeListener = this.editor.onWillType(() => {\n                typeListener.dispose();\n                didType = true;\n                if (!(oldFlags & 2 /* InsertFlags.NoAfterUndoStop */)) {\n                    this.editor.pushUndoStop();\n                }\n            });\n            tasks.push(item.resolve(cts.token).then(() => {\n                if (!item.completion.additionalTextEdits || cts.token.isCancellationRequested) {\n                    return undefined;\n                }\n                if (position && item.completion.additionalTextEdits.some(edit => Position.isBefore(position, Range.getStartPosition(edit.range)))) {\n                    return false;\n                }\n                if (didType) {\n                    this.editor.pushUndoStop();\n                }\n                const scrollState = StableEditorScrollState.capture(this.editor);\n                this.editor.executeEdits('suggestController.additionalTextEdits.async', item.completion.additionalTextEdits.map(edit => EditOperation.replaceMove(Range.lift(edit.range), edit.text)));\n                scrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\n                if (didType || !(oldFlags & 2 /* InsertFlags.NoAfterUndoStop */)) {\n                    this.editor.pushUndoStop();\n                }\n                return true;\n            }).then(applied => {\n                this._logService.trace('[suggest] async resolving of edits DONE (ms, applied?)', sw.elapsed(), applied);\n                _additionalEditsAppliedAsync = applied === true ? 1 : applied === false ? 0 : -2;\n            }).finally(() => {\n                docListener.dispose();\n                typeListener.dispose();\n            }));\n        }\n        let { insertText } = item.completion;\n        if (!(item.completion.insertTextRules & 4 /* CompletionItemInsertTextRule.InsertAsSnippet */)) {\n            insertText = SnippetParser.escape(insertText);\n        }\n        // cancel -> stops all listening and closes widget\n        this.model.cancel();\n        snippetController.insert(insertText, {\n            overwriteBefore: info.overwriteBefore,\n            overwriteAfter: info.overwriteAfter,\n            undoStopBefore: false,\n            undoStopAfter: false,\n            adjustWhitespace: !(item.completion.insertTextRules & 1 /* CompletionItemInsertTextRule.KeepWhitespace */),\n            clipboardText: event.model.clipboardText,\n            overtypingCapturer: this._overtypingCapturer.value\n        });\n        if (!(flags & 2 /* InsertFlags.NoAfterUndoStop */)) {\n            this.editor.pushUndoStop();\n        }\n        if (item.completion.command) {\n            if (item.completion.command.id === TriggerSuggestAction.id) {\n                // retigger\n                this.model.trigger({ auto: true, retrigger: true });\n            }\n            else {\n                // exec command, done\n                const sw = new StopWatch();\n                tasks.push(this._commandService.executeCommand(item.completion.command.id, ...(item.completion.command.arguments ? [...item.completion.command.arguments] : [])).catch(e => {\n                    if (item.completion.extensionId) {\n                        onUnexpectedExternalError(e);\n                    }\n                    else {\n                        onUnexpectedError(e);\n                    }\n                }).finally(() => {\n                    _commandExectionDuration = sw.elapsed();\n                }));\n            }\n        }\n        if (flags & 4 /* InsertFlags.KeepAlternativeSuggestions */) {\n            this._alternatives.value.set(event, next => {\n                // cancel resolving of additional edits\n                cts.cancel();\n                // this is not so pretty. when inserting the 'next'\n                // suggestion we undo until we are at the state at\n                // which we were before inserting the previous suggestion...\n                while (model.canUndo()) {\n                    if (modelVersionNow !== model.getAlternativeVersionId()) {\n                        model.undo();\n                    }\n                    this._insertSuggestion(next, 1 /* InsertFlags.NoBeforeUndoStop */ | 2 /* InsertFlags.NoAfterUndoStop */ | (flags & 8 /* InsertFlags.AlternativeOverwriteConfig */ ? 8 /* InsertFlags.AlternativeOverwriteConfig */ : 0));\n                    break;\n                }\n            });\n        }\n        this._alertCompletionItem(item);\n        // clear only now - after all tasks are done\n        Promise.all(tasks).finally(() => {\n            this._reportSuggestionAcceptedTelemetry(item, model, isResolved, _commandExectionDuration, _additionalEditsAppliedAsync);\n            this.model.clear();\n            cts.dispose();\n        });\n    }\n    _reportSuggestionAcceptedTelemetry(item, model, itemResolved, commandExectionDuration, additionalEditsAppliedAsync) {\n        var _a, _b, _c;\n        if (Math.floor(Math.random() * 100) === 0) {\n            // throttle telemetry event because accepting completions happens a lot\n            return;\n        }\n        this._telemetryService.publicLog2('suggest.acceptedSuggestion', {\n            extensionId: (_b = (_a = item.extensionId) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 'unknown',\n            providerId: (_c = item.provider._debugDisplayName) !== null && _c !== void 0 ? _c : 'unknown',\n            kind: item.completion.kind,\n            basenameHash: hash(basename(model.uri)).toString(16),\n            languageId: model.getLanguageId(),\n            fileExtension: extname(model.uri),\n            resolveInfo: !item.provider.resolveCompletionItem ? -1 : itemResolved ? 1 : 0,\n            resolveDuration: item.resolveDuration,\n            commandDuration: commandExectionDuration,\n            additionalEditsAsync: additionalEditsAppliedAsync\n        });\n    }\n    getOverwriteInfo(item, toggleMode) {\n        assertType(this.editor.hasModel());\n        let replace = this.editor.getOption(118 /* EditorOption.suggest */).insertMode === 'replace';\n        if (toggleMode) {\n            replace = !replace;\n        }\n        const overwriteBefore = item.position.column - item.editStart.column;\n        const overwriteAfter = (replace ? item.editReplaceEnd.column : item.editInsertEnd.column) - item.position.column;\n        const columnDelta = this.editor.getPosition().column - item.position.column;\n        const suffixDelta = this._lineSuffix.value ? this._lineSuffix.value.delta(this.editor.getPosition()) : 0;\n        return {\n            overwriteBefore: overwriteBefore + columnDelta,\n            overwriteAfter: overwriteAfter + suffixDelta\n        };\n    }\n    _alertCompletionItem(item) {\n        if (isNonEmptyArray(item.completion.additionalTextEdits)) {\n            const msg = nls.localize('aria.alert.snippet', \"Accepting '{0}' made {1} additional edits\", item.textLabel, item.completion.additionalTextEdits.length);\n            alert(msg);\n        }\n    }\n    triggerSuggest(onlyFrom, auto, noFilter) {\n        if (this.editor.hasModel()) {\n            this.model.trigger({\n                auto: auto !== null && auto !== void 0 ? auto : false,\n                completionOptions: { providerFilter: onlyFrom, kindFilter: noFilter ? new Set() : undefined }\n            });\n            this.editor.revealPosition(this.editor.getPosition(), 0 /* ScrollType.Smooth */);\n            this.editor.focus();\n        }\n    }\n    triggerSuggestAndAcceptBest(arg) {\n        if (!this.editor.hasModel()) {\n            return;\n        }\n        const positionNow = this.editor.getPosition();\n        const fallback = () => {\n            if (positionNow.equals(this.editor.getPosition())) {\n                this._commandService.executeCommand(arg.fallback);\n            }\n        };\n        const makesTextEdit = (item) => {\n            if (item.completion.insertTextRules & 4 /* CompletionItemInsertTextRule.InsertAsSnippet */ || item.completion.additionalTextEdits) {\n                // snippet, other editor -> makes edit\n                return true;\n            }\n            const position = this.editor.getPosition();\n            const startColumn = item.editStart.column;\n            const endColumn = position.column;\n            if (endColumn - startColumn !== item.completion.insertText.length) {\n                // unequal lengths -> makes edit\n                return true;\n            }\n            const textNow = this.editor.getModel().getValueInRange({\n                startLineNumber: position.lineNumber,\n                startColumn,\n                endLineNumber: position.lineNumber,\n                endColumn\n            });\n            // unequal text -> makes edit\n            return textNow !== item.completion.insertText;\n        };\n        Event.once(this.model.onDidTrigger)(_ => {\n            // wait for trigger because only then the cancel-event is trustworthy\n            const listener = [];\n            Event.any(this.model.onDidTrigger, this.model.onDidCancel)(() => {\n                // retrigger or cancel -> try to type default text\n                dispose(listener);\n                fallback();\n            }, undefined, listener);\n            this.model.onDidSuggest(({ completionModel }) => {\n                dispose(listener);\n                if (completionModel.items.length === 0) {\n                    fallback();\n                    return;\n                }\n                const index = this._memoryService.select(this.editor.getModel(), this.editor.getPosition(), completionModel.items);\n                const item = completionModel.items[index];\n                if (!makesTextEdit(item)) {\n                    fallback();\n                    return;\n                }\n                this.editor.pushUndoStop();\n                this._insertSuggestion({ index, item, model: completionModel }, 4 /* InsertFlags.KeepAlternativeSuggestions */ | 1 /* InsertFlags.NoBeforeUndoStop */ | 2 /* InsertFlags.NoAfterUndoStop */);\n            }, undefined, listener);\n        });\n        this.model.trigger({ auto: false, shy: true });\n        this.editor.revealPosition(positionNow, 0 /* ScrollType.Smooth */);\n        this.editor.focus();\n    }\n    acceptSelectedSuggestion(keepAlternativeSuggestions, alternativeOverwriteConfig) {\n        const item = this.widget.value.getFocusedItem();\n        let flags = 0;\n        if (keepAlternativeSuggestions) {\n            flags |= 4 /* InsertFlags.KeepAlternativeSuggestions */;\n        }\n        if (alternativeOverwriteConfig) {\n            flags |= 8 /* InsertFlags.AlternativeOverwriteConfig */;\n        }\n        this._insertSuggestion(item, flags);\n    }\n    acceptNextSuggestion() {\n        this._alternatives.value.next();\n    }\n    acceptPrevSuggestion() {\n        this._alternatives.value.prev();\n    }\n    cancelSuggestWidget() {\n        this.model.cancel();\n        this.model.clear();\n        this.widget.value.hideWidget();\n    }\n    focusSuggestion() {\n        this.widget.value.focusSelected();\n    }\n    selectNextSuggestion() {\n        this.widget.value.selectNext();\n    }\n    selectNextPageSuggestion() {\n        this.widget.value.selectNextPage();\n    }\n    selectLastSuggestion() {\n        this.widget.value.selectLast();\n    }\n    selectPrevSuggestion() {\n        this.widget.value.selectPrevious();\n    }\n    selectPrevPageSuggestion() {\n        this.widget.value.selectPreviousPage();\n    }\n    selectFirstSuggestion() {\n        this.widget.value.selectFirst();\n    }\n    toggleSuggestionDetails() {\n        this.widget.value.toggleDetails();\n    }\n    toggleExplainMode() {\n        this.widget.value.toggleExplainMode();\n    }\n    toggleSuggestionFocus() {\n        this.widget.value.toggleDetailsFocus();\n    }\n    resetWidgetSize() {\n        this.widget.value.resetPersistedSize();\n    }\n    forceRenderingAbove() {\n        this.widget.value.forceRenderingAbove();\n    }\n    stopForceRenderingAbove() {\n        if (!this.widget.isInitialized) {\n            // This method has no effect if the widget is not initialized yet.\n            return;\n        }\n        this.widget.value.stopForceRenderingAbove();\n    }\n    registerSelector(selector) {\n        return this._selectors.register(selector);\n    }\n};\nSuggestController.ID = 'editor.contrib.suggestController';\nSuggestController = SuggestController_1 = __decorate([\n    __param(1, ISuggestMemoryService),\n    __param(2, ICommandService),\n    __param(3, IContextKeyService),\n    __param(4, IInstantiationService),\n    __param(5, ILogService),\n    __param(6, ITelemetryService)\n], SuggestController);\nexport { SuggestController };\nclass PriorityRegistry {\n    constructor(prioritySelector) {\n        this.prioritySelector = prioritySelector;\n        this._items = new Array();\n    }\n    register(value) {\n        if (this._items.indexOf(value) !== -1) {\n            throw new Error('Value is already registered');\n        }\n        this._items.push(value);\n        this._items.sort((s1, s2) => this.prioritySelector(s2) - this.prioritySelector(s1));\n        return {\n            dispose: () => {\n                const idx = this._items.indexOf(value);\n                if (idx >= 0) {\n                    this._items.splice(idx, 1);\n                }\n            }\n        };\n    }\n    get itemsOrderedByPriorityDesc() {\n        return this._items;\n    }\n}\nexport class TriggerSuggestAction extends EditorAction {\n    constructor() {\n        super({\n            id: TriggerSuggestAction.id,\n            label: nls.localize('suggest.trigger.label', \"Trigger Suggest\"),\n            alias: 'Trigger Suggest',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCompletionItemProvider, SuggestContext.Visible.toNegated()),\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 10 /* KeyCode.Space */,\n                secondary: [2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */],\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 10 /* KeyCode.Space */, secondary: [512 /* KeyMod.Alt */ | 9 /* KeyCode.Escape */, 2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */] },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(_accessor, editor, args) {\n        const controller = SuggestController.get(editor);\n        if (!controller) {\n            return;\n        }\n        let auto;\n        if (args && typeof args === 'object') {\n            if (args.auto === true) {\n                auto = true;\n            }\n        }\n        controller.triggerSuggest(undefined, auto, undefined);\n    }\n}\nTriggerSuggestAction.id = 'editor.action.triggerSuggest';\nregisterEditorContribution(SuggestController.ID, SuggestController, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nregisterEditorAction(TriggerSuggestAction);\nconst weight = 100 /* KeybindingWeight.EditorContrib */ + 90;\nconst SuggestCommand = EditorCommand.bindToContribution(SuggestController.get);\nregisterEditorCommand(new SuggestCommand({\n    id: 'acceptSelectedSuggestion',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion),\n    handler(x) {\n        x.acceptSelectedSuggestion(true, false);\n    },\n    kbOpts: [{\n            // normal tab\n            primary: 2 /* KeyCode.Tab */,\n            kbExpr: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus),\n            weight,\n        }, {\n            // accept on enter has special rules\n            primary: 3 /* KeyCode.Enter */,\n            kbExpr: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus, SuggestContext.AcceptSuggestionsOnEnter, SuggestContext.MakesTextEdit),\n            weight,\n        }],\n    menuOpts: [{\n            menuId: suggestWidgetStatusbarMenu,\n            title: nls.localize('accept.insert', \"Insert\"),\n            group: 'left',\n            order: 1,\n            when: SuggestContext.HasInsertAndReplaceRange.toNegated()\n        }, {\n            menuId: suggestWidgetStatusbarMenu,\n            title: nls.localize('accept.insert', \"Insert\"),\n            group: 'left',\n            order: 1,\n            when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert'))\n        }, {\n            menuId: suggestWidgetStatusbarMenu,\n            title: nls.localize('accept.replace', \"Replace\"),\n            group: 'left',\n            order: 1,\n            when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace'))\n        }]\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'acceptAlternativeSelectedSuggestion',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus, SuggestContext.HasFocusedSuggestion),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 1024 /* KeyMod.Shift */ | 3 /* KeyCode.Enter */,\n        secondary: [1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */],\n    },\n    handler(x) {\n        x.acceptSelectedSuggestion(false, true);\n    },\n    menuOpts: [{\n            menuId: suggestWidgetStatusbarMenu,\n            group: 'left',\n            order: 2,\n            when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')),\n            title: nls.localize('accept.replace', \"Replace\")\n        }, {\n            menuId: suggestWidgetStatusbarMenu,\n            group: 'left',\n            order: 2,\n            when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')),\n            title: nls.localize('accept.insert', \"Insert\")\n        }]\n}));\n// continue to support the old command\nCommandsRegistry.registerCommandAlias('acceptSelectedSuggestionOnEnter', 'acceptSelectedSuggestion');\nregisterEditorCommand(new SuggestCommand({\n    id: 'hideSuggestWidget',\n    precondition: SuggestContext.Visible,\n    handler: x => x.cancelSuggestWidget(),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 9 /* KeyCode.Escape */,\n        secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n    }\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'selectNextSuggestion',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n    handler: c => c.selectNextSuggestion(),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 18 /* KeyCode.DownArrow */,\n        secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */],\n        mac: { primary: 18 /* KeyCode.DownArrow */, secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */, 256 /* KeyMod.WinCtrl */ | 44 /* KeyCode.KeyN */] }\n    }\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'selectNextPageSuggestion',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n    handler: c => c.selectNextPageSuggestion(),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 12 /* KeyCode.PageDown */,\n        secondary: [2048 /* KeyMod.CtrlCmd */ | 12 /* KeyCode.PageDown */]\n    }\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'selectLastSuggestion',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n    handler: c => c.selectLastSuggestion()\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'selectPrevSuggestion',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n    handler: c => c.selectPrevSuggestion(),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 16 /* KeyCode.UpArrow */,\n        secondary: [2048 /* KeyMod.CtrlCmd */ | 16 /* KeyCode.UpArrow */],\n        mac: { primary: 16 /* KeyCode.UpArrow */, secondary: [2048 /* KeyMod.CtrlCmd */ | 16 /* KeyCode.UpArrow */, 256 /* KeyMod.WinCtrl */ | 46 /* KeyCode.KeyP */] }\n    }\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'selectPrevPageSuggestion',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n    handler: c => c.selectPrevPageSuggestion(),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 11 /* KeyCode.PageUp */,\n        secondary: [2048 /* KeyMod.CtrlCmd */ | 11 /* KeyCode.PageUp */]\n    }\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'selectFirstSuggestion',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n    handler: c => c.selectFirstSuggestion()\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'focusSuggestion',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion.negate()),\n    handler: x => x.focusSuggestion(),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 2048 /* KeyMod.CtrlCmd */ | 10 /* KeyCode.Space */,\n        secondary: [2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */],\n        mac: { primary: 256 /* KeyMod.WinCtrl */ | 10 /* KeyCode.Space */, secondary: [2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */] }\n    },\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'focusAndAcceptSuggestion',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion.negate()),\n    handler: c => {\n        c.focusSuggestion();\n        c.acceptSelectedSuggestion(true, false);\n    }\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'toggleSuggestionDetails',\n    precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion),\n    handler: x => x.toggleSuggestionDetails(),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 2048 /* KeyMod.CtrlCmd */ | 10 /* KeyCode.Space */,\n        secondary: [2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */],\n        mac: { primary: 256 /* KeyMod.WinCtrl */ | 10 /* KeyCode.Space */, secondary: [2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */] }\n    },\n    menuOpts: [{\n            menuId: suggestWidgetStatusbarMenu,\n            group: 'right',\n            order: 1,\n            when: ContextKeyExpr.and(SuggestContext.DetailsVisible, SuggestContext.CanResolve),\n            title: nls.localize('detail.more', \"show less\")\n        }, {\n            menuId: suggestWidgetStatusbarMenu,\n            group: 'right',\n            order: 1,\n            when: ContextKeyExpr.and(SuggestContext.DetailsVisible.toNegated(), SuggestContext.CanResolve),\n            title: nls.localize('detail.less', \"show more\")\n        }]\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'toggleExplainMode',\n    precondition: SuggestContext.Visible,\n    handler: x => x.toggleExplainMode(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */,\n        primary: 2048 /* KeyMod.CtrlCmd */ | 90 /* KeyCode.Slash */,\n    }\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'toggleSuggestionFocus',\n    precondition: SuggestContext.Visible,\n    handler: x => x.toggleSuggestionFocus(),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 10 /* KeyCode.Space */,\n        mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 10 /* KeyCode.Space */ }\n    }\n}));\n//#region tab completions\nregisterEditorCommand(new SuggestCommand({\n    id: 'insertBestCompletion',\n    precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), WordContextKey.AtEnd, SuggestContext.Visible.toNegated(), SuggestAlternatives.OtherSuggestions.toNegated(), SnippetController2.InSnippetMode.toNegated()),\n    handler: (x, arg) => {\n        x.triggerSuggestAndAcceptBest(isObject(arg) ? { fallback: 'tab', ...arg } : { fallback: 'tab' });\n    },\n    kbOpts: {\n        weight,\n        primary: 2 /* KeyCode.Tab */\n    }\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'insertNextSuggestion',\n    precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), SuggestAlternatives.OtherSuggestions, SuggestContext.Visible.toNegated(), SnippetController2.InSnippetMode.toNegated()),\n    handler: x => x.acceptNextSuggestion(),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 2 /* KeyCode.Tab */\n    }\n}));\nregisterEditorCommand(new SuggestCommand({\n    id: 'insertPrevSuggestion',\n    precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), SuggestAlternatives.OtherSuggestions, SuggestContext.Visible.toNegated(), SnippetController2.InSnippetMode.toNegated()),\n    handler: x => x.acceptPrevSuggestion(),\n    kbOpts: {\n        weight: weight,\n        kbExpr: EditorContextKeys.textInputFocus,\n        primary: 1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */\n    }\n}));\nregisterEditorAction(class extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.resetSuggestSize',\n            label: nls.localize('suggest.reset.label', \"Reset Suggest Widget Size\"),\n            alias: 'Reset Suggest Widget Size',\n            precondition: undefined\n        });\n    }\n    run(_accessor, editor) {\n        var _a;\n        (_a = SuggestController.get(editor)) === null || _a === void 0 ? void 0 : _a.resetWidgetSize();\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 SuggestMemoryService_1;\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { LRUCache } from '../../../../base/common/map.js';\nimport { TernarySearchTree } from '../../../../base/common/ternarySearchTree.js';\nimport { CompletionItemKinds } from '../../../common/languages.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IStorageService, WillSaveStateReason } from '../../../../platform/storage/common/storage.js';\nexport class Memory {\n    constructor(name) {\n        this.name = name;\n    }\n    select(model, pos, items) {\n        if (items.length === 0) {\n            return 0;\n        }\n        const topScore = items[0].score[0];\n        for (let i = 0; i < items.length; i++) {\n            const { score, completion: suggestion } = items[i];\n            if (score[0] !== topScore) {\n                // stop when leaving the group of top matches\n                break;\n            }\n            if (suggestion.preselect) {\n                // stop when seeing an auto-select-item\n                return i;\n            }\n        }\n        return 0;\n    }\n}\nexport class NoMemory extends Memory {\n    constructor() {\n        super('first');\n    }\n    memorize(model, pos, item) {\n        // no-op\n    }\n    toJSON() {\n        return undefined;\n    }\n    fromJSON() {\n        //\n    }\n}\nexport class LRUMemory extends Memory {\n    constructor() {\n        super('recentlyUsed');\n        this._cache = new LRUCache(300, 0.66);\n        this._seq = 0;\n    }\n    memorize(model, pos, item) {\n        const key = `${model.getLanguageId()}/${item.textLabel}`;\n        this._cache.set(key, {\n            touch: this._seq++,\n            type: item.completion.kind,\n            insertText: item.completion.insertText\n        });\n    }\n    select(model, pos, items) {\n        if (items.length === 0) {\n            return 0;\n        }\n        const lineSuffix = model.getLineContent(pos.lineNumber).substr(pos.column - 10, pos.column - 1);\n        if (/\\s$/.test(lineSuffix)) {\n            return super.select(model, pos, items);\n        }\n        const topScore = items[0].score[0];\n        let indexPreselect = -1;\n        let indexRecency = -1;\n        let seq = -1;\n        for (let i = 0; i < items.length; i++) {\n            if (items[i].score[0] !== topScore) {\n                // consider only top items\n                break;\n            }\n            const key = `${model.getLanguageId()}/${items[i].textLabel}`;\n            const item = this._cache.peek(key);\n            if (item && item.touch > seq && item.type === items[i].completion.kind && item.insertText === items[i].completion.insertText) {\n                seq = item.touch;\n                indexRecency = i;\n            }\n            if (items[i].completion.preselect && indexPreselect === -1) {\n                // stop when seeing an auto-select-item\n                return indexPreselect = i;\n            }\n        }\n        if (indexRecency !== -1) {\n            return indexRecency;\n        }\n        else if (indexPreselect !== -1) {\n            return indexPreselect;\n        }\n        else {\n            return 0;\n        }\n    }\n    toJSON() {\n        return this._cache.toJSON();\n    }\n    fromJSON(data) {\n        this._cache.clear();\n        const seq = 0;\n        for (const [key, value] of data) {\n            value.touch = seq;\n            value.type = typeof value.type === 'number' ? value.type : CompletionItemKinds.fromString(value.type);\n            this._cache.set(key, value);\n        }\n        this._seq = this._cache.size;\n    }\n}\nexport class PrefixMemory extends Memory {\n    constructor() {\n        super('recentlyUsedByPrefix');\n        this._trie = TernarySearchTree.forStrings();\n        this._seq = 0;\n    }\n    memorize(model, pos, item) {\n        const { word } = model.getWordUntilPosition(pos);\n        const key = `${model.getLanguageId()}/${word}`;\n        this._trie.set(key, {\n            type: item.completion.kind,\n            insertText: item.completion.insertText,\n            touch: this._seq++\n        });\n    }\n    select(model, pos, items) {\n        const { word } = model.getWordUntilPosition(pos);\n        if (!word) {\n            return super.select(model, pos, items);\n        }\n        const key = `${model.getLanguageId()}/${word}`;\n        let item = this._trie.get(key);\n        if (!item) {\n            item = this._trie.findSubstr(key);\n        }\n        if (item) {\n            for (let i = 0; i < items.length; i++) {\n                const { kind, insertText } = items[i].completion;\n                if (kind === item.type && insertText === item.insertText) {\n                    return i;\n                }\n            }\n        }\n        return super.select(model, pos, items);\n    }\n    toJSON() {\n        const entries = [];\n        this._trie.forEach((value, key) => entries.push([key, value]));\n        // sort by last recently used (touch), then\n        // take the top 200 item and normalize their\n        // touch\n        entries\n            .sort((a, b) => -(a[1].touch - b[1].touch))\n            .forEach((value, i) => value[1].touch = i);\n        return entries.slice(0, 200);\n    }\n    fromJSON(data) {\n        this._trie.clear();\n        if (data.length > 0) {\n            this._seq = data[0][1].touch + 1;\n            for (const [key, value] of data) {\n                value.type = typeof value.type === 'number' ? value.type : CompletionItemKinds.fromString(value.type);\n                this._trie.set(key, value);\n            }\n        }\n    }\n}\nlet SuggestMemoryService = SuggestMemoryService_1 = class SuggestMemoryService {\n    constructor(_storageService, _configService) {\n        this._storageService = _storageService;\n        this._configService = _configService;\n        this._disposables = new DisposableStore();\n        this._persistSoon = new RunOnceScheduler(() => this._saveState(), 500);\n        this._disposables.add(_storageService.onWillSaveState(e => {\n            if (e.reason === WillSaveStateReason.SHUTDOWN) {\n                this._saveState();\n            }\n        }));\n    }\n    dispose() {\n        this._disposables.dispose();\n        this._persistSoon.dispose();\n    }\n    memorize(model, pos, item) {\n        this._withStrategy(model, pos).memorize(model, pos, item);\n        this._persistSoon.schedule();\n    }\n    select(model, pos, items) {\n        return this._withStrategy(model, pos).select(model, pos, items);\n    }\n    _withStrategy(model, pos) {\n        var _a;\n        const mode = this._configService.getValue('editor.suggestSelection', {\n            overrideIdentifier: model.getLanguageIdAtPosition(pos.lineNumber, pos.column),\n            resource: model.uri\n        });\n        if (((_a = this._strategy) === null || _a === void 0 ? void 0 : _a.name) !== mode) {\n            this._saveState();\n            const ctor = SuggestMemoryService_1._strategyCtors.get(mode) || NoMemory;\n            this._strategy = new ctor();\n            try {\n                const share = this._configService.getValue('editor.suggest.shareSuggestSelections');\n                const scope = share ? 0 /* StorageScope.PROFILE */ : 1 /* StorageScope.WORKSPACE */;\n                const raw = this._storageService.get(`${SuggestMemoryService_1._storagePrefix}/${mode}`, scope);\n                if (raw) {\n                    this._strategy.fromJSON(JSON.parse(raw));\n                }\n            }\n            catch (e) {\n                // things can go wrong with JSON...\n            }\n        }\n        return this._strategy;\n    }\n    _saveState() {\n        if (this._strategy) {\n            const share = this._configService.getValue('editor.suggest.shareSuggestSelections');\n            const scope = share ? 0 /* StorageScope.PROFILE */ : 1 /* StorageScope.WORKSPACE */;\n            const raw = JSON.stringify(this._strategy);\n            this._storageService.store(`${SuggestMemoryService_1._storagePrefix}/${this._strategy.name}`, raw, scope, 1 /* StorageTarget.MACHINE */);\n        }\n    }\n};\nSuggestMemoryService._strategyCtors = new Map([\n    ['recentlyUsedByPrefix', PrefixMemory],\n    ['recentlyUsed', LRUMemory],\n    ['first', NoMemory]\n]);\nSuggestMemoryService._storagePrefix = 'suggest/memories';\nSuggestMemoryService = SuggestMemoryService_1 = __decorate([\n    __param(0, IStorageService),\n    __param(1, IConfigurationService)\n], SuggestMemoryService);\nexport { SuggestMemoryService };\nexport const ISuggestMemoryService = createDecorator('ISuggestMemories');\nregisterSingleton(ISuggestMemoryService, SuggestMemoryService, 1 /* InstantiationType.Delayed */);\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 WordContextKey_1;\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nlet WordContextKey = WordContextKey_1 = class WordContextKey {\n    constructor(_editor, contextKeyService) {\n        this._editor = _editor;\n        this._enabled = false;\n        this._ckAtEnd = WordContextKey_1.AtEnd.bindTo(contextKeyService);\n        this._configListener = this._editor.onDidChangeConfiguration(e => e.hasChanged(123 /* EditorOption.tabCompletion */) && this._update());\n        this._update();\n    }\n    dispose() {\n        var _a;\n        this._configListener.dispose();\n        (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\n        this._ckAtEnd.reset();\n    }\n    _update() {\n        // only update this when tab completions are enabled\n        const enabled = this._editor.getOption(123 /* EditorOption.tabCompletion */) === 'on';\n        if (this._enabled === enabled) {\n            return;\n        }\n        this._enabled = enabled;\n        if (this._enabled) {\n            const checkForWordEnd = () => {\n                if (!this._editor.hasModel()) {\n                    this._ckAtEnd.set(false);\n                    return;\n                }\n                const model = this._editor.getModel();\n                const selection = this._editor.getSelection();\n                const word = model.getWordAtPosition(selection.getStartPosition());\n                if (!word) {\n                    this._ckAtEnd.set(false);\n                    return;\n                }\n                this._ckAtEnd.set(word.endColumn === selection.getStartPosition().column);\n            };\n            this._selectionListener = this._editor.onDidChangeCursorSelection(checkForWordEnd);\n            checkForWordEnd();\n        }\n        else if (this._selectionListener) {\n            this._ckAtEnd.reset();\n            this._selectionListener.dispose();\n            this._selectionListener = undefined;\n        }\n    }\n};\nWordContextKey.AtEnd = new RawContextKey('atEndOfWord', false);\nWordContextKey = WordContextKey_1 = __decorate([\n    __param(1, IContextKeyService)\n], WordContextKey);\nexport { WordContextKey };\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 SuggestAlternatives_1;\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nlet SuggestAlternatives = SuggestAlternatives_1 = class SuggestAlternatives {\n    constructor(_editor, contextKeyService) {\n        this._editor = _editor;\n        this._index = 0;\n        this._ckOtherSuggestions = SuggestAlternatives_1.OtherSuggestions.bindTo(contextKeyService);\n    }\n    dispose() {\n        this.reset();\n    }\n    reset() {\n        var _a;\n        this._ckOtherSuggestions.reset();\n        (_a = this._listener) === null || _a === void 0 ? void 0 : _a.dispose();\n        this._model = undefined;\n        this._acceptNext = undefined;\n        this._ignore = false;\n    }\n    set({ model, index }, acceptNext) {\n        // no suggestions -> nothing to do\n        if (model.items.length === 0) {\n            this.reset();\n            return;\n        }\n        // no alternative suggestions -> nothing to do\n        const nextIndex = SuggestAlternatives_1._moveIndex(true, model, index);\n        if (nextIndex === index) {\n            this.reset();\n            return;\n        }\n        this._acceptNext = acceptNext;\n        this._model = model;\n        this._index = index;\n        this._listener = this._editor.onDidChangeCursorPosition(() => {\n            if (!this._ignore) {\n                this.reset();\n            }\n        });\n        this._ckOtherSuggestions.set(true);\n    }\n    static _moveIndex(fwd, model, index) {\n        let newIndex = index;\n        for (let rounds = model.items.length; rounds > 0; rounds--) {\n            newIndex = (newIndex + model.items.length + (fwd ? +1 : -1)) % model.items.length;\n            if (newIndex === index) {\n                break;\n            }\n            if (!model.items[newIndex].completion.additionalTextEdits) {\n                break;\n            }\n        }\n        return newIndex;\n    }\n    next() {\n        this._move(true);\n    }\n    prev() {\n        this._move(false);\n    }\n    _move(fwd) {\n        if (!this._model) {\n            // nothing to reason about\n            return;\n        }\n        try {\n            this._ignore = true;\n            this._index = SuggestAlternatives_1._moveIndex(fwd, this._model, this._index);\n            this._acceptNext({ index: this._index, item: this._model.items[this._index], model: this._model });\n        }\n        finally {\n            this._ignore = false;\n        }\n    }\n};\nSuggestAlternatives.OtherSuggestions = new RawContextKey('hasOtherSuggestions', false);\nSuggestAlternatives = SuggestAlternatives_1 = __decorate([\n    __param(1, IContextKeyService)\n], SuggestAlternatives);\nexport { SuggestAlternatives };\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 { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { CharacterSet } from '../../../common/core/characterClassifier.js';\nexport class CommitCharacterController {\n    constructor(editor, widget, model, accept) {\n        this._disposables = new DisposableStore();\n        this._disposables.add(model.onDidSuggest(e => {\n            if (e.completionModel.items.length === 0) {\n                this.reset();\n            }\n        }));\n        this._disposables.add(model.onDidCancel(e => {\n            this.reset();\n        }));\n        this._disposables.add(widget.onDidShow(() => this._onItem(widget.getFocusedItem())));\n        this._disposables.add(widget.onDidFocus(this._onItem, this));\n        this._disposables.add(widget.onDidHide(this.reset, this));\n        this._disposables.add(editor.onWillType(text => {\n            if (this._active && !widget.isFrozen() && model.state !== 0 /* State.Idle */) {\n                const ch = text.charCodeAt(text.length - 1);\n                if (this._active.acceptCharacters.has(ch) && editor.getOption(0 /* EditorOption.acceptSuggestionOnCommitCharacter */)) {\n                    accept(this._active.item);\n                }\n            }\n        }));\n    }\n    _onItem(selected) {\n        if (!selected || !isNonEmptyArray(selected.item.completion.commitCharacters)) {\n            // no item or no commit characters\n            this.reset();\n            return;\n        }\n        if (this._active && this._active.item.item === selected.item) {\n            // still the same item\n            return;\n        }\n        // keep item and its commit characters\n        const acceptCharacters = new CharacterSet();\n        for (const ch of selected.item.completion.commitCharacters) {\n            if (ch.length > 0) {\n                acceptCharacters.add(ch.charCodeAt(0));\n            }\n        }\n        this._active = { acceptCharacters, item: selected };\n    }\n    reset() {\n        this._active = undefined;\n    }\n    dispose() {\n        this._disposables.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};\nvar SuggestModel_1;\nimport { TimeoutTimer } from '../../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { DisposableStore, dispose } from '../../../../base/common/lifecycle.js';\nimport { getLeadingWhitespace, isHighSurrogate, isLowSurrogate } from '../../../../base/common/strings.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { WordDistance } from './wordDistance.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { CompletionModel } from './completionModel.js';\nimport { CompletionOptions, getSnippetSuggestSupport, provideSuggestionItems, QuickSuggestionsOptions } from './suggest.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { FuzzyScoreOptions } from '../../../../base/common/filters.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { InlineCompletionContextKeys } from '../../inlineCompletions/browser/inlineCompletionContextKeys.js';\nimport { SnippetController2 } from '../../snippet/browser/snippetController2.js';\nimport { IEnvironmentService } from '../../../../platform/environment/common/environment.js';\nexport class LineContext {\n    static shouldAutoTrigger(editor) {\n        if (!editor.hasModel()) {\n            return false;\n        }\n        const model = editor.getModel();\n        const pos = editor.getPosition();\n        model.tokenization.tokenizeIfCheap(pos.lineNumber);\n        const word = model.getWordAtPosition(pos);\n        if (!word) {\n            return false;\n        }\n        if (word.endColumn !== pos.column &&\n            word.startColumn + 1 !== pos.column /* after typing a single character before a word */) {\n            return false;\n        }\n        if (!isNaN(Number(word.word))) {\n            return false;\n        }\n        return true;\n    }\n    constructor(model, position, triggerOptions) {\n        this.leadingLineContent = model.getLineContent(position.lineNumber).substr(0, position.column - 1);\n        this.leadingWord = model.getWordUntilPosition(position);\n        this.lineNumber = position.lineNumber;\n        this.column = position.column;\n        this.triggerOptions = triggerOptions;\n    }\n}\nfunction canShowQuickSuggest(editor, contextKeyService, configurationService) {\n    if (!Boolean(contextKeyService.getContextKeyValue(InlineCompletionContextKeys.inlineSuggestionVisible.key))) {\n        // Allow if there is no inline suggestion.\n        return true;\n    }\n    const suppressSuggestions = contextKeyService.getContextKeyValue(InlineCompletionContextKeys.suppressSuggestions.key);\n    if (suppressSuggestions !== undefined) {\n        return !suppressSuggestions;\n    }\n    return !editor.getOption(62 /* EditorOption.inlineSuggest */).suppressSuggestions;\n}\nfunction canShowSuggestOnTriggerCharacters(editor, contextKeyService, configurationService) {\n    if (!Boolean(contextKeyService.getContextKeyValue('inlineSuggestionVisible'))) {\n        // Allow if there is no inline suggestion.\n        return true;\n    }\n    const suppressSuggestions = contextKeyService.getContextKeyValue(InlineCompletionContextKeys.suppressSuggestions.key);\n    if (suppressSuggestions !== undefined) {\n        return !suppressSuggestions;\n    }\n    return !editor.getOption(62 /* EditorOption.inlineSuggest */).suppressSuggestions;\n}\nlet SuggestModel = SuggestModel_1 = class SuggestModel {\n    constructor(_editor, _editorWorkerService, _clipboardService, _telemetryService, _logService, _contextKeyService, _configurationService, _languageFeaturesService, _envService) {\n        this._editor = _editor;\n        this._editorWorkerService = _editorWorkerService;\n        this._clipboardService = _clipboardService;\n        this._telemetryService = _telemetryService;\n        this._logService = _logService;\n        this._contextKeyService = _contextKeyService;\n        this._configurationService = _configurationService;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._envService = _envService;\n        this._toDispose = new DisposableStore();\n        this._triggerCharacterListener = new DisposableStore();\n        this._triggerQuickSuggest = new TimeoutTimer();\n        this._triggerState = undefined;\n        this._completionDisposables = new DisposableStore();\n        this._onDidCancel = new Emitter();\n        this._onDidTrigger = new Emitter();\n        this._onDidSuggest = new Emitter();\n        this.onDidCancel = this._onDidCancel.event;\n        this.onDidTrigger = this._onDidTrigger.event;\n        this.onDidSuggest = this._onDidSuggest.event;\n        this._telemetryGate = 0;\n        this._currentSelection = this._editor.getSelection() || new Selection(1, 1, 1, 1);\n        // wire up various listeners\n        this._toDispose.add(this._editor.onDidChangeModel(() => {\n            this._updateTriggerCharacters();\n            this.cancel();\n        }));\n        this._toDispose.add(this._editor.onDidChangeModelLanguage(() => {\n            this._updateTriggerCharacters();\n            this.cancel();\n        }));\n        this._toDispose.add(this._editor.onDidChangeConfiguration(() => {\n            this._updateTriggerCharacters();\n        }));\n        this._toDispose.add(this._languageFeaturesService.completionProvider.onDidChange(() => {\n            this._updateTriggerCharacters();\n            this._updateActiveSuggestSession();\n        }));\n        let editorIsComposing = false;\n        this._toDispose.add(this._editor.onDidCompositionStart(() => {\n            editorIsComposing = true;\n        }));\n        this._toDispose.add(this._editor.onDidCompositionEnd(() => {\n            editorIsComposing = false;\n            this._onCompositionEnd();\n        }));\n        this._toDispose.add(this._editor.onDidChangeCursorSelection(e => {\n            // only trigger suggest when the editor isn't composing a character\n            if (!editorIsComposing) {\n                this._onCursorChange(e);\n            }\n        }));\n        this._toDispose.add(this._editor.onDidChangeModelContent(() => {\n            // only filter completions when the editor isn't composing a character\n            // allow-any-unicode-next-line\n            // e.g. \u00A8 + u makes \u00FC but just \u00A8 cannot be used for filtering\n            if (!editorIsComposing && this._triggerState !== undefined) {\n                this._refilterCompletionItems();\n            }\n        }));\n        this._updateTriggerCharacters();\n    }\n    dispose() {\n        dispose(this._triggerCharacterListener);\n        dispose([this._onDidCancel, this._onDidSuggest, this._onDidTrigger, this._triggerQuickSuggest]);\n        this._toDispose.dispose();\n        this._completionDisposables.dispose();\n        this.cancel();\n    }\n    _updateTriggerCharacters() {\n        this._triggerCharacterListener.clear();\n        if (this._editor.getOption(91 /* EditorOption.readOnly */)\n            || !this._editor.hasModel()\n            || !this._editor.getOption(121 /* EditorOption.suggestOnTriggerCharacters */)) {\n            return;\n        }\n        const supportsByTriggerCharacter = new Map();\n        for (const support of this._languageFeaturesService.completionProvider.all(this._editor.getModel())) {\n            for (const ch of support.triggerCharacters || []) {\n                let set = supportsByTriggerCharacter.get(ch);\n                if (!set) {\n                    set = new Set();\n                    set.add(getSnippetSuggestSupport());\n                    supportsByTriggerCharacter.set(ch, set);\n                }\n                set.add(support);\n            }\n        }\n        const checkTriggerCharacter = (text) => {\n            var _a;\n            if (!canShowSuggestOnTriggerCharacters(this._editor, this._contextKeyService, this._configurationService)) {\n                return;\n            }\n            if (LineContext.shouldAutoTrigger(this._editor)) {\n                // don't trigger by trigger characters when this is a case for quick suggest\n                return;\n            }\n            if (!text) {\n                // came here from the compositionEnd-event\n                const position = this._editor.getPosition();\n                const model = this._editor.getModel();\n                text = model.getLineContent(position.lineNumber).substr(0, position.column - 1);\n            }\n            let lastChar = '';\n            if (isLowSurrogate(text.charCodeAt(text.length - 1))) {\n                if (isHighSurrogate(text.charCodeAt(text.length - 2))) {\n                    lastChar = text.substr(text.length - 2);\n                }\n            }\n            else {\n                lastChar = text.charAt(text.length - 1);\n            }\n            const supports = supportsByTriggerCharacter.get(lastChar);\n            if (supports) {\n                // keep existing items that where not computed by the\n                // supports/providers that want to trigger now\n                const providerItemsToReuse = new Map();\n                if (this._completionModel) {\n                    for (const [provider, items] of this._completionModel.getItemsByProvider()) {\n                        if (!supports.has(provider)) {\n                            providerItemsToReuse.set(provider, items);\n                        }\n                    }\n                }\n                this.trigger({\n                    auto: true,\n                    triggerKind: 1 /* CompletionTriggerKind.TriggerCharacter */,\n                    triggerCharacter: lastChar,\n                    retrigger: Boolean(this._completionModel),\n                    clipboardText: (_a = this._completionModel) === null || _a === void 0 ? void 0 : _a.clipboardText,\n                    completionOptions: { providerFilter: supports, providerItemsToReuse }\n                });\n            }\n        };\n        this._triggerCharacterListener.add(this._editor.onDidType(checkTriggerCharacter));\n        this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(() => checkTriggerCharacter()));\n    }\n    // --- trigger/retrigger/cancel suggest\n    get state() {\n        if (!this._triggerState) {\n            return 0 /* State.Idle */;\n        }\n        else if (!this._triggerState.auto) {\n            return 1 /* State.Manual */;\n        }\n        else {\n            return 2 /* State.Auto */;\n        }\n    }\n    cancel(retrigger = false) {\n        var _a;\n        if (this._triggerState !== undefined) {\n            this._triggerQuickSuggest.cancel();\n            (_a = this._requestToken) === null || _a === void 0 ? void 0 : _a.cancel();\n            this._requestToken = undefined;\n            this._triggerState = undefined;\n            this._completionModel = undefined;\n            this._context = undefined;\n            this._onDidCancel.fire({ retrigger });\n        }\n    }\n    clear() {\n        this._completionDisposables.clear();\n    }\n    _updateActiveSuggestSession() {\n        if (this._triggerState !== undefined) {\n            if (!this._editor.hasModel() || !this._languageFeaturesService.completionProvider.has(this._editor.getModel())) {\n                this.cancel();\n            }\n            else {\n                this.trigger({ auto: this._triggerState.auto, retrigger: true });\n            }\n        }\n    }\n    _onCursorChange(e) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const prevSelection = this._currentSelection;\n        this._currentSelection = this._editor.getSelection();\n        if (!e.selection.isEmpty()\n            || (e.reason !== 0 /* CursorChangeReason.NotSet */ && e.reason !== 3 /* CursorChangeReason.Explicit */)\n            || (e.source !== 'keyboard' && e.source !== 'deleteLeft')) {\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            this.cancel();\n            return;\n        }\n        if (this._triggerState === undefined && e.reason === 0 /* CursorChangeReason.NotSet */) {\n            if (prevSelection.containsRange(this._currentSelection) || prevSelection.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition())) {\n                // cursor did move RIGHT due to typing -> trigger quick suggest\n                this._doTriggerQuickSuggest();\n            }\n        }\n        else if (this._triggerState !== undefined && e.reason === 3 /* CursorChangeReason.Explicit */) {\n            // suggest is active and something like cursor keys are used to move\n            // the cursor. this means we can refilter at the new position\n            this._refilterCompletionItems();\n        }\n    }\n    _onCompositionEnd() {\n        // trigger or refilter when composition ends\n        if (this._triggerState === undefined) {\n            this._doTriggerQuickSuggest();\n        }\n        else {\n            this._refilterCompletionItems();\n        }\n    }\n    _doTriggerQuickSuggest() {\n        var _a;\n        if (QuickSuggestionsOptions.isAllOff(this._editor.getOption(89 /* EditorOption.quickSuggestions */))) {\n            // not enabled\n            return;\n        }\n        if (this._editor.getOption(118 /* EditorOption.suggest */).snippetsPreventQuickSuggestions && ((_a = SnippetController2.get(this._editor)) === null || _a === void 0 ? void 0 : _a.isInSnippet())) {\n            // no quick suggestion when in snippet mode\n            return;\n        }\n        this.cancel();\n        this._triggerQuickSuggest.cancelAndSet(() => {\n            if (this._triggerState !== undefined) {\n                return;\n            }\n            if (!LineContext.shouldAutoTrigger(this._editor)) {\n                return;\n            }\n            if (!this._editor.hasModel() || !this._editor.hasWidgetFocus()) {\n                return;\n            }\n            const model = this._editor.getModel();\n            const pos = this._editor.getPosition();\n            // validate enabled now\n            const config = this._editor.getOption(89 /* EditorOption.quickSuggestions */);\n            if (QuickSuggestionsOptions.isAllOff(config)) {\n                return;\n            }\n            if (!QuickSuggestionsOptions.isAllOn(config)) {\n                // Check the type of the token that triggered this\n                model.tokenization.tokenizeIfCheap(pos.lineNumber);\n                const lineTokens = model.tokenization.getLineTokens(pos.lineNumber);\n                const tokenType = lineTokens.getStandardTokenType(lineTokens.findTokenIndexAtOffset(Math.max(pos.column - 1 - 1, 0)));\n                if (QuickSuggestionsOptions.valueFor(config, tokenType) !== 'on') {\n                    return;\n                }\n            }\n            if (!canShowQuickSuggest(this._editor, this._contextKeyService, this._configurationService)) {\n                // do not trigger quick suggestions if inline suggestions are shown\n                return;\n            }\n            if (!this._languageFeaturesService.completionProvider.has(model)) {\n                return;\n            }\n            // we made it till here -> trigger now\n            this.trigger({ auto: true });\n        }, this._editor.getOption(90 /* EditorOption.quickSuggestionsDelay */));\n    }\n    _refilterCompletionItems() {\n        assertType(this._editor.hasModel());\n        assertType(this._triggerState !== undefined);\n        const model = this._editor.getModel();\n        const position = this._editor.getPosition();\n        const ctx = new LineContext(model, position, { ...this._triggerState, refilter: true });\n        this._onNewContext(ctx);\n    }\n    trigger(options) {\n        var _a, _b, _c, _d, _e, _f;\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const model = this._editor.getModel();\n        const ctx = new LineContext(model, this._editor.getPosition(), options);\n        // Cancel previous requests, change state & update UI\n        this.cancel(options.retrigger);\n        this._triggerState = options;\n        this._onDidTrigger.fire({ auto: options.auto, shy: (_a = options.shy) !== null && _a !== void 0 ? _a : false, position: this._editor.getPosition() });\n        // Capture context when request was sent\n        this._context = ctx;\n        // Build context for request\n        let suggestCtx = { triggerKind: (_b = options.triggerKind) !== null && _b !== void 0 ? _b : 0 /* CompletionTriggerKind.Invoke */ };\n        if (options.triggerCharacter) {\n            suggestCtx = {\n                triggerKind: 1 /* CompletionTriggerKind.TriggerCharacter */,\n                triggerCharacter: options.triggerCharacter\n            };\n        }\n        this._requestToken = new CancellationTokenSource();\n        // kind filter and snippet sort rules\n        const snippetSuggestions = this._editor.getOption(112 /* EditorOption.snippetSuggestions */);\n        let snippetSortOrder = 1 /* SnippetSortOrder.Inline */;\n        switch (snippetSuggestions) {\n            case 'top':\n                snippetSortOrder = 0 /* SnippetSortOrder.Top */;\n                break;\n            // \t\u2193 that's the default anyways...\n            // case 'inline':\n            // \tsnippetSortOrder = SnippetSortOrder.Inline;\n            // \tbreak;\n            case 'bottom':\n                snippetSortOrder = 2 /* SnippetSortOrder.Bottom */;\n                break;\n        }\n        const { itemKind: itemKindFilter, showDeprecated } = SuggestModel_1.createSuggestFilter(this._editor);\n        const completionOptions = new CompletionOptions(snippetSortOrder, (_d = (_c = options.completionOptions) === null || _c === void 0 ? void 0 : _c.kindFilter) !== null && _d !== void 0 ? _d : itemKindFilter, (_e = options.completionOptions) === null || _e === void 0 ? void 0 : _e.providerFilter, (_f = options.completionOptions) === null || _f === void 0 ? void 0 : _f.providerItemsToReuse, showDeprecated);\n        const wordDistance = WordDistance.create(this._editorWorkerService, this._editor);\n        const completions = provideSuggestionItems(this._languageFeaturesService.completionProvider, model, this._editor.getPosition(), completionOptions, suggestCtx, this._requestToken.token);\n        Promise.all([completions, wordDistance]).then(async ([completions, wordDistance]) => {\n            var _a;\n            (_a = this._requestToken) === null || _a === void 0 ? void 0 : _a.dispose();\n            if (!this._editor.hasModel()) {\n                return;\n            }\n            let clipboardText = options === null || options === void 0 ? void 0 : options.clipboardText;\n            if (!clipboardText && completions.needsClipboard) {\n                clipboardText = await this._clipboardService.readText();\n            }\n            if (this._triggerState === undefined) {\n                return;\n            }\n            const model = this._editor.getModel();\n            // const items = completions.items;\n            // if (existing) {\n            // \tconst cmpFn = getSuggestionComparator(snippetSortOrder);\n            // \titems = items.concat(existing.items).sort(cmpFn);\n            // }\n            const ctx = new LineContext(model, this._editor.getPosition(), options);\n            const fuzzySearchOptions = {\n                ...FuzzyScoreOptions.default,\n                firstMatchCanBeWeak: !this._editor.getOption(118 /* EditorOption.suggest */).matchOnWordStartOnly\n            };\n            this._completionModel = new CompletionModel(completions.items, this._context.column, {\n                leadingLineContent: ctx.leadingLineContent,\n                characterCountDelta: ctx.column - this._context.column\n            }, wordDistance, this._editor.getOption(118 /* EditorOption.suggest */), this._editor.getOption(112 /* EditorOption.snippetSuggestions */), fuzzySearchOptions, clipboardText);\n            // store containers so that they can be disposed later\n            this._completionDisposables.add(completions.disposable);\n            this._onNewContext(ctx);\n            // finally report telemetry about durations\n            this._reportDurationsTelemetry(completions.durations);\n            // report invalid completions by source\n            if (!this._envService.isBuilt || this._envService.isExtensionDevelopment) {\n                for (const item of completions.items) {\n                    if (item.isInvalid) {\n                        this._logService.warn(`[suggest] did IGNORE invalid completion item from ${item.provider._debugDisplayName}`, item.completion);\n                    }\n                }\n            }\n        }).catch(onUnexpectedError);\n    }\n    _reportDurationsTelemetry(durations) {\n        if (this._telemetryGate++ % 230 !== 0) {\n            return;\n        }\n        setTimeout(() => {\n            this._telemetryService.publicLog2('suggest.durations.json', { data: JSON.stringify(durations) });\n            this._logService.debug('suggest.durations.json', durations);\n        });\n    }\n    static createSuggestFilter(editor) {\n        // kind filter and snippet sort rules\n        const result = new Set();\n        // snippet setting\n        const snippetSuggestions = editor.getOption(112 /* EditorOption.snippetSuggestions */);\n        if (snippetSuggestions === 'none') {\n            result.add(27 /* CompletionItemKind.Snippet */);\n        }\n        // type setting\n        const suggestOptions = editor.getOption(118 /* EditorOption.suggest */);\n        if (!suggestOptions.showMethods) {\n            result.add(0 /* CompletionItemKind.Method */);\n        }\n        if (!suggestOptions.showFunctions) {\n            result.add(1 /* CompletionItemKind.Function */);\n        }\n        if (!suggestOptions.showConstructors) {\n            result.add(2 /* CompletionItemKind.Constructor */);\n        }\n        if (!suggestOptions.showFields) {\n            result.add(3 /* CompletionItemKind.Field */);\n        }\n        if (!suggestOptions.showVariables) {\n            result.add(4 /* CompletionItemKind.Variable */);\n        }\n        if (!suggestOptions.showClasses) {\n            result.add(5 /* CompletionItemKind.Class */);\n        }\n        if (!suggestOptions.showStructs) {\n            result.add(6 /* CompletionItemKind.Struct */);\n        }\n        if (!suggestOptions.showInterfaces) {\n            result.add(7 /* CompletionItemKind.Interface */);\n        }\n        if (!suggestOptions.showModules) {\n            result.add(8 /* CompletionItemKind.Module */);\n        }\n        if (!suggestOptions.showProperties) {\n            result.add(9 /* CompletionItemKind.Property */);\n        }\n        if (!suggestOptions.showEvents) {\n            result.add(10 /* CompletionItemKind.Event */);\n        }\n        if (!suggestOptions.showOperators) {\n            result.add(11 /* CompletionItemKind.Operator */);\n        }\n        if (!suggestOptions.showUnits) {\n            result.add(12 /* CompletionItemKind.Unit */);\n        }\n        if (!suggestOptions.showValues) {\n            result.add(13 /* CompletionItemKind.Value */);\n        }\n        if (!suggestOptions.showConstants) {\n            result.add(14 /* CompletionItemKind.Constant */);\n        }\n        if (!suggestOptions.showEnums) {\n            result.add(15 /* CompletionItemKind.Enum */);\n        }\n        if (!suggestOptions.showEnumMembers) {\n            result.add(16 /* CompletionItemKind.EnumMember */);\n        }\n        if (!suggestOptions.showKeywords) {\n            result.add(17 /* CompletionItemKind.Keyword */);\n        }\n        if (!suggestOptions.showWords) {\n            result.add(18 /* CompletionItemKind.Text */);\n        }\n        if (!suggestOptions.showColors) {\n            result.add(19 /* CompletionItemKind.Color */);\n        }\n        if (!suggestOptions.showFiles) {\n            result.add(20 /* CompletionItemKind.File */);\n        }\n        if (!suggestOptions.showReferences) {\n            result.add(21 /* CompletionItemKind.Reference */);\n        }\n        if (!suggestOptions.showColors) {\n            result.add(22 /* CompletionItemKind.Customcolor */);\n        }\n        if (!suggestOptions.showFolders) {\n            result.add(23 /* CompletionItemKind.Folder */);\n        }\n        if (!suggestOptions.showTypeParameters) {\n            result.add(24 /* CompletionItemKind.TypeParameter */);\n        }\n        if (!suggestOptions.showSnippets) {\n            result.add(27 /* CompletionItemKind.Snippet */);\n        }\n        if (!suggestOptions.showUsers) {\n            result.add(25 /* CompletionItemKind.User */);\n        }\n        if (!suggestOptions.showIssues) {\n            result.add(26 /* CompletionItemKind.Issue */);\n        }\n        return { itemKind: result, showDeprecated: suggestOptions.showDeprecated };\n    }\n    _onNewContext(ctx) {\n        if (!this._context) {\n            // happens when 24x7 IntelliSense is enabled and still in its delay\n            return;\n        }\n        if (ctx.lineNumber !== this._context.lineNumber) {\n            // e.g. happens when pressing Enter while IntelliSense is computed\n            this.cancel();\n            return;\n        }\n        if (getLeadingWhitespace(ctx.leadingLineContent) !== getLeadingWhitespace(this._context.leadingLineContent)) {\n            // cancel IntelliSense when line start changes\n            // happens when the current word gets outdented\n            this.cancel();\n            return;\n        }\n        if (ctx.column < this._context.column) {\n            // typed -> moved cursor LEFT -> retrigger if still on a word\n            if (ctx.leadingWord.word) {\n                this.trigger({ auto: this._context.triggerOptions.auto, retrigger: true });\n            }\n            else {\n                this.cancel();\n            }\n            return;\n        }\n        if (!this._completionModel) {\n            // happens when IntelliSense is not yet computed\n            return;\n        }\n        if (ctx.leadingWord.word.length !== 0 && ctx.leadingWord.startColumn > this._context.leadingWord.startColumn) {\n            // started a new word while IntelliSense shows -> retrigger but reuse all items that we currently have\n            const shouldAutoTrigger = LineContext.shouldAutoTrigger(this._editor);\n            if (shouldAutoTrigger && this._context) {\n                // shouldAutoTrigger forces tokenization, which can cause pending cursor change events to be emitted, which can cause\n                // suggestions to be cancelled, which causes `this._context` to be undefined\n                const map = this._completionModel.getItemsByProvider();\n                this.trigger({\n                    auto: this._context.triggerOptions.auto,\n                    retrigger: true,\n                    clipboardText: this._completionModel.clipboardText,\n                    completionOptions: { providerItemsToReuse: map }\n                });\n            }\n            return;\n        }\n        if (ctx.column > this._context.column && this._completionModel.getIncompleteProvider().size > 0 && ctx.leadingWord.word.length !== 0) {\n            // typed -> moved cursor RIGHT & incomple model & still on a word -> retrigger\n            const providerItemsToReuse = new Map();\n            const providerFilter = new Set();\n            for (const [provider, items] of this._completionModel.getItemsByProvider()) {\n                if (items.length > 0 && items[0].container.incomplete) {\n                    providerFilter.add(provider);\n                }\n                else {\n                    providerItemsToReuse.set(provider, items);\n                }\n            }\n            this.trigger({\n                auto: this._context.triggerOptions.auto,\n                triggerKind: 2 /* CompletionTriggerKind.TriggerForIncompleteCompletions */,\n                retrigger: true,\n                clipboardText: this._completionModel.clipboardText,\n                completionOptions: { providerFilter, providerItemsToReuse }\n            });\n        }\n        else {\n            // typed -> moved cursor RIGHT -> update UI\n            const oldLineContext = this._completionModel.lineContext;\n            let isFrozen = false;\n            this._completionModel.lineContext = {\n                leadingLineContent: ctx.leadingLineContent,\n                characterCountDelta: ctx.column - this._context.column\n            };\n            if (this._completionModel.items.length === 0) {\n                const shouldAutoTrigger = LineContext.shouldAutoTrigger(this._editor);\n                if (!this._context) {\n                    // shouldAutoTrigger forces tokenization, which can cause pending cursor change events to be emitted, which can cause\n                    // suggestions to be cancelled, which causes `this._context` to be undefined\n                    this.cancel();\n                    return;\n                }\n                if (shouldAutoTrigger && this._context.leadingWord.endColumn < ctx.leadingWord.startColumn) {\n                    // retrigger when heading into a new word\n                    this.trigger({ auto: this._context.triggerOptions.auto, retrigger: true });\n                    return;\n                }\n                if (!this._context.triggerOptions.auto) {\n                    // freeze when IntelliSense was manually requested\n                    this._completionModel.lineContext = oldLineContext;\n                    isFrozen = this._completionModel.items.length > 0;\n                    if (isFrozen && ctx.leadingWord.word.length === 0) {\n                        // there were results before but now there aren't\n                        // and also we are not on a word anymore -> cancel\n                        this.cancel();\n                        return;\n                    }\n                }\n                else {\n                    // nothing left\n                    this.cancel();\n                    return;\n                }\n            }\n            this._onDidSuggest.fire({\n                completionModel: this._completionModel,\n                triggerOptions: ctx.triggerOptions,\n                isFrozen,\n            });\n        }\n    }\n};\nSuggestModel = SuggestModel_1 = __decorate([\n    __param(1, IEditorWorkerService),\n    __param(2, IClipboardService),\n    __param(3, ITelemetryService),\n    __param(4, ILogService),\n    __param(5, IContextKeyService),\n    __param(6, IConfigurationService),\n    __param(7, ILanguageFeaturesService),\n    __param(8, IEnvironmentService)\n], SuggestModel);\nexport { SuggestModel };\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 { binarySearch, isFalsyOrEmpty } from '../../../../base/common/arrays.js';\nimport { Range } from '../../../common/core/range.js';\nimport { BracketSelectionRangeProvider } from '../../smartSelect/browser/bracketSelections.js';\nexport class WordDistance {\n    static async create(service, editor) {\n        if (!editor.getOption(118 /* EditorOption.suggest */).localityBonus) {\n            return WordDistance.None;\n        }\n        if (!editor.hasModel()) {\n            return WordDistance.None;\n        }\n        const model = editor.getModel();\n        const position = editor.getPosition();\n        if (!service.canComputeWordRanges(model.uri)) {\n            return WordDistance.None;\n        }\n        const [ranges] = await new BracketSelectionRangeProvider().provideSelectionRanges(model, [position]);\n        if (ranges.length === 0) {\n            return WordDistance.None;\n        }\n        const wordRanges = await service.computeWordRanges(model.uri, ranges[0].range);\n        if (!wordRanges) {\n            return WordDistance.None;\n        }\n        // remove current word\n        const wordUntilPos = model.getWordUntilPosition(position);\n        delete wordRanges[wordUntilPos.word];\n        return new class extends WordDistance {\n            distance(anchor, item) {\n                if (!position.equals(editor.getPosition())) {\n                    return 0;\n                }\n                if (item.kind === 17 /* CompletionItemKind.Keyword */) {\n                    return 2 << 20;\n                }\n                const word = typeof item.label === 'string' ? item.label : item.label.label;\n                const wordLines = wordRanges[word];\n                if (isFalsyOrEmpty(wordLines)) {\n                    return 2 << 20;\n                }\n                const idx = binarySearch(wordLines, Range.fromPositions(anchor), Range.compareRangesUsingStarts);\n                const bestWordRange = idx >= 0 ? wordLines[idx] : wordLines[Math.max(0, ~idx - 1)];\n                let blockDistance = ranges.length;\n                for (const range of ranges) {\n                    if (!Range.containsRange(range.range, bestWordRange)) {\n                        break;\n                    }\n                    blockDistance -= 1;\n                }\n                return blockDistance;\n            }\n        };\n    }\n}\nWordDistance.None = new class extends WordDistance {\n    distance() { return 0; }\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 { LinkedList } from '../../../../base/common/linkedList.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nexport class BracketSelectionRangeProvider {\n    async provideSelectionRanges(model, positions) {\n        const result = [];\n        for (const position of positions) {\n            const bucket = [];\n            result.push(bucket);\n            const ranges = new Map();\n            await new Promise(resolve => BracketSelectionRangeProvider._bracketsRightYield(resolve, 0, model, position, ranges));\n            await new Promise(resolve => BracketSelectionRangeProvider._bracketsLeftYield(resolve, 0, model, position, ranges, bucket));\n        }\n        return result;\n    }\n    static _bracketsRightYield(resolve, round, model, pos, ranges) {\n        const counts = new Map();\n        const t1 = Date.now();\n        while (true) {\n            if (round >= BracketSelectionRangeProvider._maxRounds) {\n                resolve();\n                break;\n            }\n            if (!pos) {\n                resolve();\n                break;\n            }\n            const bracket = model.bracketPairs.findNextBracket(pos);\n            if (!bracket) {\n                resolve();\n                break;\n            }\n            const d = Date.now() - t1;\n            if (d > BracketSelectionRangeProvider._maxDuration) {\n                setTimeout(() => BracketSelectionRangeProvider._bracketsRightYield(resolve, round + 1, model, pos, ranges));\n                break;\n            }\n            if (bracket.bracketInfo.isOpeningBracket) {\n                const key = bracket.bracketInfo.bracketText;\n                // wait for closing\n                const val = counts.has(key) ? counts.get(key) : 0;\n                counts.set(key, val + 1);\n            }\n            else {\n                const key = bracket.bracketInfo.getOpeningBrackets()[0].bracketText;\n                // process closing\n                let val = counts.has(key) ? counts.get(key) : 0;\n                val -= 1;\n                counts.set(key, Math.max(0, val));\n                if (val < 0) {\n                    let list = ranges.get(key);\n                    if (!list) {\n                        list = new LinkedList();\n                        ranges.set(key, list);\n                    }\n                    list.push(bracket.range);\n                }\n            }\n            pos = bracket.range.getEndPosition();\n        }\n    }\n    static _bracketsLeftYield(resolve, round, model, pos, ranges, bucket) {\n        const counts = new Map();\n        const t1 = Date.now();\n        while (true) {\n            if (round >= BracketSelectionRangeProvider._maxRounds && ranges.size === 0) {\n                resolve();\n                break;\n            }\n            if (!pos) {\n                resolve();\n                break;\n            }\n            const bracket = model.bracketPairs.findPrevBracket(pos);\n            if (!bracket) {\n                resolve();\n                break;\n            }\n            const d = Date.now() - t1;\n            if (d > BracketSelectionRangeProvider._maxDuration) {\n                setTimeout(() => BracketSelectionRangeProvider._bracketsLeftYield(resolve, round + 1, model, pos, ranges, bucket));\n                break;\n            }\n            if (!bracket.bracketInfo.isOpeningBracket) {\n                const key = bracket.bracketInfo.getOpeningBrackets()[0].bracketText;\n                // wait for opening\n                const val = counts.has(key) ? counts.get(key) : 0;\n                counts.set(key, val + 1);\n            }\n            else {\n                const key = bracket.bracketInfo.bracketText;\n                // opening\n                let val = counts.has(key) ? counts.get(key) : 0;\n                val -= 1;\n                counts.set(key, Math.max(0, val));\n                if (val < 0) {\n                    const list = ranges.get(key);\n                    if (list) {\n                        const closing = list.shift();\n                        if (list.size === 0) {\n                            ranges.delete(key);\n                        }\n                        const innerBracket = Range.fromPositions(bracket.range.getEndPosition(), closing.getStartPosition());\n                        const outerBracket = Range.fromPositions(bracket.range.getStartPosition(), closing.getEndPosition());\n                        bucket.push({ range: innerBracket });\n                        bucket.push({ range: outerBracket });\n                        BracketSelectionRangeProvider._addBracketLeading(model, outerBracket, bucket);\n                    }\n                }\n            }\n            pos = bracket.range.getStartPosition();\n        }\n    }\n    static _addBracketLeading(model, bracket, bucket) {\n        if (bracket.startLineNumber === bracket.endLineNumber) {\n            return;\n        }\n        // xxxxxxxx {\n        //\n        // }\n        const startLine = bracket.startLineNumber;\n        const column = model.getLineFirstNonWhitespaceColumn(startLine);\n        if (column !== 0 && column !== bracket.startColumn) {\n            bucket.push({ range: Range.fromPositions(new Position(startLine, column), bracket.getEndPosition()) });\n            bucket.push({ range: Range.fromPositions(new Position(startLine, 1), bracket.getEndPosition()) });\n        }\n        // xxxxxxxx\n        // {\n        //\n        // }\n        const aboveLine = startLine - 1;\n        if (aboveLine > 0) {\n            const column = model.getLineFirstNonWhitespaceColumn(aboveLine);\n            if (column === bracket.startColumn && column !== model.getLineLastNonWhitespaceColumn(aboveLine)) {\n                bucket.push({ range: Range.fromPositions(new Position(aboveLine, column), bracket.getEndPosition()) });\n                bucket.push({ range: Range.fromPositions(new Position(aboveLine, 1), bracket.getEndPosition()) });\n            }\n        }\n    }\n}\nBracketSelectionRangeProvider._maxDuration = 30;\nBracketSelectionRangeProvider._maxRounds = 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 *--------------------------------------------------------------------------------------------*/\nimport { quickSelect } from '../../../../base/common/arrays.js';\nimport { anyScore, fuzzyScore, FuzzyScore, fuzzyScoreGracefulAggressive, FuzzyScoreOptions } from '../../../../base/common/filters.js';\nimport { compareIgnoreCase } from '../../../../base/common/strings.js';\nexport class LineContext {\n    constructor(leadingLineContent, characterCountDelta) {\n        this.leadingLineContent = leadingLineContent;\n        this.characterCountDelta = characterCountDelta;\n    }\n}\n/**\n * Sorted, filtered completion view model\n * */\nexport class CompletionModel {\n    constructor(items, column, lineContext, wordDistance, options, snippetSuggestions, fuzzyScoreOptions = FuzzyScoreOptions.default, clipboardText = undefined) {\n        this.clipboardText = clipboardText;\n        this._snippetCompareFn = CompletionModel._compareCompletionItems;\n        this._items = items;\n        this._column = column;\n        this._wordDistance = wordDistance;\n        this._options = options;\n        this._refilterKind = 1 /* Refilter.All */;\n        this._lineContext = lineContext;\n        this._fuzzyScoreOptions = fuzzyScoreOptions;\n        if (snippetSuggestions === 'top') {\n            this._snippetCompareFn = CompletionModel._compareCompletionItemsSnippetsUp;\n        }\n        else if (snippetSuggestions === 'bottom') {\n            this._snippetCompareFn = CompletionModel._compareCompletionItemsSnippetsDown;\n        }\n    }\n    get lineContext() {\n        return this._lineContext;\n    }\n    set lineContext(value) {\n        if (this._lineContext.leadingLineContent !== value.leadingLineContent\n            || this._lineContext.characterCountDelta !== value.characterCountDelta) {\n            this._refilterKind = this._lineContext.characterCountDelta < value.characterCountDelta && this._filteredItems ? 2 /* Refilter.Incr */ : 1 /* Refilter.All */;\n            this._lineContext = value;\n        }\n    }\n    get items() {\n        this._ensureCachedState();\n        return this._filteredItems;\n    }\n    getItemsByProvider() {\n        this._ensureCachedState();\n        return this._itemsByProvider;\n    }\n    getIncompleteProvider() {\n        this._ensureCachedState();\n        const result = new Set();\n        for (const [provider, items] of this.getItemsByProvider()) {\n            if (items.length > 0 && items[0].container.incomplete) {\n                result.add(provider);\n            }\n        }\n        return result;\n    }\n    get stats() {\n        this._ensureCachedState();\n        return this._stats;\n    }\n    _ensureCachedState() {\n        if (this._refilterKind !== 0 /* Refilter.Nothing */) {\n            this._createCachedState();\n        }\n    }\n    _createCachedState() {\n        this._itemsByProvider = new Map();\n        const labelLengths = [];\n        const { leadingLineContent, characterCountDelta } = this._lineContext;\n        let word = '';\n        let wordLow = '';\n        // incrementally filter less\n        const source = this._refilterKind === 1 /* Refilter.All */ ? this._items : this._filteredItems;\n        const target = [];\n        // picks a score function based on the number of\n        // items that we have to score/filter and based on the\n        // user-configuration\n        const scoreFn = (!this._options.filterGraceful || source.length > 2000) ? fuzzyScore : fuzzyScoreGracefulAggressive;\n        for (let i = 0; i < source.length; i++) {\n            const item = source[i];\n            if (item.isInvalid) {\n                continue; // SKIP invalid items\n            }\n            // keep all items by their provider\n            const arr = this._itemsByProvider.get(item.provider);\n            if (arr) {\n                arr.push(item);\n            }\n            else {\n                this._itemsByProvider.set(item.provider, [item]);\n            }\n            // 'word' is that remainder of the current line that we\n            // filter and score against. In theory each suggestion uses a\n            // different word, but in practice not - that's why we cache\n            const overwriteBefore = item.position.column - item.editStart.column;\n            const wordLen = overwriteBefore + characterCountDelta - (item.position.column - this._column);\n            if (word.length !== wordLen) {\n                word = wordLen === 0 ? '' : leadingLineContent.slice(-wordLen);\n                wordLow = word.toLowerCase();\n            }\n            // remember the word against which this item was\n            // scored\n            item.word = word;\n            if (wordLen === 0) {\n                // when there is nothing to score against, don't\n                // event try to do. Use a const rank and rely on\n                // the fallback-sort using the initial sort order.\n                // use a score of `-100` because that is out of the\n                // bound of values `fuzzyScore` will return\n                item.score = FuzzyScore.Default;\n            }\n            else {\n                // skip word characters that are whitespace until\n                // we have hit the replace range (overwriteBefore)\n                let wordPos = 0;\n                while (wordPos < overwriteBefore) {\n                    const ch = word.charCodeAt(wordPos);\n                    if (ch === 32 /* CharCode.Space */ || ch === 9 /* CharCode.Tab */) {\n                        wordPos += 1;\n                    }\n                    else {\n                        break;\n                    }\n                }\n                if (wordPos >= wordLen) {\n                    // the wordPos at which scoring starts is the whole word\n                    // and therefore the same rules as not having a word apply\n                    item.score = FuzzyScore.Default;\n                }\n                else if (typeof item.completion.filterText === 'string') {\n                    // when there is a `filterText` it must match the `word`.\n                    // if it matches we check with the label to compute highlights\n                    // and if that doesn't yield a result we have no highlights,\n                    // despite having the match\n                    const match = scoreFn(word, wordLow, wordPos, item.completion.filterText, item.filterTextLow, 0, this._fuzzyScoreOptions);\n                    if (!match) {\n                        continue; // NO match\n                    }\n                    if (compareIgnoreCase(item.completion.filterText, item.textLabel) === 0) {\n                        // filterText and label are actually the same -> use good highlights\n                        item.score = match;\n                    }\n                    else {\n                        // re-run the scorer on the label in the hope of a result BUT use the rank\n                        // of the filterText-match\n                        item.score = anyScore(word, wordLow, wordPos, item.textLabel, item.labelLow, 0);\n                        item.score[0] = match[0]; // use score from filterText\n                    }\n                }\n                else {\n                    // by default match `word` against the `label`\n                    const match = scoreFn(word, wordLow, wordPos, item.textLabel, item.labelLow, 0, this._fuzzyScoreOptions);\n                    if (!match) {\n                        continue; // NO match\n                    }\n                    item.score = match;\n                }\n            }\n            item.idx = i;\n            item.distance = this._wordDistance.distance(item.position, item.completion);\n            target.push(item);\n            // update stats\n            labelLengths.push(item.textLabel.length);\n        }\n        this._filteredItems = target.sort(this._snippetCompareFn);\n        this._refilterKind = 0 /* Refilter.Nothing */;\n        this._stats = {\n            pLabelLen: labelLengths.length ?\n                quickSelect(labelLengths.length - .85, labelLengths, (a, b) => a - b)\n                : 0\n        };\n    }\n    static _compareCompletionItems(a, b) {\n        if (a.score[0] > b.score[0]) {\n            return -1;\n        }\n        else if (a.score[0] < b.score[0]) {\n            return 1;\n        }\n        else if (a.distance < b.distance) {\n            return -1;\n        }\n        else if (a.distance > b.distance) {\n            return 1;\n        }\n        else if (a.idx < b.idx) {\n            return -1;\n        }\n        else if (a.idx > b.idx) {\n            return 1;\n        }\n        else {\n            return 0;\n        }\n    }\n    static _compareCompletionItemsSnippetsDown(a, b) {\n        if (a.completion.kind !== b.completion.kind) {\n            if (a.completion.kind === 27 /* CompletionItemKind.Snippet */) {\n                return 1;\n            }\n            else if (b.completion.kind === 27 /* CompletionItemKind.Snippet */) {\n                return -1;\n            }\n        }\n        return CompletionModel._compareCompletionItems(a, b);\n    }\n    static _compareCompletionItemsSnippetsUp(a, b) {\n        if (a.completion.kind !== b.completion.kind) {\n            if (a.completion.kind === 27 /* CompletionItemKind.Snippet */) {\n                return -1;\n            }\n            else if (b.completion.kind === 27 /* CompletionItemKind.Snippet */) {\n                return 1;\n            }\n        }\n        return CompletionModel._compareCompletionItems(a, b);\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 { DisposableStore } from '../../../../base/common/lifecycle.js';\nexport class OvertypingCapturer {\n    constructor(editor, suggestModel) {\n        this._disposables = new DisposableStore();\n        this._lastOvertyped = [];\n        this._locked = false;\n        this._disposables.add(editor.onWillType(() => {\n            if (this._locked || !editor.hasModel()) {\n                return;\n            }\n            const selections = editor.getSelections();\n            const selectionsLength = selections.length;\n            // Check if it will overtype any selections\n            let willOvertype = false;\n            for (let i = 0; i < selectionsLength; i++) {\n                if (!selections[i].isEmpty()) {\n                    willOvertype = true;\n                    break;\n                }\n            }\n            if (!willOvertype) {\n                if (this._lastOvertyped.length !== 0) {\n                    this._lastOvertyped.length = 0;\n                }\n                return;\n            }\n            this._lastOvertyped = [];\n            const model = editor.getModel();\n            for (let i = 0; i < selectionsLength; i++) {\n                const selection = selections[i];\n                // Check for overtyping capturer restrictions\n                if (model.getValueLengthInRange(selection) > OvertypingCapturer._maxSelectionLength) {\n                    return;\n                }\n                this._lastOvertyped[i] = { value: model.getValueInRange(selection), multiline: selection.startLineNumber !== selection.endLineNumber };\n            }\n        }));\n        this._disposables.add(suggestModel.onDidTrigger(e => {\n            this._locked = true;\n        }));\n        this._disposables.add(suggestModel.onDidCancel(e => {\n            this._locked = false;\n        }));\n    }\n    getLastOvertypedInfo(idx) {\n        if (idx >= 0 && idx < this._lastOvertyped.length) {\n            return this._lastOvertyped[idx];\n        }\n        return undefined;\n    }\n    dispose() {\n        this._disposables.dispose();\n    }\n}\nOvertypingCapturer._maxSelectionLength = 51200;\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 SuggestWidget_1;\nimport * as dom from '../../../../base/browser/dom.js';\nimport '../../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport { createCancelablePromise, disposableTimeout, TimeoutTimer } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter, PauseableEmitter } from '../../../../base/common/event.js';\nimport { DisposableStore, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { clamp } from '../../../../base/common/numbers.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport './media/suggest.css';\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport { SuggestWidgetStatus } from './suggestWidgetStatus.js';\nimport '../../symbolIcons/browser/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors\nimport * as nls from '../../../../nls.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IStorageService } from '../../../../platform/storage/common/storage.js';\nimport { activeContrastBorder, editorForeground, editorWidgetBackground, editorWidgetBorder, listFocusHighlightForeground, listHighlightForeground, quickInputListFocusBackground, quickInputListFocusForeground, quickInputListFocusIconForeground, registerColor, transparent } from '../../../../platform/theme/common/colorRegistry.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';\nimport { Context as SuggestContext, suggestWidgetStatusbarMenu } from './suggest.js';\nimport { canExpandCompletionItem, SuggestDetailsOverlay, SuggestDetailsWidget } from './suggestWidgetDetails.js';\nimport { getAriaId, ItemRenderer } from './suggestWidgetRenderer.js';\nimport { getListStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport { status } from '../../../../base/browser/ui/aria/aria.js';\n/**\n * Suggest widget colors\n */\nregisterColor('editorSuggestWidget.background', { dark: editorWidgetBackground, light: editorWidgetBackground, hcDark: editorWidgetBackground, hcLight: editorWidgetBackground }, nls.localize('editorSuggestWidgetBackground', 'Background color of the suggest widget.'));\nregisterColor('editorSuggestWidget.border', { dark: editorWidgetBorder, light: editorWidgetBorder, hcDark: editorWidgetBorder, hcLight: editorWidgetBorder }, nls.localize('editorSuggestWidgetBorder', 'Border color of the suggest widget.'));\nconst editorSuggestWidgetForeground = registerColor('editorSuggestWidget.foreground', { dark: editorForeground, light: editorForeground, hcDark: editorForeground, hcLight: editorForeground }, nls.localize('editorSuggestWidgetForeground', 'Foreground color of the suggest widget.'));\nregisterColor('editorSuggestWidget.selectedForeground', { dark: quickInputListFocusForeground, light: quickInputListFocusForeground, hcDark: quickInputListFocusForeground, hcLight: quickInputListFocusForeground }, nls.localize('editorSuggestWidgetSelectedForeground', 'Foreground color of the selected entry in the suggest widget.'));\nregisterColor('editorSuggestWidget.selectedIconForeground', { dark: quickInputListFocusIconForeground, light: quickInputListFocusIconForeground, hcDark: quickInputListFocusIconForeground, hcLight: quickInputListFocusIconForeground }, nls.localize('editorSuggestWidgetSelectedIconForeground', 'Icon foreground color of the selected entry in the suggest widget.'));\nexport const editorSuggestWidgetSelectedBackground = registerColor('editorSuggestWidget.selectedBackground', { dark: quickInputListFocusBackground, light: quickInputListFocusBackground, hcDark: quickInputListFocusBackground, hcLight: quickInputListFocusBackground }, nls.localize('editorSuggestWidgetSelectedBackground', 'Background color of the selected entry in the suggest widget.'));\nregisterColor('editorSuggestWidget.highlightForeground', { dark: listHighlightForeground, light: listHighlightForeground, hcDark: listHighlightForeground, hcLight: listHighlightForeground }, nls.localize('editorSuggestWidgetHighlightForeground', 'Color of the match highlights in the suggest widget.'));\nregisterColor('editorSuggestWidget.focusHighlightForeground', { dark: listFocusHighlightForeground, light: listFocusHighlightForeground, hcDark: listFocusHighlightForeground, hcLight: listFocusHighlightForeground }, nls.localize('editorSuggestWidgetFocusHighlightForeground', 'Color of the match highlights in the suggest widget when an item is focused.'));\nregisterColor('editorSuggestWidgetStatus.foreground', { dark: transparent(editorSuggestWidgetForeground, .5), light: transparent(editorSuggestWidgetForeground, .5), hcDark: transparent(editorSuggestWidgetForeground, .5), hcLight: transparent(editorSuggestWidgetForeground, .5) }, nls.localize('editorSuggestWidgetStatusForeground', 'Foreground color of the suggest widget status.'));\nclass PersistedWidgetSize {\n    constructor(_service, editor) {\n        this._service = _service;\n        this._key = `suggestWidget.size/${editor.getEditorType()}/${editor instanceof EmbeddedCodeEditorWidget}`;\n    }\n    restore() {\n        var _a;\n        const raw = (_a = this._service.get(this._key, 0 /* StorageScope.PROFILE */)) !== null && _a !== void 0 ? _a : '';\n        try {\n            const obj = JSON.parse(raw);\n            if (dom.Dimension.is(obj)) {\n                return dom.Dimension.lift(obj);\n            }\n        }\n        catch (_b) {\n            // ignore\n        }\n        return undefined;\n    }\n    store(size) {\n        this._service.store(this._key, JSON.stringify(size), 0 /* StorageScope.PROFILE */, 1 /* StorageTarget.MACHINE */);\n    }\n    reset() {\n        this._service.remove(this._key, 0 /* StorageScope.PROFILE */);\n    }\n}\nlet SuggestWidget = SuggestWidget_1 = class SuggestWidget {\n    constructor(editor, _storageService, _contextKeyService, _themeService, instantiationService) {\n        this.editor = editor;\n        this._storageService = _storageService;\n        this._state = 0 /* State.Hidden */;\n        this._isAuto = false;\n        this._pendingLayout = new MutableDisposable();\n        this._pendingShowDetails = new MutableDisposable();\n        this._ignoreFocusEvents = false;\n        this._forceRenderingAbove = false;\n        this._explainMode = false;\n        this._showTimeout = new TimeoutTimer();\n        this._disposables = new DisposableStore();\n        this._onDidSelect = new PauseableEmitter();\n        this._onDidFocus = new PauseableEmitter();\n        this._onDidHide = new Emitter();\n        this._onDidShow = new Emitter();\n        this.onDidSelect = this._onDidSelect.event;\n        this.onDidFocus = this._onDidFocus.event;\n        this.onDidHide = this._onDidHide.event;\n        this.onDidShow = this._onDidShow.event;\n        this._onDetailsKeydown = new Emitter();\n        this.onDetailsKeyDown = this._onDetailsKeydown.event;\n        this.element = new ResizableHTMLElement();\n        this.element.domNode.classList.add('editor-widget', 'suggest-widget');\n        this._contentWidget = new SuggestContentWidget(this, editor);\n        this._persistedSize = new PersistedWidgetSize(_storageService, editor);\n        class ResizeState {\n            constructor(persistedSize, currentSize, persistHeight = false, persistWidth = false) {\n                this.persistedSize = persistedSize;\n                this.currentSize = currentSize;\n                this.persistHeight = persistHeight;\n                this.persistWidth = persistWidth;\n            }\n        }\n        let state;\n        this._disposables.add(this.element.onDidWillResize(() => {\n            this._contentWidget.lockPreference();\n            state = new ResizeState(this._persistedSize.restore(), this.element.size);\n        }));\n        this._disposables.add(this.element.onDidResize(e => {\n            var _a, _b, _c, _d;\n            this._resize(e.dimension.width, e.dimension.height);\n            if (state) {\n                state.persistHeight = state.persistHeight || !!e.north || !!e.south;\n                state.persistWidth = state.persistWidth || !!e.east || !!e.west;\n            }\n            if (!e.done) {\n                return;\n            }\n            if (state) {\n                // only store width or height value that have changed and also\n                // only store changes that are above a certain threshold\n                const { itemHeight, defaultSize } = this.getLayoutInfo();\n                const threshold = Math.round(itemHeight / 2);\n                let { width, height } = this.element.size;\n                if (!state.persistHeight || Math.abs(state.currentSize.height - height) <= threshold) {\n                    height = (_b = (_a = state.persistedSize) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : defaultSize.height;\n                }\n                if (!state.persistWidth || Math.abs(state.currentSize.width - width) <= threshold) {\n                    width = (_d = (_c = state.persistedSize) === null || _c === void 0 ? void 0 : _c.width) !== null && _d !== void 0 ? _d : defaultSize.width;\n                }\n                this._persistedSize.store(new dom.Dimension(width, height));\n            }\n            // reset working state\n            this._contentWidget.unlockPreference();\n            state = undefined;\n        }));\n        this._messageElement = dom.append(this.element.domNode, dom.$('.message'));\n        this._listElement = dom.append(this.element.domNode, dom.$('.tree'));\n        const details = this._disposables.add(instantiationService.createInstance(SuggestDetailsWidget, this.editor));\n        details.onDidClose(this.toggleDetails, this, this._disposables);\n        this._details = new SuggestDetailsOverlay(details, this.editor);\n        const applyIconStyle = () => this.element.domNode.classList.toggle('no-icons', !this.editor.getOption(118 /* EditorOption.suggest */).showIcons);\n        applyIconStyle();\n        const renderer = instantiationService.createInstance(ItemRenderer, this.editor);\n        this._disposables.add(renderer);\n        this._disposables.add(renderer.onDidToggleDetails(() => this.toggleDetails()));\n        this._list = new List('SuggestWidget', this._listElement, {\n            getHeight: (_element) => this.getLayoutInfo().itemHeight,\n            getTemplateId: (_element) => 'suggestion'\n        }, [renderer], {\n            alwaysConsumeMouseWheel: true,\n            useShadows: false,\n            mouseSupport: false,\n            multipleSelectionSupport: false,\n            accessibilityProvider: {\n                getRole: () => 'option',\n                getWidgetAriaLabel: () => nls.localize('suggest', \"Suggest\"),\n                getWidgetRole: () => 'listbox',\n                getAriaLabel: (item) => {\n                    let label = item.textLabel;\n                    if (typeof item.completion.label !== 'string') {\n                        const { detail, description } = item.completion.label;\n                        if (detail && description) {\n                            label = nls.localize('label.full', '{0} {1}, {2}', label, detail, description);\n                        }\n                        else if (detail) {\n                            label = nls.localize('label.detail', '{0} {1}', label, detail);\n                        }\n                        else if (description) {\n                            label = nls.localize('label.desc', '{0}, {1}', label, description);\n                        }\n                    }\n                    if (!item.isResolved || !this._isDetailsVisible()) {\n                        return label;\n                    }\n                    const { documentation, detail } = item.completion;\n                    const docs = strings.format('{0}{1}', detail || '', documentation ? (typeof documentation === 'string' ? documentation : documentation.value) : '');\n                    return nls.localize('ariaCurrenttSuggestionReadDetails', \"{0}, docs: {1}\", label, docs);\n                },\n            }\n        });\n        this._list.style(getListStyles({\n            listInactiveFocusBackground: editorSuggestWidgetSelectedBackground,\n            listInactiveFocusOutline: activeContrastBorder\n        }));\n        this._status = instantiationService.createInstance(SuggestWidgetStatus, this.element.domNode, suggestWidgetStatusbarMenu);\n        const applyStatusBarStyle = () => this.element.domNode.classList.toggle('with-status-bar', this.editor.getOption(118 /* EditorOption.suggest */).showStatusBar);\n        applyStatusBarStyle();\n        this._disposables.add(_themeService.onDidColorThemeChange(t => this._onThemeChange(t)));\n        this._onThemeChange(_themeService.getColorTheme());\n        this._disposables.add(this._list.onMouseDown(e => this._onListMouseDownOrTap(e)));\n        this._disposables.add(this._list.onTap(e => this._onListMouseDownOrTap(e)));\n        this._disposables.add(this._list.onDidChangeSelection(e => this._onListSelection(e)));\n        this._disposables.add(this._list.onDidChangeFocus(e => this._onListFocus(e)));\n        this._disposables.add(this.editor.onDidChangeCursorSelection(() => this._onCursorSelectionChanged()));\n        this._disposables.add(this.editor.onDidChangeConfiguration(e => {\n            if (e.hasChanged(118 /* EditorOption.suggest */)) {\n                applyStatusBarStyle();\n                applyIconStyle();\n            }\n            if (this._completionModel && (e.hasChanged(50 /* EditorOption.fontInfo */) || e.hasChanged(119 /* EditorOption.suggestFontSize */) || e.hasChanged(120 /* EditorOption.suggestLineHeight */))) {\n                this._list.splice(0, this._list.length, this._completionModel.items);\n            }\n        }));\n        this._ctxSuggestWidgetVisible = SuggestContext.Visible.bindTo(_contextKeyService);\n        this._ctxSuggestWidgetDetailsVisible = SuggestContext.DetailsVisible.bindTo(_contextKeyService);\n        this._ctxSuggestWidgetMultipleSuggestions = SuggestContext.MultipleSuggestions.bindTo(_contextKeyService);\n        this._ctxSuggestWidgetHasFocusedSuggestion = SuggestContext.HasFocusedSuggestion.bindTo(_contextKeyService);\n        this._disposables.add(dom.addStandardDisposableListener(this._details.widget.domNode, 'keydown', e => {\n            this._onDetailsKeydown.fire(e);\n        }));\n        this._disposables.add(this.editor.onMouseDown((e) => this._onEditorMouseDown(e)));\n    }\n    dispose() {\n        var _a;\n        this._details.widget.dispose();\n        this._details.dispose();\n        this._list.dispose();\n        this._status.dispose();\n        this._disposables.dispose();\n        (_a = this._loadingTimeout) === null || _a === void 0 ? void 0 : _a.dispose();\n        this._pendingLayout.dispose();\n        this._pendingShowDetails.dispose();\n        this._showTimeout.dispose();\n        this._contentWidget.dispose();\n        this.element.dispose();\n    }\n    _onEditorMouseDown(mouseEvent) {\n        if (this._details.widget.domNode.contains(mouseEvent.target.element)) {\n            // Clicking inside details\n            this._details.widget.domNode.focus();\n        }\n        else {\n            // Clicking outside details and inside suggest\n            if (this.element.domNode.contains(mouseEvent.target.element)) {\n                this.editor.focus();\n            }\n        }\n    }\n    _onCursorSelectionChanged() {\n        if (this._state !== 0 /* State.Hidden */) {\n            this._contentWidget.layout();\n        }\n    }\n    _onListMouseDownOrTap(e) {\n        if (typeof e.element === 'undefined' || typeof e.index === 'undefined') {\n            return;\n        }\n        // prevent stealing browser focus from the editor\n        e.browserEvent.preventDefault();\n        e.browserEvent.stopPropagation();\n        this._select(e.element, e.index);\n    }\n    _onListSelection(e) {\n        if (e.elements.length) {\n            this._select(e.elements[0], e.indexes[0]);\n        }\n    }\n    _select(item, index) {\n        const completionModel = this._completionModel;\n        if (completionModel) {\n            this._onDidSelect.fire({ item, index, model: completionModel });\n            this.editor.focus();\n        }\n    }\n    _onThemeChange(theme) {\n        this._details.widget.borderWidth = isHighContrast(theme.type) ? 2 : 1;\n    }\n    _onListFocus(e) {\n        var _a;\n        if (this._ignoreFocusEvents) {\n            return;\n        }\n        if (!e.elements.length) {\n            if (this._currentSuggestionDetails) {\n                this._currentSuggestionDetails.cancel();\n                this._currentSuggestionDetails = undefined;\n                this._focusedItem = undefined;\n            }\n            this.editor.setAriaOptions({ activeDescendant: undefined });\n            this._ctxSuggestWidgetHasFocusedSuggestion.set(false);\n            return;\n        }\n        if (!this._completionModel) {\n            return;\n        }\n        this._ctxSuggestWidgetHasFocusedSuggestion.set(true);\n        const item = e.elements[0];\n        const index = e.indexes[0];\n        if (item !== this._focusedItem) {\n            (_a = this._currentSuggestionDetails) === null || _a === void 0 ? void 0 : _a.cancel();\n            this._currentSuggestionDetails = undefined;\n            this._focusedItem = item;\n            this._list.reveal(index);\n            this._currentSuggestionDetails = createCancelablePromise(async (token) => {\n                const loading = disposableTimeout(() => {\n                    if (this._isDetailsVisible()) {\n                        this.showDetails(true);\n                    }\n                }, 250);\n                const sub = token.onCancellationRequested(() => loading.dispose());\n                try {\n                    return await item.resolve(token);\n                }\n                finally {\n                    loading.dispose();\n                    sub.dispose();\n                }\n            });\n            this._currentSuggestionDetails.then(() => {\n                if (index >= this._list.length || item !== this._list.element(index)) {\n                    return;\n                }\n                // item can have extra information, so re-render\n                this._ignoreFocusEvents = true;\n                this._list.splice(index, 1, [item]);\n                this._list.setFocus([index]);\n                this._ignoreFocusEvents = false;\n                if (this._isDetailsVisible()) {\n                    this.showDetails(false);\n                }\n                else {\n                    this.element.domNode.classList.remove('docs-side');\n                }\n                this.editor.setAriaOptions({ activeDescendant: getAriaId(index) });\n            }).catch(onUnexpectedError);\n        }\n        // emit an event\n        this._onDidFocus.fire({ item, index, model: this._completionModel });\n    }\n    _setState(state) {\n        if (this._state === state) {\n            return;\n        }\n        this._state = state;\n        this.element.domNode.classList.toggle('frozen', state === 4 /* State.Frozen */);\n        this.element.domNode.classList.remove('message');\n        switch (state) {\n            case 0 /* State.Hidden */:\n                dom.hide(this._messageElement, this._listElement, this._status.element);\n                this._details.hide(true);\n                this._status.hide();\n                this._contentWidget.hide();\n                this._ctxSuggestWidgetVisible.reset();\n                this._ctxSuggestWidgetMultipleSuggestions.reset();\n                this._ctxSuggestWidgetHasFocusedSuggestion.reset();\n                this._showTimeout.cancel();\n                this.element.domNode.classList.remove('visible');\n                this._list.splice(0, this._list.length);\n                this._focusedItem = undefined;\n                this._cappedHeight = undefined;\n                this._explainMode = false;\n                break;\n            case 1 /* State.Loading */:\n                this.element.domNode.classList.add('message');\n                this._messageElement.textContent = SuggestWidget_1.LOADING_MESSAGE;\n                dom.hide(this._listElement, this._status.element);\n                dom.show(this._messageElement);\n                this._details.hide();\n                this._show();\n                this._focusedItem = undefined;\n                status(SuggestWidget_1.LOADING_MESSAGE);\n                break;\n            case 2 /* State.Empty */:\n                this.element.domNode.classList.add('message');\n                this._messageElement.textContent = SuggestWidget_1.NO_SUGGESTIONS_MESSAGE;\n                dom.hide(this._listElement, this._status.element);\n                dom.show(this._messageElement);\n                this._details.hide();\n                this._show();\n                this._focusedItem = undefined;\n                status(SuggestWidget_1.NO_SUGGESTIONS_MESSAGE);\n                break;\n            case 3 /* State.Open */:\n                dom.hide(this._messageElement);\n                dom.show(this._listElement, this._status.element);\n                this._show();\n                break;\n            case 4 /* State.Frozen */:\n                dom.hide(this._messageElement);\n                dom.show(this._listElement, this._status.element);\n                this._show();\n                break;\n            case 5 /* State.Details */:\n                dom.hide(this._messageElement);\n                dom.show(this._listElement, this._status.element);\n                this._details.show();\n                this._show();\n                break;\n        }\n    }\n    _show() {\n        this._status.show();\n        this._contentWidget.show();\n        this._layout(this._persistedSize.restore());\n        this._ctxSuggestWidgetVisible.set(true);\n        this._showTimeout.cancelAndSet(() => {\n            this.element.domNode.classList.add('visible');\n            this._onDidShow.fire(this);\n        }, 100);\n    }\n    showTriggered(auto, delay) {\n        if (this._state !== 0 /* State.Hidden */) {\n            return;\n        }\n        this._contentWidget.setPosition(this.editor.getPosition());\n        this._isAuto = !!auto;\n        if (!this._isAuto) {\n            this._loadingTimeout = disposableTimeout(() => this._setState(1 /* State.Loading */), delay);\n        }\n    }\n    showSuggestions(completionModel, selectionIndex, isFrozen, isAuto, noFocus) {\n        var _a, _b;\n        this._contentWidget.setPosition(this.editor.getPosition());\n        (_a = this._loadingTimeout) === null || _a === void 0 ? void 0 : _a.dispose();\n        (_b = this._currentSuggestionDetails) === null || _b === void 0 ? void 0 : _b.cancel();\n        this._currentSuggestionDetails = undefined;\n        if (this._completionModel !== completionModel) {\n            this._completionModel = completionModel;\n        }\n        if (isFrozen && this._state !== 2 /* State.Empty */ && this._state !== 0 /* State.Hidden */) {\n            this._setState(4 /* State.Frozen */);\n            return;\n        }\n        const visibleCount = this._completionModel.items.length;\n        const isEmpty = visibleCount === 0;\n        this._ctxSuggestWidgetMultipleSuggestions.set(visibleCount > 1);\n        if (isEmpty) {\n            this._setState(isAuto ? 0 /* State.Hidden */ : 2 /* State.Empty */);\n            this._completionModel = undefined;\n            return;\n        }\n        this._focusedItem = undefined;\n        // calling list.splice triggers focus event which this widget forwards. That can lead to\n        // suggestions being cancelled and the widget being cleared (and hidden). All this happens\n        // before revealing and focusing is done which means revealing and focusing will fail when\n        // they get run.\n        this._onDidFocus.pause();\n        this._onDidSelect.pause();\n        try {\n            this._list.splice(0, this._list.length, this._completionModel.items);\n            this._setState(isFrozen ? 4 /* State.Frozen */ : 3 /* State.Open */);\n            this._list.reveal(selectionIndex, 0);\n            this._list.setFocus(noFocus ? [] : [selectionIndex]);\n        }\n        finally {\n            this._onDidFocus.resume();\n            this._onDidSelect.resume();\n        }\n        this._pendingLayout.value = dom.runAtThisOrScheduleAtNextAnimationFrame(dom.getWindow(this.element.domNode), () => {\n            this._pendingLayout.clear();\n            this._layout(this.element.size);\n            // Reset focus border\n            this._details.widget.domNode.classList.remove('focused');\n        });\n    }\n    focusSelected() {\n        if (this._list.length > 0) {\n            this._list.setFocus([0]);\n        }\n    }\n    selectNextPage() {\n        switch (this._state) {\n            case 0 /* State.Hidden */:\n                return false;\n            case 5 /* State.Details */:\n                this._details.widget.pageDown();\n                return true;\n            case 1 /* State.Loading */:\n                return !this._isAuto;\n            default:\n                this._list.focusNextPage();\n                return true;\n        }\n    }\n    selectNext() {\n        switch (this._state) {\n            case 0 /* State.Hidden */:\n                return false;\n            case 1 /* State.Loading */:\n                return !this._isAuto;\n            default:\n                this._list.focusNext(1, true);\n                return true;\n        }\n    }\n    selectLast() {\n        switch (this._state) {\n            case 0 /* State.Hidden */:\n                return false;\n            case 5 /* State.Details */:\n                this._details.widget.scrollBottom();\n                return true;\n            case 1 /* State.Loading */:\n                return !this._isAuto;\n            default:\n                this._list.focusLast();\n                return true;\n        }\n    }\n    selectPreviousPage() {\n        switch (this._state) {\n            case 0 /* State.Hidden */:\n                return false;\n            case 5 /* State.Details */:\n                this._details.widget.pageUp();\n                return true;\n            case 1 /* State.Loading */:\n                return !this._isAuto;\n            default:\n                this._list.focusPreviousPage();\n                return true;\n        }\n    }\n    selectPrevious() {\n        switch (this._state) {\n            case 0 /* State.Hidden */:\n                return false;\n            case 1 /* State.Loading */:\n                return !this._isAuto;\n            default:\n                this._list.focusPrevious(1, true);\n                return false;\n        }\n    }\n    selectFirst() {\n        switch (this._state) {\n            case 0 /* State.Hidden */:\n                return false;\n            case 5 /* State.Details */:\n                this._details.widget.scrollTop();\n                return true;\n            case 1 /* State.Loading */:\n                return !this._isAuto;\n            default:\n                this._list.focusFirst();\n                return true;\n        }\n    }\n    getFocusedItem() {\n        if (this._state !== 0 /* State.Hidden */\n            && this._state !== 2 /* State.Empty */\n            && this._state !== 1 /* State.Loading */\n            && this._completionModel\n            && this._list.getFocus().length > 0) {\n            return {\n                item: this._list.getFocusedElements()[0],\n                index: this._list.getFocus()[0],\n                model: this._completionModel\n            };\n        }\n        return undefined;\n    }\n    toggleDetailsFocus() {\n        if (this._state === 5 /* State.Details */) {\n            this._setState(3 /* State.Open */);\n            this._details.widget.domNode.classList.remove('focused');\n        }\n        else if (this._state === 3 /* State.Open */ && this._isDetailsVisible()) {\n            this._setState(5 /* State.Details */);\n            this._details.widget.domNode.classList.add('focused');\n        }\n    }\n    toggleDetails() {\n        if (this._isDetailsVisible()) {\n            // hide details widget\n            this._pendingShowDetails.clear();\n            this._ctxSuggestWidgetDetailsVisible.set(false);\n            this._setDetailsVisible(false);\n            this._details.hide();\n            this.element.domNode.classList.remove('shows-details');\n        }\n        else if ((canExpandCompletionItem(this._list.getFocusedElements()[0]) || this._explainMode) && (this._state === 3 /* State.Open */ || this._state === 5 /* State.Details */ || this._state === 4 /* State.Frozen */)) {\n            // show details widget (iff possible)\n            this._ctxSuggestWidgetDetailsVisible.set(true);\n            this._setDetailsVisible(true);\n            this.showDetails(false);\n        }\n    }\n    showDetails(loading) {\n        this._pendingShowDetails.value = dom.runAtThisOrScheduleAtNextAnimationFrame(dom.getWindow(this.element.domNode), () => {\n            this._pendingShowDetails.clear();\n            this._details.show();\n            if (loading) {\n                this._details.widget.renderLoading();\n            }\n            else {\n                this._details.widget.renderItem(this._list.getFocusedElements()[0], this._explainMode);\n            }\n            if (!this._details.widget.isEmpty) {\n                this._positionDetails();\n                this.element.domNode.classList.add('shows-details');\n            }\n            else {\n                this._details.hide();\n            }\n            this.editor.focus();\n        });\n    }\n    toggleExplainMode() {\n        if (this._list.getFocusedElements()[0]) {\n            this._explainMode = !this._explainMode;\n            if (!this._isDetailsVisible()) {\n                this.toggleDetails();\n            }\n            else {\n                this.showDetails(false);\n            }\n        }\n    }\n    resetPersistedSize() {\n        this._persistedSize.reset();\n    }\n    hideWidget() {\n        var _a;\n        this._pendingLayout.clear();\n        this._pendingShowDetails.clear();\n        (_a = this._loadingTimeout) === null || _a === void 0 ? void 0 : _a.dispose();\n        this._setState(0 /* State.Hidden */);\n        this._onDidHide.fire(this);\n        this.element.clearSashHoverState();\n        // ensure that a reasonable widget height is persisted so that\n        // accidential \"resize-to-single-items\" cases aren't happening\n        const dim = this._persistedSize.restore();\n        const minPersistedHeight = Math.ceil(this.getLayoutInfo().itemHeight * 4.3);\n        if (dim && dim.height < minPersistedHeight) {\n            this._persistedSize.store(dim.with(undefined, minPersistedHeight));\n        }\n    }\n    isFrozen() {\n        return this._state === 4 /* State.Frozen */;\n    }\n    _afterRender(position) {\n        if (position === null) {\n            if (this._isDetailsVisible()) {\n                this._details.hide(); //todo@jrieken soft-hide\n            }\n            return;\n        }\n        if (this._state === 2 /* State.Empty */ || this._state === 1 /* State.Loading */) {\n            // no special positioning when widget isn't showing list\n            return;\n        }\n        if (this._isDetailsVisible() && !this._details.widget.isEmpty) {\n            this._details.show();\n        }\n        this._positionDetails();\n    }\n    _layout(size) {\n        var _a, _b, _c;\n        if (!this.editor.hasModel()) {\n            return;\n        }\n        if (!this.editor.getDomNode()) {\n            // happens when running tests\n            return;\n        }\n        const bodyBox = dom.getClientArea(this.element.domNode.ownerDocument.body);\n        const info = this.getLayoutInfo();\n        if (!size) {\n            size = info.defaultSize;\n        }\n        let height = size.height;\n        let width = size.width;\n        // status bar\n        this._status.element.style.height = `${info.itemHeight}px`;\n        if (this._state === 2 /* State.Empty */ || this._state === 1 /* State.Loading */) {\n            // showing a message only\n            height = info.itemHeight + info.borderHeight;\n            width = info.defaultSize.width / 2;\n            this.element.enableSashes(false, false, false, false);\n            this.element.minSize = this.element.maxSize = new dom.Dimension(width, height);\n            this._contentWidget.setPreference(2 /* ContentWidgetPositionPreference.BELOW */);\n        }\n        else {\n            // showing items\n            // width math\n            const maxWidth = bodyBox.width - info.borderHeight - 2 * info.horizontalPadding;\n            if (width > maxWidth) {\n                width = maxWidth;\n            }\n            const preferredWidth = this._completionModel ? this._completionModel.stats.pLabelLen * info.typicalHalfwidthCharacterWidth : width;\n            // height math\n            const fullHeight = info.statusBarHeight + this._list.contentHeight + info.borderHeight;\n            const minHeight = info.itemHeight + info.statusBarHeight;\n            const editorBox = dom.getDomNodePagePosition(this.editor.getDomNode());\n            const cursorBox = this.editor.getScrolledVisiblePosition(this.editor.getPosition());\n            const cursorBottom = editorBox.top + cursorBox.top + cursorBox.height;\n            const maxHeightBelow = Math.min(bodyBox.height - cursorBottom - info.verticalPadding, fullHeight);\n            const availableSpaceAbove = editorBox.top + cursorBox.top - info.verticalPadding;\n            const maxHeightAbove = Math.min(availableSpaceAbove, fullHeight);\n            let maxHeight = Math.min(Math.max(maxHeightAbove, maxHeightBelow) + info.borderHeight, fullHeight);\n            if (height === ((_a = this._cappedHeight) === null || _a === void 0 ? void 0 : _a.capped)) {\n                // Restore the old (wanted) height when the current\n                // height is capped to fit\n                height = this._cappedHeight.wanted;\n            }\n            if (height < minHeight) {\n                height = minHeight;\n            }\n            if (height > maxHeight) {\n                height = maxHeight;\n            }\n            const forceRenderingAboveRequiredSpace = 150;\n            if (height > maxHeightBelow || (this._forceRenderingAbove && availableSpaceAbove > forceRenderingAboveRequiredSpace)) {\n                this._contentWidget.setPreference(1 /* ContentWidgetPositionPreference.ABOVE */);\n                this.element.enableSashes(true, true, false, false);\n                maxHeight = maxHeightAbove;\n            }\n            else {\n                this._contentWidget.setPreference(2 /* ContentWidgetPositionPreference.BELOW */);\n                this.element.enableSashes(false, true, true, false);\n                maxHeight = maxHeightBelow;\n            }\n            this.element.preferredSize = new dom.Dimension(preferredWidth, info.defaultSize.height);\n            this.element.maxSize = new dom.Dimension(maxWidth, maxHeight);\n            this.element.minSize = new dom.Dimension(220, minHeight);\n            // Know when the height was capped to fit and remember\n            // the wanted height for later. This is required when going\n            // left to widen suggestions.\n            this._cappedHeight = height === fullHeight\n                ? { wanted: (_c = (_b = this._cappedHeight) === null || _b === void 0 ? void 0 : _b.wanted) !== null && _c !== void 0 ? _c : size.height, capped: height }\n                : undefined;\n        }\n        this._resize(width, height);\n    }\n    _resize(width, height) {\n        const { width: maxWidth, height: maxHeight } = this.element.maxSize;\n        width = Math.min(maxWidth, width);\n        height = Math.min(maxHeight, height);\n        const { statusBarHeight } = this.getLayoutInfo();\n        this._list.layout(height - statusBarHeight, width);\n        this._listElement.style.height = `${height - statusBarHeight}px`;\n        this.element.layout(height, width);\n        this._contentWidget.layout();\n        this._positionDetails();\n    }\n    _positionDetails() {\n        var _a;\n        if (this._isDetailsVisible()) {\n            this._details.placeAtAnchor(this.element.domNode, ((_a = this._contentWidget.getPosition()) === null || _a === void 0 ? void 0 : _a.preference[0]) === 2 /* ContentWidgetPositionPreference.BELOW */);\n        }\n    }\n    getLayoutInfo() {\n        const fontInfo = this.editor.getOption(50 /* EditorOption.fontInfo */);\n        const itemHeight = clamp(this.editor.getOption(120 /* EditorOption.suggestLineHeight */) || fontInfo.lineHeight, 8, 1000);\n        const statusBarHeight = !this.editor.getOption(118 /* EditorOption.suggest */).showStatusBar || this._state === 2 /* State.Empty */ || this._state === 1 /* State.Loading */ ? 0 : itemHeight;\n        const borderWidth = this._details.widget.borderWidth;\n        const borderHeight = 2 * borderWidth;\n        return {\n            itemHeight,\n            statusBarHeight,\n            borderWidth,\n            borderHeight,\n            typicalHalfwidthCharacterWidth: fontInfo.typicalHalfwidthCharacterWidth,\n            verticalPadding: 22,\n            horizontalPadding: 14,\n            defaultSize: new dom.Dimension(430, statusBarHeight + 12 * itemHeight + borderHeight)\n        };\n    }\n    _isDetailsVisible() {\n        return this._storageService.getBoolean('expandSuggestionDocs', 0 /* StorageScope.PROFILE */, false);\n    }\n    _setDetailsVisible(value) {\n        this._storageService.store('expandSuggestionDocs', value, 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n    }\n    forceRenderingAbove() {\n        if (!this._forceRenderingAbove) {\n            this._forceRenderingAbove = true;\n            this._layout(this._persistedSize.restore());\n        }\n    }\n    stopForceRenderingAbove() {\n        this._forceRenderingAbove = false;\n    }\n};\nSuggestWidget.LOADING_MESSAGE = nls.localize('suggestWidget.loading', \"Loading...\");\nSuggestWidget.NO_SUGGESTIONS_MESSAGE = nls.localize('suggestWidget.noSuggestions', \"No suggestions.\");\nSuggestWidget = SuggestWidget_1 = __decorate([\n    __param(1, IStorageService),\n    __param(2, IContextKeyService),\n    __param(3, IThemeService),\n    __param(4, IInstantiationService)\n], SuggestWidget);\nexport { SuggestWidget };\nexport class SuggestContentWidget {\n    constructor(_widget, _editor) {\n        this._widget = _widget;\n        this._editor = _editor;\n        this.allowEditorOverflow = true;\n        this.suppressMouseDown = false;\n        this._preferenceLocked = false;\n        this._added = false;\n        this._hidden = false;\n    }\n    dispose() {\n        if (this._added) {\n            this._added = false;\n            this._editor.removeContentWidget(this);\n        }\n    }\n    getId() {\n        return 'editor.widget.suggestWidget';\n    }\n    getDomNode() {\n        return this._widget.element.domNode;\n    }\n    show() {\n        this._hidden = false;\n        if (!this._added) {\n            this._added = true;\n            this._editor.addContentWidget(this);\n        }\n    }\n    hide() {\n        if (!this._hidden) {\n            this._hidden = true;\n            this.layout();\n        }\n    }\n    layout() {\n        this._editor.layoutContentWidget(this);\n    }\n    getPosition() {\n        if (this._hidden || !this._position || !this._preference) {\n            return null;\n        }\n        return {\n            position: this._position,\n            preference: [this._preference]\n        };\n    }\n    beforeRender() {\n        const { height, width } = this._widget.element.size;\n        const { borderWidth, horizontalPadding } = this._widget.getLayoutInfo();\n        return new dom.Dimension(width + 2 * borderWidth + horizontalPadding, height + 2 * borderWidth);\n    }\n    afterRender(position) {\n        this._widget._afterRender(position);\n    }\n    setPreference(preference) {\n        if (!this._preferenceLocked) {\n            this._preference = preference;\n        }\n    }\n    lockPreference() {\n        this._preferenceLocked = true;\n    }\n    unlockPreference() {\n        this._preferenceLocked = false;\n    }\n    setPosition(position) {\n        this._position = position;\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 { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { localize } from '../../../../nls.js';\nimport { MenuEntryActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { IMenuService, MenuItemAction } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nclass StatusBarViewItem extends MenuEntryActionViewItem {\n    updateLabel() {\n        const kb = this._keybindingService.lookupKeybinding(this._action.id, this._contextKeyService);\n        if (!kb) {\n            return super.updateLabel();\n        }\n        if (this.label) {\n            this.label.textContent = localize({ key: 'content', comment: ['A label', 'A keybinding'] }, '{0} ({1})', this._action.label, StatusBarViewItem.symbolPrintEnter(kb));\n        }\n    }\n    static symbolPrintEnter(kb) {\n        var _a;\n        return (_a = kb.getLabel()) === null || _a === void 0 ? void 0 : _a.replace(/\\benter\\b/gi, '\\u23CE');\n    }\n}\nlet SuggestWidgetStatus = class SuggestWidgetStatus {\n    constructor(container, _menuId, instantiationService, _menuService, _contextKeyService) {\n        this._menuId = _menuId;\n        this._menuService = _menuService;\n        this._contextKeyService = _contextKeyService;\n        this._menuDisposables = new DisposableStore();\n        this.element = dom.append(container, dom.$('.suggest-status-bar'));\n        const actionViewItemProvider = (action => {\n            return action instanceof MenuItemAction ? instantiationService.createInstance(StatusBarViewItem, action, undefined) : undefined;\n        });\n        this._leftActions = new ActionBar(this.element, { actionViewItemProvider });\n        this._rightActions = new ActionBar(this.element, { actionViewItemProvider });\n        this._leftActions.domNode.classList.add('left');\n        this._rightActions.domNode.classList.add('right');\n    }\n    dispose() {\n        this._menuDisposables.dispose();\n        this._leftActions.dispose();\n        this._rightActions.dispose();\n        this.element.remove();\n    }\n    show() {\n        const menu = this._menuService.createMenu(this._menuId, this._contextKeyService);\n        const renderMenu = () => {\n            const left = [];\n            const right = [];\n            for (const [group, actions] of menu.getActions()) {\n                if (group === 'left') {\n                    left.push(...actions);\n                }\n                else {\n                    right.push(...actions);\n                }\n            }\n            this._leftActions.clear();\n            this._leftActions.push(left);\n            this._rightActions.clear();\n            this._rightActions.push(right);\n        };\n        this._menuDisposables.add(menu.onDidChange(() => renderMenu()));\n        this._menuDisposables.add(menu);\n    }\n    hide() {\n        this._menuDisposables.clear();\n    }\n};\nSuggestWidgetStatus = __decorate([\n    __param(2, IInstantiationService),\n    __param(3, IMenuService),\n    __param(4, IContextKeyService)\n], SuggestWidgetStatus);\nexport { SuggestWidgetStatus };\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 { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';\nimport * as nls from '../../../../nls.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nexport function canExpandCompletionItem(item) {\n    return !!item && Boolean(item.completion.documentation || item.completion.detail && item.completion.detail !== item.completion.label);\n}\nlet SuggestDetailsWidget = class SuggestDetailsWidget {\n    constructor(_editor, instaService) {\n        this._editor = _editor;\n        this._onDidClose = new Emitter();\n        this.onDidClose = this._onDidClose.event;\n        this._onDidChangeContents = new Emitter();\n        this.onDidChangeContents = this._onDidChangeContents.event;\n        this._disposables = new DisposableStore();\n        this._renderDisposeable = new DisposableStore();\n        this._borderWidth = 1;\n        this._size = new dom.Dimension(330, 0);\n        this.domNode = dom.$('.suggest-details');\n        this.domNode.classList.add('no-docs');\n        this._markdownRenderer = instaService.createInstance(MarkdownRenderer, { editor: _editor });\n        this._body = dom.$('.body');\n        this._scrollbar = new DomScrollableElement(this._body, {\n            alwaysConsumeMouseWheel: true,\n        });\n        dom.append(this.domNode, this._scrollbar.getDomNode());\n        this._disposables.add(this._scrollbar);\n        this._header = dom.append(this._body, dom.$('.header'));\n        this._close = dom.append(this._header, dom.$('span' + ThemeIcon.asCSSSelector(Codicon.close)));\n        this._close.title = nls.localize('details.close', \"Close\");\n        this._type = dom.append(this._header, dom.$('p.type'));\n        this._docs = dom.append(this._body, dom.$('p.docs'));\n        this._configureFont();\n        this._disposables.add(this._editor.onDidChangeConfiguration(e => {\n            if (e.hasChanged(50 /* EditorOption.fontInfo */)) {\n                this._configureFont();\n            }\n        }));\n    }\n    dispose() {\n        this._disposables.dispose();\n        this._renderDisposeable.dispose();\n    }\n    _configureFont() {\n        const options = this._editor.getOptions();\n        const fontInfo = options.get(50 /* EditorOption.fontInfo */);\n        const fontFamily = fontInfo.getMassagedFontFamily();\n        const fontSize = options.get(119 /* EditorOption.suggestFontSize */) || fontInfo.fontSize;\n        const lineHeight = options.get(120 /* EditorOption.suggestLineHeight */) || fontInfo.lineHeight;\n        const fontWeight = fontInfo.fontWeight;\n        const fontSizePx = `${fontSize}px`;\n        const lineHeightPx = `${lineHeight}px`;\n        this.domNode.style.fontSize = fontSizePx;\n        this.domNode.style.lineHeight = `${lineHeight / fontSize}`;\n        this.domNode.style.fontWeight = fontWeight;\n        this.domNode.style.fontFeatureSettings = fontInfo.fontFeatureSettings;\n        this._type.style.fontFamily = fontFamily;\n        this._close.style.height = lineHeightPx;\n        this._close.style.width = lineHeightPx;\n    }\n    getLayoutInfo() {\n        const lineHeight = this._editor.getOption(120 /* EditorOption.suggestLineHeight */) || this._editor.getOption(50 /* EditorOption.fontInfo */).lineHeight;\n        const borderWidth = this._borderWidth;\n        const borderHeight = borderWidth * 2;\n        return {\n            lineHeight,\n            borderWidth,\n            borderHeight,\n            verticalPadding: 22,\n            horizontalPadding: 14\n        };\n    }\n    renderLoading() {\n        this._type.textContent = nls.localize('loading', \"Loading...\");\n        this._docs.textContent = '';\n        this.domNode.classList.remove('no-docs', 'no-type');\n        this.layout(this.size.width, this.getLayoutInfo().lineHeight * 2);\n        this._onDidChangeContents.fire(this);\n    }\n    renderItem(item, explainMode) {\n        var _a, _b;\n        this._renderDisposeable.clear();\n        let { detail, documentation } = item.completion;\n        if (explainMode) {\n            let md = '';\n            md += `score: ${item.score[0]}\\n`;\n            md += `prefix: ${(_a = item.word) !== null && _a !== void 0 ? _a : '(no prefix)'}\\n`;\n            md += `word: ${item.completion.filterText ? item.completion.filterText + ' (filterText)' : item.textLabel}\\n`;\n            md += `distance: ${item.distance} (localityBonus-setting)\\n`;\n            md += `index: ${item.idx}, based on ${item.completion.sortText && `sortText: \"${item.completion.sortText}\"` || 'label'}\\n`;\n            md += `commit_chars: ${(_b = item.completion.commitCharacters) === null || _b === void 0 ? void 0 : _b.join('')}\\n`;\n            documentation = new MarkdownString().appendCodeblock('empty', md);\n            detail = `Provider: ${item.provider._debugDisplayName}`;\n        }\n        if (!explainMode && !canExpandCompletionItem(item)) {\n            this.clearContents();\n            return;\n        }\n        this.domNode.classList.remove('no-docs', 'no-type');\n        // --- details\n        if (detail) {\n            const cappedDetail = detail.length > 100000 ? `${detail.substr(0, 100000)}\u2026` : detail;\n            this._type.textContent = cappedDetail;\n            this._type.title = cappedDetail;\n            dom.show(this._type);\n            this._type.classList.toggle('auto-wrap', !/\\r?\\n^\\s+/gmi.test(cappedDetail));\n        }\n        else {\n            dom.clearNode(this._type);\n            this._type.title = '';\n            dom.hide(this._type);\n            this.domNode.classList.add('no-type');\n        }\n        // --- documentation\n        dom.clearNode(this._docs);\n        if (typeof documentation === 'string') {\n            this._docs.classList.remove('markdown-docs');\n            this._docs.textContent = documentation;\n        }\n        else if (documentation) {\n            this._docs.classList.add('markdown-docs');\n            dom.clearNode(this._docs);\n            const renderedContents = this._markdownRenderer.render(documentation);\n            this._docs.appendChild(renderedContents.element);\n            this._renderDisposeable.add(renderedContents);\n            this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync(() => {\n                this.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);\n                this._onDidChangeContents.fire(this);\n            }));\n        }\n        this.domNode.style.userSelect = 'text';\n        this.domNode.tabIndex = -1;\n        this._close.onmousedown = e => {\n            e.preventDefault();\n            e.stopPropagation();\n        };\n        this._close.onclick = e => {\n            e.preventDefault();\n            e.stopPropagation();\n            this._onDidClose.fire();\n        };\n        this._body.scrollTop = 0;\n        this.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);\n        this._onDidChangeContents.fire(this);\n    }\n    clearContents() {\n        this.domNode.classList.add('no-docs');\n        this._type.textContent = '';\n        this._docs.textContent = '';\n    }\n    get isEmpty() {\n        return this.domNode.classList.contains('no-docs');\n    }\n    get size() {\n        return this._size;\n    }\n    layout(width, height) {\n        const newSize = new dom.Dimension(width, height);\n        if (!dom.Dimension.equals(newSize, this._size)) {\n            this._size = newSize;\n            dom.size(this.domNode, width, height);\n        }\n        this._scrollbar.scanDomNode();\n    }\n    scrollDown(much = 8) {\n        this._body.scrollTop += much;\n    }\n    scrollUp(much = 8) {\n        this._body.scrollTop -= much;\n    }\n    scrollTop() {\n        this._body.scrollTop = 0;\n    }\n    scrollBottom() {\n        this._body.scrollTop = this._body.scrollHeight;\n    }\n    pageDown() {\n        this.scrollDown(80);\n    }\n    pageUp() {\n        this.scrollUp(80);\n    }\n    set borderWidth(width) {\n        this._borderWidth = width;\n    }\n    get borderWidth() {\n        return this._borderWidth;\n    }\n};\nSuggestDetailsWidget = __decorate([\n    __param(1, IInstantiationService)\n], SuggestDetailsWidget);\nexport { SuggestDetailsWidget };\nexport class SuggestDetailsOverlay {\n    constructor(widget, _editor) {\n        this.widget = widget;\n        this._editor = _editor;\n        this.allowEditorOverflow = true;\n        this._disposables = new DisposableStore();\n        this._added = false;\n        this._preferAlignAtTop = true;\n        this._resizable = new ResizableHTMLElement();\n        this._resizable.domNode.classList.add('suggest-details-container');\n        this._resizable.domNode.appendChild(widget.domNode);\n        this._resizable.enableSashes(false, true, true, false);\n        let topLeftNow;\n        let sizeNow;\n        let deltaTop = 0;\n        let deltaLeft = 0;\n        this._disposables.add(this._resizable.onDidWillResize(() => {\n            topLeftNow = this._topLeft;\n            sizeNow = this._resizable.size;\n        }));\n        this._disposables.add(this._resizable.onDidResize(e => {\n            if (topLeftNow && sizeNow) {\n                this.widget.layout(e.dimension.width, e.dimension.height);\n                let updateTopLeft = false;\n                if (e.west) {\n                    deltaLeft = sizeNow.width - e.dimension.width;\n                    updateTopLeft = true;\n                }\n                if (e.north) {\n                    deltaTop = sizeNow.height - e.dimension.height;\n                    updateTopLeft = true;\n                }\n                if (updateTopLeft) {\n                    this._applyTopLeft({\n                        top: topLeftNow.top + deltaTop,\n                        left: topLeftNow.left + deltaLeft,\n                    });\n                }\n            }\n            if (e.done) {\n                topLeftNow = undefined;\n                sizeNow = undefined;\n                deltaTop = 0;\n                deltaLeft = 0;\n                this._userSize = e.dimension;\n            }\n        }));\n        this._disposables.add(this.widget.onDidChangeContents(() => {\n            var _a;\n            if (this._anchorBox) {\n                this._placeAtAnchor(this._anchorBox, (_a = this._userSize) !== null && _a !== void 0 ? _a : this.widget.size, this._preferAlignAtTop);\n            }\n        }));\n    }\n    dispose() {\n        this._resizable.dispose();\n        this._disposables.dispose();\n        this.hide();\n    }\n    getId() {\n        return 'suggest.details';\n    }\n    getDomNode() {\n        return this._resizable.domNode;\n    }\n    getPosition() {\n        return this._topLeft ? { preference: this._topLeft } : null;\n    }\n    show() {\n        if (!this._added) {\n            this._editor.addOverlayWidget(this);\n            this._added = true;\n        }\n    }\n    hide(sessionEnded = false) {\n        this._resizable.clearSashHoverState();\n        if (this._added) {\n            this._editor.removeOverlayWidget(this);\n            this._added = false;\n            this._anchorBox = undefined;\n            this._topLeft = undefined;\n        }\n        if (sessionEnded) {\n            this._userSize = undefined;\n            this.widget.clearContents();\n        }\n    }\n    placeAtAnchor(anchor, preferAlignAtTop) {\n        var _a;\n        const anchorBox = anchor.getBoundingClientRect();\n        this._anchorBox = anchorBox;\n        this._preferAlignAtTop = preferAlignAtTop;\n        this._placeAtAnchor(this._anchorBox, (_a = this._userSize) !== null && _a !== void 0 ? _a : this.widget.size, preferAlignAtTop);\n    }\n    _placeAtAnchor(anchorBox, size, preferAlignAtTop) {\n        var _a;\n        const bodyBox = dom.getClientArea(this.getDomNode().ownerDocument.body);\n        const info = this.widget.getLayoutInfo();\n        const defaultMinSize = new dom.Dimension(220, 2 * info.lineHeight);\n        const defaultTop = anchorBox.top;\n        // EAST\n        const eastPlacement = (function () {\n            const width = bodyBox.width - (anchorBox.left + anchorBox.width + info.borderWidth + info.horizontalPadding);\n            const left = -info.borderWidth + anchorBox.left + anchorBox.width;\n            const maxSizeTop = new dom.Dimension(width, bodyBox.height - anchorBox.top - info.borderHeight - info.verticalPadding);\n            const maxSizeBottom = maxSizeTop.with(undefined, anchorBox.top + anchorBox.height - info.borderHeight - info.verticalPadding);\n            return { top: defaultTop, left, fit: width - size.width, maxSizeTop, maxSizeBottom, minSize: defaultMinSize.with(Math.min(width, defaultMinSize.width)) };\n        })();\n        // WEST\n        const westPlacement = (function () {\n            const width = anchorBox.left - info.borderWidth - info.horizontalPadding;\n            const left = Math.max(info.horizontalPadding, anchorBox.left - size.width - info.borderWidth);\n            const maxSizeTop = new dom.Dimension(width, bodyBox.height - anchorBox.top - info.borderHeight - info.verticalPadding);\n            const maxSizeBottom = maxSizeTop.with(undefined, anchorBox.top + anchorBox.height - info.borderHeight - info.verticalPadding);\n            return { top: defaultTop, left, fit: width - size.width, maxSizeTop, maxSizeBottom, minSize: defaultMinSize.with(Math.min(width, defaultMinSize.width)) };\n        })();\n        // SOUTH\n        const southPacement = (function () {\n            const left = anchorBox.left;\n            const top = -info.borderWidth + anchorBox.top + anchorBox.height;\n            const maxSizeBottom = new dom.Dimension(anchorBox.width - info.borderHeight, bodyBox.height - anchorBox.top - anchorBox.height - info.verticalPadding);\n            return { top, left, fit: maxSizeBottom.height - size.height, maxSizeBottom, maxSizeTop: maxSizeBottom, minSize: defaultMinSize.with(maxSizeBottom.width) };\n        })();\n        // take first placement that fits or the first with \"least bad\" fit\n        const placements = [eastPlacement, westPlacement, southPacement];\n        const placement = (_a = placements.find(p => p.fit >= 0)) !== null && _a !== void 0 ? _a : placements.sort((a, b) => b.fit - a.fit)[0];\n        // top/bottom placement\n        const bottom = anchorBox.top + anchorBox.height - info.borderHeight;\n        let alignAtTop;\n        let height = size.height;\n        const maxHeight = Math.max(placement.maxSizeTop.height, placement.maxSizeBottom.height);\n        if (height > maxHeight) {\n            height = maxHeight;\n        }\n        let maxSize;\n        if (preferAlignAtTop) {\n            if (height <= placement.maxSizeTop.height) {\n                alignAtTop = true;\n                maxSize = placement.maxSizeTop;\n            }\n            else {\n                alignAtTop = false;\n                maxSize = placement.maxSizeBottom;\n            }\n        }\n        else {\n            if (height <= placement.maxSizeBottom.height) {\n                alignAtTop = false;\n                maxSize = placement.maxSizeBottom;\n            }\n            else {\n                alignAtTop = true;\n                maxSize = placement.maxSizeTop;\n            }\n        }\n        let { top, left } = placement;\n        if (!alignAtTop && height > anchorBox.height) {\n            top = bottom - height;\n        }\n        const editorDomNode = this._editor.getDomNode();\n        if (editorDomNode) {\n            // get bounding rectangle of the suggest widget relative to the editor\n            const editorBoundingBox = editorDomNode.getBoundingClientRect();\n            top -= editorBoundingBox.top;\n            left -= editorBoundingBox.left;\n        }\n        this._applyTopLeft({ left, top });\n        this._resizable.enableSashes(!alignAtTop, placement === eastPlacement, alignAtTop, placement !== eastPlacement);\n        this._resizable.minSize = placement.minSize;\n        this._resizable.maxSize = maxSize;\n        this._resizable.layout(height, Math.min(maxSize.width, size.width));\n        this.widget.layout(this._resizable.size.width, this._resizable.size.height);\n    }\n    _applyTopLeft(topLeft) {\n        this._topLeft = topLeft;\n        this._editor.layoutOverlayWidget(this);\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 _a;\nimport { $, append, hide, show } from '../../../../base/browser/dom.js';\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { createMatches } from '../../../../base/common/filters.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { CompletionItemKinds } from '../../../common/languages.js';\nimport { getIconClasses } from '../../../common/services/getIconClasses.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport * as nls from '../../../../nls.js';\nimport { FileKind } from '../../../../platform/files/common/files.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { canExpandCompletionItem } from './suggestWidgetDetails.js';\nexport function getAriaId(index) {\n    return `suggest-aria-id:${index}`;\n}\nconst suggestMoreInfoIcon = registerIcon('suggest-more-info', Codicon.chevronRight, nls.localize('suggestMoreInfoIcon', 'Icon for more information in the suggest widget.'));\nconst _completionItemColor = new (_a = class ColorExtractor {\n        extract(item, out) {\n            if (item.textLabel.match(_a._regexStrict)) {\n                out[0] = item.textLabel;\n                return true;\n            }\n            if (item.completion.detail && item.completion.detail.match(_a._regexStrict)) {\n                out[0] = item.completion.detail;\n                return true;\n            }\n            if (item.completion.documentation) {\n                const value = typeof item.completion.documentation === 'string'\n                    ? item.completion.documentation\n                    : item.completion.documentation.value;\n                const match = _a._regexRelaxed.exec(value);\n                if (match && (match.index === 0 || match.index + match[0].length === value.length)) {\n                    out[0] = match[0];\n                    return true;\n                }\n            }\n            return false;\n        }\n    },\n    _a._regexRelaxed = /(#([\\da-fA-F]{3}){1,2}|(rgb|hsl)a\\(\\s*(\\d{1,3}%?\\s*,\\s*){3}(1|0?\\.\\d+)\\)|(rgb|hsl)\\(\\s*\\d{1,3}%?(\\s*,\\s*\\d{1,3}%?){2}\\s*\\))/,\n    _a._regexStrict = new RegExp(`^${_a._regexRelaxed.source}$`, 'i'),\n    _a);\nlet ItemRenderer = class ItemRenderer {\n    constructor(_editor, _modelService, _languageService, _themeService) {\n        this._editor = _editor;\n        this._modelService = _modelService;\n        this._languageService = _languageService;\n        this._themeService = _themeService;\n        this._onDidToggleDetails = new Emitter();\n        this.onDidToggleDetails = this._onDidToggleDetails.event;\n        this.templateId = 'suggestion';\n    }\n    dispose() {\n        this._onDidToggleDetails.dispose();\n    }\n    renderTemplate(container) {\n        const disposables = new DisposableStore();\n        const root = container;\n        root.classList.add('show-file-icons');\n        const icon = append(container, $('.icon'));\n        const colorspan = append(icon, $('span.colorspan'));\n        const text = append(container, $('.contents'));\n        const main = append(text, $('.main'));\n        const iconContainer = append(main, $('.icon-label.codicon'));\n        const left = append(main, $('span.left'));\n        const right = append(main, $('span.right'));\n        const iconLabel = new IconLabel(left, { supportHighlights: true, supportIcons: true });\n        disposables.add(iconLabel);\n        const parametersLabel = append(left, $('span.signature-label'));\n        const qualifierLabel = append(left, $('span.qualifier-label'));\n        const detailsLabel = append(right, $('span.details-label'));\n        const readMore = append(right, $('span.readMore' + ThemeIcon.asCSSSelector(suggestMoreInfoIcon)));\n        readMore.title = nls.localize('readMore', \"Read More\");\n        const configureFont = () => {\n            const options = this._editor.getOptions();\n            const fontInfo = options.get(50 /* EditorOption.fontInfo */);\n            const fontFamily = fontInfo.getMassagedFontFamily();\n            const fontFeatureSettings = fontInfo.fontFeatureSettings;\n            const fontSize = options.get(119 /* EditorOption.suggestFontSize */) || fontInfo.fontSize;\n            const lineHeight = options.get(120 /* EditorOption.suggestLineHeight */) || fontInfo.lineHeight;\n            const fontWeight = fontInfo.fontWeight;\n            const letterSpacing = fontInfo.letterSpacing;\n            const fontSizePx = `${fontSize}px`;\n            const lineHeightPx = `${lineHeight}px`;\n            const letterSpacingPx = `${letterSpacing}px`;\n            root.style.fontSize = fontSizePx;\n            root.style.fontWeight = fontWeight;\n            root.style.letterSpacing = letterSpacingPx;\n            main.style.fontFamily = fontFamily;\n            main.style.fontFeatureSettings = fontFeatureSettings;\n            main.style.lineHeight = lineHeightPx;\n            icon.style.height = lineHeightPx;\n            icon.style.width = lineHeightPx;\n            readMore.style.height = lineHeightPx;\n            readMore.style.width = lineHeightPx;\n        };\n        return { root, left, right, icon, colorspan, iconLabel, iconContainer, parametersLabel, qualifierLabel, detailsLabel, readMore, disposables, configureFont };\n    }\n    renderElement(element, index, data) {\n        data.configureFont();\n        const { completion } = element;\n        data.root.id = getAriaId(index);\n        data.colorspan.style.backgroundColor = '';\n        const labelOptions = {\n            labelEscapeNewLines: true,\n            matches: createMatches(element.score)\n        };\n        const color = [];\n        if (completion.kind === 19 /* CompletionItemKind.Color */ && _completionItemColor.extract(element, color)) {\n            // special logic for 'color' completion items\n            data.icon.className = 'icon customcolor';\n            data.iconContainer.className = 'icon hide';\n            data.colorspan.style.backgroundColor = color[0];\n        }\n        else if (completion.kind === 20 /* CompletionItemKind.File */ && this._themeService.getFileIconTheme().hasFileIcons) {\n            // special logic for 'file' completion items\n            data.icon.className = 'icon hide';\n            data.iconContainer.className = 'icon hide';\n            const labelClasses = getIconClasses(this._modelService, this._languageService, URI.from({ scheme: 'fake', path: element.textLabel }), FileKind.FILE);\n            const detailClasses = getIconClasses(this._modelService, this._languageService, URI.from({ scheme: 'fake', path: completion.detail }), FileKind.FILE);\n            labelOptions.extraClasses = labelClasses.length > detailClasses.length ? labelClasses : detailClasses;\n        }\n        else if (completion.kind === 23 /* CompletionItemKind.Folder */ && this._themeService.getFileIconTheme().hasFolderIcons) {\n            // special logic for 'folder' completion items\n            data.icon.className = 'icon hide';\n            data.iconContainer.className = 'icon hide';\n            labelOptions.extraClasses = [\n                getIconClasses(this._modelService, this._languageService, URI.from({ scheme: 'fake', path: element.textLabel }), FileKind.FOLDER),\n                getIconClasses(this._modelService, this._languageService, URI.from({ scheme: 'fake', path: completion.detail }), FileKind.FOLDER)\n            ].flat();\n        }\n        else {\n            // normal icon\n            data.icon.className = 'icon hide';\n            data.iconContainer.className = '';\n            data.iconContainer.classList.add('suggest-icon', ...ThemeIcon.asClassNameArray(CompletionItemKinds.toIcon(completion.kind)));\n        }\n        if (completion.tags && completion.tags.indexOf(1 /* CompletionItemTag.Deprecated */) >= 0) {\n            labelOptions.extraClasses = (labelOptions.extraClasses || []).concat(['deprecated']);\n            labelOptions.matches = [];\n        }\n        data.iconLabel.setLabel(element.textLabel, undefined, labelOptions);\n        if (typeof completion.label === 'string') {\n            data.parametersLabel.textContent = '';\n            data.detailsLabel.textContent = stripNewLines(completion.detail || '');\n            data.root.classList.add('string-label');\n        }\n        else {\n            data.parametersLabel.textContent = stripNewLines(completion.label.detail || '');\n            data.detailsLabel.textContent = stripNewLines(completion.label.description || '');\n            data.root.classList.remove('string-label');\n        }\n        if (this._editor.getOption(118 /* EditorOption.suggest */).showInlineDetails) {\n            show(data.detailsLabel);\n        }\n        else {\n            hide(data.detailsLabel);\n        }\n        if (canExpandCompletionItem(element)) {\n            data.right.classList.add('can-expand-details');\n            show(data.readMore);\n            data.readMore.onmousedown = e => {\n                e.stopPropagation();\n                e.preventDefault();\n            };\n            data.readMore.onclick = e => {\n                e.stopPropagation();\n                e.preventDefault();\n                this._onDidToggleDetails.fire();\n            };\n        }\n        else {\n            data.right.classList.remove('can-expand-details');\n            hide(data.readMore);\n            data.readMore.onmousedown = null;\n            data.readMore.onclick = null;\n        }\n    }\n    disposeTemplate(templateData) {\n        templateData.disposables.dispose();\n    }\n};\nItemRenderer = __decorate([\n    __param(1, IModelService),\n    __param(2, ILanguageService),\n    __param(3, IThemeService)\n], ItemRenderer);\nexport { ItemRenderer };\nfunction stripNewLines(str) {\n    return str.replace(/\\r\\n|\\r|\\n/g, '');\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 { Schemas } from '../../../base/common/network.js';\nimport { DataUri } from '../../../base/common/resources.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';\nimport { FileKind } from '../../../platform/files/common/files.js';\nimport { ThemeIcon } from '../../../base/common/themables.js';\nconst fileIconDirectoryRegex = /(?:\\/|^)(?:([^\\/]+)\\/)?([^\\/]+)$/;\nexport function getIconClasses(modelService, languageService, resource, fileKind, icon) {\n    if (ThemeIcon.isThemeIcon(icon)) {\n        return [`codicon-${icon.id}`, 'predefined-file-icon'];\n    }\n    if (URI.isUri(icon)) {\n        return [];\n    }\n    // we always set these base classes even if we do not have a path\n    const classes = fileKind === FileKind.ROOT_FOLDER ? ['rootfolder-icon'] : fileKind === FileKind.FOLDER ? ['folder-icon'] : ['file-icon'];\n    if (resource) {\n        // Get the path and name of the resource. For data-URIs, we need to parse specially\n        let name;\n        if (resource.scheme === Schemas.data) {\n            const metadata = DataUri.parseMetaData(resource);\n            name = metadata.get(DataUri.META_DATA_LABEL);\n        }\n        else {\n            const match = resource.path.match(fileIconDirectoryRegex);\n            if (match) {\n                name = cssEscape(match[2].toLowerCase());\n                if (match[1]) {\n                    classes.push(`${cssEscape(match[1].toLowerCase())}-name-dir-icon`); // parent directory\n                }\n            }\n            else {\n                name = cssEscape(resource.authority.toLowerCase());\n            }\n        }\n        // Root Folders\n        if (fileKind === FileKind.ROOT_FOLDER) {\n            classes.push(`${name}-root-name-folder-icon`);\n        }\n        // Folders\n        else if (fileKind === FileKind.FOLDER) {\n            classes.push(`${name}-name-folder-icon`);\n        }\n        // Files\n        else {\n            // Name & Extension(s)\n            if (name) {\n                classes.push(`${name}-name-file-icon`);\n                classes.push(`name-file-icon`); // extra segment to increase file-name score\n                // Avoid doing an explosive combination of extensions for very long filenames\n                // (most file systems do not allow files > 255 length) with lots of `.` characters\n                // https://github.com/microsoft/vscode/issues/116199\n                if (name.length <= 255) {\n                    const dotSegments = name.split('.');\n                    for (let i = 1; i < dotSegments.length; i++) {\n                        classes.push(`${dotSegments.slice(i).join('.')}-ext-file-icon`); // add each combination of all found extensions if more than one\n                    }\n                }\n                classes.push(`ext-file-icon`); // extra segment to increase file-ext score\n            }\n            // Detected Mode\n            const detectedLanguageId = detectLanguageId(modelService, languageService, resource);\n            if (detectedLanguageId) {\n                classes.push(`${cssEscape(detectedLanguageId)}-lang-file-icon`);\n            }\n        }\n    }\n    return classes;\n}\nfunction detectLanguageId(modelService, languageService, resource) {\n    if (!resource) {\n        return null; // we need a resource at least\n    }\n    let languageId = null;\n    // Data URI: check for encoded metadata\n    if (resource.scheme === Schemas.data) {\n        const metadata = DataUri.parseMetaData(resource);\n        const mime = metadata.get(DataUri.META_DATA_MIME);\n        if (mime) {\n            languageId = languageService.getLanguageIdByMimeType(mime);\n        }\n    }\n    // Any other URI: check for model if existing\n    else {\n        const model = modelService.getModel(resource);\n        if (model) {\n            languageId = model.getLanguageId();\n        }\n    }\n    // only take if the language id is specific (aka no just plain text)\n    if (languageId && languageId !== PLAINTEXT_LANGUAGE_ID) {\n        return languageId;\n    }\n    // otherwise fallback to path based detection\n    return languageService.guessLanguageIdByFilepathOrFirstLine(resource);\n}\nfunction cssEscape(str) {\n    return str.replace(/[\\11\\12\\14\\15\\40]/g, '/'); // HTML class names can not contain certain whitespace characters, use / instead, which doesn't exist in file names.\n}\n", "//#endregion\n//#region Utilities\nexport var FileKind;\n(function (FileKind) {\n    FileKind[FileKind[\"FILE\"] = 0] = \"FILE\";\n    FileKind[FileKind[\"FOLDER\"] = 1] = \"FOLDER\";\n    FileKind[FileKind[\"ROOT_FOLDER\"] = 2] = \"ROOT_FOLDER\";\n})(FileKind || (FileKind = {}));\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 *--------------------------------------------------------------------------------------------*/\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 { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { autorun, constObservable } from '../../../../base/common/observable.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { HoverForeignElementAnchor } from '../../hover/browser/hoverTypes.js';\nimport { InlineCompletionsController } from './inlineCompletionsController.js';\nimport { InlineSuggestionHintsContentWidget } from './inlineCompletionsHintsWidget.js';\nimport { MarkdownRenderer } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport * as nls from '../../../../nls.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nexport class InlineCompletionsHover {\n    constructor(owner, range, controller) {\n        this.owner = owner;\n        this.range = range;\n        this.controller = controller;\n    }\n    isValidForHoverAnchor(anchor) {\n        return (anchor.type === 1 /* HoverAnchorType.Range */\n            && this.range.startColumn <= anchor.range.startColumn\n            && this.range.endColumn >= anchor.range.endColumn);\n    }\n}\nlet InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant {\n    constructor(_editor, _languageService, _openerService, accessibilityService, _instantiationService, _telemetryService) {\n        this._editor = _editor;\n        this._languageService = _languageService;\n        this._openerService = _openerService;\n        this.accessibilityService = accessibilityService;\n        this._instantiationService = _instantiationService;\n        this._telemetryService = _telemetryService;\n        this.hoverOrdinal = 4;\n    }\n    suggestHoverAnchor(mouseEvent) {\n        const controller = InlineCompletionsController.get(this._editor);\n        if (!controller) {\n            return null;\n        }\n        const target = mouseEvent.target;\n        if (target.type === 8 /* MouseTargetType.CONTENT_VIEW_ZONE */) {\n            // handle the case where the mouse is over the view zone\n            const viewZoneData = target.detail;\n            if (controller.shouldShowHoverAtViewZone(viewZoneData.viewZoneId)) {\n                return new HoverForeignElementAnchor(1000, this, Range.fromPositions(this._editor.getModel().validatePosition(viewZoneData.positionBefore || viewZoneData.position)), mouseEvent.event.posx, mouseEvent.event.posy, false);\n            }\n        }\n        if (target.type === 7 /* MouseTargetType.CONTENT_EMPTY */) {\n            // handle the case where the mouse is over the empty portion of a line following ghost text\n            if (controller.shouldShowHoverAt(target.range)) {\n                return new HoverForeignElementAnchor(1000, this, target.range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n            }\n        }\n        if (target.type === 6 /* MouseTargetType.CONTENT_TEXT */) {\n            // handle the case where the mouse is directly over ghost text\n            const mightBeForeignElement = target.detail.mightBeForeignElement;\n            if (mightBeForeignElement && controller.shouldShowHoverAt(target.range)) {\n                return new HoverForeignElementAnchor(1000, this, target.range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n            }\n        }\n        return null;\n    }\n    computeSync(anchor, lineDecorations) {\n        if (this._editor.getOption(62 /* EditorOption.inlineSuggest */).showToolbar !== 'onHover') {\n            return [];\n        }\n        const controller = InlineCompletionsController.get(this._editor);\n        if (controller && controller.shouldShowHoverAt(anchor.range)) {\n            return [new InlineCompletionsHover(this, anchor.range, controller)];\n        }\n        return [];\n    }\n    renderHoverParts(context, hoverParts) {\n        const disposableStore = new DisposableStore();\n        const part = hoverParts[0];\n        this._telemetryService.publicLog2('inlineCompletionHover.shown');\n        if (this.accessibilityService.isScreenReaderOptimized() && !this._editor.getOption(8 /* EditorOption.screenReaderAnnounceInlineSuggestion */)) {\n            this.renderScreenReaderText(context, part, disposableStore);\n        }\n        const model = part.controller.model.get();\n        const w = this._instantiationService.createInstance(InlineSuggestionHintsContentWidget, this._editor, false, constObservable(null), model.selectedInlineCompletionIndex, model.inlineCompletionsCount, model.activeCommands);\n        context.fragment.appendChild(w.getDomNode());\n        model.triggerExplicitly();\n        disposableStore.add(w);\n        return disposableStore;\n    }\n    renderScreenReaderText(context, part, disposableStore) {\n        const $ = dom.$;\n        const markdownHoverElement = $('div.hover-row.markdown-hover');\n        const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents', { ['aria-live']: 'assertive' }));\n        const renderer = disposableStore.add(new MarkdownRenderer({ editor: this._editor }, this._languageService, this._openerService));\n        const render = (code) => {\n            disposableStore.add(renderer.onDidRenderAsync(() => {\n                hoverContentsElement.className = 'hover-contents code-hover-contents';\n                context.onContentsChanged();\n            }));\n            const inlineSuggestionAvailable = nls.localize('inlineSuggestionFollows', \"Suggestion:\");\n            const renderedContents = disposableStore.add(renderer.render(new MarkdownString().appendText(inlineSuggestionAvailable).appendCodeblock('text', code)));\n            hoverContentsElement.replaceChildren(renderedContents.element);\n        };\n        disposableStore.add(autorun(reader => {\n            var _a;\n            /** @description update hover */\n            const ghostText = (_a = part.controller.model.read(reader)) === null || _a === void 0 ? void 0 : _a.primaryGhostText.read(reader);\n            if (ghostText) {\n                const lineText = this._editor.getModel().getLineContent(ghostText.lineNumber);\n                render(ghostText.renderForScreenReader(lineText));\n            }\n            else {\n                dom.reset(hoverContentsElement);\n            }\n        }));\n        context.fragment.appendChild(markdownHoverElement);\n    }\n};\nInlineCompletionsHoverParticipant = __decorate([\n    __param(1, ILanguageService),\n    __param(2, IOpenerService),\n    __param(3, IAccessibilityService),\n    __param(4, IInstantiationService),\n    __param(5, ITelemetryService)\n], InlineCompletionsHoverParticipant);\nexport { InlineCompletionsHoverParticipant };\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 GotoDefinitionAtPositionEditorContribution_1;\nimport { createCancelablePromise } from '../../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../../base/common/errors.js';\nimport { MarkdownString } from '../../../../../base/common/htmlContent.js';\nimport { DisposableStore } from '../../../../../base/common/lifecycle.js';\nimport './goToDefinitionAtPosition.css';\nimport { EditorState } from '../../../editorState/browser/editorState.js';\nimport { registerEditorContribution } from '../../../../browser/editorExtensions.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { ILanguageService } from '../../../../common/languages/language.js';\nimport { ITextModelService } from '../../../../common/services/resolverService.js';\nimport { ClickLinkGesture } from './clickLinkGesture.js';\nimport { PeekContext } from '../../../peekView/browser/peekView.js';\nimport * as nls from '../../../../../nls.js';\nimport { IContextKeyService } from '../../../../../platform/contextkey/common/contextkey.js';\nimport { DefinitionAction } from '../goToCommands.js';\nimport { getDefinitionsAtPosition } from '../goToSymbol.js';\nimport { ILanguageFeaturesService } from '../../../../common/services/languageFeatures.js';\nimport { ModelDecorationInjectedTextOptions } from '../../../../common/model/textModel.js';\nlet GotoDefinitionAtPositionEditorContribution = GotoDefinitionAtPositionEditorContribution_1 = class GotoDefinitionAtPositionEditorContribution {\n    constructor(editor, textModelResolverService, languageService, languageFeaturesService) {\n        this.textModelResolverService = textModelResolverService;\n        this.languageService = languageService;\n        this.languageFeaturesService = languageFeaturesService;\n        this.toUnhook = new DisposableStore();\n        this.toUnhookForKeyboard = new DisposableStore();\n        this.currentWordAtPosition = null;\n        this.previousPromise = null;\n        this.editor = editor;\n        this.linkDecorations = this.editor.createDecorationsCollection();\n        const linkGesture = new ClickLinkGesture(editor);\n        this.toUnhook.add(linkGesture);\n        this.toUnhook.add(linkGesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, keyboardEvent]) => {\n            this.startFindDefinitionFromMouse(mouseEvent, keyboardEvent !== null && keyboardEvent !== void 0 ? keyboardEvent : undefined);\n        }));\n        this.toUnhook.add(linkGesture.onExecute((mouseEvent) => {\n            if (this.isEnabled(mouseEvent)) {\n                this.gotoDefinition(mouseEvent.target.position, mouseEvent.hasSideBySideModifier)\n                    .catch((error) => {\n                    onUnexpectedError(error);\n                })\n                    .finally(() => {\n                    this.removeLinkDecorations();\n                });\n            }\n        }));\n        this.toUnhook.add(linkGesture.onCancel(() => {\n            this.removeLinkDecorations();\n            this.currentWordAtPosition = null;\n        }));\n    }\n    static get(editor) {\n        return editor.getContribution(GotoDefinitionAtPositionEditorContribution_1.ID);\n    }\n    async startFindDefinitionFromCursor(position) {\n        // For issue: https://github.com/microsoft/vscode/issues/46257\n        // equivalent to mouse move with meta/ctrl key\n        // First find the definition and add decorations\n        // to the editor to be shown with the content hover widget\n        await this.startFindDefinition(position);\n        // Add listeners for editor cursor move and key down events\n        // Dismiss the \"extended\" editor decorations when the user hides\n        // the hover widget. There is no event for the widget itself so these\n        // serve as a best effort. After removing the link decorations, the hover\n        // widget is clean and will only show declarations per next request.\n        this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(() => {\n            this.currentWordAtPosition = null;\n            this.removeLinkDecorations();\n            this.toUnhookForKeyboard.clear();\n        }));\n        this.toUnhookForKeyboard.add(this.editor.onKeyDown((e) => {\n            if (e) {\n                this.currentWordAtPosition = null;\n                this.removeLinkDecorations();\n                this.toUnhookForKeyboard.clear();\n            }\n        }));\n    }\n    startFindDefinitionFromMouse(mouseEvent, withKey) {\n        // check if we are active and on a content widget\n        if (mouseEvent.target.type === 9 /* MouseTargetType.CONTENT_WIDGET */ && this.linkDecorations.length > 0) {\n            return;\n        }\n        if (!this.editor.hasModel() || !this.isEnabled(mouseEvent, withKey)) {\n            this.currentWordAtPosition = null;\n            this.removeLinkDecorations();\n            return;\n        }\n        const position = mouseEvent.target.position;\n        this.startFindDefinition(position);\n    }\n    async startFindDefinition(position) {\n        var _a;\n        // Dispose listeners for updating decorations when using keyboard to show definition hover\n        this.toUnhookForKeyboard.clear();\n        // Find word at mouse position\n        const word = position ? (_a = this.editor.getModel()) === null || _a === void 0 ? void 0 : _a.getWordAtPosition(position) : null;\n        if (!word) {\n            this.currentWordAtPosition = null;\n            this.removeLinkDecorations();\n            return;\n        }\n        // Return early if word at position is still the same\n        if (this.currentWordAtPosition && this.currentWordAtPosition.startColumn === word.startColumn && this.currentWordAtPosition.endColumn === word.endColumn && this.currentWordAtPosition.word === word.word) {\n            return;\n        }\n        this.currentWordAtPosition = word;\n        // Find definition and decorate word if found\n        const state = new EditorState(this.editor, 4 /* CodeEditorStateFlag.Position */ | 1 /* CodeEditorStateFlag.Value */ | 2 /* CodeEditorStateFlag.Selection */ | 8 /* CodeEditorStateFlag.Scroll */);\n        if (this.previousPromise) {\n            this.previousPromise.cancel();\n            this.previousPromise = null;\n        }\n        this.previousPromise = createCancelablePromise(token => this.findDefinition(position, token));\n        let results;\n        try {\n            results = await this.previousPromise;\n        }\n        catch (error) {\n            onUnexpectedError(error);\n            return;\n        }\n        if (!results || !results.length || !state.validate(this.editor)) {\n            this.removeLinkDecorations();\n            return;\n        }\n        const linkRange = results[0].originSelectionRange\n            ? Range.lift(results[0].originSelectionRange)\n            : new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\n        // Multiple results\n        if (results.length > 1) {\n            let combinedRange = linkRange;\n            for (const { originSelectionRange } of results) {\n                if (originSelectionRange) {\n                    combinedRange = Range.plusRange(combinedRange, originSelectionRange);\n                }\n            }\n            this.addDecoration(combinedRange, new MarkdownString().appendText(nls.localize('multipleResults', \"Click to show {0} definitions.\", results.length)));\n        }\n        else {\n            // Single result\n            const result = results[0];\n            if (!result.uri) {\n                return;\n            }\n            this.textModelResolverService.createModelReference(result.uri).then(ref => {\n                if (!ref.object || !ref.object.textEditorModel) {\n                    ref.dispose();\n                    return;\n                }\n                const { object: { textEditorModel } } = ref;\n                const { startLineNumber } = result.range;\n                if (startLineNumber < 1 || startLineNumber > textEditorModel.getLineCount()) {\n                    // invalid range\n                    ref.dispose();\n                    return;\n                }\n                const previewValue = this.getPreviewValue(textEditorModel, startLineNumber, result);\n                const languageId = this.languageService.guessLanguageIdByFilepathOrFirstLine(textEditorModel.uri);\n                this.addDecoration(linkRange, previewValue ? new MarkdownString().appendCodeblock(languageId ? languageId : '', previewValue) : undefined);\n                ref.dispose();\n            });\n        }\n    }\n    getPreviewValue(textEditorModel, startLineNumber, result) {\n        let rangeToUse = result.range;\n        const numberOfLinesInRange = rangeToUse.endLineNumber - rangeToUse.startLineNumber;\n        if (numberOfLinesInRange >= GotoDefinitionAtPositionEditorContribution_1.MAX_SOURCE_PREVIEW_LINES) {\n            rangeToUse = this.getPreviewRangeBasedOnIndentation(textEditorModel, startLineNumber);\n        }\n        const previewValue = this.stripIndentationFromPreviewRange(textEditorModel, startLineNumber, rangeToUse);\n        return previewValue;\n    }\n    stripIndentationFromPreviewRange(textEditorModel, startLineNumber, previewRange) {\n        const startIndent = textEditorModel.getLineFirstNonWhitespaceColumn(startLineNumber);\n        let minIndent = startIndent;\n        for (let endLineNumber = startLineNumber + 1; endLineNumber < previewRange.endLineNumber; endLineNumber++) {\n            const endIndent = textEditorModel.getLineFirstNonWhitespaceColumn(endLineNumber);\n            minIndent = Math.min(minIndent, endIndent);\n        }\n        const previewValue = textEditorModel.getValueInRange(previewRange).replace(new RegExp(`^\\\\s{${minIndent - 1}}`, 'gm'), '').trim();\n        return previewValue;\n    }\n    getPreviewRangeBasedOnIndentation(textEditorModel, startLineNumber) {\n        const startIndent = textEditorModel.getLineFirstNonWhitespaceColumn(startLineNumber);\n        const maxLineNumber = Math.min(textEditorModel.getLineCount(), startLineNumber + GotoDefinitionAtPositionEditorContribution_1.MAX_SOURCE_PREVIEW_LINES);\n        let endLineNumber = startLineNumber + 1;\n        for (; endLineNumber < maxLineNumber; endLineNumber++) {\n            const endIndent = textEditorModel.getLineFirstNonWhitespaceColumn(endLineNumber);\n            if (startIndent === endIndent) {\n                break;\n            }\n        }\n        return new Range(startLineNumber, 1, endLineNumber + 1, 1);\n    }\n    addDecoration(range, hoverMessage) {\n        const newDecorations = {\n            range: range,\n            options: {\n                description: 'goto-definition-link',\n                inlineClassName: 'goto-definition-link',\n                hoverMessage\n            }\n        };\n        this.linkDecorations.set([newDecorations]);\n    }\n    removeLinkDecorations() {\n        this.linkDecorations.clear();\n    }\n    isEnabled(mouseEvent, withKey) {\n        var _a;\n        return this.editor.hasModel()\n            && mouseEvent.isLeftClick\n            && mouseEvent.isNoneOrSingleMouseDown\n            && mouseEvent.target.type === 6 /* MouseTargetType.CONTENT_TEXT */\n            && !(((_a = mouseEvent.target.detail.injectedText) === null || _a === void 0 ? void 0 : _a.options) instanceof ModelDecorationInjectedTextOptions)\n            && (mouseEvent.hasTriggerModifier || (withKey ? withKey.keyCodeIsTriggerKey : false))\n            && this.languageFeaturesService.definitionProvider.has(this.editor.getModel());\n    }\n    findDefinition(position, token) {\n        const model = this.editor.getModel();\n        if (!model) {\n            return Promise.resolve(null);\n        }\n        return getDefinitionsAtPosition(this.languageFeaturesService.definitionProvider, model, position, token);\n    }\n    gotoDefinition(position, openToSide) {\n        this.editor.setPosition(position);\n        return this.editor.invokeWithinContext((accessor) => {\n            const canPeek = !openToSide && this.editor.getOption(88 /* EditorOption.definitionLinkOpensInPeek */) && !this.isInPeekEditor(accessor);\n            const action = new DefinitionAction({ openToSide, openInPeek: canPeek, muteMessage: true }, { title: { value: '', original: '' }, id: '', precondition: undefined });\n            return action.run(accessor);\n        });\n    }\n    isInPeekEditor(accessor) {\n        const contextKeyService = accessor.get(IContextKeyService);\n        return PeekContext.inPeekEditor.getValue(contextKeyService);\n    }\n    dispose() {\n        this.toUnhook.dispose();\n        this.toUnhookForKeyboard.dispose();\n    }\n};\nGotoDefinitionAtPositionEditorContribution.ID = 'editor.contrib.gotodefinitionatposition';\nGotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES = 8;\nGotoDefinitionAtPositionEditorContribution = GotoDefinitionAtPositionEditorContribution_1 = __decorate([\n    __param(1, ITextModelService),\n    __param(2, ILanguageService),\n    __param(3, ILanguageFeaturesService)\n], GotoDefinitionAtPositionEditorContribution);\nexport { GotoDefinitionAtPositionEditorContribution };\nregisterEditorContribution(GotoDefinitionAtPositionEditorContribution.ID, GotoDefinitionAtPositionEditorContribution, 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 MarkerController_1;\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.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 { IMarkerNavigationService } from './markerNavigationService.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { MarkerNavigationWidget } from './gotoErrorWidget.js';\nlet MarkerController = MarkerController_1 = class MarkerController {\n    static get(editor) {\n        return editor.getContribution(MarkerController_1.ID);\n    }\n    constructor(editor, _markerNavigationService, _contextKeyService, _editorService, _instantiationService) {\n        this._markerNavigationService = _markerNavigationService;\n        this._contextKeyService = _contextKeyService;\n        this._editorService = _editorService;\n        this._instantiationService = _instantiationService;\n        this._sessionDispoables = new DisposableStore();\n        this._editor = editor;\n        this._widgetVisible = CONTEXT_MARKERS_NAVIGATION_VISIBLE.bindTo(this._contextKeyService);\n    }\n    dispose() {\n        this._cleanUp();\n        this._sessionDispoables.dispose();\n    }\n    _cleanUp() {\n        this._widgetVisible.reset();\n        this._sessionDispoables.clear();\n        this._widget = undefined;\n        this._model = undefined;\n    }\n    _getOrCreateModel(uri) {\n        if (this._model && this._model.matches(uri)) {\n            return this._model;\n        }\n        let reusePosition = false;\n        if (this._model) {\n            reusePosition = true;\n            this._cleanUp();\n        }\n        this._model = this._markerNavigationService.getMarkerList(uri);\n        if (reusePosition) {\n            this._model.move(true, this._editor.getModel(), this._editor.getPosition());\n        }\n        this._widget = this._instantiationService.createInstance(MarkerNavigationWidget, this._editor);\n        this._widget.onDidClose(() => this.close(), this, this._sessionDispoables);\n        this._widgetVisible.set(true);\n        this._sessionDispoables.add(this._model);\n        this._sessionDispoables.add(this._widget);\n        // follow cursor\n        this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(e => {\n            var _a, _b, _c;\n            if (!((_a = this._model) === null || _a === void 0 ? void 0 : _a.selected) || !Range.containsPosition((_b = this._model) === null || _b === void 0 ? void 0 : _b.selected.marker, e.position)) {\n                (_c = this._model) === null || _c === void 0 ? void 0 : _c.resetIndex();\n            }\n        }));\n        // update markers\n        this._sessionDispoables.add(this._model.onDidChange(() => {\n            if (!this._widget || !this._widget.position || !this._model) {\n                return;\n            }\n            const info = this._model.find(this._editor.getModel().uri, this._widget.position);\n            if (info) {\n                this._widget.updateMarker(info.marker);\n            }\n            else {\n                this._widget.showStale();\n            }\n        }));\n        // open related\n        this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(related => {\n            this._editorService.openCodeEditor({\n                resource: related.resource,\n                options: { pinned: true, revealIfOpened: true, selection: Range.lift(related).collapseToStart() }\n            }, this._editor);\n            this.close(false);\n        }));\n        this._sessionDispoables.add(this._editor.onDidChangeModel(() => this._cleanUp()));\n        return this._model;\n    }\n    close(focusEditor = true) {\n        this._cleanUp();\n        if (focusEditor) {\n            this._editor.focus();\n        }\n    }\n    showAtMarker(marker) {\n        if (this._editor.hasModel()) {\n            const model = this._getOrCreateModel(this._editor.getModel().uri);\n            model.resetIndex();\n            model.move(true, this._editor.getModel(), new Position(marker.startLineNumber, marker.startColumn));\n            if (model.selected) {\n                this._widget.showAtMarker(model.selected.marker, model.selected.index, model.selected.total);\n            }\n        }\n    }\n    async nagivate(next, multiFile) {\n        var _a, _b;\n        if (this._editor.hasModel()) {\n            const model = this._getOrCreateModel(multiFile ? undefined : this._editor.getModel().uri);\n            model.move(next, this._editor.getModel(), this._editor.getPosition());\n            if (!model.selected) {\n                return;\n            }\n            if (model.selected.marker.resource.toString() !== this._editor.getModel().uri.toString()) {\n                // show in different editor\n                this._cleanUp();\n                const otherEditor = await this._editorService.openCodeEditor({\n                    resource: model.selected.marker.resource,\n                    options: { pinned: false, revealIfOpened: true, selectionRevealType: 2 /* TextEditorSelectionRevealType.NearTop */, selection: model.selected.marker }\n                }, this._editor);\n                if (otherEditor) {\n                    (_a = MarkerController_1.get(otherEditor)) === null || _a === void 0 ? void 0 : _a.close();\n                    (_b = MarkerController_1.get(otherEditor)) === null || _b === void 0 ? void 0 : _b.nagivate(next, multiFile);\n                }\n            }\n            else {\n                // show in this editor\n                this._widget.showAtMarker(model.selected.marker, model.selected.index, model.selected.total);\n            }\n        }\n    }\n};\nMarkerController.ID = 'editor.contrib.markerController';\nMarkerController = MarkerController_1 = __decorate([\n    __param(1, IMarkerNavigationService),\n    __param(2, IContextKeyService),\n    __param(3, ICodeEditorService),\n    __param(4, IInstantiationService)\n], MarkerController);\nexport { MarkerController };\nclass MarkerNavigationAction extends EditorAction {\n    constructor(_next, _multiFile, opts) {\n        super(opts);\n        this._next = _next;\n        this._multiFile = _multiFile;\n    }\n    async run(_accessor, editor) {\n        var _a;\n        if (editor.hasModel()) {\n            (_a = MarkerController.get(editor)) === null || _a === void 0 ? void 0 : _a.nagivate(this._next, this._multiFile);\n        }\n    }\n}\nexport class NextMarkerAction extends MarkerNavigationAction {\n    constructor() {\n        super(true, false, {\n            id: NextMarkerAction.ID,\n            label: NextMarkerAction.LABEL,\n            alias: 'Go to Next Problem (Error, Warning, Info)',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.focus,\n                primary: 512 /* KeyMod.Alt */ | 66 /* KeyCode.F8 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MarkerNavigationWidget.TitleMenu,\n                title: NextMarkerAction.LABEL,\n                icon: registerIcon('marker-navigation-next', Codicon.arrowDown, nls.localize('nextMarkerIcon', 'Icon for goto next marker.')),\n                group: 'navigation',\n                order: 1\n            }\n        });\n    }\n}\nNextMarkerAction.ID = 'editor.action.marker.next';\nNextMarkerAction.LABEL = nls.localize('markerAction.next.label', \"Go to Next Problem (Error, Warning, Info)\");\nclass PrevMarkerAction extends MarkerNavigationAction {\n    constructor() {\n        super(false, false, {\n            id: PrevMarkerAction.ID,\n            label: PrevMarkerAction.LABEL,\n            alias: 'Go to Previous Problem (Error, Warning, Info)',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.focus,\n                primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 66 /* KeyCode.F8 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MarkerNavigationWidget.TitleMenu,\n                title: PrevMarkerAction.LABEL,\n                icon: registerIcon('marker-navigation-previous', Codicon.arrowUp, nls.localize('previousMarkerIcon', 'Icon for goto previous marker.')),\n                group: 'navigation',\n                order: 2\n            }\n        });\n    }\n}\nPrevMarkerAction.ID = 'editor.action.marker.prev';\nPrevMarkerAction.LABEL = nls.localize('markerAction.previous.label', \"Go to Previous Problem (Error, Warning, Info)\");\nclass NextMarkerInFilesAction extends MarkerNavigationAction {\n    constructor() {\n        super(true, true, {\n            id: 'editor.action.marker.nextInFiles',\n            label: nls.localize('markerAction.nextInFiles.label', \"Go to Next Problem in Files (Error, Warning, Info)\"),\n            alias: 'Go to Next Problem in Files (Error, Warning, Info)',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.focus,\n                primary: 66 /* KeyCode.F8 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MenuId.MenubarGoMenu,\n                title: nls.localize({ key: 'miGotoNextProblem', comment: ['&& denotes a mnemonic'] }, \"Next &&Problem\"),\n                group: '6_problem_nav',\n                order: 1\n            }\n        });\n    }\n}\nclass PrevMarkerInFilesAction extends MarkerNavigationAction {\n    constructor() {\n        super(false, true, {\n            id: 'editor.action.marker.prevInFiles',\n            label: nls.localize('markerAction.previousInFiles.label', \"Go to Previous Problem in Files (Error, Warning, Info)\"),\n            alias: 'Go to Previous Problem in Files (Error, Warning, Info)',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.focus,\n                primary: 1024 /* KeyMod.Shift */ | 66 /* KeyCode.F8 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MenuId.MenubarGoMenu,\n                title: nls.localize({ key: 'miGotoPreviousProblem', comment: ['&& denotes a mnemonic'] }, \"Previous &&Problem\"),\n                group: '6_problem_nav',\n                order: 2\n            }\n        });\n    }\n}\nregisterEditorContribution(MarkerController.ID, MarkerController, 4 /* EditorContributionInstantiation.Lazy */);\nregisterEditorAction(NextMarkerAction);\nregisterEditorAction(PrevMarkerAction);\nregisterEditorAction(NextMarkerInFilesAction);\nregisterEditorAction(PrevMarkerInFilesAction);\nconst CONTEXT_MARKERS_NAVIGATION_VISIBLE = new RawContextKey('markersNavigationVisible', false);\nconst MarkerCommand = EditorCommand.bindToContribution(MarkerController.get);\nregisterEditorCommand(new MarkerCommand({\n    id: 'closeMarkersNavigation',\n    precondition: CONTEXT_MARKERS_NAVIGATION_VISIBLE,\n    handler: x => x.close(),\n    kbOpts: {\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 50,\n        kbExpr: EditorContextKeys.focus,\n        primary: 9 /* KeyCode.Escape */,\n        secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\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 { binarySearch } from '../../../../base/common/arrays.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../../base/common/linkedList.js';\nimport { compare } from '../../../../base/common/strings.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Range } from '../../../common/core/range.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IMarkerService, MarkerSeverity } from '../../../../platform/markers/common/markers.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nexport class MarkerCoordinate {\n    constructor(marker, index, total) {\n        this.marker = marker;\n        this.index = index;\n        this.total = total;\n    }\n}\nlet MarkerList = class MarkerList {\n    constructor(resourceFilter, _markerService, _configService) {\n        this._markerService = _markerService;\n        this._configService = _configService;\n        this._onDidChange = new Emitter();\n        this.onDidChange = this._onDidChange.event;\n        this._dispoables = new DisposableStore();\n        this._markers = [];\n        this._nextIdx = -1;\n        if (URI.isUri(resourceFilter)) {\n            this._resourceFilter = uri => uri.toString() === resourceFilter.toString();\n        }\n        else if (resourceFilter) {\n            this._resourceFilter = resourceFilter;\n        }\n        const compareOrder = this._configService.getValue('problems.sortOrder');\n        const compareMarker = (a, b) => {\n            let res = compare(a.resource.toString(), b.resource.toString());\n            if (res === 0) {\n                if (compareOrder === 'position') {\n                    res = Range.compareRangesUsingStarts(a, b) || MarkerSeverity.compare(a.severity, b.severity);\n                }\n                else {\n                    res = MarkerSeverity.compare(a.severity, b.severity) || Range.compareRangesUsingStarts(a, b);\n                }\n            }\n            return res;\n        };\n        const updateMarker = () => {\n            this._markers = this._markerService.read({\n                resource: URI.isUri(resourceFilter) ? resourceFilter : undefined,\n                severities: MarkerSeverity.Error | MarkerSeverity.Warning | MarkerSeverity.Info\n            });\n            if (typeof resourceFilter === 'function') {\n                this._markers = this._markers.filter(m => this._resourceFilter(m.resource));\n            }\n            this._markers.sort(compareMarker);\n        };\n        updateMarker();\n        this._dispoables.add(_markerService.onMarkerChanged(uris => {\n            if (!this._resourceFilter || uris.some(uri => this._resourceFilter(uri))) {\n                updateMarker();\n                this._nextIdx = -1;\n                this._onDidChange.fire();\n            }\n        }));\n    }\n    dispose() {\n        this._dispoables.dispose();\n        this._onDidChange.dispose();\n    }\n    matches(uri) {\n        if (!this._resourceFilter && !uri) {\n            return true;\n        }\n        if (!this._resourceFilter || !uri) {\n            return false;\n        }\n        return this._resourceFilter(uri);\n    }\n    get selected() {\n        const marker = this._markers[this._nextIdx];\n        return marker && new MarkerCoordinate(marker, this._nextIdx + 1, this._markers.length);\n    }\n    _initIdx(model, position, fwd) {\n        let found = false;\n        let idx = this._markers.findIndex(marker => marker.resource.toString() === model.uri.toString());\n        if (idx < 0) {\n            idx = binarySearch(this._markers, { resource: model.uri }, (a, b) => compare(a.resource.toString(), b.resource.toString()));\n            if (idx < 0) {\n                idx = ~idx;\n            }\n        }\n        for (let i = idx; i < this._markers.length; i++) {\n            let range = Range.lift(this._markers[i]);\n            if (range.isEmpty()) {\n                const word = model.getWordAtPosition(range.getStartPosition());\n                if (word) {\n                    range = new Range(range.startLineNumber, word.startColumn, range.startLineNumber, word.endColumn);\n                }\n            }\n            if (position && (range.containsPosition(position) || position.isBeforeOrEqual(range.getStartPosition()))) {\n                this._nextIdx = i;\n                found = true;\n                break;\n            }\n            if (this._markers[i].resource.toString() !== model.uri.toString()) {\n                break;\n            }\n        }\n        if (!found) {\n            // after the last change\n            this._nextIdx = fwd ? 0 : this._markers.length - 1;\n        }\n        if (this._nextIdx < 0) {\n            this._nextIdx = this._markers.length - 1;\n        }\n    }\n    resetIndex() {\n        this._nextIdx = -1;\n    }\n    move(fwd, model, position) {\n        if (this._markers.length === 0) {\n            return false;\n        }\n        const oldIdx = this._nextIdx;\n        if (this._nextIdx === -1) {\n            this._initIdx(model, position, fwd);\n        }\n        else if (fwd) {\n            this._nextIdx = (this._nextIdx + 1) % this._markers.length;\n        }\n        else if (!fwd) {\n            this._nextIdx = (this._nextIdx - 1 + this._markers.length) % this._markers.length;\n        }\n        if (oldIdx !== this._nextIdx) {\n            return true;\n        }\n        return false;\n    }\n    find(uri, position) {\n        let idx = this._markers.findIndex(marker => marker.resource.toString() === uri.toString());\n        if (idx < 0) {\n            return undefined;\n        }\n        for (; idx < this._markers.length; idx++) {\n            if (Range.containsPosition(this._markers[idx], position)) {\n                return new MarkerCoordinate(this._markers[idx], idx + 1, this._markers.length);\n            }\n        }\n        return undefined;\n    }\n};\nMarkerList = __decorate([\n    __param(1, IMarkerService),\n    __param(2, IConfigurationService)\n], MarkerList);\nexport { MarkerList };\nexport const IMarkerNavigationService = createDecorator('IMarkerNavigationService');\nlet MarkerNavigationService = class MarkerNavigationService {\n    constructor(_markerService, _configService) {\n        this._markerService = _markerService;\n        this._configService = _configService;\n        this._provider = new LinkedList();\n    }\n    getMarkerList(resource) {\n        for (const provider of this._provider) {\n            const result = provider.getMarkerList(resource);\n            if (result) {\n                return result;\n            }\n        }\n        // default\n        return new MarkerList(resource, this._markerService, this._configService);\n    }\n};\nMarkerNavigationService = __decorate([\n    __param(0, IMarkerService),\n    __param(1, IConfigurationService)\n], MarkerNavigationService);\nregisterSingleton(IMarkerNavigationService, MarkerNavigationService, 1 /* InstantiationType.Delayed */);\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 MarkerNavigationWidget_1;\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { DisposableStore, dispose } from '../../../../base/common/lifecycle.js';\nimport { basename } from '../../../../base/common/resources.js';\nimport { splitLines } from '../../../../base/common/strings.js';\nimport './media/gotoErrorWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { peekViewTitleForeground, peekViewTitleInfoForeground, PeekViewWidget } from '../../peekView/browser/peekView.js';\nimport * as nls from '../../../../nls.js';\nimport { createAndFillInActionBarActions } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { IMenuService, MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILabelService } from '../../../../platform/label/common/label.js';\nimport { MarkerSeverity } from '../../../../platform/markers/common/markers.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { SeverityIcon } from '../../../../platform/severityIcon/browser/severityIcon.js';\nimport { contrastBorder, editorBackground, editorErrorBorder, editorErrorForeground, editorInfoBorder, editorInfoForeground, editorWarningBorder, editorWarningForeground, oneOf, registerColor, transparent } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nclass MessageWidget {\n    constructor(parent, editor, onRelatedInformation, _openerService, _labelService) {\n        this._openerService = _openerService;\n        this._labelService = _labelService;\n        this._lines = 0;\n        this._longestLineLength = 0;\n        this._relatedDiagnostics = new WeakMap();\n        this._disposables = new DisposableStore();\n        this._editor = editor;\n        const domNode = document.createElement('div');\n        domNode.className = 'descriptioncontainer';\n        this._messageBlock = document.createElement('div');\n        this._messageBlock.classList.add('message');\n        this._messageBlock.setAttribute('aria-live', 'assertive');\n        this._messageBlock.setAttribute('role', 'alert');\n        domNode.appendChild(this._messageBlock);\n        this._relatedBlock = document.createElement('div');\n        domNode.appendChild(this._relatedBlock);\n        this._disposables.add(dom.addStandardDisposableListener(this._relatedBlock, 'click', event => {\n            event.preventDefault();\n            const related = this._relatedDiagnostics.get(event.target);\n            if (related) {\n                onRelatedInformation(related);\n            }\n        }));\n        this._scrollable = new ScrollableElement(domNode, {\n            horizontal: 1 /* ScrollbarVisibility.Auto */,\n            vertical: 1 /* ScrollbarVisibility.Auto */,\n            useShadows: false,\n            horizontalScrollbarSize: 6,\n            verticalScrollbarSize: 6\n        });\n        parent.appendChild(this._scrollable.getDomNode());\n        this._disposables.add(this._scrollable.onScroll(e => {\n            domNode.style.left = `-${e.scrollLeft}px`;\n            domNode.style.top = `-${e.scrollTop}px`;\n        }));\n        this._disposables.add(this._scrollable);\n    }\n    dispose() {\n        dispose(this._disposables);\n    }\n    update(marker) {\n        const { source, message, relatedInformation, code } = marker;\n        let sourceAndCodeLength = ((source === null || source === void 0 ? void 0 : source.length) || 0) + '()'.length;\n        if (code) {\n            if (typeof code === 'string') {\n                sourceAndCodeLength += code.length;\n            }\n            else {\n                sourceAndCodeLength += code.value.length;\n            }\n        }\n        const lines = splitLines(message);\n        this._lines = lines.length;\n        this._longestLineLength = 0;\n        for (const line of lines) {\n            this._longestLineLength = Math.max(line.length + sourceAndCodeLength, this._longestLineLength);\n        }\n        dom.clearNode(this._messageBlock);\n        this._messageBlock.setAttribute('aria-label', this.getAriaLabel(marker));\n        this._editor.applyFontInfo(this._messageBlock);\n        let lastLineElement = this._messageBlock;\n        for (const line of lines) {\n            lastLineElement = document.createElement('div');\n            lastLineElement.innerText = line;\n            if (line === '') {\n                lastLineElement.style.height = this._messageBlock.style.lineHeight;\n            }\n            this._messageBlock.appendChild(lastLineElement);\n        }\n        if (source || code) {\n            const detailsElement = document.createElement('span');\n            detailsElement.classList.add('details');\n            lastLineElement.appendChild(detailsElement);\n            if (source) {\n                const sourceElement = document.createElement('span');\n                sourceElement.innerText = source;\n                sourceElement.classList.add('source');\n                detailsElement.appendChild(sourceElement);\n            }\n            if (code) {\n                if (typeof code === 'string') {\n                    const codeElement = document.createElement('span');\n                    codeElement.innerText = `(${code})`;\n                    codeElement.classList.add('code');\n                    detailsElement.appendChild(codeElement);\n                }\n                else {\n                    this._codeLink = dom.$('a.code-link');\n                    this._codeLink.setAttribute('href', `${code.target.toString()}`);\n                    this._codeLink.onclick = (e) => {\n                        this._openerService.open(code.target, { allowCommands: true });\n                        e.preventDefault();\n                        e.stopPropagation();\n                    };\n                    const codeElement = dom.append(this._codeLink, dom.$('span'));\n                    codeElement.innerText = code.value;\n                    detailsElement.appendChild(this._codeLink);\n                }\n            }\n        }\n        dom.clearNode(this._relatedBlock);\n        this._editor.applyFontInfo(this._relatedBlock);\n        if (isNonEmptyArray(relatedInformation)) {\n            const relatedInformationNode = this._relatedBlock.appendChild(document.createElement('div'));\n            relatedInformationNode.style.paddingTop = `${Math.floor(this._editor.getOption(67 /* EditorOption.lineHeight */) * 0.66)}px`;\n            this._lines += 1;\n            for (const related of relatedInformation) {\n                const container = document.createElement('div');\n                const relatedResource = document.createElement('a');\n                relatedResource.classList.add('filename');\n                relatedResource.innerText = `${this._labelService.getUriBasenameLabel(related.resource)}(${related.startLineNumber}, ${related.startColumn}): `;\n                relatedResource.title = this._labelService.getUriLabel(related.resource);\n                this._relatedDiagnostics.set(relatedResource, related);\n                const relatedMessage = document.createElement('span');\n                relatedMessage.innerText = related.message;\n                container.appendChild(relatedResource);\n                container.appendChild(relatedMessage);\n                this._lines += 1;\n                relatedInformationNode.appendChild(container);\n            }\n        }\n        const fontInfo = this._editor.getOption(50 /* EditorOption.fontInfo */);\n        const scrollWidth = Math.ceil(fontInfo.typicalFullwidthCharacterWidth * this._longestLineLength * 0.75);\n        const scrollHeight = fontInfo.lineHeight * this._lines;\n        this._scrollable.setScrollDimensions({ scrollWidth, scrollHeight });\n    }\n    layout(height, width) {\n        this._scrollable.getDomNode().style.height = `${height}px`;\n        this._scrollable.getDomNode().style.width = `${width}px`;\n        this._scrollable.setScrollDimensions({ width, height });\n    }\n    getHeightInLines() {\n        return Math.min(17, this._lines);\n    }\n    getAriaLabel(marker) {\n        let severityLabel = '';\n        switch (marker.severity) {\n            case MarkerSeverity.Error:\n                severityLabel = nls.localize('Error', \"Error\");\n                break;\n            case MarkerSeverity.Warning:\n                severityLabel = nls.localize('Warning', \"Warning\");\n                break;\n            case MarkerSeverity.Info:\n                severityLabel = nls.localize('Info', \"Info\");\n                break;\n            case MarkerSeverity.Hint:\n                severityLabel = nls.localize('Hint', \"Hint\");\n                break;\n        }\n        let ariaLabel = nls.localize('marker aria', \"{0} at {1}. \", severityLabel, marker.startLineNumber + ':' + marker.startColumn);\n        const model = this._editor.getModel();\n        if (model && (marker.startLineNumber <= model.getLineCount()) && (marker.startLineNumber >= 1)) {\n            const lineContent = model.getLineContent(marker.startLineNumber);\n            ariaLabel = `${lineContent}, ${ariaLabel}`;\n        }\n        return ariaLabel;\n    }\n}\nlet MarkerNavigationWidget = MarkerNavigationWidget_1 = class MarkerNavigationWidget extends PeekViewWidget {\n    constructor(editor, _themeService, _openerService, _menuService, instantiationService, _contextKeyService, _labelService) {\n        super(editor, { showArrow: true, showFrame: true, isAccessible: true, frameWidth: 1 }, instantiationService);\n        this._themeService = _themeService;\n        this._openerService = _openerService;\n        this._menuService = _menuService;\n        this._contextKeyService = _contextKeyService;\n        this._labelService = _labelService;\n        this._callOnDispose = new DisposableStore();\n        this._onDidSelectRelatedInformation = new Emitter();\n        this.onDidSelectRelatedInformation = this._onDidSelectRelatedInformation.event;\n        this._severity = MarkerSeverity.Warning;\n        this._backgroundColor = Color.white;\n        this._applyTheme(_themeService.getColorTheme());\n        this._callOnDispose.add(_themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\n        this.create();\n    }\n    _applyTheme(theme) {\n        this._backgroundColor = theme.getColor(editorMarkerNavigationBackground);\n        let colorId = editorMarkerNavigationError;\n        let headerBackground = editorMarkerNavigationErrorHeader;\n        if (this._severity === MarkerSeverity.Warning) {\n            colorId = editorMarkerNavigationWarning;\n            headerBackground = editorMarkerNavigationWarningHeader;\n        }\n        else if (this._severity === MarkerSeverity.Info) {\n            colorId = editorMarkerNavigationInfo;\n            headerBackground = editorMarkerNavigationInfoHeader;\n        }\n        const frameColor = theme.getColor(colorId);\n        const headerBg = theme.getColor(headerBackground);\n        this.style({\n            arrowColor: frameColor,\n            frameColor: frameColor,\n            headerBackgroundColor: headerBg,\n            primaryHeadingColor: theme.getColor(peekViewTitleForeground),\n            secondaryHeadingColor: theme.getColor(peekViewTitleInfoForeground)\n        }); // style() will trigger _applyStyles\n    }\n    _applyStyles() {\n        if (this._parentContainer) {\n            this._parentContainer.style.backgroundColor = this._backgroundColor ? this._backgroundColor.toString() : '';\n        }\n        super._applyStyles();\n    }\n    dispose() {\n        this._callOnDispose.dispose();\n        super.dispose();\n    }\n    _fillHead(container) {\n        super._fillHead(container);\n        this._disposables.add(this._actionbarWidget.actionRunner.onWillRun(e => this.editor.focus()));\n        const actions = [];\n        const menu = this._menuService.createMenu(MarkerNavigationWidget_1.TitleMenu, this._contextKeyService);\n        createAndFillInActionBarActions(menu, undefined, actions);\n        this._actionbarWidget.push(actions, { label: false, icon: true, index: 0 });\n        menu.dispose();\n    }\n    _fillTitleIcon(container) {\n        this._icon = dom.append(container, dom.$(''));\n    }\n    _fillBody(container) {\n        this._parentContainer = container;\n        container.classList.add('marker-widget');\n        this._parentContainer.tabIndex = 0;\n        this._parentContainer.setAttribute('role', 'tooltip');\n        this._container = document.createElement('div');\n        container.appendChild(this._container);\n        this._message = new MessageWidget(this._container, this.editor, related => this._onDidSelectRelatedInformation.fire(related), this._openerService, this._labelService);\n        this._disposables.add(this._message);\n    }\n    show() {\n        throw new Error('call showAtMarker');\n    }\n    showAtMarker(marker, markerIdx, markerCount) {\n        // update:\n        // * title\n        // * message\n        this._container.classList.remove('stale');\n        this._message.update(marker);\n        // update frame color (only applied on 'show')\n        this._severity = marker.severity;\n        this._applyTheme(this._themeService.getColorTheme());\n        // show\n        const range = Range.lift(marker);\n        const editorPosition = this.editor.getPosition();\n        const position = editorPosition && range.containsPosition(editorPosition) ? editorPosition : range.getStartPosition();\n        super.show(position, this.computeRequiredHeight());\n        const model = this.editor.getModel();\n        if (model) {\n            const detail = markerCount > 1\n                ? nls.localize('problems', \"{0} of {1} problems\", markerIdx, markerCount)\n                : nls.localize('change', \"{0} of {1} problem\", markerIdx, markerCount);\n            this.setTitle(basename(model.uri), detail);\n        }\n        this._icon.className = `codicon ${SeverityIcon.className(MarkerSeverity.toSeverity(this._severity))}`;\n        this.editor.revealPositionNearTop(position, 0 /* ScrollType.Smooth */);\n        this.editor.focus();\n    }\n    updateMarker(marker) {\n        this._container.classList.remove('stale');\n        this._message.update(marker);\n    }\n    showStale() {\n        this._container.classList.add('stale');\n        this._relayout();\n    }\n    _doLayoutBody(heightInPixel, widthInPixel) {\n        super._doLayoutBody(heightInPixel, widthInPixel);\n        this._heightInPixel = heightInPixel;\n        this._message.layout(heightInPixel, widthInPixel);\n        this._container.style.height = `${heightInPixel}px`;\n    }\n    _onWidth(widthInPixel) {\n        this._message.layout(this._heightInPixel, widthInPixel);\n    }\n    _relayout() {\n        super._relayout(this.computeRequiredHeight());\n    }\n    computeRequiredHeight() {\n        return 3 + this._message.getHeightInLines();\n    }\n};\nMarkerNavigationWidget.TitleMenu = new MenuId('gotoErrorTitleMenu');\nMarkerNavigationWidget = MarkerNavigationWidget_1 = __decorate([\n    __param(1, IThemeService),\n    __param(2, IOpenerService),\n    __param(3, IMenuService),\n    __param(4, IInstantiationService),\n    __param(5, IContextKeyService),\n    __param(6, ILabelService)\n], MarkerNavigationWidget);\nexport { MarkerNavigationWidget };\n// theming\nconst errorDefault = oneOf(editorErrorForeground, editorErrorBorder);\nconst warningDefault = oneOf(editorWarningForeground, editorWarningBorder);\nconst infoDefault = oneOf(editorInfoForeground, editorInfoBorder);\nconst editorMarkerNavigationError = registerColor('editorMarkerNavigationError.background', { dark: errorDefault, light: errorDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('editorMarkerNavigationError', 'Editor marker navigation widget error color.'));\nconst editorMarkerNavigationErrorHeader = registerColor('editorMarkerNavigationError.headerBackground', { dark: transparent(editorMarkerNavigationError, .1), light: transparent(editorMarkerNavigationError, .1), hcDark: null, hcLight: null }, nls.localize('editorMarkerNavigationErrorHeaderBackground', 'Editor marker navigation widget error heading background.'));\nconst editorMarkerNavigationWarning = registerColor('editorMarkerNavigationWarning.background', { dark: warningDefault, light: warningDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('editorMarkerNavigationWarning', 'Editor marker navigation widget warning color.'));\nconst editorMarkerNavigationWarningHeader = registerColor('editorMarkerNavigationWarning.headerBackground', { dark: transparent(editorMarkerNavigationWarning, .1), light: transparent(editorMarkerNavigationWarning, .1), hcDark: '#0C141F', hcLight: transparent(editorMarkerNavigationWarning, .2) }, nls.localize('editorMarkerNavigationWarningBackground', 'Editor marker navigation widget warning heading background.'));\nconst editorMarkerNavigationInfo = registerColor('editorMarkerNavigationInfo.background', { dark: infoDefault, light: infoDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('editorMarkerNavigationInfo', 'Editor marker navigation widget info color.'));\nconst editorMarkerNavigationInfoHeader = registerColor('editorMarkerNavigationInfo.headerBackground', { dark: transparent(editorMarkerNavigationInfo, .1), light: transparent(editorMarkerNavigationInfo, .1), hcDark: null, hcLight: null }, nls.localize('editorMarkerNavigationInfoHeaderBackground', 'Editor marker navigation widget info heading background.'));\nconst editorMarkerNavigationBackground = registerColor('editorMarkerNavigation.background', { dark: editorBackground, light: editorBackground, hcDark: editorBackground, hcLight: editorBackground }, nls.localize('editorMarkerNavigationBackground', 'Editor marker navigation widget background.'));\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport './media/severityIcon.css';\nimport { Codicon } from '../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../base/common/themables.js';\nimport Severity from '../../../base/common/severity.js';\nexport var SeverityIcon;\n(function (SeverityIcon) {\n    function className(severity) {\n        switch (severity) {\n            case Severity.Ignore:\n                return 'severity-ignore ' + ThemeIcon.asClassName(Codicon.info);\n            case Severity.Info:\n                return ThemeIcon.asClassName(Codicon.info);\n            case Severity.Warning:\n                return ThemeIcon.asClassName(Codicon.warning);\n            case Severity.Error:\n                return ThemeIcon.asClassName(Codicon.error);\n            default:\n                return '';\n        }\n    }\n    SeverityIcon.className = className;\n})(SeverityIcon || (SeverityIcon = {}));\n", "/*---------------------------------------------------------------------------------------------\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 { DECREASE_HOVER_VERBOSITY_ACTION_ID, GO_TO_BOTTOM_HOVER_ACTION_ID, GO_TO_TOP_HOVER_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID, PAGE_DOWN_HOVER_ACTION_ID, PAGE_UP_HOVER_ACTION_ID, SCROLL_DOWN_HOVER_ACTION_ID, SCROLL_LEFT_HOVER_ACTION_ID, SCROLL_RIGHT_HOVER_ACTION_ID, SCROLL_UP_HOVER_ACTION_ID, SHOW_DEFINITION_PREVIEW_HOVER_ACTION_ID, SHOW_OR_FOCUS_HOVER_ACTION_ID } from './hoverActionIds.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { EditorAction } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { GotoDefinitionAtPositionEditorContribution } from '../../gotoSymbol/browser/link/goToDefinitionAtPosition.js';\nimport { HoverController } from './hoverController.js';\nimport { HoverVerbosityAction } from '../../../common/languages.js';\nimport * as nls from '../../../../nls.js';\nimport './hover.css';\nvar HoverFocusBehavior;\n(function (HoverFocusBehavior) {\n    HoverFocusBehavior[\"NoAutoFocus\"] = \"noAutoFocus\";\n    HoverFocusBehavior[\"FocusIfVisible\"] = \"focusIfVisible\";\n    HoverFocusBehavior[\"AutoFocusImmediately\"] = \"autoFocusImmediately\";\n})(HoverFocusBehavior || (HoverFocusBehavior = {}));\nexport class ShowOrFocusHoverAction extends EditorAction {\n    constructor() {\n        super({\n            id: SHOW_OR_FOCUS_HOVER_ACTION_ID,\n            label: nls.localize({\n                key: 'showOrFocusHover',\n                comment: [\n                    'Label for action that will trigger the showing/focusing of a hover in the editor.',\n                    'If the hover is not visible, it will show the hover.',\n                    'This allows for users to show the hover without using the mouse.'\n                ]\n            }, \"Show or Focus Hover\"),\n            metadata: {\n                description: nls.localize2('showOrFocusHoverDescription', 'Show or focus the editor hover which shows documentation, references, and other content for a symbol at the current cursor position.'),\n                args: [{\n                        name: 'args',\n                        schema: {\n                            type: 'object',\n                            properties: {\n                                'focus': {\n                                    description: 'Controls if and when the hover should take focus upon being triggered by this action.',\n                                    enum: [HoverFocusBehavior.NoAutoFocus, HoverFocusBehavior.FocusIfVisible, HoverFocusBehavior.AutoFocusImmediately],\n                                    enumDescriptions: [\n                                        nls.localize('showOrFocusHover.focus.noAutoFocus', 'The hover will not automatically take focus.'),\n                                        nls.localize('showOrFocusHover.focus.focusIfVisible', 'The hover will take focus only if it is already visible.'),\n                                        nls.localize('showOrFocusHover.focus.autoFocusImmediately', 'The hover will automatically take focus when it appears.'),\n                                    ],\n                                    default: HoverFocusBehavior.FocusIfVisible,\n                                }\n                            },\n                        }\n                    }]\n            },\n            alias: 'Show or Focus Hover',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor, editor, args) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const controller = HoverController.get(editor);\n        if (!controller) {\n            return;\n        }\n        const focusArgument = args === null || args === void 0 ? void 0 : args.focus;\n        let focusOption = HoverFocusBehavior.FocusIfVisible;\n        if (Object.values(HoverFocusBehavior).includes(focusArgument)) {\n            focusOption = focusArgument;\n        }\n        else if (typeof focusArgument === 'boolean' && focusArgument) {\n            focusOption = HoverFocusBehavior.AutoFocusImmediately;\n        }\n        const showContentHover = (focus) => {\n            const position = editor.getPosition();\n            const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\n            controller.showContentHover(range, 1 /* HoverStartMode.Immediate */, 1 /* HoverStartSource.Keyboard */, focus);\n        };\n        const accessibilitySupportEnabled = editor.getOption(2 /* EditorOption.accessibilitySupport */) === 2 /* AccessibilitySupport.Enabled */;\n        if (controller.isHoverVisible) {\n            if (focusOption !== HoverFocusBehavior.NoAutoFocus) {\n                controller.focus();\n            }\n            else {\n                showContentHover(accessibilitySupportEnabled);\n            }\n        }\n        else {\n            showContentHover(accessibilitySupportEnabled || focusOption === HoverFocusBehavior.AutoFocusImmediately);\n        }\n    }\n}\nexport class ShowDefinitionPreviewHoverAction extends EditorAction {\n    constructor() {\n        super({\n            id: SHOW_DEFINITION_PREVIEW_HOVER_ACTION_ID,\n            label: nls.localize({\n                key: 'showDefinitionPreviewHover',\n                comment: [\n                    'Label for action that will trigger the showing of definition preview hover in the editor.',\n                    'This allows for users to show the definition preview hover without using the mouse.'\n                ]\n            }, \"Show Definition Preview Hover\"),\n            alias: 'Show Definition Preview Hover',\n            precondition: undefined,\n            metadata: {\n                description: nls.localize2('showDefinitionPreviewHoverDescription', 'Show the definition preview hover in the editor.'),\n            },\n        });\n    }\n    run(accessor, editor) {\n        const controller = HoverController.get(editor);\n        if (!controller) {\n            return;\n        }\n        const position = editor.getPosition();\n        if (!position) {\n            return;\n        }\n        const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\n        const goto = GotoDefinitionAtPositionEditorContribution.get(editor);\n        if (!goto) {\n            return;\n        }\n        const promise = goto.startFindDefinitionFromCursor(position);\n        promise.then(() => {\n            controller.showContentHover(range, 1 /* HoverStartMode.Immediate */, 1 /* HoverStartSource.Keyboard */, true);\n        });\n    }\n}\nexport class ScrollUpHoverAction extends EditorAction {\n    constructor() {\n        super({\n            id: SCROLL_UP_HOVER_ACTION_ID,\n            label: nls.localize({\n                key: 'scrollUpHover',\n                comment: [\n                    'Action that allows to scroll up in the hover widget with the up arrow when the hover widget is focused.'\n                ]\n            }, \"Scroll Up Hover\"),\n            alias: 'Scroll Up Hover',\n            precondition: EditorContextKeys.hoverFocused,\n            kbOpts: {\n                kbExpr: EditorContextKeys.hoverFocused,\n                primary: 16 /* KeyCode.UpArrow */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: nls.localize2('scrollUpHoverDescription', 'Scroll up the editor hover.')\n            },\n        });\n    }\n    run(accessor, editor) {\n        const controller = HoverController.get(editor);\n        if (!controller) {\n            return;\n        }\n        controller.scrollUp();\n    }\n}\nexport class ScrollDownHoverAction extends EditorAction {\n    constructor() {\n        super({\n            id: SCROLL_DOWN_HOVER_ACTION_ID,\n            label: nls.localize({\n                key: 'scrollDownHover',\n                comment: [\n                    'Action that allows to scroll down in the hover widget with the up arrow when the hover widget is focused.'\n                ]\n            }, \"Scroll Down Hover\"),\n            alias: 'Scroll Down Hover',\n            precondition: EditorContextKeys.hoverFocused,\n            kbOpts: {\n                kbExpr: EditorContextKeys.hoverFocused,\n                primary: 18 /* KeyCode.DownArrow */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: nls.localize2('scrollDownHoverDescription', 'Scroll down the editor hover.'),\n            },\n        });\n    }\n    run(accessor, editor) {\n        const controller = HoverController.get(editor);\n        if (!controller) {\n            return;\n        }\n        controller.scrollDown();\n    }\n}\nexport class ScrollLeftHoverAction extends EditorAction {\n    constructor() {\n        super({\n            id: SCROLL_LEFT_HOVER_ACTION_ID,\n            label: nls.localize({\n                key: 'scrollLeftHover',\n                comment: [\n                    'Action that allows to scroll left in the hover widget with the left arrow when the hover widget is focused.'\n                ]\n            }, \"Scroll Left Hover\"),\n            alias: 'Scroll Left Hover',\n            precondition: EditorContextKeys.hoverFocused,\n            kbOpts: {\n                kbExpr: EditorContextKeys.hoverFocused,\n                primary: 15 /* KeyCode.LeftArrow */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: nls.localize2('scrollLeftHoverDescription', 'Scroll left the editor hover.'),\n            },\n        });\n    }\n    run(accessor, editor) {\n        const controller = HoverController.get(editor);\n        if (!controller) {\n            return;\n        }\n        controller.scrollLeft();\n    }\n}\nexport class ScrollRightHoverAction extends EditorAction {\n    constructor() {\n        super({\n            id: SCROLL_RIGHT_HOVER_ACTION_ID,\n            label: nls.localize({\n                key: 'scrollRightHover',\n                comment: [\n                    'Action that allows to scroll right in the hover widget with the right arrow when the hover widget is focused.'\n                ]\n            }, \"Scroll Right Hover\"),\n            alias: 'Scroll Right Hover',\n            precondition: EditorContextKeys.hoverFocused,\n            kbOpts: {\n                kbExpr: EditorContextKeys.hoverFocused,\n                primary: 17 /* KeyCode.RightArrow */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: nls.localize2('scrollRightHoverDescription', 'Scroll right the editor hover.')\n            },\n        });\n    }\n    run(accessor, editor) {\n        const controller = HoverController.get(editor);\n        if (!controller) {\n            return;\n        }\n        controller.scrollRight();\n    }\n}\nexport class PageUpHoverAction extends EditorAction {\n    constructor() {\n        super({\n            id: PAGE_UP_HOVER_ACTION_ID,\n            label: nls.localize({\n                key: 'pageUpHover',\n                comment: [\n                    'Action that allows to page up in the hover widget with the page up command when the hover widget is focused.'\n                ]\n            }, \"Page Up Hover\"),\n            alias: 'Page Up Hover',\n            precondition: EditorContextKeys.hoverFocused,\n            kbOpts: {\n                kbExpr: EditorContextKeys.hoverFocused,\n                primary: 11 /* KeyCode.PageUp */,\n                secondary: [512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */],\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: nls.localize2('pageUpHoverDescription', 'Page up the editor hover.'),\n            },\n        });\n    }\n    run(accessor, editor) {\n        const controller = HoverController.get(editor);\n        if (!controller) {\n            return;\n        }\n        controller.pageUp();\n    }\n}\nexport class PageDownHoverAction extends EditorAction {\n    constructor() {\n        super({\n            id: PAGE_DOWN_HOVER_ACTION_ID,\n            label: nls.localize({\n                key: 'pageDownHover',\n                comment: [\n                    'Action that allows to page down in the hover widget with the page down command when the hover widget is focused.'\n                ]\n            }, \"Page Down Hover\"),\n            alias: 'Page Down Hover',\n            precondition: EditorContextKeys.hoverFocused,\n            kbOpts: {\n                kbExpr: EditorContextKeys.hoverFocused,\n                primary: 12 /* KeyCode.PageDown */,\n                secondary: [512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */],\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: nls.localize2('pageDownHoverDescription', 'Page down the editor hover.'),\n            },\n        });\n    }\n    run(accessor, editor) {\n        const controller = HoverController.get(editor);\n        if (!controller) {\n            return;\n        }\n        controller.pageDown();\n    }\n}\nexport class GoToTopHoverAction extends EditorAction {\n    constructor() {\n        super({\n            id: GO_TO_TOP_HOVER_ACTION_ID,\n            label: nls.localize({\n                key: 'goToTopHover',\n                comment: [\n                    'Action that allows to go to the top of the hover widget with the home command when the hover widget is focused.'\n                ]\n            }, \"Go To Top Hover\"),\n            alias: 'Go To Bottom Hover',\n            precondition: EditorContextKeys.hoverFocused,\n            kbOpts: {\n                kbExpr: EditorContextKeys.hoverFocused,\n                primary: 14 /* KeyCode.Home */,\n                secondary: [2048 /* KeyMod.CtrlCmd */ | 16 /* KeyCode.UpArrow */],\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: nls.localize2('goToTopHoverDescription', 'Go to the top of the editor hover.'),\n            },\n        });\n    }\n    run(accessor, editor) {\n        const controller = HoverController.get(editor);\n        if (!controller) {\n            return;\n        }\n        controller.goToTop();\n    }\n}\nexport class GoToBottomHoverAction extends EditorAction {\n    constructor() {\n        super({\n            id: GO_TO_BOTTOM_HOVER_ACTION_ID,\n            label: nls.localize({\n                key: 'goToBottomHover',\n                comment: [\n                    'Action that allows to go to the bottom in the hover widget with the end command when the hover widget is focused.'\n                ]\n            }, \"Go To Bottom Hover\"),\n            alias: 'Go To Bottom Hover',\n            precondition: EditorContextKeys.hoverFocused,\n            kbOpts: {\n                kbExpr: EditorContextKeys.hoverFocused,\n                primary: 13 /* KeyCode.End */,\n                secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */],\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: nls.localize2('goToBottomHoverDescription', 'Go to the bottom of the editor hover.')\n            },\n        });\n    }\n    run(accessor, editor) {\n        const controller = HoverController.get(editor);\n        if (!controller) {\n            return;\n        }\n        controller.goToBottom();\n    }\n}\nexport class IncreaseHoverVerbosityLevel extends EditorAction {\n    constructor() {\n        super({\n            id: INCREASE_HOVER_VERBOSITY_ACTION_ID,\n            label: nls.localize({\n                key: 'increaseHoverVerbosityLevel',\n                comment: ['Label for action that will increase the hover verbosity level.']\n            }, \"Increase Hover Verbosity Level\"),\n            alias: 'Increase Hover Verbosity Level',\n            precondition: EditorContextKeys.hoverFocused\n        });\n    }\n    run(accessor, editor) {\n        var _a;\n        (_a = HoverController.get(editor)) === null || _a === void 0 ? void 0 : _a.updateFocusedMarkdownHoverVerbosityLevel(HoverVerbosityAction.Increase);\n    }\n}\nexport class DecreaseHoverVerbosityLevel extends EditorAction {\n    constructor() {\n        super({\n            id: DECREASE_HOVER_VERBOSITY_ACTION_ID,\n            label: nls.localize({\n                key: 'decreaseHoverVerbosityLevel',\n                comment: ['Label for action that will decrease the hover verbosity level.']\n            }, \"Decrease Hover Verbosity Level\"),\n            alias: 'Decrease Hover Verbosity Level',\n            precondition: EditorContextKeys.hoverFocused\n        });\n    }\n    run(accessor, editor, args) {\n        var _a;\n        (_a = HoverController.get(editor)) === null || _a === void 0 ? void 0 : _a.updateFocusedMarkdownHoverVerbosityLevel(HoverVerbosityAction.Decrease);\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 { DecreaseHoverVerbosityLevel, GoToBottomHoverAction, GoToTopHoverAction, IncreaseHoverVerbosityLevel, PageDownHoverAction, PageUpHoverAction, ScrollDownHoverAction, ScrollLeftHoverAction, ScrollRightHoverAction, ScrollUpHoverAction, ShowDefinitionPreviewHoverAction, ShowOrFocusHoverAction } from './hoverActions.js';\nimport { registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { editorHoverBorder } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { HoverParticipantRegistry } from './hoverTypes.js';\nimport { MarkdownHoverParticipant } from './markdownHoverParticipant.js';\nimport { MarkerHoverParticipant } from './markerHoverParticipant.js';\nimport { HoverController } from './hoverController.js';\nimport './hover.css';\nregisterEditorContribution(HoverController.ID, HoverController, 2 /* EditorContributionInstantiation.BeforeFirstInteraction */);\nregisterEditorAction(ShowOrFocusHoverAction);\nregisterEditorAction(ShowDefinitionPreviewHoverAction);\nregisterEditorAction(ScrollUpHoverAction);\nregisterEditorAction(ScrollDownHoverAction);\nregisterEditorAction(ScrollLeftHoverAction);\nregisterEditorAction(ScrollRightHoverAction);\nregisterEditorAction(PageUpHoverAction);\nregisterEditorAction(PageDownHoverAction);\nregisterEditorAction(GoToTopHoverAction);\nregisterEditorAction(GoToBottomHoverAction);\nregisterEditorAction(IncreaseHoverVerbosityLevel);\nregisterEditorAction(DecreaseHoverVerbosityLevel);\nHoverParticipantRegistry.register(MarkdownHoverParticipant);\nHoverParticipantRegistry.register(MarkerHoverParticipant);\n// theming\nregisterThemingParticipant((theme, collector) => {\n    const hoverBorder = theme.getColor(editorHoverBorder);\n    if (hoverBorder) {\n        collector.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${hoverBorder.transparent(0.5)}; }`);\n        collector.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${hoverBorder.transparent(0.5)}; }`);\n        collector.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${hoverBorder.transparent(0.5)}; }`);\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 { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { createCancelablePromise, disposableTimeout } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { basename } from '../../../../base/common/resources.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IMarkerDecorationsService } from '../../../common/services/markerDecorations.js';\nimport { getCodeActions, quickFixCommandId } from '../../codeAction/browser/codeAction.js';\nimport { CodeActionController } from '../../codeAction/browser/codeActionController.js';\nimport { CodeActionKind, CodeActionTriggerSource } from '../../codeAction/common/types.js';\nimport { MarkerController, NextMarkerAction } from '../../gotoError/browser/gotoError.js';\nimport * as nls from '../../../../nls.js';\nimport { IMarkerData, MarkerSeverity } from '../../../../platform/markers/common/markers.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { Progress } from '../../../../platform/progress/common/progress.js';\nconst $ = dom.$;\nexport class MarkerHover {\n    constructor(owner, range, marker) {\n        this.owner = owner;\n        this.range = range;\n        this.marker = marker;\n    }\n    isValidForHoverAnchor(anchor) {\n        return (anchor.type === 1 /* HoverAnchorType.Range */\n            && this.range.startColumn <= anchor.range.startColumn\n            && this.range.endColumn >= anchor.range.endColumn);\n    }\n}\nconst markerCodeActionTrigger = {\n    type: 1 /* CodeActionTriggerType.Invoke */,\n    filter: { include: CodeActionKind.QuickFix },\n    triggerAction: CodeActionTriggerSource.QuickFixHover\n};\nlet MarkerHoverParticipant = class MarkerHoverParticipant {\n    constructor(_editor, _markerDecorationsService, _openerService, _languageFeaturesService) {\n        this._editor = _editor;\n        this._markerDecorationsService = _markerDecorationsService;\n        this._openerService = _openerService;\n        this._languageFeaturesService = _languageFeaturesService;\n        this.hoverOrdinal = 1;\n        this.recentMarkerCodeActionsInfo = undefined;\n    }\n    computeSync(anchor, lineDecorations) {\n        if (!this._editor.hasModel() || anchor.type !== 1 /* HoverAnchorType.Range */ && !anchor.supportsMarkerHover) {\n            return [];\n        }\n        const model = this._editor.getModel();\n        const lineNumber = anchor.range.startLineNumber;\n        const maxColumn = model.getLineMaxColumn(lineNumber);\n        const result = [];\n        for (const d of lineDecorations) {\n            const startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\n            const endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\n            const marker = this._markerDecorationsService.getMarker(model.uri, d);\n            if (!marker) {\n                continue;\n            }\n            const range = new Range(anchor.range.startLineNumber, startColumn, anchor.range.startLineNumber, endColumn);\n            result.push(new MarkerHover(this, range, marker));\n        }\n        return result;\n    }\n    renderHoverParts(context, hoverParts) {\n        if (!hoverParts.length) {\n            return Disposable.None;\n        }\n        const disposables = new DisposableStore();\n        hoverParts.forEach(msg => context.fragment.appendChild(this.renderMarkerHover(msg, disposables)));\n        const markerHoverForStatusbar = hoverParts.length === 1 ? hoverParts[0] : hoverParts.sort((a, b) => MarkerSeverity.compare(a.marker.severity, b.marker.severity))[0];\n        this.renderMarkerStatusbar(context, markerHoverForStatusbar, disposables);\n        return disposables;\n    }\n    renderMarkerHover(markerHover, disposables) {\n        const hoverElement = $('div.hover-row');\n        hoverElement.tabIndex = 0;\n        const markerElement = dom.append(hoverElement, $('div.marker.hover-contents'));\n        const { source, message, code, relatedInformation } = markerHover.marker;\n        this._editor.applyFontInfo(markerElement);\n        const messageElement = dom.append(markerElement, $('span'));\n        messageElement.style.whiteSpace = 'pre-wrap';\n        messageElement.innerText = message;\n        if (source || code) {\n            // Code has link\n            if (code && typeof code !== 'string') {\n                const sourceAndCodeElement = $('span');\n                if (source) {\n                    const sourceElement = dom.append(sourceAndCodeElement, $('span'));\n                    sourceElement.innerText = source;\n                }\n                const codeLink = dom.append(sourceAndCodeElement, $('a.code-link'));\n                codeLink.setAttribute('href', code.target.toString());\n                disposables.add(dom.addDisposableListener(codeLink, 'click', (e) => {\n                    this._openerService.open(code.target, { allowCommands: true });\n                    e.preventDefault();\n                    e.stopPropagation();\n                }));\n                const codeElement = dom.append(codeLink, $('span'));\n                codeElement.innerText = code.value;\n                const detailsElement = dom.append(markerElement, sourceAndCodeElement);\n                detailsElement.style.opacity = '0.6';\n                detailsElement.style.paddingLeft = '6px';\n            }\n            else {\n                const detailsElement = dom.append(markerElement, $('span'));\n                detailsElement.style.opacity = '0.6';\n                detailsElement.style.paddingLeft = '6px';\n                detailsElement.innerText = source && code ? `${source}(${code})` : source ? source : `(${code})`;\n            }\n        }\n        if (isNonEmptyArray(relatedInformation)) {\n            for (const { message, resource, startLineNumber, startColumn } of relatedInformation) {\n                const relatedInfoContainer = dom.append(markerElement, $('div'));\n                relatedInfoContainer.style.marginTop = '8px';\n                const a = dom.append(relatedInfoContainer, $('a'));\n                a.innerText = `${basename(resource)}(${startLineNumber}, ${startColumn}): `;\n                a.style.cursor = 'pointer';\n                disposables.add(dom.addDisposableListener(a, 'click', (e) => {\n                    e.stopPropagation();\n                    e.preventDefault();\n                    if (this._openerService) {\n                        this._openerService.open(resource, {\n                            fromUserGesture: true,\n                            editorOptions: { selection: { startLineNumber, startColumn } }\n                        }).catch(onUnexpectedError);\n                    }\n                }));\n                const messageElement = dom.append(relatedInfoContainer, $('span'));\n                messageElement.innerText = message;\n                this._editor.applyFontInfo(messageElement);\n            }\n        }\n        return hoverElement;\n    }\n    renderMarkerStatusbar(context, markerHover, disposables) {\n        if (markerHover.marker.severity === MarkerSeverity.Error || markerHover.marker.severity === MarkerSeverity.Warning || markerHover.marker.severity === MarkerSeverity.Info) {\n            const markerController = MarkerController.get(this._editor);\n            if (markerController) {\n                context.statusBar.addAction({\n                    label: nls.localize('view problem', \"View Problem\"),\n                    commandId: NextMarkerAction.ID,\n                    run: () => {\n                        context.hide();\n                        markerController.showAtMarker(markerHover.marker);\n                        this._editor.focus();\n                    }\n                });\n            }\n        }\n        if (!this._editor.getOption(91 /* EditorOption.readOnly */)) {\n            const quickfixPlaceholderElement = context.statusBar.append($('div'));\n            if (this.recentMarkerCodeActionsInfo) {\n                if (IMarkerData.makeKey(this.recentMarkerCodeActionsInfo.marker) === IMarkerData.makeKey(markerHover.marker)) {\n                    if (!this.recentMarkerCodeActionsInfo.hasCodeActions) {\n                        quickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\n                    }\n                }\n                else {\n                    this.recentMarkerCodeActionsInfo = undefined;\n                }\n            }\n            const updatePlaceholderDisposable = this.recentMarkerCodeActionsInfo && !this.recentMarkerCodeActionsInfo.hasCodeActions ? Disposable.None : disposableTimeout(() => quickfixPlaceholderElement.textContent = nls.localize('checkingForQuickFixes', \"Checking for quick fixes...\"), 200, disposables);\n            if (!quickfixPlaceholderElement.textContent) {\n                // Have some content in here to avoid flickering\n                quickfixPlaceholderElement.textContent = String.fromCharCode(0xA0); // &nbsp;\n            }\n            const codeActionsPromise = this.getCodeActions(markerHover.marker);\n            disposables.add(toDisposable(() => codeActionsPromise.cancel()));\n            codeActionsPromise.then(actions => {\n                updatePlaceholderDisposable.dispose();\n                this.recentMarkerCodeActionsInfo = { marker: markerHover.marker, hasCodeActions: actions.validActions.length > 0 };\n                if (!this.recentMarkerCodeActionsInfo.hasCodeActions) {\n                    actions.dispose();\n                    quickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\n                    return;\n                }\n                quickfixPlaceholderElement.style.display = 'none';\n                let showing = false;\n                disposables.add(toDisposable(() => {\n                    if (!showing) {\n                        actions.dispose();\n                    }\n                }));\n                context.statusBar.addAction({\n                    label: nls.localize('quick fixes', \"Quick Fix...\"),\n                    commandId: quickFixCommandId,\n                    run: (target) => {\n                        showing = true;\n                        const controller = CodeActionController.get(this._editor);\n                        const elementPosition = dom.getDomNodePagePosition(target);\n                        // Hide the hover pre-emptively, otherwise the editor can close the code actions\n                        // context menu as well when using keyboard navigation\n                        context.hide();\n                        controller === null || controller === void 0 ? void 0 : controller.showCodeActions(markerCodeActionTrigger, actions, {\n                            x: elementPosition.left,\n                            y: elementPosition.top,\n                            width: elementPosition.width,\n                            height: elementPosition.height\n                        });\n                    }\n                });\n            }, onUnexpectedError);\n        }\n    }\n    getCodeActions(marker) {\n        return createCancelablePromise(cancellationToken => {\n            return getCodeActions(this._languageFeaturesService.codeActionProvider, this._editor.getModel(), new Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn), markerCodeActionTrigger, Progress.None, cancellationToken);\n        });\n    }\n};\nMarkerHoverParticipant = __decorate([\n    __param(1, IMarkerDecorationsService),\n    __param(2, IOpenerService),\n    __param(3, ILanguageFeaturesService)\n], MarkerHoverParticipant);\nexport { MarkerHoverParticipant };\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';\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 (!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 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 * 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';\nexport function getReindentEditOperations(model, languageConfigurationService, startLineNumber, endLineNumber, inheritedIndent) {\n    if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n        // Model is empty\n        return [];\n    }\n    const indentationRules = languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).indentationRules;\n    if (!indentationRules) {\n        return [];\n    }\n    endLineNumber = Math.min(endLineNumber, model.getLineCount());\n    // Skip `unIndentedLinePattern` lines\n    while (startLineNumber <= endLineNumber) {\n        if (!indentationRules.unIndentedLinePattern) {\n            break;\n        }\n        const text = model.getLineContent(startLineNumber);\n        if (!indentationRules.unIndentedLinePattern.test(text)) {\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    let globalIndent;\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 adjustedLineContent = currentLineText;\n    if (inheritedIndent !== undefined && inheritedIndent !== null) {\n        globalIndent = inheritedIndent;\n        const oldIndentation = strings.getLeadingWhitespace(currentLineText);\n        adjustedLineContent = globalIndent + currentLineText.substring(oldIndentation.length);\n        if (indentationRules.decreaseIndentPattern && indentationRules.decreaseIndentPattern.test(adjustedLineContent)) {\n            globalIndent = unshiftIndent(globalIndent);\n            adjustedLineContent = globalIndent + currentLineText.substring(oldIndentation.length);\n        }\n        if (currentLineText !== adjustedLineContent) {\n            indentEdits.push(EditOperation.replaceMove(new Selection(startLineNumber, 1, startLineNumber, oldIndentation.length + 1), normalizeIndentation(globalIndent, indentSize, insertSpaces)));\n        }\n    }\n    else {\n        globalIndent = strings.getLeadingWhitespace(currentLineText);\n    }\n    // idealIndentForNextLine doesn't equal globalIndent when there is a line matching `indentNextLinePattern`.\n    let idealIndentForNextLine = globalIndent;\n    if (indentationRules.increaseIndentPattern && indentationRules.increaseIndentPattern.test(adjustedLineContent)) {\n        idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\n        globalIndent = shiftIndent(globalIndent);\n    }\n    else if (indentationRules.indentNextLinePattern && indentationRules.indentNextLinePattern.test(adjustedLineContent)) {\n        idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\n    }\n    startLineNumber++;\n    // Calculate indentation adjustment for all following lines\n    for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\n        const text = model.getLineContent(lineNumber);\n        const oldIndentation = strings.getLeadingWhitespace(text);\n        const adjustedLineContent = idealIndentForNextLine + text.substring(oldIndentation.length);\n        if (indentationRules.decreaseIndentPattern && indentationRules.decreaseIndentPattern.test(adjustedLineContent)) {\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 (indentationRules.unIndentedLinePattern && indentationRules.unIndentedLinePattern.test(text)) {\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 (indentationRules.increaseIndentPattern && indentationRules.increaseIndentPattern.test(adjustedLineContent)) {\n            globalIndent = shiftIndent(globalIndent);\n            idealIndentForNextLine = globalIndent;\n        }\n        else if (indentationRules.indentNextLinePattern && indentationRules.indentNextLinePattern.test(adjustedLineContent)) {\n            idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\n        }\n        else {\n            idealIndentForNextLine = globalIndent;\n        }\n    }\n    return indentEdits;\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 *--------------------------------------------------------------------------------------------*/\nimport './browser/coreCommands.js';\nimport './browser/widget/codeEditor/codeEditorWidget.js';\nimport './browser/widget/diffEditor/diffEditor.contribution.js';\nimport './contrib/anchorSelect/browser/anchorSelect.js';\nimport './contrib/bracketMatching/browser/bracketMatching.js';\nimport './contrib/caretOperations/browser/caretOperations.js';\nimport './contrib/caretOperations/browser/transpose.js';\nimport './contrib/clipboard/browser/clipboard.js';\nimport './contrib/codeAction/browser/codeActionContributions.js';\nimport './contrib/codelens/browser/codelensController.js';\nimport './contrib/colorPicker/browser/colorContributions.js';\nimport './contrib/colorPicker/browser/standaloneColorPickerActions.js';\nimport './contrib/comment/browser/comment.js';\nimport './contrib/contextmenu/browser/contextmenu.js';\nimport './contrib/cursorUndo/browser/cursorUndo.js';\nimport './contrib/dnd/browser/dnd.js';\nimport './contrib/dropOrPasteInto/browser/copyPasteContribution.js';\nimport './contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js';\nimport './contrib/find/browser/findController.js';\nimport './contrib/folding/browser/folding.js';\nimport './contrib/fontZoom/browser/fontZoom.js';\nimport './contrib/format/browser/formatActions.js';\nimport './contrib/documentSymbols/browser/documentSymbols.js';\nimport './contrib/inlineCompletions/browser/inlineCompletions.contribution.js';\nimport './contrib/inlineProgress/browser/inlineProgress.js';\nimport './contrib/gotoSymbol/browser/goToCommands.js';\nimport './contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js';\nimport './contrib/gotoError/browser/gotoError.js';\nimport './contrib/hover/browser/hoverContribution.js';\nimport './contrib/indentation/browser/indentation.js';\nimport './contrib/inlayHints/browser/inlayHintsContribution.js';\nimport './contrib/inPlaceReplace/browser/inPlaceReplace.js';\nimport './contrib/lineSelection/browser/lineSelection.js';\nimport './contrib/linesOperations/browser/linesOperations.js';\nimport './contrib/linkedEditing/browser/linkedEditing.js';\nimport './contrib/links/browser/links.js';\nimport './contrib/longLinesHelper/browser/longLinesHelper.js';\nimport './contrib/multicursor/browser/multicursor.js';\nimport './contrib/inlineEdit/browser/inlineEdit.contribution.js';\nimport './contrib/parameterHints/browser/parameterHints.js';\nimport './contrib/rename/browser/rename.js';\nimport './contrib/sectionHeaders/browser/sectionHeaders.js';\nimport './contrib/semanticTokens/browser/documentSemanticTokens.js';\nimport './contrib/semanticTokens/browser/viewportSemanticTokens.js';\nimport './contrib/smartSelect/browser/smartSelect.js';\nimport './contrib/snippet/browser/snippetController2.js';\nimport './contrib/stickyScroll/browser/stickyScrollContribution.js';\nimport './contrib/suggest/browser/suggestController.js';\nimport './contrib/suggest/browser/suggestInlineCompletions.js';\nimport './contrib/tokenization/browser/tokenization.js';\nimport './contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js';\nimport './contrib/unicodeHighlighter/browser/unicodeHighlighter.js';\nimport './contrib/unusualLineTerminators/browser/unusualLineTerminators.js';\nimport './contrib/wordHighlighter/browser/wordHighlighter.js';\nimport './contrib/wordOperations/browser/wordOperations.js';\nimport './contrib/wordPartOperations/browser/wordPartOperations.js';\nimport './contrib/readOnlyMessage/browser/contribution.js';\nimport './contrib/diffEditorBreadcrumbs/browser/contribution.js';\n// Load up these strings even in VSCode, even if they are not used\n// in order to get them translated\nimport './common/standaloneStrings.js';\nimport '../base/browser/ui/codicons/codiconStyles.js'; // The codicons are defined here and must be loaded\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 { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { CursorMoveCommands } from '../../../common/cursor/cursorMoveCommands.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nexport class ExpandLineSelectionAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'expandLineSelection',\n            label: nls.localize('expandLineSelection', \"Expand Line Selection\"),\n            alias: 'Expand Line Selection',\n            precondition: undefined,\n            kbOpts: {\n                weight: 0 /* KeybindingWeight.EditorCore */,\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 42 /* KeyCode.KeyL */\n            },\n        });\n    }\n    run(_accessor, editor, args) {\n        args = args || {};\n        if (!editor.hasModel()) {\n            return;\n        }\n        const viewModel = editor._getViewModel();\n        viewModel.model.pushStackElement();\n        viewModel.setCursorStates(args.source, 3 /* CursorChangeReason.Explicit */, CursorMoveCommands.expandLineSelection(viewModel, viewModel.getCursorStates()));\n        viewModel.revealAllCursors(args.source, true);\n    }\n}\nregisterEditorAction(ExpandLineSelectionAction);\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 { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { CoreEditingCommands } from '../../../browser/coreCommands.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { ReplaceCommand, ReplaceCommandThatPreservesSelection, ReplaceCommandThatSelectsText } from '../../../common/commands/replaceCommand.js';\nimport { TrimTrailingWhitespaceCommand } from '../../../common/commands/trimTrailingWhitespaceCommand.js';\nimport { TypeOperations } from '../../../common/cursor/cursorTypeOperations.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { CopyLinesCommand } from './copyLinesCommand.js';\nimport { MoveLinesCommand } from './moveLinesCommand.js';\nimport { SortLinesCommand } from './sortLinesCommand.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n// copy lines\nclass AbstractCopyLinesAction extends EditorAction {\n    constructor(down, opts) {\n        super(opts);\n        this.down = down;\n    }\n    run(_accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const selections = editor.getSelections().map((selection, index) => ({ selection, index, ignore: false }));\n        selections.sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\n        // Remove selections that would result in copying the same line\n        let prev = selections[0];\n        for (let i = 1; i < selections.length; i++) {\n            const curr = selections[i];\n            if (prev.selection.endLineNumber === curr.selection.startLineNumber) {\n                // these two selections would copy the same line\n                if (prev.index < curr.index) {\n                    // prev wins\n                    curr.ignore = true;\n                }\n                else {\n                    // curr wins\n                    prev.ignore = true;\n                    prev = curr;\n                }\n            }\n        }\n        const commands = [];\n        for (const selection of selections) {\n            commands.push(new CopyLinesCommand(selection.selection, this.down, selection.ignore));\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, commands);\n        editor.pushUndoStop();\n    }\n}\nclass CopyLinesUpAction extends AbstractCopyLinesAction {\n    constructor() {\n        super(false, {\n            id: 'editor.action.copyLinesUpAction',\n            label: nls.localize('lines.copyUp', \"Copy Line Up\"),\n            alias: 'Copy Line Up',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 16 /* KeyCode.UpArrow */,\n                linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 16 /* KeyCode.UpArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MenuId.MenubarSelectionMenu,\n                group: '2_line',\n                title: nls.localize({ key: 'miCopyLinesUp', comment: ['&& denotes a mnemonic'] }, \"&&Copy Line Up\"),\n                order: 1\n            }\n        });\n    }\n}\nclass CopyLinesDownAction extends AbstractCopyLinesAction {\n    constructor() {\n        super(true, {\n            id: 'editor.action.copyLinesDownAction',\n            label: nls.localize('lines.copyDown', \"Copy Line Down\"),\n            alias: 'Copy Line Down',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 18 /* KeyCode.DownArrow */,\n                linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 18 /* KeyCode.DownArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MenuId.MenubarSelectionMenu,\n                group: '2_line',\n                title: nls.localize({ key: 'miCopyLinesDown', comment: ['&& denotes a mnemonic'] }, \"Co&&py Line Down\"),\n                order: 2\n            }\n        });\n    }\n}\nexport class DuplicateSelectionAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.duplicateSelection',\n            label: nls.localize('duplicateSelection', \"Duplicate Selection\"),\n            alias: 'Duplicate Selection',\n            precondition: EditorContextKeys.writable,\n            menuOpts: {\n                menuId: MenuId.MenubarSelectionMenu,\n                group: '2_line',\n                title: nls.localize({ key: 'miDuplicateSelection', comment: ['&& denotes a mnemonic'] }, \"&&Duplicate Selection\"),\n                order: 5\n            }\n        });\n    }\n    run(accessor, editor, args) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const commands = [];\n        const selections = editor.getSelections();\n        const model = editor.getModel();\n        for (const selection of selections) {\n            if (selection.isEmpty()) {\n                commands.push(new CopyLinesCommand(selection, true));\n            }\n            else {\n                const insertSelection = new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn);\n                commands.push(new ReplaceCommandThatSelectsText(insertSelection, model.getValueInRange(selection)));\n            }\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, commands);\n        editor.pushUndoStop();\n    }\n}\n// move lines\nclass AbstractMoveLinesAction extends EditorAction {\n    constructor(down, opts) {\n        super(opts);\n        this.down = down;\n    }\n    run(accessor, editor) {\n        const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n        const commands = [];\n        const selections = editor.getSelections() || [];\n        const autoIndent = editor.getOption(12 /* EditorOption.autoIndent */);\n        for (const selection of selections) {\n            commands.push(new MoveLinesCommand(selection, this.down, autoIndent, languageConfigurationService));\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, commands);\n        editor.pushUndoStop();\n    }\n}\nclass MoveLinesUpAction extends AbstractMoveLinesAction {\n    constructor() {\n        super(false, {\n            id: 'editor.action.moveLinesUpAction',\n            label: nls.localize('lines.moveUp', \"Move Line Up\"),\n            alias: 'Move Line Up',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */,\n                linux: { primary: 512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MenuId.MenubarSelectionMenu,\n                group: '2_line',\n                title: nls.localize({ key: 'miMoveLinesUp', comment: ['&& denotes a mnemonic'] }, \"Mo&&ve Line Up\"),\n                order: 3\n            }\n        });\n    }\n}\nclass MoveLinesDownAction extends AbstractMoveLinesAction {\n    constructor() {\n        super(true, {\n            id: 'editor.action.moveLinesDownAction',\n            label: nls.localize('lines.moveDown', \"Move Line Down\"),\n            alias: 'Move Line Down',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */,\n                linux: { primary: 512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MenuId.MenubarSelectionMenu,\n                group: '2_line',\n                title: nls.localize({ key: 'miMoveLinesDown', comment: ['&& denotes a mnemonic'] }, \"Move &&Line Down\"),\n                order: 4\n            }\n        });\n    }\n}\nexport class AbstractSortLinesAction extends EditorAction {\n    constructor(descending, opts) {\n        super(opts);\n        this.descending = descending;\n    }\n    run(_accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const model = editor.getModel();\n        let selections = editor.getSelections();\n        if (selections.length === 1 && selections[0].isEmpty()) {\n            // Apply to whole document.\n            selections = [new Selection(1, 1, model.getLineCount(), model.getLineMaxColumn(model.getLineCount()))];\n        }\n        for (const selection of selections) {\n            if (!SortLinesCommand.canRun(editor.getModel(), selection, this.descending)) {\n                return;\n            }\n        }\n        const commands = [];\n        for (let i = 0, len = selections.length; i < len; i++) {\n            commands[i] = new SortLinesCommand(selections[i], this.descending);\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, commands);\n        editor.pushUndoStop();\n    }\n}\nexport class SortLinesAscendingAction extends AbstractSortLinesAction {\n    constructor() {\n        super(false, {\n            id: 'editor.action.sortLinesAscending',\n            label: nls.localize('lines.sortAscending', \"Sort Lines Ascending\"),\n            alias: 'Sort Lines Ascending',\n            precondition: EditorContextKeys.writable\n        });\n    }\n}\nexport class SortLinesDescendingAction extends AbstractSortLinesAction {\n    constructor() {\n        super(true, {\n            id: 'editor.action.sortLinesDescending',\n            label: nls.localize('lines.sortDescending', \"Sort Lines Descending\"),\n            alias: 'Sort Lines Descending',\n            precondition: EditorContextKeys.writable\n        });\n    }\n}\nexport class DeleteDuplicateLinesAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.removeDuplicateLines',\n            label: nls.localize('lines.deleteDuplicates', \"Delete Duplicate Lines\"),\n            alias: 'Delete Duplicate Lines',\n            precondition: EditorContextKeys.writable\n        });\n    }\n    run(_accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const model = editor.getModel();\n        if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n            return;\n        }\n        const edits = [];\n        const endCursorState = [];\n        let linesDeleted = 0;\n        let updateSelection = true;\n        let selections = editor.getSelections();\n        if (selections.length === 1 && selections[0].isEmpty()) {\n            // Apply to whole document.\n            selections = [new Selection(1, 1, model.getLineCount(), model.getLineMaxColumn(model.getLineCount()))];\n            updateSelection = false;\n        }\n        for (const selection of selections) {\n            const uniqueLines = new Set();\n            const lines = [];\n            for (let i = selection.startLineNumber; i <= selection.endLineNumber; i++) {\n                const line = model.getLineContent(i);\n                if (uniqueLines.has(line)) {\n                    continue;\n                }\n                lines.push(line);\n                uniqueLines.add(line);\n            }\n            const selectionToReplace = new Selection(selection.startLineNumber, 1, selection.endLineNumber, model.getLineMaxColumn(selection.endLineNumber));\n            const adjustedSelectionStart = selection.startLineNumber - linesDeleted;\n            const finalSelection = new Selection(adjustedSelectionStart, 1, adjustedSelectionStart + lines.length - 1, lines[lines.length - 1].length);\n            edits.push(EditOperation.replace(selectionToReplace, lines.join('\\n')));\n            endCursorState.push(finalSelection);\n            linesDeleted += (selection.endLineNumber - selection.startLineNumber + 1) - lines.length;\n        }\n        editor.pushUndoStop();\n        editor.executeEdits(this.id, edits, updateSelection ? endCursorState : undefined);\n        editor.pushUndoStop();\n    }\n}\nexport class TrimTrailingWhitespaceAction extends EditorAction {\n    constructor() {\n        super({\n            id: TrimTrailingWhitespaceAction.ID,\n            label: nls.localize('lines.trimTrailingWhitespace', \"Trim Trailing Whitespace\"),\n            alias: 'Trim Trailing Whitespace',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 54 /* KeyCode.KeyX */),\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(_accessor, editor, args) {\n        let cursors = [];\n        if (args.reason === 'auto-save') {\n            // See https://github.com/editorconfig/editorconfig-vscode/issues/47\n            // It is very convenient for the editor config extension to invoke this action.\n            // So, if we get a reason:'auto-save' passed in, let's preserve cursor positions.\n            cursors = (editor.getSelections() || []).map(s => new Position(s.positionLineNumber, s.positionColumn));\n        }\n        const selection = editor.getSelection();\n        if (selection === null) {\n            return;\n        }\n        const config = _accessor.get(IConfigurationService);\n        const model = editor.getModel();\n        const trimInRegexAndStrings = config.getValue('files.trimTrailingWhitespaceInRegexAndStrings', { overrideIdentifier: model === null || model === void 0 ? void 0 : model.getLanguageId(), resource: model === null || model === void 0 ? void 0 : model.uri });\n        const command = new TrimTrailingWhitespaceCommand(selection, cursors, trimInRegexAndStrings);\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, [command]);\n        editor.pushUndoStop();\n    }\n}\nTrimTrailingWhitespaceAction.ID = 'editor.action.trimTrailingWhitespace';\nexport class DeleteLinesAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.deleteLines',\n            label: nls.localize('lines.delete', \"Delete Line\"),\n            alias: 'Delete Line',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 41 /* KeyCode.KeyK */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(_accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const ops = this._getLinesToRemove(editor);\n        const model = editor.getModel();\n        if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n            // Model is empty\n            return;\n        }\n        let linesDeleted = 0;\n        const edits = [];\n        const cursorState = [];\n        for (let i = 0, len = ops.length; i < len; i++) {\n            const op = ops[i];\n            let startLineNumber = op.startLineNumber;\n            let endLineNumber = op.endLineNumber;\n            let startColumn = 1;\n            let endColumn = model.getLineMaxColumn(endLineNumber);\n            if (endLineNumber < model.getLineCount()) {\n                endLineNumber += 1;\n                endColumn = 1;\n            }\n            else if (startLineNumber > 1) {\n                startLineNumber -= 1;\n                startColumn = model.getLineMaxColumn(startLineNumber);\n            }\n            edits.push(EditOperation.replace(new Selection(startLineNumber, startColumn, endLineNumber, endColumn), ''));\n            cursorState.push(new Selection(startLineNumber - linesDeleted, op.positionColumn, startLineNumber - linesDeleted, op.positionColumn));\n            linesDeleted += (op.endLineNumber - op.startLineNumber + 1);\n        }\n        editor.pushUndoStop();\n        editor.executeEdits(this.id, edits, cursorState);\n        editor.pushUndoStop();\n    }\n    _getLinesToRemove(editor) {\n        // Construct delete operations\n        const operations = editor.getSelections().map((s) => {\n            let endLineNumber = s.endLineNumber;\n            if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n                endLineNumber -= 1;\n            }\n            return {\n                startLineNumber: s.startLineNumber,\n                selectionStartColumn: s.selectionStartColumn,\n                endLineNumber: endLineNumber,\n                positionColumn: s.positionColumn\n            };\n        });\n        // Sort delete operations\n        operations.sort((a, b) => {\n            if (a.startLineNumber === b.startLineNumber) {\n                return a.endLineNumber - b.endLineNumber;\n            }\n            return a.startLineNumber - b.startLineNumber;\n        });\n        // Merge delete operations which are adjacent or overlapping\n        const mergedOperations = [];\n        let previousOperation = operations[0];\n        for (let i = 1; i < operations.length; i++) {\n            if (previousOperation.endLineNumber + 1 >= operations[i].startLineNumber) {\n                // Merge current operations into the previous one\n                previousOperation.endLineNumber = operations[i].endLineNumber;\n            }\n            else {\n                // Push previous operation\n                mergedOperations.push(previousOperation);\n                previousOperation = operations[i];\n            }\n        }\n        // Push the last operation\n        mergedOperations.push(previousOperation);\n        return mergedOperations;\n    }\n}\nexport class IndentLinesAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.indentLines',\n            label: nls.localize('lines.indent', \"Indent Line\"),\n            alias: 'Indent Line',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 94 /* KeyCode.BracketRight */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(_accessor, editor) {\n        const viewModel = editor._getViewModel();\n        if (!viewModel) {\n            return;\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, TypeOperations.indent(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n        editor.pushUndoStop();\n    }\n}\nclass OutdentLinesAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.outdentLines',\n            label: nls.localize('lines.outdent', \"Outdent Line\"),\n            alias: 'Outdent Line',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 92 /* KeyCode.BracketLeft */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(_accessor, editor) {\n        CoreEditingCommands.Outdent.runEditorCommand(_accessor, editor, null);\n    }\n}\nexport class InsertLineBeforeAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.insertLineBefore',\n            label: nls.localize('lines.insertBefore', \"Insert Line Above\"),\n            alias: 'Insert Line Above',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 3 /* KeyCode.Enter */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(_accessor, editor) {\n        const viewModel = editor._getViewModel();\n        if (!viewModel) {\n            return;\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, TypeOperations.lineInsertBefore(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n    }\n}\nexport class InsertLineAfterAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.insertLineAfter',\n            label: nls.localize('lines.insertAfter', \"Insert Line Below\"),\n            alias: 'Insert Line Below',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 3 /* KeyCode.Enter */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(_accessor, editor) {\n        const viewModel = editor._getViewModel();\n        if (!viewModel) {\n            return;\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, TypeOperations.lineInsertAfter(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n    }\n}\nexport class AbstractDeleteAllToBoundaryAction extends EditorAction {\n    run(_accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const primaryCursor = editor.getSelection();\n        const rangesToDelete = this._getRangesToDelete(editor);\n        // merge overlapping selections\n        const effectiveRanges = [];\n        for (let i = 0, count = rangesToDelete.length - 1; i < count; i++) {\n            const range = rangesToDelete[i];\n            const nextRange = rangesToDelete[i + 1];\n            if (Range.intersectRanges(range, nextRange) === null) {\n                effectiveRanges.push(range);\n            }\n            else {\n                rangesToDelete[i + 1] = Range.plusRange(range, nextRange);\n            }\n        }\n        effectiveRanges.push(rangesToDelete[rangesToDelete.length - 1]);\n        const endCursorState = this._getEndCursorState(primaryCursor, effectiveRanges);\n        const edits = effectiveRanges.map(range => {\n            return EditOperation.replace(range, '');\n        });\n        editor.pushUndoStop();\n        editor.executeEdits(this.id, edits, endCursorState);\n        editor.pushUndoStop();\n    }\n}\nexport class DeleteAllLeftAction extends AbstractDeleteAllToBoundaryAction {\n    constructor() {\n        super({\n            id: 'deleteAllLeft',\n            label: nls.localize('lines.deleteAllLeft', \"Delete All Left\"),\n            alias: 'Delete All Left',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 0,\n                mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 1 /* KeyCode.Backspace */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    _getEndCursorState(primaryCursor, rangesToDelete) {\n        let endPrimaryCursor = null;\n        const endCursorState = [];\n        let deletedLines = 0;\n        rangesToDelete.forEach(range => {\n            let endCursor;\n            if (range.endColumn === 1 && deletedLines > 0) {\n                const newStartLine = range.startLineNumber - deletedLines;\n                endCursor = new Selection(newStartLine, range.startColumn, newStartLine, range.startColumn);\n            }\n            else {\n                endCursor = new Selection(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\n            }\n            deletedLines += range.endLineNumber - range.startLineNumber;\n            if (range.intersectRanges(primaryCursor)) {\n                endPrimaryCursor = endCursor;\n            }\n            else {\n                endCursorState.push(endCursor);\n            }\n        });\n        if (endPrimaryCursor) {\n            endCursorState.unshift(endPrimaryCursor);\n        }\n        return endCursorState;\n    }\n    _getRangesToDelete(editor) {\n        const selections = editor.getSelections();\n        if (selections === null) {\n            return [];\n        }\n        let rangesToDelete = selections;\n        const model = editor.getModel();\n        if (model === null) {\n            return [];\n        }\n        rangesToDelete.sort(Range.compareRangesUsingStarts);\n        rangesToDelete = rangesToDelete.map(selection => {\n            if (selection.isEmpty()) {\n                if (selection.startColumn === 1) {\n                    const deleteFromLine = Math.max(1, selection.startLineNumber - 1);\n                    const deleteFromColumn = selection.startLineNumber === 1 ? 1 : model.getLineLength(deleteFromLine) + 1;\n                    return new Range(deleteFromLine, deleteFromColumn, selection.startLineNumber, 1);\n                }\n                else {\n                    return new Range(selection.startLineNumber, 1, selection.startLineNumber, selection.startColumn);\n                }\n            }\n            else {\n                return new Range(selection.startLineNumber, 1, selection.endLineNumber, selection.endColumn);\n            }\n        });\n        return rangesToDelete;\n    }\n}\nexport class DeleteAllRightAction extends AbstractDeleteAllToBoundaryAction {\n    constructor() {\n        super({\n            id: 'deleteAllRight',\n            label: nls.localize('lines.deleteAllRight', \"Delete All Right\"),\n            alias: 'Delete All Right',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 0,\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 41 /* KeyCode.KeyK */, secondary: [2048 /* KeyMod.CtrlCmd */ | 20 /* KeyCode.Delete */] },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    _getEndCursorState(primaryCursor, rangesToDelete) {\n        let endPrimaryCursor = null;\n        const endCursorState = [];\n        for (let i = 0, len = rangesToDelete.length, offset = 0; i < len; i++) {\n            const range = rangesToDelete[i];\n            const endCursor = new Selection(range.startLineNumber - offset, range.startColumn, range.startLineNumber - offset, range.startColumn);\n            if (range.intersectRanges(primaryCursor)) {\n                endPrimaryCursor = endCursor;\n            }\n            else {\n                endCursorState.push(endCursor);\n            }\n        }\n        if (endPrimaryCursor) {\n            endCursorState.unshift(endPrimaryCursor);\n        }\n        return endCursorState;\n    }\n    _getRangesToDelete(editor) {\n        const model = editor.getModel();\n        if (model === null) {\n            return [];\n        }\n        const selections = editor.getSelections();\n        if (selections === null) {\n            return [];\n        }\n        const rangesToDelete = selections.map((sel) => {\n            if (sel.isEmpty()) {\n                const maxColumn = model.getLineMaxColumn(sel.startLineNumber);\n                if (sel.startColumn === maxColumn) {\n                    return new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber + 1, 1);\n                }\n                else {\n                    return new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber, maxColumn);\n                }\n            }\n            return sel;\n        });\n        rangesToDelete.sort(Range.compareRangesUsingStarts);\n        return rangesToDelete;\n    }\n}\nexport class JoinLinesAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.joinLines',\n            label: nls.localize('lines.joinLines', \"Join Lines\"),\n            alias: 'Join Lines',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 0,\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 40 /* KeyCode.KeyJ */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(_accessor, editor) {\n        const selections = editor.getSelections();\n        if (selections === null) {\n            return;\n        }\n        let primaryCursor = editor.getSelection();\n        if (primaryCursor === null) {\n            return;\n        }\n        selections.sort(Range.compareRangesUsingStarts);\n        const reducedSelections = [];\n        const lastSelection = selections.reduce((previousValue, currentValue) => {\n            if (previousValue.isEmpty()) {\n                if (previousValue.endLineNumber === currentValue.startLineNumber) {\n                    if (primaryCursor.equalsSelection(previousValue)) {\n                        primaryCursor = currentValue;\n                    }\n                    return currentValue;\n                }\n                if (currentValue.startLineNumber > previousValue.endLineNumber + 1) {\n                    reducedSelections.push(previousValue);\n                    return currentValue;\n                }\n                else {\n                    return new Selection(previousValue.startLineNumber, previousValue.startColumn, currentValue.endLineNumber, currentValue.endColumn);\n                }\n            }\n            else {\n                if (currentValue.startLineNumber > previousValue.endLineNumber) {\n                    reducedSelections.push(previousValue);\n                    return currentValue;\n                }\n                else {\n                    return new Selection(previousValue.startLineNumber, previousValue.startColumn, currentValue.endLineNumber, currentValue.endColumn);\n                }\n            }\n        });\n        reducedSelections.push(lastSelection);\n        const model = editor.getModel();\n        if (model === null) {\n            return;\n        }\n        const edits = [];\n        const endCursorState = [];\n        let endPrimaryCursor = primaryCursor;\n        let lineOffset = 0;\n        for (let i = 0, len = reducedSelections.length; i < len; i++) {\n            const selection = reducedSelections[i];\n            const startLineNumber = selection.startLineNumber;\n            const startColumn = 1;\n            let columnDeltaOffset = 0;\n            let endLineNumber, endColumn;\n            const selectionEndPositionOffset = model.getLineLength(selection.endLineNumber) - selection.endColumn;\n            if (selection.isEmpty() || selection.startLineNumber === selection.endLineNumber) {\n                const position = selection.getStartPosition();\n                if (position.lineNumber < model.getLineCount()) {\n                    endLineNumber = startLineNumber + 1;\n                    endColumn = model.getLineMaxColumn(endLineNumber);\n                }\n                else {\n                    endLineNumber = position.lineNumber;\n                    endColumn = model.getLineMaxColumn(position.lineNumber);\n                }\n            }\n            else {\n                endLineNumber = selection.endLineNumber;\n                endColumn = model.getLineMaxColumn(endLineNumber);\n            }\n            let trimmedLinesContent = model.getLineContent(startLineNumber);\n            for (let i = startLineNumber + 1; i <= endLineNumber; i++) {\n                const lineText = model.getLineContent(i);\n                const firstNonWhitespaceIdx = model.getLineFirstNonWhitespaceColumn(i);\n                if (firstNonWhitespaceIdx >= 1) {\n                    let insertSpace = true;\n                    if (trimmedLinesContent === '') {\n                        insertSpace = false;\n                    }\n                    if (insertSpace && (trimmedLinesContent.charAt(trimmedLinesContent.length - 1) === ' ' ||\n                        trimmedLinesContent.charAt(trimmedLinesContent.length - 1) === '\\t')) {\n                        insertSpace = false;\n                        trimmedLinesContent = trimmedLinesContent.replace(/[\\s\\uFEFF\\xA0]+$/g, ' ');\n                    }\n                    const lineTextWithoutIndent = lineText.substr(firstNonWhitespaceIdx - 1);\n                    trimmedLinesContent += (insertSpace ? ' ' : '') + lineTextWithoutIndent;\n                    if (insertSpace) {\n                        columnDeltaOffset = lineTextWithoutIndent.length + 1;\n                    }\n                    else {\n                        columnDeltaOffset = lineTextWithoutIndent.length;\n                    }\n                }\n                else {\n                    columnDeltaOffset = 0;\n                }\n            }\n            const deleteSelection = new Range(startLineNumber, startColumn, endLineNumber, endColumn);\n            if (!deleteSelection.isEmpty()) {\n                let resultSelection;\n                if (selection.isEmpty()) {\n                    edits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n                    resultSelection = new Selection(deleteSelection.startLineNumber - lineOffset, trimmedLinesContent.length - columnDeltaOffset + 1, startLineNumber - lineOffset, trimmedLinesContent.length - columnDeltaOffset + 1);\n                }\n                else {\n                    if (selection.startLineNumber === selection.endLineNumber) {\n                        edits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n                        resultSelection = new Selection(selection.startLineNumber - lineOffset, selection.startColumn, selection.endLineNumber - lineOffset, selection.endColumn);\n                    }\n                    else {\n                        edits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n                        resultSelection = new Selection(selection.startLineNumber - lineOffset, selection.startColumn, selection.startLineNumber - lineOffset, trimmedLinesContent.length - selectionEndPositionOffset);\n                    }\n                }\n                if (Range.intersectRanges(deleteSelection, primaryCursor) !== null) {\n                    endPrimaryCursor = resultSelection;\n                }\n                else {\n                    endCursorState.push(resultSelection);\n                }\n            }\n            lineOffset += deleteSelection.endLineNumber - deleteSelection.startLineNumber;\n        }\n        endCursorState.unshift(endPrimaryCursor);\n        editor.pushUndoStop();\n        editor.executeEdits(this.id, edits, endCursorState);\n        editor.pushUndoStop();\n    }\n}\nexport class TransposeAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.transpose',\n            label: nls.localize('editor.transpose', \"Transpose Characters around the Cursor\"),\n            alias: 'Transpose Characters around the Cursor',\n            precondition: EditorContextKeys.writable\n        });\n    }\n    run(_accessor, editor) {\n        const selections = editor.getSelections();\n        if (selections === null) {\n            return;\n        }\n        const model = editor.getModel();\n        if (model === null) {\n            return;\n        }\n        const commands = [];\n        for (let i = 0, len = selections.length; i < len; i++) {\n            const selection = selections[i];\n            if (!selection.isEmpty()) {\n                continue;\n            }\n            const cursor = selection.getStartPosition();\n            const maxColumn = model.getLineMaxColumn(cursor.lineNumber);\n            if (cursor.column >= maxColumn) {\n                if (cursor.lineNumber === model.getLineCount()) {\n                    continue;\n                }\n                // The cursor is at the end of current line and current line is not empty\n                // then we transpose the character before the cursor and the line break if there is any following line.\n                const deleteSelection = new Range(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber + 1, 1);\n                const chars = model.getValueInRange(deleteSelection).split('').reverse().join('');\n                commands.push(new ReplaceCommand(new Selection(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber + 1, 1), chars));\n            }\n            else {\n                const deleteSelection = new Range(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber, cursor.column + 1);\n                const chars = model.getValueInRange(deleteSelection).split('').reverse().join('');\n                commands.push(new ReplaceCommandThatPreservesSelection(deleteSelection, chars, new Selection(cursor.lineNumber, cursor.column + 1, cursor.lineNumber, cursor.column + 1)));\n            }\n        }\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, commands);\n        editor.pushUndoStop();\n    }\n}\nexport class AbstractCaseAction extends EditorAction {\n    run(_accessor, editor) {\n        const selections = editor.getSelections();\n        if (selections === null) {\n            return;\n        }\n        const model = editor.getModel();\n        if (model === null) {\n            return;\n        }\n        const wordSeparators = editor.getOption(131 /* EditorOption.wordSeparators */);\n        const textEdits = [];\n        for (const selection of selections) {\n            if (selection.isEmpty()) {\n                const cursor = selection.getStartPosition();\n                const word = editor.getConfiguredWordAtPosition(cursor);\n                if (!word) {\n                    continue;\n                }\n                const wordRange = new Range(cursor.lineNumber, word.startColumn, cursor.lineNumber, word.endColumn);\n                const text = model.getValueInRange(wordRange);\n                textEdits.push(EditOperation.replace(wordRange, this._modifyText(text, wordSeparators)));\n            }\n            else {\n                const text = model.getValueInRange(selection);\n                textEdits.push(EditOperation.replace(selection, this._modifyText(text, wordSeparators)));\n            }\n        }\n        editor.pushUndoStop();\n        editor.executeEdits(this.id, textEdits);\n        editor.pushUndoStop();\n    }\n}\nexport class UpperCaseAction extends AbstractCaseAction {\n    constructor() {\n        super({\n            id: 'editor.action.transformToUppercase',\n            label: nls.localize('editor.transformToUppercase', \"Transform to Uppercase\"),\n            alias: 'Transform to Uppercase',\n            precondition: EditorContextKeys.writable\n        });\n    }\n    _modifyText(text, wordSeparators) {\n        return text.toLocaleUpperCase();\n    }\n}\nexport class LowerCaseAction extends AbstractCaseAction {\n    constructor() {\n        super({\n            id: 'editor.action.transformToLowercase',\n            label: nls.localize('editor.transformToLowercase', \"Transform to Lowercase\"),\n            alias: 'Transform to Lowercase',\n            precondition: EditorContextKeys.writable\n        });\n    }\n    _modifyText(text, wordSeparators) {\n        return text.toLocaleLowerCase();\n    }\n}\nclass BackwardsCompatibleRegExp {\n    constructor(_pattern, _flags) {\n        this._pattern = _pattern;\n        this._flags = _flags;\n        this._actual = null;\n        this._evaluated = false;\n    }\n    get() {\n        if (!this._evaluated) {\n            this._evaluated = true;\n            try {\n                this._actual = new RegExp(this._pattern, this._flags);\n            }\n            catch (err) {\n                // this browser does not support this regular expression\n            }\n        }\n        return this._actual;\n    }\n    isSupported() {\n        return (this.get() !== null);\n    }\n}\nexport class TitleCaseAction extends AbstractCaseAction {\n    constructor() {\n        super({\n            id: 'editor.action.transformToTitlecase',\n            label: nls.localize('editor.transformToTitlecase', \"Transform to Title Case\"),\n            alias: 'Transform to Title Case',\n            precondition: EditorContextKeys.writable\n        });\n    }\n    _modifyText(text, wordSeparators) {\n        const titleBoundary = TitleCaseAction.titleBoundary.get();\n        if (!titleBoundary) {\n            // cannot support this\n            return text;\n        }\n        return text\n            .toLocaleLowerCase()\n            .replace(titleBoundary, (b) => b.toLocaleUpperCase());\n    }\n}\nTitleCaseAction.titleBoundary = new BackwardsCompatibleRegExp('(^|[^\\\\p{L}\\\\p{N}\\']|((^|\\\\P{L})\\'))\\\\p{L}', 'gmu');\nexport class SnakeCaseAction extends AbstractCaseAction {\n    constructor() {\n        super({\n            id: 'editor.action.transformToSnakecase',\n            label: nls.localize('editor.transformToSnakecase', \"Transform to Snake Case\"),\n            alias: 'Transform to Snake Case',\n            precondition: EditorContextKeys.writable\n        });\n    }\n    _modifyText(text, wordSeparators) {\n        const caseBoundary = SnakeCaseAction.caseBoundary.get();\n        const singleLetters = SnakeCaseAction.singleLetters.get();\n        if (!caseBoundary || !singleLetters) {\n            // cannot support this\n            return text;\n        }\n        return (text\n            .replace(caseBoundary, '$1_$2')\n            .replace(singleLetters, '$1_$2$3')\n            .toLocaleLowerCase());\n    }\n}\nSnakeCaseAction.caseBoundary = new BackwardsCompatibleRegExp('(\\\\p{Ll})(\\\\p{Lu})', 'gmu');\nSnakeCaseAction.singleLetters = new BackwardsCompatibleRegExp('(\\\\p{Lu}|\\\\p{N})(\\\\p{Lu})(\\\\p{Ll})', 'gmu');\nexport class CamelCaseAction extends AbstractCaseAction {\n    constructor() {\n        super({\n            id: 'editor.action.transformToCamelcase',\n            label: nls.localize('editor.transformToCamelcase', \"Transform to Camel Case\"),\n            alias: 'Transform to Camel Case',\n            precondition: EditorContextKeys.writable\n        });\n    }\n    _modifyText(text, wordSeparators) {\n        const wordBoundary = CamelCaseAction.wordBoundary.get();\n        if (!wordBoundary) {\n            // cannot support this\n            return text;\n        }\n        const words = text.split(wordBoundary);\n        const firstWord = words.shift();\n        return firstWord + words.map((word) => word.substring(0, 1).toLocaleUpperCase() + word.substring(1))\n            .join('');\n    }\n}\nCamelCaseAction.wordBoundary = new BackwardsCompatibleRegExp('[_\\\\s-]', 'gm');\nexport class PascalCaseAction extends AbstractCaseAction {\n    constructor() {\n        super({\n            id: 'editor.action.transformToPascalcase',\n            label: nls.localize('editor.transformToPascalcase', \"Transform to Pascal Case\"),\n            alias: 'Transform to Pascal Case',\n            precondition: EditorContextKeys.writable\n        });\n    }\n    _modifyText(text, wordSeparators) {\n        const wordBoundary = PascalCaseAction.wordBoundary.get();\n        const wordBoundaryToMaintain = PascalCaseAction.wordBoundaryToMaintain.get();\n        if (!wordBoundary || !wordBoundaryToMaintain) {\n            // cannot support this\n            return text;\n        }\n        const wordsWithMaintainBoundaries = text.split(wordBoundaryToMaintain);\n        const words = wordsWithMaintainBoundaries.map((word) => word.split(wordBoundary)).flat();\n        return words.map((word) => word.substring(0, 1).toLocaleUpperCase() + word.substring(1))\n            .join('');\n    }\n}\nPascalCaseAction.wordBoundary = new BackwardsCompatibleRegExp('[_\\\\s-]', 'gm');\nPascalCaseAction.wordBoundaryToMaintain = new BackwardsCompatibleRegExp('(?<=\\\\.)', 'gm');\nexport class KebabCaseAction extends AbstractCaseAction {\n    static isSupported() {\n        const areAllRegexpsSupported = [\n            this.caseBoundary,\n            this.singleLetters,\n            this.underscoreBoundary,\n        ].every((regexp) => regexp.isSupported());\n        return areAllRegexpsSupported;\n    }\n    constructor() {\n        super({\n            id: 'editor.action.transformToKebabcase',\n            label: nls.localize('editor.transformToKebabcase', 'Transform to Kebab Case'),\n            alias: 'Transform to Kebab Case',\n            precondition: EditorContextKeys.writable\n        });\n    }\n    _modifyText(text, _) {\n        const caseBoundary = KebabCaseAction.caseBoundary.get();\n        const singleLetters = KebabCaseAction.singleLetters.get();\n        const underscoreBoundary = KebabCaseAction.underscoreBoundary.get();\n        if (!caseBoundary || !singleLetters || !underscoreBoundary) {\n            // one or more regexps aren't supported\n            return text;\n        }\n        return text\n            .replace(underscoreBoundary, '$1-$3')\n            .replace(caseBoundary, '$1-$2')\n            .replace(singleLetters, '$1-$2')\n            .toLocaleLowerCase();\n    }\n}\nKebabCaseAction.caseBoundary = new BackwardsCompatibleRegExp('(\\\\p{Ll})(\\\\p{Lu})', 'gmu');\nKebabCaseAction.singleLetters = new BackwardsCompatibleRegExp('(\\\\p{Lu}|\\\\p{N})(\\\\p{Lu}\\\\p{Ll})', 'gmu');\nKebabCaseAction.underscoreBoundary = new BackwardsCompatibleRegExp('(\\\\S)(_)(\\\\S)', 'gm');\nregisterEditorAction(CopyLinesUpAction);\nregisterEditorAction(CopyLinesDownAction);\nregisterEditorAction(DuplicateSelectionAction);\nregisterEditorAction(MoveLinesUpAction);\nregisterEditorAction(MoveLinesDownAction);\nregisterEditorAction(SortLinesAscendingAction);\nregisterEditorAction(SortLinesDescendingAction);\nregisterEditorAction(DeleteDuplicateLinesAction);\nregisterEditorAction(TrimTrailingWhitespaceAction);\nregisterEditorAction(DeleteLinesAction);\nregisterEditorAction(IndentLinesAction);\nregisterEditorAction(OutdentLinesAction);\nregisterEditorAction(InsertLineBeforeAction);\nregisterEditorAction(InsertLineAfterAction);\nregisterEditorAction(DeleteAllLeftAction);\nregisterEditorAction(DeleteAllRightAction);\nregisterEditorAction(JoinLinesAction);\nregisterEditorAction(TransposeAction);\nregisterEditorAction(UpperCaseAction);\nregisterEditorAction(LowerCaseAction);\nif (SnakeCaseAction.caseBoundary.isSupported() && SnakeCaseAction.singleLetters.isSupported()) {\n    registerEditorAction(SnakeCaseAction);\n}\nif (CamelCaseAction.wordBoundary.isSupported()) {\n    registerEditorAction(CamelCaseAction);\n}\nif (PascalCaseAction.wordBoundary.isSupported()) {\n    registerEditorAction(PascalCaseAction);\n}\nif (TitleCaseAction.titleBoundary.isSupported()) {\n    registerEditorAction(TitleCaseAction);\n}\nif (KebabCaseAction.isSupported()) {\n    registerEditorAction(KebabCaseAction);\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 * as strings from '../../../base/common/strings.js';\nimport { EditOperation } from '../core/editOperation.js';\nimport { Range } from '../core/range.js';\nexport class TrimTrailingWhitespaceCommand {\n    constructor(selection, cursors, trimInRegexesAndStrings) {\n        this._selection = selection;\n        this._cursors = cursors;\n        this._selectionId = null;\n        this._trimInRegexesAndStrings = trimInRegexesAndStrings;\n    }\n    getEditOperations(model, builder) {\n        const ops = trimTrailingWhitespace(model, this._cursors, this._trimInRegexesAndStrings);\n        for (let i = 0, len = ops.length; i < len; i++) {\n            const op = ops[i];\n            builder.addEditOperation(op.range, op.text);\n        }\n        this._selectionId = builder.trackSelection(this._selection);\n    }\n    computeCursorState(model, helper) {\n        return helper.getTrackedSelection(this._selectionId);\n    }\n}\n/**\n * Generate commands for trimming trailing whitespace on a model and ignore lines on which cursors are sitting.\n */\nexport function trimTrailingWhitespace(model, cursors, trimInRegexesAndStrings) {\n    // Sort cursors ascending\n    cursors.sort((a, b) => {\n        if (a.lineNumber === b.lineNumber) {\n            return a.column - b.column;\n        }\n        return a.lineNumber - b.lineNumber;\n    });\n    // Reduce multiple cursors on the same line and only keep the last one on the line\n    for (let i = cursors.length - 2; i >= 0; i--) {\n        if (cursors[i].lineNumber === cursors[i + 1].lineNumber) {\n            // Remove cursor at `i`\n            cursors.splice(i, 1);\n        }\n    }\n    const r = [];\n    let rLen = 0;\n    let cursorIndex = 0;\n    const cursorLen = cursors.length;\n    for (let lineNumber = 1, lineCount = model.getLineCount(); lineNumber <= lineCount; lineNumber++) {\n        const lineContent = model.getLineContent(lineNumber);\n        const maxLineColumn = lineContent.length + 1;\n        let minEditColumn = 0;\n        if (cursorIndex < cursorLen && cursors[cursorIndex].lineNumber === lineNumber) {\n            minEditColumn = cursors[cursorIndex].column;\n            cursorIndex++;\n            if (minEditColumn === maxLineColumn) {\n                // The cursor is at the end of the line => no edits for sure on this line\n                continue;\n            }\n        }\n        if (lineContent.length === 0) {\n            continue;\n        }\n        const lastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\n        let fromColumn = 0;\n        if (lastNonWhitespaceIndex === -1) {\n            // Entire line is whitespace\n            fromColumn = 1;\n        }\n        else if (lastNonWhitespaceIndex !== lineContent.length - 1) {\n            // There is trailing whitespace\n            fromColumn = lastNonWhitespaceIndex + 2;\n        }\n        else {\n            // There is no trailing whitespace\n            continue;\n        }\n        if (!trimInRegexesAndStrings) {\n            if (!model.tokenization.hasAccurateTokensForLine(lineNumber)) {\n                // We don't want to force line tokenization, as that can be expensive, but we also don't want to trim\n                // trailing whitespace in lines that are not tokenized yet, as that can be wrong and trim whitespace from\n                // lines that the user requested we don't. So we bail out if the tokens are not accurate for this line.\n                continue;\n            }\n            const lineTokens = model.tokenization.getLineTokens(lineNumber);\n            const fromColumnType = lineTokens.getStandardTokenType(lineTokens.findTokenIndexAtOffset(fromColumn));\n            if (fromColumnType === 2 /* StandardTokenType.String */ || fromColumnType === 3 /* StandardTokenType.RegEx */) {\n                continue;\n            }\n        }\n        fromColumn = Math.max(minEditColumn, fromColumn);\n        r[rLen++] = EditOperation.delete(new Range(lineNumber, fromColumn, lineNumber, maxLineColumn));\n    }\n    return r;\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 { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nexport class CopyLinesCommand {\n    constructor(selection, isCopyingDown, noop) {\n        this._selection = selection;\n        this._isCopyingDown = isCopyingDown;\n        this._noop = noop || false;\n        this._selectionDirection = 0 /* SelectionDirection.LTR */;\n        this._selectionId = null;\n        this._startLineNumberDelta = 0;\n        this._endLineNumberDelta = 0;\n    }\n    getEditOperations(model, builder) {\n        let s = this._selection;\n        this._startLineNumberDelta = 0;\n        this._endLineNumberDelta = 0;\n        if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n            this._endLineNumberDelta = 1;\n            s = s.setEndPosition(s.endLineNumber - 1, model.getLineMaxColumn(s.endLineNumber - 1));\n        }\n        const sourceLines = [];\n        for (let i = s.startLineNumber; i <= s.endLineNumber; i++) {\n            sourceLines.push(model.getLineContent(i));\n        }\n        const sourceText = sourceLines.join('\\n');\n        if (sourceText === '') {\n            // Duplicating empty line\n            if (this._isCopyingDown) {\n                this._startLineNumberDelta++;\n                this._endLineNumberDelta++;\n            }\n        }\n        if (this._noop) {\n            builder.addEditOperation(new Range(s.endLineNumber, model.getLineMaxColumn(s.endLineNumber), s.endLineNumber + 1, 1), s.endLineNumber === model.getLineCount() ? '' : '\\n');\n        }\n        else {\n            if (!this._isCopyingDown) {\n                builder.addEditOperation(new Range(s.endLineNumber, model.getLineMaxColumn(s.endLineNumber), s.endLineNumber, model.getLineMaxColumn(s.endLineNumber)), '\\n' + sourceText);\n            }\n            else {\n                builder.addEditOperation(new Range(s.startLineNumber, 1, s.startLineNumber, 1), sourceText + '\\n');\n            }\n        }\n        this._selectionId = builder.trackSelection(s);\n        this._selectionDirection = this._selection.getDirection();\n    }\n    computeCursorState(model, helper) {\n        let result = helper.getTrackedSelection(this._selectionId);\n        if (this._startLineNumberDelta !== 0 || this._endLineNumberDelta !== 0) {\n            let startLineNumber = result.startLineNumber;\n            let startColumn = result.startColumn;\n            let endLineNumber = result.endLineNumber;\n            let endColumn = result.endColumn;\n            if (this._startLineNumberDelta !== 0) {\n                startLineNumber = startLineNumber + this._startLineNumberDelta;\n                startColumn = 1;\n            }\n            if (this._endLineNumberDelta !== 0) {\n                endLineNumber = endLineNumber + this._endLineNumberDelta;\n                endColumn = 1;\n            }\n            result = Selection.createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, this._selectionDirection);\n        }\n        return result;\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 strings from '../../../../base/common/strings.js';\nimport { ShiftCommand } from '../../../common/commands/shiftCommand.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IndentAction } from '../../../common/languages/languageConfiguration.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport * as indentUtils from '../../indentation/common/indentUtils.js';\nimport { getGoodIndentForLine, getIndentMetadata } from '../../../common/languages/autoIndent.js';\nimport { getEnterAction } from '../../../common/languages/enterAction.js';\nlet MoveLinesCommand = class MoveLinesCommand {\n    constructor(selection, isMovingDown, autoIndent, _languageConfigurationService) {\n        this._languageConfigurationService = _languageConfigurationService;\n        this._selection = selection;\n        this._isMovingDown = isMovingDown;\n        this._autoIndent = autoIndent;\n        this._selectionId = null;\n        this._moveEndLineSelectionShrink = false;\n    }\n    getEditOperations(model, builder) {\n        const modelLineCount = model.getLineCount();\n        if (this._isMovingDown && this._selection.endLineNumber === modelLineCount) {\n            this._selectionId = builder.trackSelection(this._selection);\n            return;\n        }\n        if (!this._isMovingDown && this._selection.startLineNumber === 1) {\n            this._selectionId = builder.trackSelection(this._selection);\n            return;\n        }\n        this._moveEndPositionDown = false;\n        let s = this._selection;\n        if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n            this._moveEndPositionDown = true;\n            s = s.setEndPosition(s.endLineNumber - 1, model.getLineMaxColumn(s.endLineNumber - 1));\n        }\n        const { tabSize, indentSize, insertSpaces } = model.getOptions();\n        const indentConverter = this.buildIndentConverter(tabSize, indentSize, insertSpaces);\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: null,\n        };\n        if (s.startLineNumber === s.endLineNumber && model.getLineMaxColumn(s.startLineNumber) === 1) {\n            // Current line is empty\n            const lineNumber = s.startLineNumber;\n            const otherLineNumber = (this._isMovingDown ? lineNumber + 1 : lineNumber - 1);\n            if (model.getLineMaxColumn(otherLineNumber) === 1) {\n                // Other line number is empty too, so no editing is needed\n                // Add a no-op to force running by the model\n                builder.addEditOperation(new Range(1, 1, 1, 1), null);\n            }\n            else {\n                // Type content from other line number on line number\n                builder.addEditOperation(new Range(lineNumber, 1, lineNumber, 1), model.getLineContent(otherLineNumber));\n                // Remove content from other line number\n                builder.addEditOperation(new Range(otherLineNumber, 1, otherLineNumber, model.getLineMaxColumn(otherLineNumber)), null);\n            }\n            // Track selection at the other line number\n            s = new Selection(otherLineNumber, 1, otherLineNumber, 1);\n        }\n        else {\n            let movingLineNumber;\n            let movingLineText;\n            if (this._isMovingDown) {\n                movingLineNumber = s.endLineNumber + 1;\n                movingLineText = model.getLineContent(movingLineNumber);\n                // Delete line that needs to be moved\n                builder.addEditOperation(new Range(movingLineNumber - 1, model.getLineMaxColumn(movingLineNumber - 1), movingLineNumber, model.getLineMaxColumn(movingLineNumber)), null);\n                let insertingText = movingLineText;\n                if (this.shouldAutoIndent(model, s)) {\n                    const movingLineMatchResult = this.matchEnterRule(model, indentConverter, tabSize, movingLineNumber, s.startLineNumber - 1);\n                    // if s.startLineNumber - 1 matches onEnter rule, we still honor that.\n                    if (movingLineMatchResult !== null) {\n                        const oldIndentation = strings.getLeadingWhitespace(model.getLineContent(movingLineNumber));\n                        const newSpaceCnt = movingLineMatchResult + indentUtils.getSpaceCnt(oldIndentation, tabSize);\n                        const newIndentation = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\n                        insertingText = newIndentation + this.trimStart(movingLineText);\n                    }\n                    else {\n                        // no enter rule matches, let's check indentatin rules then.\n                        virtualModel.getLineContent = (lineNumber) => {\n                            if (lineNumber === s.startLineNumber) {\n                                return model.getLineContent(movingLineNumber);\n                            }\n                            else {\n                                return model.getLineContent(lineNumber);\n                            }\n                        };\n                        const indentOfMovingLine = getGoodIndentForLine(this._autoIndent, virtualModel, model.getLanguageIdAtPosition(movingLineNumber, 1), s.startLineNumber, indentConverter, this._languageConfigurationService);\n                        if (indentOfMovingLine !== null) {\n                            const oldIndentation = strings.getLeadingWhitespace(model.getLineContent(movingLineNumber));\n                            const newSpaceCnt = indentUtils.getSpaceCnt(indentOfMovingLine, tabSize);\n                            const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\n                            if (newSpaceCnt !== oldSpaceCnt) {\n                                const newIndentation = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\n                                insertingText = newIndentation + this.trimStart(movingLineText);\n                            }\n                        }\n                    }\n                    // add edit operations for moving line first to make sure it's executed after we make indentation change\n                    // to s.startLineNumber\n                    builder.addEditOperation(new Range(s.startLineNumber, 1, s.startLineNumber, 1), insertingText + '\\n');\n                    const ret = this.matchEnterRuleMovingDown(model, indentConverter, tabSize, s.startLineNumber, movingLineNumber, insertingText);\n                    // check if the line being moved before matches onEnter rules, if so let's adjust the indentation by onEnter rules.\n                    if (ret !== null) {\n                        if (ret !== 0) {\n                            this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, ret);\n                        }\n                    }\n                    else {\n                        // it doesn't match onEnter rules, let's check indentation rules then.\n                        virtualModel.getLineContent = (lineNumber) => {\n                            if (lineNumber === s.startLineNumber) {\n                                return insertingText;\n                            }\n                            else if (lineNumber >= s.startLineNumber + 1 && lineNumber <= s.endLineNumber + 1) {\n                                return model.getLineContent(lineNumber - 1);\n                            }\n                            else {\n                                return model.getLineContent(lineNumber);\n                            }\n                        };\n                        const newIndentatOfMovingBlock = getGoodIndentForLine(this._autoIndent, virtualModel, model.getLanguageIdAtPosition(movingLineNumber, 1), s.startLineNumber + 1, indentConverter, this._languageConfigurationService);\n                        if (newIndentatOfMovingBlock !== null) {\n                            const oldIndentation = strings.getLeadingWhitespace(model.getLineContent(s.startLineNumber));\n                            const newSpaceCnt = indentUtils.getSpaceCnt(newIndentatOfMovingBlock, tabSize);\n                            const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\n                            if (newSpaceCnt !== oldSpaceCnt) {\n                                const spaceCntOffset = newSpaceCnt - oldSpaceCnt;\n                                this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, spaceCntOffset);\n                            }\n                        }\n                    }\n                }\n                else {\n                    // Insert line that needs to be moved before\n                    builder.addEditOperation(new Range(s.startLineNumber, 1, s.startLineNumber, 1), insertingText + '\\n');\n                }\n            }\n            else {\n                movingLineNumber = s.startLineNumber - 1;\n                movingLineText = model.getLineContent(movingLineNumber);\n                // Delete line that needs to be moved\n                builder.addEditOperation(new Range(movingLineNumber, 1, movingLineNumber + 1, 1), null);\n                // Insert line that needs to be moved after\n                builder.addEditOperation(new Range(s.endLineNumber, model.getLineMaxColumn(s.endLineNumber), s.endLineNumber, model.getLineMaxColumn(s.endLineNumber)), '\\n' + movingLineText);\n                if (this.shouldAutoIndent(model, s)) {\n                    virtualModel.getLineContent = (lineNumber) => {\n                        if (lineNumber === movingLineNumber) {\n                            return model.getLineContent(s.startLineNumber);\n                        }\n                        else {\n                            return model.getLineContent(lineNumber);\n                        }\n                    };\n                    const ret = this.matchEnterRule(model, indentConverter, tabSize, s.startLineNumber, s.startLineNumber - 2);\n                    // check if s.startLineNumber - 2 matches onEnter rules, if so adjust the moving block by onEnter rules.\n                    if (ret !== null) {\n                        if (ret !== 0) {\n                            this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, ret);\n                        }\n                    }\n                    else {\n                        // it doesn't match any onEnter rule, let's check indentation rules then.\n                        const indentOfFirstLine = getGoodIndentForLine(this._autoIndent, virtualModel, model.getLanguageIdAtPosition(s.startLineNumber, 1), movingLineNumber, indentConverter, this._languageConfigurationService);\n                        if (indentOfFirstLine !== null) {\n                            // adjust the indentation of the moving block\n                            const oldIndent = strings.getLeadingWhitespace(model.getLineContent(s.startLineNumber));\n                            const newSpaceCnt = indentUtils.getSpaceCnt(indentOfFirstLine, tabSize);\n                            const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndent, tabSize);\n                            if (newSpaceCnt !== oldSpaceCnt) {\n                                const spaceCntOffset = newSpaceCnt - oldSpaceCnt;\n                                this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, spaceCntOffset);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        this._selectionId = builder.trackSelection(s);\n    }\n    buildIndentConverter(tabSize, indentSize, insertSpaces) {\n        return {\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    }\n    parseEnterResult(model, indentConverter, tabSize, line, enter) {\n        if (enter) {\n            let enterPrefix = enter.indentation;\n            if (enter.indentAction === IndentAction.None) {\n                enterPrefix = enter.indentation + enter.appendText;\n            }\n            else if (enter.indentAction === IndentAction.Indent) {\n                enterPrefix = enter.indentation + enter.appendText;\n            }\n            else if (enter.indentAction === IndentAction.IndentOutdent) {\n                enterPrefix = enter.indentation;\n            }\n            else if (enter.indentAction === IndentAction.Outdent) {\n                enterPrefix = indentConverter.unshiftIndent(enter.indentation) + enter.appendText;\n            }\n            const movingLineText = model.getLineContent(line);\n            if (this.trimStart(movingLineText).indexOf(this.trimStart(enterPrefix)) >= 0) {\n                const oldIndentation = strings.getLeadingWhitespace(model.getLineContent(line));\n                let newIndentation = strings.getLeadingWhitespace(enterPrefix);\n                const indentMetadataOfMovelingLine = getIndentMetadata(model, line, this._languageConfigurationService);\n                if (indentMetadataOfMovelingLine !== null && indentMetadataOfMovelingLine & 2 /* IndentConsts.DECREASE_MASK */) {\n                    newIndentation = indentConverter.unshiftIndent(newIndentation);\n                }\n                const newSpaceCnt = indentUtils.getSpaceCnt(newIndentation, tabSize);\n                const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\n                return newSpaceCnt - oldSpaceCnt;\n            }\n        }\n        return null;\n    }\n    /**\n     *\n     * @param model\n     * @param indentConverter\n     * @param tabSize\n     * @param line the line moving down\n     * @param futureAboveLineNumber the line which will be at the `line` position\n     * @param futureAboveLineText\n     */\n    matchEnterRuleMovingDown(model, indentConverter, tabSize, line, futureAboveLineNumber, futureAboveLineText) {\n        if (strings.lastNonWhitespaceIndex(futureAboveLineText) >= 0) {\n            // break\n            const maxColumn = model.getLineMaxColumn(futureAboveLineNumber);\n            const enter = getEnterAction(this._autoIndent, model, new Range(futureAboveLineNumber, maxColumn, futureAboveLineNumber, maxColumn), this._languageConfigurationService);\n            return this.parseEnterResult(model, indentConverter, tabSize, line, enter);\n        }\n        else {\n            // go upwards, starting from `line - 1`\n            let validPrecedingLine = line - 1;\n            while (validPrecedingLine >= 1) {\n                const lineContent = model.getLineContent(validPrecedingLine);\n                const nonWhitespaceIdx = strings.lastNonWhitespaceIndex(lineContent);\n                if (nonWhitespaceIdx >= 0) {\n                    break;\n                }\n                validPrecedingLine--;\n            }\n            if (validPrecedingLine < 1 || line > model.getLineCount()) {\n                return null;\n            }\n            const maxColumn = model.getLineMaxColumn(validPrecedingLine);\n            const enter = getEnterAction(this._autoIndent, model, new Range(validPrecedingLine, maxColumn, validPrecedingLine, maxColumn), this._languageConfigurationService);\n            return this.parseEnterResult(model, indentConverter, tabSize, line, enter);\n        }\n    }\n    matchEnterRule(model, indentConverter, tabSize, line, oneLineAbove, previousLineText) {\n        let validPrecedingLine = oneLineAbove;\n        while (validPrecedingLine >= 1) {\n            // ship empty lines as empty lines just inherit indentation\n            let lineContent;\n            if (validPrecedingLine === oneLineAbove && previousLineText !== undefined) {\n                lineContent = previousLineText;\n            }\n            else {\n                lineContent = model.getLineContent(validPrecedingLine);\n            }\n            const nonWhitespaceIdx = strings.lastNonWhitespaceIndex(lineContent);\n            if (nonWhitespaceIdx >= 0) {\n                break;\n            }\n            validPrecedingLine--;\n        }\n        if (validPrecedingLine < 1 || line > model.getLineCount()) {\n            return null;\n        }\n        const maxColumn = model.getLineMaxColumn(validPrecedingLine);\n        const enter = getEnterAction(this._autoIndent, model, new Range(validPrecedingLine, maxColumn, validPrecedingLine, maxColumn), this._languageConfigurationService);\n        return this.parseEnterResult(model, indentConverter, tabSize, line, enter);\n    }\n    trimStart(str) {\n        return str.replace(/^\\s+/, '');\n    }\n    shouldAutoIndent(model, selection) {\n        if (this._autoIndent < 4 /* EditorAutoIndentStrategy.Full */) {\n            return false;\n        }\n        // if it's not easy to tokenize, we stop auto indent.\n        if (!model.tokenization.isCheapToTokenize(selection.startLineNumber)) {\n            return false;\n        }\n        const languageAtSelectionStart = model.getLanguageIdAtPosition(selection.startLineNumber, 1);\n        const languageAtSelectionEnd = model.getLanguageIdAtPosition(selection.endLineNumber, 1);\n        if (languageAtSelectionStart !== languageAtSelectionEnd) {\n            return false;\n        }\n        if (this._languageConfigurationService.getLanguageConfiguration(languageAtSelectionStart).indentRulesSupport === null) {\n            return false;\n        }\n        return true;\n    }\n    getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, offset) {\n        for (let i = s.startLineNumber; i <= s.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 + offset;\n            const newIndent = indentUtils.generateIndent(newSpacesCnt, tabSize, insertSpaces);\n            if (newIndent !== originalIndent) {\n                builder.addEditOperation(new Range(i, 1, i, originalIndent.length + 1), newIndent);\n                if (i === s.endLineNumber && s.endColumn <= originalIndent.length + 1 && newIndent === '') {\n                    // as users select part of the original indent white spaces\n                    // when we adjust the indentation of endLine, we should adjust the cursor position as well.\n                    this._moveEndLineSelectionShrink = true;\n                }\n            }\n        }\n    }\n    computeCursorState(model, helper) {\n        let result = helper.getTrackedSelection(this._selectionId);\n        if (this._moveEndPositionDown) {\n            result = result.setEndPosition(result.endLineNumber + 1, 1);\n        }\n        if (this._moveEndLineSelectionShrink && result.startLineNumber < result.endLineNumber) {\n            result = result.setEndPosition(result.endLineNumber, 2);\n        }\n        return result;\n    }\n};\nMoveLinesCommand = __decorate([\n    __param(3, ILanguageConfigurationService)\n], MoveLinesCommand);\nexport { MoveLinesCommand };\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 { EditOperation } from '../../../common/core/editOperation.js';\nimport { Range } from '../../../common/core/range.js';\nexport class SortLinesCommand {\n    static getCollator() {\n        if (!SortLinesCommand._COLLATOR) {\n            SortLinesCommand._COLLATOR = new Intl.Collator();\n        }\n        return SortLinesCommand._COLLATOR;\n    }\n    constructor(selection, descending) {\n        this.selection = selection;\n        this.descending = descending;\n        this.selectionId = null;\n    }\n    getEditOperations(model, builder) {\n        const op = sortLines(model, this.selection, this.descending);\n        if (op) {\n            builder.addEditOperation(op.range, op.text);\n        }\n        this.selectionId = builder.trackSelection(this.selection);\n    }\n    computeCursorState(model, helper) {\n        return helper.getTrackedSelection(this.selectionId);\n    }\n    static canRun(model, selection, descending) {\n        if (model === null) {\n            return false;\n        }\n        const data = getSortData(model, selection, descending);\n        if (!data) {\n            return false;\n        }\n        for (let i = 0, len = data.before.length; i < len; i++) {\n            if (data.before[i] !== data.after[i]) {\n                return true;\n            }\n        }\n        return false;\n    }\n}\nSortLinesCommand._COLLATOR = null;\nfunction getSortData(model, selection, descending) {\n    const startLineNumber = selection.startLineNumber;\n    let endLineNumber = selection.endLineNumber;\n    if (selection.endColumn === 1) {\n        endLineNumber--;\n    }\n    // Nothing to sort if user didn't select anything.\n    if (startLineNumber >= endLineNumber) {\n        return null;\n    }\n    const linesToSort = [];\n    // Get the contents of the selection to be sorted.\n    for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\n        linesToSort.push(model.getLineContent(lineNumber));\n    }\n    let sorted = linesToSort.slice(0);\n    sorted.sort(SortLinesCommand.getCollator().compare);\n    // If descending, reverse the order.\n    if (descending === true) {\n        sorted = sorted.reverse();\n    }\n    return {\n        startLineNumber: startLineNumber,\n        endLineNumber: endLineNumber,\n        before: linesToSort,\n        after: sorted\n    };\n}\n/**\n * Generate commands for sorting lines on a model.\n */\nfunction sortLines(model, selection, descending) {\n    const data = getSortData(model, selection, descending);\n    if (!data) {\n        return null;\n    }\n    return EditOperation.replace(new Range(data.startLineNumber, 1, data.endLineNumber, model.getLineMaxColumn(data.endLineNumber)), data.after.join('\\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 LinkedEditingContribution_1;\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { Delayer, first } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { isCancellationError, onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution, registerModelAndPositionCommand } from '../../../browser/editorExtensions.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 { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport * as nls from '../../../../nls.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport './linkedEditing.css';\nexport const CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE = new RawContextKey('LinkedEditingInputVisible', false);\nconst DECORATION_CLASS_NAME = 'linked-editing-decoration';\nlet LinkedEditingContribution = LinkedEditingContribution_1 = class LinkedEditingContribution extends Disposable {\n    static get(editor) {\n        return editor.getContribution(LinkedEditingContribution_1.ID);\n    }\n    constructor(editor, contextKeyService, languageFeaturesService, languageConfigurationService, languageFeatureDebounceService) {\n        super();\n        this.languageConfigurationService = languageConfigurationService;\n        this._syncRangesToken = 0;\n        this._localToDispose = this._register(new DisposableStore());\n        this._editor = editor;\n        this._providers = languageFeaturesService.linkedEditingRangeProvider;\n        this._enabled = false;\n        this._visibleContextKey = CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\n        this._debounceInformation = languageFeatureDebounceService.for(this._providers, 'Linked Editing', { max: 200 });\n        this._currentDecorations = this._editor.createDecorationsCollection();\n        this._languageWordPattern = null;\n        this._currentWordPattern = null;\n        this._ignoreChangeEvent = false;\n        this._localToDispose = this._register(new DisposableStore());\n        this._rangeUpdateTriggerPromise = null;\n        this._rangeSyncTriggerPromise = null;\n        this._currentRequestCts = null;\n        this._currentRequestPosition = null;\n        this._currentRequestModelVersion = null;\n        this._register(this._editor.onDidChangeModel(() => this.reinitialize(true)));\n        this._register(this._editor.onDidChangeConfiguration(e => {\n            if (e.hasChanged(70 /* EditorOption.linkedEditing */) || e.hasChanged(93 /* EditorOption.renameOnType */)) {\n                this.reinitialize(false);\n            }\n        }));\n        this._register(this._providers.onDidChange(() => this.reinitialize(false)));\n        this._register(this._editor.onDidChangeModelLanguage(() => this.reinitialize(true)));\n        this.reinitialize(true);\n    }\n    reinitialize(forceRefresh) {\n        const model = this._editor.getModel();\n        const isEnabled = model !== null && (this._editor.getOption(70 /* EditorOption.linkedEditing */) || this._editor.getOption(93 /* EditorOption.renameOnType */)) && this._providers.has(model);\n        if (isEnabled === this._enabled && !forceRefresh) {\n            return;\n        }\n        this._enabled = isEnabled;\n        this.clearRanges();\n        this._localToDispose.clear();\n        if (!isEnabled || model === null) {\n            return;\n        }\n        this._localToDispose.add(Event.runAndSubscribe(model.onDidChangeLanguageConfiguration, () => {\n            this._languageWordPattern = this.languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n        }));\n        const rangeUpdateScheduler = new Delayer(this._debounceInformation.get(model));\n        const triggerRangeUpdate = () => {\n            var _a;\n            this._rangeUpdateTriggerPromise = rangeUpdateScheduler.trigger(() => this.updateRanges(), (_a = this._debounceDuration) !== null && _a !== void 0 ? _a : this._debounceInformation.get(model));\n        };\n        const rangeSyncScheduler = new Delayer(0);\n        const triggerRangeSync = (token) => {\n            this._rangeSyncTriggerPromise = rangeSyncScheduler.trigger(() => this._syncRanges(token));\n        };\n        this._localToDispose.add(this._editor.onDidChangeCursorPosition(() => {\n            triggerRangeUpdate();\n        }));\n        this._localToDispose.add(this._editor.onDidChangeModelContent((e) => {\n            if (!this._ignoreChangeEvent) {\n                if (this._currentDecorations.length > 0) {\n                    const referenceRange = this._currentDecorations.getRange(0);\n                    if (referenceRange && e.changes.every(c => referenceRange.intersectRanges(c.range))) {\n                        triggerRangeSync(this._syncRangesToken);\n                        return;\n                    }\n                }\n            }\n            triggerRangeUpdate();\n        }));\n        this._localToDispose.add({\n            dispose: () => {\n                rangeUpdateScheduler.dispose();\n                rangeSyncScheduler.dispose();\n            }\n        });\n        this.updateRanges();\n    }\n    _syncRanges(token) {\n        // delayed invocation, make sure we're still on\n        if (!this._editor.hasModel() || token !== this._syncRangesToken || this._currentDecorations.length === 0) {\n            // nothing to do\n            return;\n        }\n        const model = this._editor.getModel();\n        const referenceRange = this._currentDecorations.getRange(0);\n        if (!referenceRange || referenceRange.startLineNumber !== referenceRange.endLineNumber) {\n            return this.clearRanges();\n        }\n        const referenceValue = model.getValueInRange(referenceRange);\n        if (this._currentWordPattern) {\n            const match = referenceValue.match(this._currentWordPattern);\n            const matchLength = match ? match[0].length : 0;\n            if (matchLength !== referenceValue.length) {\n                return this.clearRanges();\n            }\n        }\n        const edits = [];\n        for (let i = 1, len = this._currentDecorations.length; i < len; i++) {\n            const mirrorRange = this._currentDecorations.getRange(i);\n            if (!mirrorRange) {\n                continue;\n            }\n            if (mirrorRange.startLineNumber !== mirrorRange.endLineNumber) {\n                edits.push({\n                    range: mirrorRange,\n                    text: referenceValue\n                });\n            }\n            else {\n                let oldValue = model.getValueInRange(mirrorRange);\n                let newValue = referenceValue;\n                let rangeStartColumn = mirrorRange.startColumn;\n                let rangeEndColumn = mirrorRange.endColumn;\n                const commonPrefixLength = strings.commonPrefixLength(oldValue, newValue);\n                rangeStartColumn += commonPrefixLength;\n                oldValue = oldValue.substr(commonPrefixLength);\n                newValue = newValue.substr(commonPrefixLength);\n                const commonSuffixLength = strings.commonSuffixLength(oldValue, newValue);\n                rangeEndColumn -= commonSuffixLength;\n                oldValue = oldValue.substr(0, oldValue.length - commonSuffixLength);\n                newValue = newValue.substr(0, newValue.length - commonSuffixLength);\n                if (rangeStartColumn !== rangeEndColumn || newValue.length !== 0) {\n                    edits.push({\n                        range: new Range(mirrorRange.startLineNumber, rangeStartColumn, mirrorRange.endLineNumber, rangeEndColumn),\n                        text: newValue\n                    });\n                }\n            }\n        }\n        if (edits.length === 0) {\n            return;\n        }\n        try {\n            this._editor.popUndoStop();\n            this._ignoreChangeEvent = true;\n            const prevEditOperationType = this._editor._getViewModel().getPrevEditOperationType();\n            this._editor.executeEdits('linkedEditing', edits);\n            this._editor._getViewModel().setPrevEditOperationType(prevEditOperationType);\n        }\n        finally {\n            this._ignoreChangeEvent = false;\n        }\n    }\n    dispose() {\n        this.clearRanges();\n        super.dispose();\n    }\n    clearRanges() {\n        this._visibleContextKey.set(false);\n        this._currentDecorations.clear();\n        if (this._currentRequestCts) {\n            this._currentRequestCts.cancel();\n            this._currentRequestCts = null;\n            this._currentRequestPosition = null;\n        }\n    }\n    async updateRanges(force = false) {\n        if (!this._editor.hasModel()) {\n            this.clearRanges();\n            return;\n        }\n        const position = this._editor.getPosition();\n        if (!this._enabled && !force || this._editor.getSelections().length > 1) {\n            // disabled or multicursor\n            this.clearRanges();\n            return;\n        }\n        const model = this._editor.getModel();\n        const modelVersionId = model.getVersionId();\n        if (this._currentRequestPosition && this._currentRequestModelVersion === modelVersionId) {\n            if (position.equals(this._currentRequestPosition)) {\n                return; // same position\n            }\n            if (this._currentDecorations.length > 0) {\n                const range = this._currentDecorations.getRange(0);\n                if (range && range.containsPosition(position)) {\n                    return; // just moving inside the existing primary range\n                }\n            }\n        }\n        // Clear existing decorations while we compute new ones\n        this.clearRanges();\n        this._currentRequestPosition = position;\n        this._currentRequestModelVersion = modelVersionId;\n        const currentRequestCts = this._currentRequestCts = new CancellationTokenSource();\n        try {\n            const sw = new StopWatch(false);\n            const response = await getLinkedEditingRanges(this._providers, model, position, currentRequestCts.token);\n            this._debounceInformation.update(model, sw.elapsed());\n            if (currentRequestCts !== this._currentRequestCts) {\n                return;\n            }\n            this._currentRequestCts = null;\n            if (modelVersionId !== model.getVersionId()) {\n                return;\n            }\n            let ranges = [];\n            if (response === null || response === void 0 ? void 0 : response.ranges) {\n                ranges = response.ranges;\n            }\n            this._currentWordPattern = (response === null || response === void 0 ? void 0 : response.wordPattern) || this._languageWordPattern;\n            let foundReferenceRange = false;\n            for (let i = 0, len = ranges.length; i < len; i++) {\n                if (Range.containsPosition(ranges[i], position)) {\n                    foundReferenceRange = true;\n                    if (i !== 0) {\n                        const referenceRange = ranges[i];\n                        ranges.splice(i, 1);\n                        ranges.unshift(referenceRange);\n                    }\n                    break;\n                }\n            }\n            if (!foundReferenceRange) {\n                // Cannot do linked editing if the ranges are not where the cursor is...\n                this.clearRanges();\n                return;\n            }\n            const decorations = ranges.map(range => ({ range: range, options: LinkedEditingContribution_1.DECORATION }));\n            this._visibleContextKey.set(true);\n            this._currentDecorations.set(decorations);\n            this._syncRangesToken++; // cancel any pending syncRanges call\n        }\n        catch (err) {\n            if (!isCancellationError(err)) {\n                onUnexpectedError(err);\n            }\n            if (this._currentRequestCts === currentRequestCts || !this._currentRequestCts) {\n                // stop if we are still the latest request\n                this.clearRanges();\n            }\n        }\n    }\n};\nLinkedEditingContribution.ID = 'editor.contrib.linkedEditing';\nLinkedEditingContribution.DECORATION = ModelDecorationOptions.register({\n    description: 'linked-editing',\n    stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n    className: DECORATION_CLASS_NAME\n});\nLinkedEditingContribution = LinkedEditingContribution_1 = __decorate([\n    __param(1, IContextKeyService),\n    __param(2, ILanguageFeaturesService),\n    __param(3, ILanguageConfigurationService),\n    __param(4, ILanguageFeatureDebounceService)\n], LinkedEditingContribution);\nexport { LinkedEditingContribution };\nexport class LinkedEditingAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.linkedEditing',\n            label: nls.localize('linkedEditing.label', \"Start Linked Editing\"),\n            alias: 'Start Linked Editing',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasRenameProvider),\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 60 /* KeyCode.F2 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\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 controller = LinkedEditingContribution.get(editor);\n        if (controller) {\n            return Promise.resolve(controller.updateRanges(true));\n        }\n        return Promise.resolve();\n    }\n}\nconst LinkedEditingCommand = EditorCommand.bindToContribution(LinkedEditingContribution.get);\nregisterEditorCommand(new LinkedEditingCommand({\n    id: 'cancelLinkedEditingInput',\n    precondition: CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE,\n    handler: x => x.clearRanges(),\n    kbOpts: {\n        kbExpr: EditorContextKeys.editorTextFocus,\n        weight: 100 /* KeybindingWeight.EditorContrib */ + 99,\n        primary: 9 /* KeyCode.Escape */,\n        secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n    }\n}));\nfunction getLinkedEditingRanges(providers, model, position, token) {\n    const orderedByScore = providers.ordered(model);\n    // in order of score ask the linked editing range provider\n    // until someone response with a good result\n    // (good = not null)\n    return first(orderedByScore.map(provider => async () => {\n        try {\n            return await provider.provideLinkedEditingRanges(model, position, token);\n        }\n        catch (e) {\n            onUnexpectedExternalError(e);\n            return undefined;\n        }\n    }), result => !!result && arrays.isNonEmptyArray(result === null || result === void 0 ? void 0 : result.ranges));\n}\nexport const editorLinkedEditingBackground = registerColor('editor.linkedEditingBackground', { dark: Color.fromHex('#f00').transparent(0.3), light: Color.fromHex('#f00').transparent(0.3), hcDark: Color.fromHex('#f00').transparent(0.3), hcLight: Color.white }, nls.localize('editorLinkedEditingBackground', 'Background color when the editor auto renames on type.'));\nregisterModelAndPositionCommand('_executeLinkedEditingProvider', (_accessor, model, position) => {\n    const { linkedEditingRangeProvider } = _accessor.get(ILanguageFeaturesService);\n    return getLinkedEditingRanges(linkedEditingRangeProvider, model, position, CancellationToken.None);\n});\nregisterEditorContribution(LinkedEditingContribution.ID, LinkedEditingContribution, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nregisterEditorAction(LinkedEditingAction);\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 LinkDetector_1;\nimport { createCancelablePromise, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Schemas } from '../../../../base/common/network.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport * as resources from '../../../../base/common/resources.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport './links.css';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ClickLinkGesture } from '../../gotoSymbol/browser/link/clickLinkGesture.js';\nimport { getLinks } from './getLinks.js';\nimport * as nls from '../../../../nls.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nlet LinkDetector = LinkDetector_1 = class LinkDetector extends Disposable {\n    static get(editor) {\n        return editor.getContribution(LinkDetector_1.ID);\n    }\n    constructor(editor, openerService, notificationService, languageFeaturesService, languageFeatureDebounceService) {\n        super();\n        this.editor = editor;\n        this.openerService = openerService;\n        this.notificationService = notificationService;\n        this.languageFeaturesService = languageFeaturesService;\n        this.providers = this.languageFeaturesService.linkProvider;\n        this.debounceInformation = languageFeatureDebounceService.for(this.providers, 'Links', { min: 1000, max: 4000 });\n        this.computeLinks = this._register(new RunOnceScheduler(() => this.computeLinksNow(), 1000));\n        this.computePromise = null;\n        this.activeLinksList = null;\n        this.currentOccurrences = {};\n        this.activeLinkDecorationId = null;\n        const clickLinkGesture = this._register(new ClickLinkGesture(editor));\n        this._register(clickLinkGesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, keyboardEvent]) => {\n            this._onEditorMouseMove(mouseEvent, keyboardEvent);\n        }));\n        this._register(clickLinkGesture.onExecute((e) => {\n            this.onEditorMouseUp(e);\n        }));\n        this._register(clickLinkGesture.onCancel((e) => {\n            this.cleanUpActiveLinkDecoration();\n        }));\n        this._register(editor.onDidChangeConfiguration((e) => {\n            if (!e.hasChanged(71 /* EditorOption.links */)) {\n                return;\n            }\n            // Remove any links (for the getting disabled case)\n            this.updateDecorations([]);\n            // Stop any computation (for the getting disabled case)\n            this.stop();\n            // Start computing (for the getting enabled case)\n            this.computeLinks.schedule(0);\n        }));\n        this._register(editor.onDidChangeModelContent((e) => {\n            if (!this.editor.hasModel()) {\n                return;\n            }\n            this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()));\n        }));\n        this._register(editor.onDidChangeModel((e) => {\n            this.currentOccurrences = {};\n            this.activeLinkDecorationId = null;\n            this.stop();\n            this.computeLinks.schedule(0);\n        }));\n        this._register(editor.onDidChangeModelLanguage((e) => {\n            this.stop();\n            this.computeLinks.schedule(0);\n        }));\n        this._register(this.providers.onDidChange((e) => {\n            this.stop();\n            this.computeLinks.schedule(0);\n        }));\n        this.computeLinks.schedule(0);\n    }\n    async computeLinksNow() {\n        if (!this.editor.hasModel() || !this.editor.getOption(71 /* EditorOption.links */)) {\n            return;\n        }\n        const model = this.editor.getModel();\n        if (model.isTooLargeForSyncing()) {\n            return;\n        }\n        if (!this.providers.has(model)) {\n            return;\n        }\n        if (this.activeLinksList) {\n            this.activeLinksList.dispose();\n            this.activeLinksList = null;\n        }\n        this.computePromise = createCancelablePromise(token => getLinks(this.providers, model, token));\n        try {\n            const sw = new StopWatch(false);\n            this.activeLinksList = await this.computePromise;\n            this.debounceInformation.update(model, sw.elapsed());\n            if (model.isDisposed()) {\n                return;\n            }\n            this.updateDecorations(this.activeLinksList.links);\n        }\n        catch (err) {\n            onUnexpectedError(err);\n        }\n        finally {\n            this.computePromise = null;\n        }\n    }\n    updateDecorations(links) {\n        const useMetaKey = (this.editor.getOption(78 /* EditorOption.multiCursorModifier */) === 'altKey');\n        const oldDecorations = [];\n        const keys = Object.keys(this.currentOccurrences);\n        for (const decorationId of keys) {\n            const occurence = this.currentOccurrences[decorationId];\n            oldDecorations.push(occurence.decorationId);\n        }\n        const newDecorations = [];\n        if (links) {\n            // Not sure why this is sometimes null\n            for (const link of links) {\n                newDecorations.push(LinkOccurrence.decoration(link, useMetaKey));\n            }\n        }\n        this.editor.changeDecorations((changeAccessor) => {\n            const decorations = changeAccessor.deltaDecorations(oldDecorations, newDecorations);\n            this.currentOccurrences = {};\n            this.activeLinkDecorationId = null;\n            for (let i = 0, len = decorations.length; i < len; i++) {\n                const occurence = new LinkOccurrence(links[i], decorations[i]);\n                this.currentOccurrences[occurence.decorationId] = occurence;\n            }\n        });\n    }\n    _onEditorMouseMove(mouseEvent, withKey) {\n        const useMetaKey = (this.editor.getOption(78 /* EditorOption.multiCursorModifier */) === 'altKey');\n        if (this.isEnabled(mouseEvent, withKey)) {\n            this.cleanUpActiveLinkDecoration(); // always remove previous link decoration as their can only be one\n            const occurrence = this.getLinkOccurrence(mouseEvent.target.position);\n            if (occurrence) {\n                this.editor.changeDecorations((changeAccessor) => {\n                    occurrence.activate(changeAccessor, useMetaKey);\n                    this.activeLinkDecorationId = occurrence.decorationId;\n                });\n            }\n        }\n        else {\n            this.cleanUpActiveLinkDecoration();\n        }\n    }\n    cleanUpActiveLinkDecoration() {\n        const useMetaKey = (this.editor.getOption(78 /* EditorOption.multiCursorModifier */) === 'altKey');\n        if (this.activeLinkDecorationId) {\n            const occurrence = this.currentOccurrences[this.activeLinkDecorationId];\n            if (occurrence) {\n                this.editor.changeDecorations((changeAccessor) => {\n                    occurrence.deactivate(changeAccessor, useMetaKey);\n                });\n            }\n            this.activeLinkDecorationId = null;\n        }\n    }\n    onEditorMouseUp(mouseEvent) {\n        if (!this.isEnabled(mouseEvent)) {\n            return;\n        }\n        const occurrence = this.getLinkOccurrence(mouseEvent.target.position);\n        if (!occurrence) {\n            return;\n        }\n        this.openLinkOccurrence(occurrence, mouseEvent.hasSideBySideModifier, true /* from user gesture */);\n    }\n    openLinkOccurrence(occurrence, openToSide, fromUserGesture = false) {\n        if (!this.openerService) {\n            return;\n        }\n        const { link } = occurrence;\n        link.resolve(CancellationToken.None).then(uri => {\n            // Support for relative file URIs of the shape file://./relativeFile.txt or file:///./relativeFile.txt\n            if (typeof uri === 'string' && this.editor.hasModel()) {\n                const modelUri = this.editor.getModel().uri;\n                if (modelUri.scheme === Schemas.file && uri.startsWith(`${Schemas.file}:`)) {\n                    const parsedUri = URI.parse(uri);\n                    if (parsedUri.scheme === Schemas.file) {\n                        const fsPath = resources.originalFSPath(parsedUri);\n                        let relativePath = null;\n                        if (fsPath.startsWith('/./') || fsPath.startsWith('\\\\.\\\\')) {\n                            relativePath = `.${fsPath.substr(1)}`;\n                        }\n                        else if (fsPath.startsWith('//./') || fsPath.startsWith('\\\\\\\\.\\\\')) {\n                            relativePath = `.${fsPath.substr(2)}`;\n                        }\n                        if (relativePath) {\n                            uri = resources.joinPath(modelUri, relativePath);\n                        }\n                    }\n                }\n            }\n            return this.openerService.open(uri, { openToSide, fromUserGesture, allowContributedOpeners: true, allowCommands: true, fromWorkspace: true });\n        }, err => {\n            const messageOrError = err instanceof Error ? err.message : err;\n            // different error cases\n            if (messageOrError === 'invalid') {\n                this.notificationService.warn(nls.localize('invalid.url', 'Failed to open this link because it is not well-formed: {0}', link.url.toString()));\n            }\n            else if (messageOrError === 'missing') {\n                this.notificationService.warn(nls.localize('missing.url', 'Failed to open this link because its target is missing.'));\n            }\n            else {\n                onUnexpectedError(err);\n            }\n        });\n    }\n    getLinkOccurrence(position) {\n        if (!this.editor.hasModel() || !position) {\n            return null;\n        }\n        const decorations = this.editor.getModel().getDecorationsInRange({\n            startLineNumber: position.lineNumber,\n            startColumn: position.column,\n            endLineNumber: position.lineNumber,\n            endColumn: position.column\n        }, 0, true);\n        for (const decoration of decorations) {\n            const currentOccurrence = this.currentOccurrences[decoration.id];\n            if (currentOccurrence) {\n                return currentOccurrence;\n            }\n        }\n        return null;\n    }\n    isEnabled(mouseEvent, withKey) {\n        return Boolean((mouseEvent.target.type === 6 /* MouseTargetType.CONTENT_TEXT */)\n            && (mouseEvent.hasTriggerModifier || (withKey && withKey.keyCodeIsTriggerKey)));\n    }\n    stop() {\n        var _a;\n        this.computeLinks.cancel();\n        if (this.activeLinksList) {\n            (_a = this.activeLinksList) === null || _a === void 0 ? void 0 : _a.dispose();\n            this.activeLinksList = null;\n        }\n        if (this.computePromise) {\n            this.computePromise.cancel();\n            this.computePromise = null;\n        }\n    }\n    dispose() {\n        super.dispose();\n        this.stop();\n    }\n};\nLinkDetector.ID = 'editor.linkDetector';\nLinkDetector = LinkDetector_1 = __decorate([\n    __param(1, IOpenerService),\n    __param(2, INotificationService),\n    __param(3, ILanguageFeaturesService),\n    __param(4, ILanguageFeatureDebounceService)\n], LinkDetector);\nexport { LinkDetector };\nconst decoration = {\n    general: ModelDecorationOptions.register({\n        description: 'detected-link',\n        stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n        collapseOnReplaceEdit: true,\n        inlineClassName: 'detected-link'\n    }),\n    active: ModelDecorationOptions.register({\n        description: 'detected-link-active',\n        stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n        collapseOnReplaceEdit: true,\n        inlineClassName: 'detected-link-active'\n    })\n};\nclass LinkOccurrence {\n    static decoration(link, useMetaKey) {\n        return {\n            range: link.range,\n            options: LinkOccurrence._getOptions(link, useMetaKey, false)\n        };\n    }\n    static _getOptions(link, useMetaKey, isActive) {\n        const options = { ...(isActive ? decoration.active : decoration.general) };\n        options.hoverMessage = getHoverMessage(link, useMetaKey);\n        return options;\n    }\n    constructor(link, decorationId) {\n        this.link = link;\n        this.decorationId = decorationId;\n    }\n    activate(changeAccessor, useMetaKey) {\n        changeAccessor.changeDecorationOptions(this.decorationId, LinkOccurrence._getOptions(this.link, useMetaKey, true));\n    }\n    deactivate(changeAccessor, useMetaKey) {\n        changeAccessor.changeDecorationOptions(this.decorationId, LinkOccurrence._getOptions(this.link, useMetaKey, false));\n    }\n}\nfunction getHoverMessage(link, useMetaKey) {\n    const executeCmd = link.url && /^command:/i.test(link.url.toString());\n    const label = link.tooltip\n        ? link.tooltip\n        : executeCmd\n            ? nls.localize('links.navigate.executeCmd', 'Execute command')\n            : nls.localize('links.navigate.follow', 'Follow link');\n    const kb = useMetaKey\n        ? platform.isMacintosh\n            ? nls.localize('links.navigate.kb.meta.mac', \"cmd + click\")\n            : nls.localize('links.navigate.kb.meta', \"ctrl + click\")\n        : platform.isMacintosh\n            ? nls.localize('links.navigate.kb.alt.mac', \"option + click\")\n            : nls.localize('links.navigate.kb.alt', \"alt + click\");\n    if (link.url) {\n        let nativeLabel = '';\n        if (/^command:/i.test(link.url.toString())) {\n            // Don't show complete command arguments in the native tooltip\n            const match = link.url.toString().match(/^command:([^?#]+)/);\n            if (match) {\n                const commandId = match[1];\n                nativeLabel = nls.localize('tooltip.explanation', \"Execute command {0}\", commandId);\n            }\n        }\n        const hoverMessage = new MarkdownString('', true)\n            .appendLink(link.url.toString(true).replace(/ /g, '%20'), label, nativeLabel)\n            .appendMarkdown(` (${kb})`);\n        return hoverMessage;\n    }\n    else {\n        return new MarkdownString().appendText(`${label} (${kb})`);\n    }\n}\nclass OpenLinkAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.openLink',\n            label: nls.localize('label', \"Open Link\"),\n            alias: 'Open Link',\n            precondition: undefined\n        });\n    }\n    run(accessor, editor) {\n        const linkDetector = LinkDetector.get(editor);\n        if (!linkDetector) {\n            return;\n        }\n        if (!editor.hasModel()) {\n            return;\n        }\n        const selections = editor.getSelections();\n        for (const sel of selections) {\n            const link = linkDetector.getLinkOccurrence(sel.getEndPosition());\n            if (link) {\n                linkDetector.openLinkOccurrence(link, false);\n            }\n        }\n    }\n}\nregisterEditorContribution(LinkDetector.ID, LinkDetector, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nregisterEditorAction(OpenLinkAction);\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { coalesce } from '../../../../base/common/arrays.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore, isDisposable } from '../../../../base/common/lifecycle.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport class Link {\n    constructor(link, provider) {\n        this._link = link;\n        this._provider = provider;\n    }\n    toJSON() {\n        return {\n            range: this.range,\n            url: this.url,\n            tooltip: this.tooltip\n        };\n    }\n    get range() {\n        return this._link.range;\n    }\n    get url() {\n        return this._link.url;\n    }\n    get tooltip() {\n        return this._link.tooltip;\n    }\n    async resolve(token) {\n        if (this._link.url) {\n            return this._link.url;\n        }\n        if (typeof this._provider.resolveLink === 'function') {\n            return Promise.resolve(this._provider.resolveLink(this._link, token)).then(value => {\n                this._link = value || this._link;\n                if (this._link.url) {\n                    // recurse\n                    return this.resolve(token);\n                }\n                return Promise.reject(new Error('missing'));\n            });\n        }\n        return Promise.reject(new Error('missing'));\n    }\n}\nexport class LinksList {\n    constructor(tuples) {\n        this._disposables = new DisposableStore();\n        let links = [];\n        for (const [list, provider] of tuples) {\n            // merge all links\n            const newLinks = list.links.map(link => new Link(link, provider));\n            links = LinksList._union(links, newLinks);\n            // register disposables\n            if (isDisposable(list)) {\n                this._disposables.add(list);\n            }\n        }\n        this.links = links;\n    }\n    dispose() {\n        this._disposables.dispose();\n        this.links.length = 0;\n    }\n    static _union(oldLinks, newLinks) {\n        // reunite oldLinks with newLinks and remove duplicates\n        const result = [];\n        let oldIndex;\n        let oldLen;\n        let newIndex;\n        let newLen;\n        for (oldIndex = 0, newIndex = 0, oldLen = oldLinks.length, newLen = newLinks.length; oldIndex < oldLen && newIndex < newLen;) {\n            const oldLink = oldLinks[oldIndex];\n            const newLink = newLinks[newIndex];\n            if (Range.areIntersectingOrTouching(oldLink.range, newLink.range)) {\n                // Remove the oldLink\n                oldIndex++;\n                continue;\n            }\n            const comparisonResult = Range.compareRangesUsingStarts(oldLink.range, newLink.range);\n            if (comparisonResult < 0) {\n                // oldLink is before\n                result.push(oldLink);\n                oldIndex++;\n            }\n            else {\n                // newLink is before\n                result.push(newLink);\n                newIndex++;\n            }\n        }\n        for (; oldIndex < oldLen; oldIndex++) {\n            result.push(oldLinks[oldIndex]);\n        }\n        for (; newIndex < newLen; newIndex++) {\n            result.push(newLinks[newIndex]);\n        }\n        return result;\n    }\n}\nexport function getLinks(providers, model, token) {\n    const lists = [];\n    // ask all providers for links in parallel\n    const promises = providers.ordered(model).reverse().map((provider, i) => {\n        return Promise.resolve(provider.provideLinks(model, token)).then(result => {\n            if (result) {\n                lists[i] = [result, provider];\n            }\n        }, onUnexpectedExternalError);\n    });\n    return Promise.all(promises).then(() => {\n        const result = new LinksList(coalesce(lists));\n        if (!token.isCancellationRequested) {\n            return result;\n        }\n        result.dispose();\n        return new LinksList([]);\n    });\n}\nCommandsRegistry.registerCommand('_executeLinkProvider', async (accessor, ...args) => {\n    let [uri, resolveCount] = args;\n    assertType(uri instanceof URI);\n    if (typeof resolveCount !== 'number') {\n        resolveCount = 0;\n    }\n    const { linkProvider } = accessor.get(ILanguageFeaturesService);\n    const model = accessor.get(IModelService).getModel(uri);\n    if (!model) {\n        return [];\n    }\n    const list = await getLinks(linkProvider, model, CancellationToken.None);\n    if (!list) {\n        return [];\n    }\n    // resolve links\n    for (let i = 0; i < Math.min(resolveCount, list.links.length); i++) {\n        await list.links[i].resolve(CancellationToken.None);\n    }\n    const result = list.links.slice(0);\n    list.dispose();\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 { 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 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 './highlightDecorations.css';\nimport { OverviewRulerLane } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { DocumentHighlightKind } from '../../../common/languages.js';\nimport * as nls from '../../../../nls.js';\nimport { activeContrastBorder, editorSelectionHighlight, minimapSelectionOccurrenceHighlight, overviewRulerSelectionHighlightForeground, registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant, themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nconst wordHighlightBackground = registerColor('editor.wordHighlightBackground', { dark: '#575757B8', light: '#57575740', hcDark: null, hcLight: null }, nls.localize('wordHighlight', 'Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations.'), true);\nregisterColor('editor.wordHighlightStrongBackground', { dark: '#004972B8', light: '#0e639c40', hcDark: null, hcLight: null }, nls.localize('wordHighlightStrong', 'Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations.'), true);\nregisterColor('editor.wordHighlightTextBackground', { light: wordHighlightBackground, dark: wordHighlightBackground, hcDark: wordHighlightBackground, hcLight: wordHighlightBackground }, nls.localize('wordHighlightText', 'Background color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations.'), true);\nconst wordHighlightBorder = registerColor('editor.wordHighlightBorder', { light: null, dark: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('wordHighlightBorder', 'Border color of a symbol during read-access, like reading a variable.'));\nregisterColor('editor.wordHighlightStrongBorder', { light: null, dark: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('wordHighlightStrongBorder', 'Border color of a symbol during write-access, like writing to a variable.'));\nregisterColor('editor.wordHighlightTextBorder', { light: wordHighlightBorder, dark: wordHighlightBorder, hcDark: wordHighlightBorder, hcLight: wordHighlightBorder }, nls.localize('wordHighlightTextBorder', \"Border color of a textual occurrence for a symbol.\"));\nconst overviewRulerWordHighlightForeground = registerColor('editorOverviewRuler.wordHighlightForeground', { dark: '#A0A0A0CC', light: '#A0A0A0CC', hcDark: '#A0A0A0CC', hcLight: '#A0A0A0CC' }, nls.localize('overviewRulerWordHighlightForeground', 'Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations.'), true);\nconst overviewRulerWordHighlightStrongForeground = registerColor('editorOverviewRuler.wordHighlightStrongForeground', { dark: '#C0A0C0CC', light: '#C0A0C0CC', hcDark: '#C0A0C0CC', hcLight: '#C0A0C0CC' }, nls.localize('overviewRulerWordHighlightStrongForeground', 'Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations.'), true);\nconst overviewRulerWordHighlightTextForeground = registerColor('editorOverviewRuler.wordHighlightTextForeground', { dark: overviewRulerSelectionHighlightForeground, light: overviewRulerSelectionHighlightForeground, hcDark: overviewRulerSelectionHighlightForeground, hcLight: overviewRulerSelectionHighlightForeground }, nls.localize('overviewRulerWordHighlightTextForeground', 'Overview ruler marker color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations.'), true);\nconst _WRITE_OPTIONS = ModelDecorationOptions.register({\n    description: 'word-highlight-strong',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    className: 'wordHighlightStrong',\n    overviewRuler: {\n        color: themeColorFromId(overviewRulerWordHighlightStrongForeground),\n        position: OverviewRulerLane.Center\n    },\n    minimap: {\n        color: themeColorFromId(minimapSelectionOccurrenceHighlight),\n        position: 1 /* MinimapPosition.Inline */\n    },\n});\nconst _TEXT_OPTIONS = ModelDecorationOptions.register({\n    description: 'word-highlight-text',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    className: 'wordHighlightText',\n    overviewRuler: {\n        color: themeColorFromId(overviewRulerWordHighlightTextForeground),\n        position: OverviewRulerLane.Center\n    },\n    minimap: {\n        color: themeColorFromId(minimapSelectionOccurrenceHighlight),\n        position: 1 /* MinimapPosition.Inline */\n    },\n});\nconst _SELECTION_HIGHLIGHT_OPTIONS = ModelDecorationOptions.register({\n    description: 'selection-highlight-overview',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    className: 'selectionHighlight',\n    overviewRuler: {\n        color: themeColorFromId(overviewRulerSelectionHighlightForeground),\n        position: OverviewRulerLane.Center\n    },\n    minimap: {\n        color: themeColorFromId(minimapSelectionOccurrenceHighlight),\n        position: 1 /* MinimapPosition.Inline */\n    },\n});\nconst _SELECTION_HIGHLIGHT_OPTIONS_NO_OVERVIEW = ModelDecorationOptions.register({\n    description: 'selection-highlight',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    className: 'selectionHighlight',\n});\nconst _REGULAR_OPTIONS = ModelDecorationOptions.register({\n    description: 'word-highlight',\n    stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n    className: 'wordHighlight',\n    overviewRuler: {\n        color: themeColorFromId(overviewRulerWordHighlightForeground),\n        position: OverviewRulerLane.Center\n    },\n    minimap: {\n        color: themeColorFromId(minimapSelectionOccurrenceHighlight),\n        position: 1 /* MinimapPosition.Inline */\n    },\n});\nexport function getHighlightDecorationOptions(kind) {\n    if (kind === DocumentHighlightKind.Write) {\n        return _WRITE_OPTIONS;\n    }\n    else if (kind === DocumentHighlightKind.Text) {\n        return _TEXT_OPTIONS;\n    }\n    else {\n        return _REGULAR_OPTIONS;\n    }\n}\nexport function getSelectionHighlightDecorationOptions(hasSemanticHighlights) {\n    // Show in overviewRuler only if model has no semantic highlighting\n    return (hasSemanticHighlights ? _SELECTION_HIGHLIGHT_OPTIONS_NO_OVERVIEW : _SELECTION_HIGHLIGHT_OPTIONS);\n}\nregisterThemingParticipant((theme, collector) => {\n    const selectionHighlight = theme.getColor(editorSelectionHighlight);\n    if (selectionHighlight) {\n        collector.addRule(`.monaco-editor .selectionHighlight { background-color: ${selectionHighlight.transparent(0.5)}; }`);\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 { registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { AcceptInlineEdit, JumpBackInlineEdit, JumpToInlineEdit, RejectInlineEdit, TriggerInlineEdit } from './commands.js';\nimport { InlineEditHoverParticipant } from './hoverParticipant.js';\nimport { InlineEditController } from './inlineEditController.js';\nregisterEditorAction(AcceptInlineEdit);\nregisterEditorAction(RejectInlineEdit);\nregisterEditorAction(JumpToInlineEdit);\nregisterEditorAction(JumpBackInlineEdit);\nregisterEditorAction(TriggerInlineEdit);\nregisterEditorContribution(InlineEditController.ID, InlineEditController, 3 /* EditorContributionInstantiation.Eventually */);\nHoverParticipantRegistry.register(InlineEditHoverParticipant);\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 { EditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { inlineEditAcceptId, inlineEditJumpBackId, inlineEditJumpToId, inlineEditRejectId } from './commandIds.js';\nimport { InlineEditController } from './inlineEditController.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nexport class AcceptInlineEdit extends EditorAction {\n    constructor() {\n        super({\n            id: inlineEditAcceptId,\n            label: 'Accept Inline Edit',\n            alias: 'Accept Inline Edit',\n            precondition: ContextKeyExpr.and(EditorContextKeys.writable, InlineEditController.inlineEditVisibleContext),\n            kbOpts: [\n                {\n                    weight: 100 /* KeybindingWeight.EditorContrib */ + 1,\n                    primary: 2 /* KeyCode.Tab */,\n                    kbExpr: ContextKeyExpr.and(EditorContextKeys.writable, InlineEditController.inlineEditVisibleContext, InlineEditController.cursorAtInlineEditContext)\n                }\n            ],\n            menuOpts: [{\n                    menuId: MenuId.InlineEditToolbar,\n                    title: 'Accept',\n                    group: 'primary',\n                    order: 1,\n                }],\n        });\n    }\n    async run(accessor, editor) {\n        const controller = InlineEditController.get(editor);\n        await (controller === null || controller === void 0 ? void 0 : controller.accept());\n    }\n}\nexport class TriggerInlineEdit extends EditorAction {\n    constructor() {\n        const activeExpr = ContextKeyExpr.and(EditorContextKeys.writable, ContextKeyExpr.not(InlineEditController.inlineEditVisibleKey));\n        super({\n            id: 'editor.action.inlineEdit.trigger',\n            label: 'Trigger Inline Edit',\n            alias: 'Trigger Inline Edit',\n            precondition: activeExpr,\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */ + 1,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 86 /* KeyCode.Equal */,\n                kbExpr: activeExpr\n            },\n        });\n    }\n    async run(accessor, editor) {\n        const controller = InlineEditController.get(editor);\n        controller === null || controller === void 0 ? void 0 : controller.trigger();\n    }\n}\nexport class JumpToInlineEdit extends EditorAction {\n    constructor() {\n        const activeExpr = ContextKeyExpr.and(EditorContextKeys.writable, InlineEditController.inlineEditVisibleContext, ContextKeyExpr.not(InlineEditController.cursorAtInlineEditKey));\n        super({\n            id: inlineEditJumpToId,\n            label: 'Jump to Inline Edit',\n            alias: 'Jump to Inline Edit',\n            precondition: activeExpr,\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */ + 1,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 86 /* KeyCode.Equal */,\n                kbExpr: activeExpr\n            },\n            menuOpts: [{\n                    menuId: MenuId.InlineEditToolbar,\n                    title: 'Jump To Edit',\n                    group: 'primary',\n                    order: 3,\n                    when: activeExpr\n                }],\n        });\n    }\n    async run(accessor, editor) {\n        const controller = InlineEditController.get(editor);\n        controller === null || controller === void 0 ? void 0 : controller.jumpToCurrent();\n    }\n}\nexport class JumpBackInlineEdit extends EditorAction {\n    constructor() {\n        const activeExpr = ContextKeyExpr.and(EditorContextKeys.writable, InlineEditController.cursorAtInlineEditContext);\n        super({\n            id: inlineEditJumpBackId,\n            label: 'Jump Back from Inline Edit',\n            alias: 'Jump Back from Inline Edit',\n            precondition: activeExpr,\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */ + 10,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 86 /* KeyCode.Equal */,\n                kbExpr: activeExpr\n            },\n            menuOpts: [{\n                    menuId: MenuId.InlineEditToolbar,\n                    title: 'Jump Back',\n                    group: 'primary',\n                    order: 3,\n                    when: activeExpr\n                }],\n        });\n    }\n    async run(accessor, editor) {\n        const controller = InlineEditController.get(editor);\n        controller === null || controller === void 0 ? void 0 : controller.jumpBack();\n    }\n}\nexport class RejectInlineEdit extends EditorAction {\n    constructor() {\n        const activeExpr = ContextKeyExpr.and(EditorContextKeys.writable, InlineEditController.inlineEditVisibleContext);\n        super({\n            id: inlineEditRejectId,\n            label: 'Reject Inline Edit',\n            alias: 'Reject Inline Edit',\n            precondition: activeExpr,\n            kbOpts: {\n                weight: 100 /* KeybindingWeight.EditorContrib */,\n                primary: 9 /* KeyCode.Escape */,\n                kbExpr: activeExpr\n            },\n            menuOpts: [{\n                    menuId: MenuId.InlineEditToolbar,\n                    title: 'Reject',\n                    group: 'secondary',\n                    order: 2,\n                }],\n        });\n    }\n    async run(accessor, editor) {\n        const controller = InlineEditController.get(editor);\n        await (controller === null || controller === void 0 ? void 0 : controller.clear());\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 *--------------------------------------------------------------------------------------------*/\nexport const inlineEditAcceptId = 'editor.action.inlineEdit.accept';\nexport const inlineEditRejectId = 'editor.action.inlineEdit.reject';\nexport const inlineEditJumpToId = 'editor.action.inlineEdit.jumpTo';\nexport const inlineEditJumpBackId = 'editor.action.inlineEdit.jumpBack';\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 InlineEditController_1;\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { autorun, constObservable, disposableObservableValue, observableFromEvent, observableSignalFromEvent, observableValue, transaction } from '../../../../base/common/observable.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { GhostTextWidget } from './ghostTextWidget.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { InlineEditTriggerKind } from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { GhostText, GhostTextPart } from '../../inlineCompletions/browser/ghostText.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { InlineEditHintsWidget } from './inlineEditHintsWidget.js';\nimport { createStyleSheet2 } from '../../../../base/browser/dom.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nexport class InlineEditWidget {\n    constructor(widget, edit) {\n        this.widget = widget;\n        this.edit = edit;\n    }\n    dispose() {\n        this.widget.dispose();\n    }\n}\nlet InlineEditController = InlineEditController_1 = class InlineEditController extends Disposable {\n    static get(editor) {\n        return editor.getContribution(InlineEditController_1.ID);\n    }\n    constructor(editor, instantiationService, contextKeyService, languageFeaturesService, _commandService, _configurationService) {\n        super();\n        this.editor = editor;\n        this.instantiationService = instantiationService;\n        this.contextKeyService = contextKeyService;\n        this.languageFeaturesService = languageFeaturesService;\n        this._commandService = _commandService;\n        this._configurationService = _configurationService;\n        this._isVisibleContext = InlineEditController_1.inlineEditVisibleContext.bindTo(this.contextKeyService);\n        this._isCursorAtInlineEditContext = InlineEditController_1.cursorAtInlineEditContext.bindTo(this.contextKeyService);\n        this._currentEdit = this._register(disposableObservableValue(this, undefined));\n        this._isAccepting = observableValue(this, false);\n        this._enabled = observableFromEvent(this.editor.onDidChangeConfiguration, () => this.editor.getOption(63 /* EditorOption.inlineEdit */).enabled);\n        this._fontFamily = observableFromEvent(this.editor.onDidChangeConfiguration, () => this.editor.getOption(63 /* EditorOption.inlineEdit */).fontFamily);\n        this._backgroundColoring = observableFromEvent(this.editor.onDidChangeConfiguration, () => this.editor.getOption(63 /* EditorOption.inlineEdit */).backgroundColoring);\n        //Automatically request inline edit when the content was changed\n        //Cancel the previous request if there is one\n        //Remove the previous ghost text\n        const modelChangedSignal = observableSignalFromEvent('InlineEditController.modelContentChangedSignal', editor.onDidChangeModelContent);\n        this._register(autorun(reader => {\n            /** @description InlineEditController.modelContentChanged model */\n            if (!this._enabled.read(reader)) {\n                return;\n            }\n            modelChangedSignal.read(reader);\n            if (this._isAccepting.read(reader)) {\n                return;\n            }\n            this.getInlineEdit(editor, true);\n        }));\n        //Check if the cursor is at the ghost text\n        const cursorPosition = observableFromEvent(editor.onDidChangeCursorPosition, () => editor.getPosition());\n        this._register(autorun(reader => {\n            /** @description InlineEditController.cursorPositionChanged model */\n            if (!this._enabled.read(reader)) {\n                return;\n            }\n            const pos = cursorPosition.read(reader);\n            if (pos) {\n                this.checkCursorPosition(pos);\n            }\n        }));\n        //Perform stuff when the current edit has changed\n        this._register(autorun((reader) => {\n            /** @description InlineEditController.update model */\n            const currentEdit = this._currentEdit.read(reader);\n            this._isCursorAtInlineEditContext.set(false);\n            if (!currentEdit) {\n                this._isVisibleContext.set(false);\n                return;\n            }\n            this._isVisibleContext.set(true);\n            const pos = editor.getPosition();\n            if (pos) {\n                this.checkCursorPosition(pos);\n            }\n        }));\n        //Clear suggestions on lost focus\n        const editorBlurSingal = observableSignalFromEvent('InlineEditController.editorBlurSignal', editor.onDidBlurEditorWidget);\n        this._register(autorun(async (reader) => {\n            var _a;\n            /** @description InlineEditController.editorBlur */\n            if (!this._enabled.read(reader)) {\n                return;\n            }\n            editorBlurSingal.read(reader);\n            // This is a hidden setting very useful for debugging\n            if (this._configurationService.getValue('editor.experimentalInlineEdit.keepOnBlur') || editor.getOption(63 /* EditorOption.inlineEdit */).keepOnBlur) {\n                return;\n            }\n            (_a = this._currentRequestCts) === null || _a === void 0 ? void 0 : _a.dispose(true);\n            this._currentRequestCts = undefined;\n            await this.clear(false);\n        }));\n        //Invoke provider on focus\n        const editorFocusSignal = observableSignalFromEvent('InlineEditController.editorFocusSignal', editor.onDidFocusEditorText);\n        this._register(autorun(reader => {\n            /** @description InlineEditController.editorFocus */\n            if (!this._enabled.read(reader)) {\n                return;\n            }\n            editorFocusSignal.read(reader);\n            this.getInlineEdit(editor, true);\n        }));\n        //handle changes of font setting\n        const styleElement = this._register(createStyleSheet2());\n        this._register(autorun(reader => {\n            const fontFamily = this._fontFamily.read(reader);\n            styleElement.setStyle(fontFamily === '' || fontFamily === 'default' ? `` : `\n.monaco-editor .inline-edit-decoration,\n.monaco-editor .inline-edit-decoration-preview,\n.monaco-editor .inline-edit {\n\tfont-family: ${fontFamily};\n}`);\n        }));\n        this._register(new InlineEditHintsWidget(this.editor, this._currentEdit, this.instantiationService));\n    }\n    checkCursorPosition(position) {\n        var _a;\n        if (!this._currentEdit) {\n            this._isCursorAtInlineEditContext.set(false);\n            return;\n        }\n        const gt = (_a = this._currentEdit.get()) === null || _a === void 0 ? void 0 : _a.edit;\n        if (!gt) {\n            this._isCursorAtInlineEditContext.set(false);\n            return;\n        }\n        this._isCursorAtInlineEditContext.set(Range.containsPosition(gt.range, position));\n    }\n    validateInlineEdit(editor, edit) {\n        var _a, _b;\n        //Multiline inline replacing edit must replace whole lines\n        if (edit.text.includes('\\n') && edit.range.startLineNumber !== edit.range.endLineNumber && edit.range.startColumn !== edit.range.endColumn) {\n            const firstColumn = edit.range.startColumn;\n            if (firstColumn !== 1) {\n                return false;\n            }\n            const lastLine = edit.range.endLineNumber;\n            const lastColumn = edit.range.endColumn;\n            const lineLength = (_b = (_a = editor.getModel()) === null || _a === void 0 ? void 0 : _a.getLineLength(lastLine)) !== null && _b !== void 0 ? _b : 0;\n            if (lastColumn !== lineLength + 1) {\n                return false;\n            }\n        }\n        return true;\n    }\n    async fetchInlineEdit(editor, auto) {\n        if (this._currentRequestCts) {\n            this._currentRequestCts.dispose(true);\n        }\n        const model = editor.getModel();\n        if (!model) {\n            return;\n        }\n        const modelVersion = model.getVersionId();\n        const providers = this.languageFeaturesService.inlineEditProvider.all(model);\n        if (providers.length === 0) {\n            return;\n        }\n        const provider = providers[0];\n        this._currentRequestCts = new CancellationTokenSource();\n        const token = this._currentRequestCts.token;\n        const triggerKind = auto ? InlineEditTriggerKind.Automatic : InlineEditTriggerKind.Invoke;\n        const shouldDebounce = auto;\n        if (shouldDebounce) {\n            await wait(50, token);\n        }\n        if (token.isCancellationRequested || model.isDisposed() || model.getVersionId() !== modelVersion) {\n            return;\n        }\n        const edit = await provider.provideInlineEdit(model, { triggerKind }, token);\n        if (!edit) {\n            return;\n        }\n        if (token.isCancellationRequested || model.isDisposed() || model.getVersionId() !== modelVersion) {\n            return;\n        }\n        if (!this.validateInlineEdit(editor, edit)) {\n            return;\n        }\n        return edit;\n    }\n    async getInlineEdit(editor, auto) {\n        var _a;\n        this._isCursorAtInlineEditContext.set(false);\n        await this.clear();\n        const edit = await this.fetchInlineEdit(editor, auto);\n        if (!edit) {\n            return;\n        }\n        const line = edit.range.endLineNumber;\n        const column = edit.range.endColumn;\n        const textToDisplay = edit.text.endsWith('\\n') && !(edit.range.startLineNumber === edit.range.endLineNumber && edit.range.startColumn === edit.range.endColumn) ? edit.text.slice(0, -1) : edit.text;\n        const ghostText = new GhostText(line, [new GhostTextPart(column, textToDisplay, false)]);\n        const instance = this.instantiationService.createInstance(GhostTextWidget, this.editor, {\n            ghostText: constObservable(ghostText),\n            minReservedLineCount: constObservable(0),\n            targetTextModel: constObservable((_a = this.editor.getModel()) !== null && _a !== void 0 ? _a : undefined),\n            range: constObservable(edit.range),\n            backgroundColoring: this._backgroundColoring\n        });\n        this._currentEdit.set(new InlineEditWidget(instance, edit), undefined);\n    }\n    async trigger() {\n        await this.getInlineEdit(this.editor, false);\n    }\n    async jumpBack() {\n        if (!this._jumpBackPosition) {\n            return;\n        }\n        this.editor.setPosition(this._jumpBackPosition);\n        //if position is outside viewports, scroll to it\n        this.editor.revealPositionInCenterIfOutsideViewport(this._jumpBackPosition);\n    }\n    async accept() {\n        var _a;\n        this._isAccepting.set(true, undefined);\n        const data = (_a = this._currentEdit.get()) === null || _a === void 0 ? void 0 : _a.edit;\n        if (!data) {\n            return;\n        }\n        //It should only happen in case of last line suggestion\n        let text = data.text;\n        if (data.text.startsWith('\\n')) {\n            text = data.text.substring(1);\n        }\n        this.editor.pushUndoStop();\n        this.editor.executeEdits('acceptCurrent', [EditOperation.replace(Range.lift(data.range), text)]);\n        if (data.accepted) {\n            await this._commandService\n                .executeCommand(data.accepted.id, ...(data.accepted.arguments || []))\n                .then(undefined, onUnexpectedExternalError);\n        }\n        this.freeEdit(data);\n        transaction((tx) => {\n            this._currentEdit.set(undefined, tx);\n            this._isAccepting.set(false, tx);\n        });\n    }\n    jumpToCurrent() {\n        var _a, _b;\n        this._jumpBackPosition = (_a = this.editor.getSelection()) === null || _a === void 0 ? void 0 : _a.getStartPosition();\n        const data = (_b = this._currentEdit.get()) === null || _b === void 0 ? void 0 : _b.edit;\n        if (!data) {\n            return;\n        }\n        const position = Position.lift({ lineNumber: data.range.startLineNumber, column: data.range.startColumn });\n        this.editor.setPosition(position);\n        //if position is outside viewports, scroll to it\n        this.editor.revealPositionInCenterIfOutsideViewport(position);\n    }\n    async clear(sendRejection = true) {\n        var _a;\n        const edit = (_a = this._currentEdit.get()) === null || _a === void 0 ? void 0 : _a.edit;\n        if (edit && (edit === null || edit === void 0 ? void 0 : edit.rejected) && sendRejection) {\n            await this._commandService\n                .executeCommand(edit.rejected.id, ...(edit.rejected.arguments || []))\n                .then(undefined, onUnexpectedExternalError);\n        }\n        if (edit) {\n            this.freeEdit(edit);\n        }\n        this._currentEdit.set(undefined, undefined);\n    }\n    freeEdit(edit) {\n        const model = this.editor.getModel();\n        if (!model) {\n            return;\n        }\n        const providers = this.languageFeaturesService.inlineEditProvider.all(model);\n        if (providers.length === 0) {\n            return;\n        }\n        providers[0].freeInlineEdit(edit);\n    }\n    shouldShowHoverAt(range) {\n        const currentEdit = this._currentEdit.get();\n        if (!currentEdit) {\n            return false;\n        }\n        const edit = currentEdit.edit;\n        const model = currentEdit.widget.model;\n        const overReplaceRange = Range.containsPosition(edit.range, range.getStartPosition()) || Range.containsPosition(edit.range, range.getEndPosition());\n        if (overReplaceRange) {\n            return true;\n        }\n        const ghostText = model.ghostText.get();\n        if (ghostText) {\n            return ghostText.parts.some(p => range.containsPosition(new Position(ghostText.lineNumber, p.column)));\n        }\n        return false;\n    }\n    shouldShowHoverAtViewZone(viewZoneId) {\n        var _a, _b;\n        return (_b = (_a = this._currentEdit.get()) === null || _a === void 0 ? void 0 : _a.widget.ownsViewZone(viewZoneId)) !== null && _b !== void 0 ? _b : false;\n    }\n};\nInlineEditController.ID = 'editor.contrib.inlineEditController';\nInlineEditController.inlineEditVisibleKey = 'inlineEditVisible';\nInlineEditController.inlineEditVisibleContext = new RawContextKey(InlineEditController_1.inlineEditVisibleKey, false);\nInlineEditController.cursorAtInlineEditKey = 'cursorAtInlineEdit';\nInlineEditController.cursorAtInlineEditContext = new RawContextKey(InlineEditController_1.cursorAtInlineEditKey, false);\nInlineEditController = InlineEditController_1 = __decorate([\n    __param(1, IInstantiationService),\n    __param(2, IContextKeyService),\n    __param(3, ILanguageFeaturesService),\n    __param(4, ICommandService),\n    __param(5, IConfigurationService)\n], InlineEditController);\nexport { InlineEditController };\nfunction wait(ms, cancellationToken) {\n    return new Promise(resolve => {\n        let d = undefined;\n        const handle = setTimeout(() => {\n            if (d) {\n                d.dispose();\n            }\n            resolve();\n        }, ms);\n        if (cancellationToken) {\n            d = cancellationToken.onCancellationRequested(() => {\n                clearTimeout(handle);\n                if (d) {\n                    d.dispose();\n                }\n                resolve();\n            });\n        }\n    });\n}\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Disposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { derived, observableFromEvent, observableValue } from '../../../../base/common/observable.js';\nimport './inlineEdit.css';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { InjectedTextCursorStops } from '../../../common/model.js';\nimport { LineDecoration } from '../../../common/viewLayout/lineDecorations.js';\nimport { AdditionalLinesWidget } from '../../inlineCompletions/browser/ghostTextWidget.js';\nimport { ColumnRange, applyObservableDecorations } from '../../inlineCompletions/browser/utils.js';\nexport const INLINE_EDIT_DESCRIPTION = 'inline-edit';\nlet GhostTextWidget = class GhostTextWidget extends Disposable {\n    constructor(editor, model, languageService) {\n        super();\n        this.editor = editor;\n        this.model = model;\n        this.languageService = languageService;\n        this.isDisposed = observableValue(this, false);\n        this.currentTextModel = observableFromEvent(this.editor.onDidChangeModel, () => /** @description editor.model */ this.editor.getModel());\n        this.uiState = derived(this, reader => {\n            var _a;\n            if (this.isDisposed.read(reader)) {\n                return undefined;\n            }\n            const textModel = this.currentTextModel.read(reader);\n            if (textModel !== this.model.targetTextModel.read(reader)) {\n                return undefined;\n            }\n            const ghostText = this.model.ghostText.read(reader);\n            if (!ghostText) {\n                return undefined;\n            }\n            let range = (_a = this.model.range) === null || _a === void 0 ? void 0 : _a.read(reader);\n            //if range is empty, we want to remove it\n            if (range && range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn) {\n                range = undefined;\n            }\n            //check if both range and text are single line - in this case we want to do inline replacement\n            //rather than replacing whole lines\n            const isSingleLine = (range ? range.startLineNumber === range.endLineNumber : true) && ghostText.parts.length === 1 && ghostText.parts[0].lines.length === 1;\n            //check if we're just removing code\n            const isPureRemove = ghostText.parts.length === 1 && ghostText.parts[0].lines.every(l => l.length === 0);\n            const inlineTexts = [];\n            const additionalLines = [];\n            function addToAdditionalLines(lines, className) {\n                if (additionalLines.length > 0) {\n                    const lastLine = additionalLines[additionalLines.length - 1];\n                    if (className) {\n                        lastLine.decorations.push(new LineDecoration(lastLine.content.length + 1, lastLine.content.length + 1 + lines[0].length, className, 0 /* InlineDecorationType.Regular */));\n                    }\n                    lastLine.content += lines[0];\n                    lines = lines.slice(1);\n                }\n                for (const line of lines) {\n                    additionalLines.push({\n                        content: line,\n                        decorations: className ? [new LineDecoration(1, line.length + 1, className, 0 /* InlineDecorationType.Regular */)] : []\n                    });\n                }\n            }\n            const textBufferLine = textModel.getLineContent(ghostText.lineNumber);\n            let hiddenTextStartColumn = undefined;\n            let lastIdx = 0;\n            if (!isPureRemove) {\n                for (const part of ghostText.parts) {\n                    let lines = part.lines;\n                    //If remove range is set, we want to push all new liens to virtual area\n                    if (range && !isSingleLine) {\n                        addToAdditionalLines(lines, INLINE_EDIT_DESCRIPTION);\n                        lines = [];\n                    }\n                    if (hiddenTextStartColumn === undefined) {\n                        inlineTexts.push({\n                            column: part.column,\n                            text: lines[0],\n                            preview: part.preview,\n                        });\n                        lines = lines.slice(1);\n                    }\n                    else {\n                        addToAdditionalLines([textBufferLine.substring(lastIdx, part.column - 1)], undefined);\n                    }\n                    if (lines.length > 0) {\n                        addToAdditionalLines(lines, INLINE_EDIT_DESCRIPTION);\n                        if (hiddenTextStartColumn === undefined && part.column <= textBufferLine.length) {\n                            hiddenTextStartColumn = part.column;\n                        }\n                    }\n                    lastIdx = part.column - 1;\n                }\n                if (hiddenTextStartColumn !== undefined) {\n                    addToAdditionalLines([textBufferLine.substring(lastIdx)], undefined);\n                }\n            }\n            const hiddenRange = hiddenTextStartColumn !== undefined ? new ColumnRange(hiddenTextStartColumn, textBufferLine.length + 1) : undefined;\n            const lineNumber = (isSingleLine || !range) ? ghostText.lineNumber : range.endLineNumber - 1;\n            return {\n                inlineTexts,\n                additionalLines,\n                hiddenRange,\n                lineNumber,\n                additionalReservedLineCount: this.model.minReservedLineCount.read(reader),\n                targetTextModel: textModel,\n                range,\n                isSingleLine,\n                isPureRemove,\n                backgroundColoring: this.model.backgroundColoring.read(reader)\n            };\n        });\n        this.decorations = derived(this, reader => {\n            const uiState = this.uiState.read(reader);\n            if (!uiState) {\n                return [];\n            }\n            const decorations = [];\n            if (uiState.hiddenRange) {\n                decorations.push({\n                    range: uiState.hiddenRange.toRange(uiState.lineNumber),\n                    options: { inlineClassName: 'inline-edit-hidden', description: 'inline-edit-hidden', }\n                });\n            }\n            if (uiState.range) {\n                const ranges = [];\n                if (uiState.isSingleLine) {\n                    ranges.push(uiState.range);\n                }\n                else if (uiState.isPureRemove) {\n                    const lines = uiState.range.endLineNumber - uiState.range.startLineNumber;\n                    for (let i = 0; i < lines; i++) {\n                        const line = uiState.range.startLineNumber + i;\n                        const firstNonWhitespace = uiState.targetTextModel.getLineFirstNonWhitespaceColumn(line);\n                        const lastNonWhitespace = uiState.targetTextModel.getLineLastNonWhitespaceColumn(line);\n                        const range = new Range(line, firstNonWhitespace, line, lastNonWhitespace);\n                        ranges.push(range);\n                    }\n                }\n                else {\n                    const lines = uiState.range.endLineNumber - uiState.range.startLineNumber;\n                    for (let i = 0; i < lines; i++) {\n                        const line = uiState.range.startLineNumber + i;\n                        const firstNonWhitespace = uiState.targetTextModel.getLineFirstNonWhitespaceColumn(line);\n                        const lastNonWhitespace = uiState.targetTextModel.getLineLastNonWhitespaceColumn(line);\n                        const range = new Range(line, firstNonWhitespace, line, lastNonWhitespace);\n                        ranges.push(range);\n                    }\n                }\n                const className = uiState.backgroundColoring ? 'inline-edit-remove backgroundColoring' : 'inline-edit-remove';\n                for (const range of ranges) {\n                    decorations.push({\n                        range,\n                        options: { inlineClassName: className, description: 'inline-edit-remove', }\n                    });\n                }\n            }\n            for (const p of uiState.inlineTexts) {\n                decorations.push({\n                    range: Range.fromPositions(new Position(uiState.lineNumber, p.column)),\n                    options: {\n                        description: INLINE_EDIT_DESCRIPTION,\n                        after: { content: p.text, inlineClassName: p.preview ? 'inline-edit-decoration-preview' : 'inline-edit-decoration', cursorStops: InjectedTextCursorStops.Left },\n                        showIfCollapsed: true,\n                    }\n                });\n            }\n            return decorations;\n        });\n        this.additionalLinesWidget = this._register(new AdditionalLinesWidget(this.editor, this.languageService.languageIdCodec, derived(reader => {\n            /** @description lines */\n            const uiState = this.uiState.read(reader);\n            return uiState && !uiState.isPureRemove ? {\n                lineNumber: uiState.lineNumber,\n                additionalLines: uiState.additionalLines,\n                minReservedLineCount: uiState.additionalReservedLineCount,\n                targetTextModel: uiState.targetTextModel,\n            } : undefined;\n        })));\n        this._register(toDisposable(() => { this.isDisposed.set(true, undefined); }));\n        this._register(applyObservableDecorations(this.editor, this.decorations));\n    }\n    ownsViewZone(viewZoneId) {\n        return this.additionalLinesWidget.viewZoneId === viewZoneId;\n    }\n};\nGhostTextWidget = __decorate([\n    __param(2, ILanguageService)\n], GhostTextWidget);\nexport { GhostTextWidget };\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 InlineEditHintsContentWidget_1;\nimport { h } from '../../../../base/browser/dom.js';\nimport { KeybindingLabel, unthemedKeybindingLabelOptions } from '../../../../base/browser/ui/keybindingLabel/keybindingLabel.js';\nimport { Separator } from '../../../../base/common/actions.js';\nimport { equals } from '../../../../base/common/arrays.js';\nimport { Disposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { autorun, autorunWithStore, derived, observableFromEvent } from '../../../../base/common/observable.js';\nimport { OS } from '../../../../base/common/platform.js';\nimport './inlineEditHintsWidget.css';\nimport { Position } from '../../../common/core/position.js';\nimport { MenuEntryActionViewItem, createAndFillInActionBarActions } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { WorkbenchToolBar } from '../../../../platform/actions/browser/toolbar.js';\nimport { IMenuService, MenuId, MenuItemAction } 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 { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nlet InlineEditHintsWidget = class InlineEditHintsWidget extends Disposable {\n    constructor(editor, model, instantiationService) {\n        super();\n        this.editor = editor;\n        this.model = model;\n        this.instantiationService = instantiationService;\n        this.alwaysShowToolbar = observableFromEvent(this.editor.onDidChangeConfiguration, () => this.editor.getOption(63 /* EditorOption.inlineEdit */).showToolbar === 'always');\n        this.sessionPosition = undefined;\n        this.position = derived(this, reader => {\n            var _a, _b, _c;\n            const ghostText = (_a = this.model.read(reader)) === null || _a === void 0 ? void 0 : _a.widget.model.ghostText.read(reader);\n            if (!this.alwaysShowToolbar.read(reader) || !ghostText || ghostText.parts.length === 0) {\n                this.sessionPosition = undefined;\n                return null;\n            }\n            const firstColumn = ghostText.parts[0].column;\n            if (this.sessionPosition && this.sessionPosition.lineNumber !== ghostText.lineNumber) {\n                this.sessionPosition = undefined;\n            }\n            const position = new Position(ghostText.lineNumber, Math.min(firstColumn, (_c = (_b = this.sessionPosition) === null || _b === void 0 ? void 0 : _b.column) !== null && _c !== void 0 ? _c : Number.MAX_SAFE_INTEGER));\n            this.sessionPosition = position;\n            return position;\n        });\n        this._register(autorunWithStore((reader, store) => {\n            /** @description setup content widget */\n            const model = this.model.read(reader);\n            if (!model || !this.alwaysShowToolbar.read(reader)) {\n                return;\n            }\n            const contentWidget = store.add(this.instantiationService.createInstance(InlineEditHintsContentWidget, this.editor, true, this.position));\n            editor.addContentWidget(contentWidget);\n            store.add(toDisposable(() => editor.removeContentWidget(contentWidget)));\n        }));\n    }\n};\nInlineEditHintsWidget = __decorate([\n    __param(2, IInstantiationService)\n], InlineEditHintsWidget);\nexport { InlineEditHintsWidget };\nlet InlineEditHintsContentWidget = InlineEditHintsContentWidget_1 = class InlineEditHintsContentWidget extends Disposable {\n    constructor(editor, withBorder, _position, instantiationService, _contextKeyService, _menuService) {\n        super();\n        this.editor = editor;\n        this.withBorder = withBorder;\n        this._position = _position;\n        this._contextKeyService = _contextKeyService;\n        this._menuService = _menuService;\n        this.id = `InlineEditHintsContentWidget${InlineEditHintsContentWidget_1.id++}`;\n        this.allowEditorOverflow = true;\n        this.suppressMouseDown = false;\n        this.nodes = h('div.inlineEditHints', { className: this.withBorder ? '.withBorder' : '' }, [\n            h('div@toolBar'),\n        ]);\n        this.inlineCompletionsActionsMenus = this._register(this._menuService.createMenu(MenuId.InlineEditActions, this._contextKeyService));\n        this.toolBar = this._register(instantiationService.createInstance(CustomizedMenuWorkbenchToolBar, this.nodes.toolBar, this.editor, MenuId.InlineEditToolbar, {\n            menuOptions: { renderShortTitle: true },\n            toolbarOptions: { primaryGroup: g => g.startsWith('primary') },\n            actionViewItemProvider: (action, options) => {\n                if (action instanceof MenuItemAction) {\n                    return instantiationService.createInstance(StatusBarViewItem, action, undefined);\n                }\n                return undefined;\n            },\n            telemetrySource: 'InlineEditToolbar',\n        }));\n        this._register(this.toolBar.onDidChangeDropdownVisibility(e => {\n            InlineEditHintsContentWidget_1._dropDownVisible = e;\n        }));\n        this._register(autorun(reader => {\n            /** @description update position */\n            this._position.read(reader);\n            this.editor.layoutContentWidget(this);\n        }));\n        this._register(autorun(reader => {\n            /** @description actions menu */\n            const extraActions = [];\n            for (const [_, group] of this.inlineCompletionsActionsMenus.getActions()) {\n                for (const action of group) {\n                    if (action instanceof MenuItemAction) {\n                        extraActions.push(action);\n                    }\n                }\n            }\n            if (extraActions.length > 0) {\n                extraActions.unshift(new Separator());\n            }\n            this.toolBar.setAdditionalSecondaryActions(extraActions);\n        }));\n    }\n    getId() { return this.id; }\n    getDomNode() {\n        return this.nodes.root;\n    }\n    getPosition() {\n        return {\n            position: this._position.get(),\n            preference: [1 /* ContentWidgetPositionPreference.ABOVE */, 2 /* ContentWidgetPositionPreference.BELOW */],\n            positionAffinity: 3 /* PositionAffinity.LeftOfInjectedText */,\n        };\n    }\n};\nInlineEditHintsContentWidget._dropDownVisible = false;\nInlineEditHintsContentWidget.id = 0;\nInlineEditHintsContentWidget = InlineEditHintsContentWidget_1 = __decorate([\n    __param(3, IInstantiationService),\n    __param(4, IContextKeyService),\n    __param(5, IMenuService)\n], InlineEditHintsContentWidget);\nexport { InlineEditHintsContentWidget };\nclass StatusBarViewItem extends MenuEntryActionViewItem {\n    updateLabel() {\n        const kb = this._keybindingService.lookupKeybinding(this._action.id, this._contextKeyService);\n        if (!kb) {\n            return super.updateLabel();\n        }\n        if (this.label) {\n            const div = h('div.keybinding').root;\n            const k = this._register(new KeybindingLabel(div, OS, { disableTitle: true, ...unthemedKeybindingLabelOptions }));\n            k.set(kb);\n            this.label.textContent = this._action.label;\n            this.label.appendChild(div);\n            this.label.classList.add('inlineEditStatusBarItemLabel');\n        }\n    }\n    updateTooltip() {\n        // NOOP, disable tooltip\n    }\n}\nlet CustomizedMenuWorkbenchToolBar = class CustomizedMenuWorkbenchToolBar extends WorkbenchToolBar {\n    constructor(container, editor, menuId, options2, menuService, contextKeyService, contextMenuService, keybindingService, commandService, telemetryService) {\n        super(container, { resetMenu: menuId, ...options2 }, menuService, contextKeyService, contextMenuService, keybindingService, commandService, telemetryService);\n        this.editor = editor;\n        this.menuId = menuId;\n        this.options2 = options2;\n        this.menuService = menuService;\n        this.contextKeyService = contextKeyService;\n        this.menu = this._store.add(this.menuService.createMenu(this.menuId, this.contextKeyService, { emitEventsForSubmenuChanges: true }));\n        this.additionalActions = [];\n        this.prependedPrimaryActions = [];\n        this._store.add(this.menu.onDidChange(() => this.updateToolbar()));\n        this._store.add(this.editor.onDidChangeCursorPosition(() => this.updateToolbar()));\n        this.updateToolbar();\n    }\n    updateToolbar() {\n        var _a, _b, _c, _d, _e, _f, _g;\n        const primary = [];\n        const secondary = [];\n        createAndFillInActionBarActions(this.menu, (_a = this.options2) === null || _a === void 0 ? void 0 : _a.menuOptions, { primary, secondary }, (_c = (_b = this.options2) === null || _b === void 0 ? void 0 : _b.toolbarOptions) === null || _c === void 0 ? void 0 : _c.primaryGroup, (_e = (_d = this.options2) === null || _d === void 0 ? void 0 : _d.toolbarOptions) === null || _e === void 0 ? void 0 : _e.shouldInlineSubmenu, (_g = (_f = this.options2) === null || _f === void 0 ? void 0 : _f.toolbarOptions) === null || _g === void 0 ? void 0 : _g.useSeparatorsInPrimaryActions);\n        secondary.push(...this.additionalActions);\n        primary.unshift(...this.prependedPrimaryActions);\n        this.setActions(primary, secondary);\n    }\n    setAdditionalSecondaryActions(actions) {\n        if (equals(this.additionalActions, actions, (a, b) => a === b)) {\n            return;\n        }\n        this.additionalActions = actions;\n        this.updateToolbar();\n    }\n};\nCustomizedMenuWorkbenchToolBar = __decorate([\n    __param(4, IMenuService),\n    __param(5, IContextKeyService),\n    __param(6, IContextMenuService),\n    __param(7, IKeybindingService),\n    __param(8, ICommandService),\n    __param(9, ITelemetryService)\n], CustomizedMenuWorkbenchToolBar);\nexport { CustomizedMenuWorkbenchToolBar };\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 { constObservable } from '../../../../base/common/observable.js';\nimport { HoverForeignElementAnchor } from '../../hover/browser/hoverTypes.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { InlineEditController } from './inlineEditController.js';\nimport { InlineEditHintsContentWidget } from './inlineEditHintsWidget.js';\nexport class InlineEditHover {\n    constructor(owner, range, controller) {\n        this.owner = owner;\n        this.range = range;\n        this.controller = controller;\n    }\n    isValidForHoverAnchor(anchor) {\n        return (anchor.type === 1 /* HoverAnchorType.Range */\n            && this.range.startColumn <= anchor.range.startColumn\n            && this.range.endColumn >= anchor.range.endColumn);\n    }\n}\nlet InlineEditHoverParticipant = class InlineEditHoverParticipant {\n    constructor(_editor, _instantiationService, _telemetryService) {\n        this._editor = _editor;\n        this._instantiationService = _instantiationService;\n        this._telemetryService = _telemetryService;\n        this.hoverOrdinal = 5;\n    }\n    suggestHoverAnchor(mouseEvent) {\n        const controller = InlineEditController.get(this._editor);\n        if (!controller) {\n            return null;\n        }\n        const target = mouseEvent.target;\n        if (target.type === 8 /* MouseTargetType.CONTENT_VIEW_ZONE */) {\n            // handle the case where the mouse is over the view zone\n            const viewZoneData = target.detail;\n            if (controller.shouldShowHoverAtViewZone(viewZoneData.viewZoneId)) {\n                // const range = Range.fromPositions(this._editor.getModel()!.validatePosition(viewZoneData.positionBefore || viewZoneData.position));\n                const range = target.range;\n                return new HoverForeignElementAnchor(1000, this, range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n            }\n        }\n        if (target.type === 7 /* MouseTargetType.CONTENT_EMPTY */) {\n            // handle the case where the mouse is over the empty portion of a line following ghost text\n            if (controller.shouldShowHoverAt(target.range)) {\n                return new HoverForeignElementAnchor(1000, this, target.range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n            }\n        }\n        if (target.type === 6 /* MouseTargetType.CONTENT_TEXT */) {\n            // handle the case where the mouse is directly over ghost text\n            const mightBeForeignElement = target.detail.mightBeForeignElement;\n            if (mightBeForeignElement && controller.shouldShowHoverAt(target.range)) {\n                return new HoverForeignElementAnchor(1000, this, target.range, mouseEvent.event.posx, mouseEvent.event.posy, false);\n            }\n        }\n        return null;\n    }\n    computeSync(anchor, lineDecorations) {\n        if (this._editor.getOption(63 /* EditorOption.inlineEdit */).showToolbar !== 'onHover') {\n            return [];\n        }\n        const controller = InlineEditController.get(this._editor);\n        if (controller && controller.shouldShowHoverAt(anchor.range)) {\n            return [new InlineEditHover(this, anchor.range, controller)];\n        }\n        return [];\n    }\n    renderHoverParts(context, hoverParts) {\n        const disposableStore = new DisposableStore();\n        this._telemetryService.publicLog2('inlineEditHover.shown');\n        const w = this._instantiationService.createInstance(InlineEditHintsContentWidget, this._editor, false, constObservable(null));\n        context.fragment.appendChild(w.getDomNode());\n        disposableStore.add(w);\n        return disposableStore;\n    }\n};\nInlineEditHoverParticipant = __decorate([\n    __param(1, IInstantiationService),\n    __param(2, ITelemetryService)\n], InlineEditHoverParticipant);\nexport { InlineEditHoverParticipant };\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 *--------------------------------------------------------------------------------------------*/\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 *--------------------------------------------------------------------------------------------*/\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 *--------------------------------------------------------------------------------------------*/\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 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", "/*---------------------------------------------------------------------------------------------\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};\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nlet SectionHeaderDetector = class SectionHeaderDetector extends Disposable {\n    constructor(editor, languageConfigurationService, editorWorkerService) {\n        super();\n        this.editor = editor;\n        this.languageConfigurationService = languageConfigurationService;\n        this.editorWorkerService = editorWorkerService;\n        this.decorations = this.editor.createDecorationsCollection();\n        this.options = this.createOptions(editor.getOption(73 /* EditorOption.minimap */));\n        this.computePromise = null;\n        this.currentOccurrences = {};\n        this._register(editor.onDidChangeModel((e) => {\n            this.currentOccurrences = {};\n            this.options = this.createOptions(editor.getOption(73 /* EditorOption.minimap */));\n            this.stop();\n            this.computeSectionHeaders.schedule(0);\n        }));\n        this._register(editor.onDidChangeModelLanguage((e) => {\n            this.currentOccurrences = {};\n            this.options = this.createOptions(editor.getOption(73 /* EditorOption.minimap */));\n            this.stop();\n            this.computeSectionHeaders.schedule(0);\n        }));\n        this._register(languageConfigurationService.onDidChange((e) => {\n            var _a;\n            const editorLanguageId = (_a = this.editor.getModel()) === null || _a === void 0 ? void 0 : _a.getLanguageId();\n            if (editorLanguageId && e.affects(editorLanguageId)) {\n                this.currentOccurrences = {};\n                this.options = this.createOptions(editor.getOption(73 /* EditorOption.minimap */));\n                this.stop();\n                this.computeSectionHeaders.schedule(0);\n            }\n        }));\n        this._register(editor.onDidChangeConfiguration(e => {\n            if (this.options && !e.hasChanged(73 /* EditorOption.minimap */)) {\n                return;\n            }\n            this.options = this.createOptions(editor.getOption(73 /* EditorOption.minimap */));\n            // Remove any links (for the getting disabled case)\n            this.updateDecorations([]);\n            // Stop any computation (for the getting disabled case)\n            this.stop();\n            // Start computing (for the getting enabled case)\n            this.computeSectionHeaders.schedule(0);\n        }));\n        this._register(this.editor.onDidChangeModelContent(e => {\n            this.computeSectionHeaders.schedule();\n        }));\n        this._register(editor.onDidChangeModelTokens((e) => {\n            if (!this.computeSectionHeaders.isScheduled()) {\n                this.computeSectionHeaders.schedule(1000);\n            }\n        }));\n        this.computeSectionHeaders = this._register(new RunOnceScheduler(() => {\n            this.findSectionHeaders();\n        }, 250));\n        this.computeSectionHeaders.schedule(0);\n    }\n    createOptions(minimap) {\n        if (!minimap || !this.editor.hasModel()) {\n            return undefined;\n        }\n        const languageId = this.editor.getModel().getLanguageId();\n        if (!languageId) {\n            return undefined;\n        }\n        const commentsConfiguration = this.languageConfigurationService.getLanguageConfiguration(languageId).comments;\n        const foldingRules = this.languageConfigurationService.getLanguageConfiguration(languageId).foldingRules;\n        if (!commentsConfiguration && !(foldingRules === null || foldingRules === void 0 ? void 0 : foldingRules.markers)) {\n            return undefined;\n        }\n        return {\n            foldingRules,\n            findMarkSectionHeaders: minimap.showMarkSectionHeaders,\n            findRegionSectionHeaders: minimap.showRegionSectionHeaders,\n        };\n    }\n    findSectionHeaders() {\n        var _a, _b;\n        if (!this.editor.hasModel()\n            || (!((_a = this.options) === null || _a === void 0 ? void 0 : _a.findMarkSectionHeaders) && !((_b = this.options) === null || _b === void 0 ? void 0 : _b.findRegionSectionHeaders))) {\n            return;\n        }\n        const model = this.editor.getModel();\n        if (model.isDisposed() || model.isTooLargeForSyncing()) {\n            return;\n        }\n        const modelVersionId = model.getVersionId();\n        this.editorWorkerService.findSectionHeaders(model.uri, this.options)\n            .then((sectionHeaders) => {\n            if (model.isDisposed() || model.getVersionId() !== modelVersionId) {\n                // model changed in the meantime\n                return;\n            }\n            this.updateDecorations(sectionHeaders);\n        });\n    }\n    updateDecorations(sectionHeaders) {\n        const model = this.editor.getModel();\n        if (model) {\n            // Remove all section headers that should be in comments and are not in comments\n            sectionHeaders = sectionHeaders.filter((sectionHeader) => {\n                if (!sectionHeader.shouldBeInComments) {\n                    return true;\n                }\n                const validRange = model.validateRange(sectionHeader.range);\n                const tokens = model.tokenization.getLineTokens(validRange.startLineNumber);\n                const idx = tokens.findTokenIndexAtOffset(validRange.startColumn - 1);\n                const tokenType = tokens.getStandardTokenType(idx);\n                const languageId = tokens.getLanguageId(idx);\n                return (languageId === model.getLanguageId() && tokenType === 1 /* StandardTokenType.Comment */);\n            });\n        }\n        const oldDecorations = Object.values(this.currentOccurrences).map(occurrence => occurrence.decorationId);\n        const newDecorations = sectionHeaders.map(sectionHeader => decoration(sectionHeader));\n        this.editor.changeDecorations((changeAccessor) => {\n            const decorations = changeAccessor.deltaDecorations(oldDecorations, newDecorations);\n            this.currentOccurrences = {};\n            for (let i = 0, len = decorations.length; i < len; i++) {\n                const occurrence = { sectionHeader: sectionHeaders[i], decorationId: decorations[i] };\n                this.currentOccurrences[occurrence.decorationId] = occurrence;\n            }\n        });\n    }\n    stop() {\n        this.computeSectionHeaders.cancel();\n        if (this.computePromise) {\n            this.computePromise.cancel();\n            this.computePromise = null;\n        }\n    }\n    dispose() {\n        super.dispose();\n        this.stop();\n        this.decorations.clear();\n    }\n};\nSectionHeaderDetector.ID = 'editor.sectionHeaderDetector';\nSectionHeaderDetector = __decorate([\n    __param(1, ILanguageConfigurationService),\n    __param(2, IEditorWorkerService)\n], SectionHeaderDetector);\nexport { SectionHeaderDetector };\nfunction decoration(sectionHeader) {\n    return {\n        range: sectionHeader.range,\n        options: ModelDecorationOptions.createDynamic({\n            description: 'section-header',\n            stickiness: 3 /* TrackedRangeStickiness.GrowsOnlyWhenTypingAfter */,\n            collapseOnReplaceEdit: true,\n            minimap: {\n                color: undefined,\n                position: 1 /* MinimapPosition.Inline */,\n                sectionHeaderStyle: sectionHeader.hasSeparatorLine ? 2 /* MinimapSectionHeaderStyle.Underlined */ : 1 /* MinimapSectionHeaderStyle.Normal */,\n                sectionHeaderText: sectionHeader.text,\n            },\n        })\n    };\n}\nregisterEditorContribution(SectionHeaderDetector.ID, SectionHeaderDetector, 1 /* EditorContributionInstantiation.AfterFirstRender */);\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 ModelSemanticColoring_1;\nimport { Disposable, dispose } from '../../../../base/common/lifecycle.js';\nimport * as errors from '../../../../base/common/errors.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { toMultilineTokens2 } from '../../../common/services/semanticTokensProviderStyling.js';\nimport { getDocumentSemanticTokens, hasDocumentSemanticTokensProvider, isSemanticTokens, isSemanticTokensEdits } from '../common/getSemanticTokens.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ISemanticTokensStylingService } from '../../../common/services/semanticTokensStyling.js';\nimport { registerEditorFeature } from '../../../common/editorFeatures.js';\nimport { SEMANTIC_HIGHLIGHTING_SETTING_ID, isSemanticColoringEnabled } from '../common/semanticTokensConfig.js';\nlet DocumentSemanticTokensFeature = class DocumentSemanticTokensFeature extends Disposable {\n    constructor(semanticTokensStylingService, modelService, themeService, configurationService, languageFeatureDebounceService, languageFeaturesService) {\n        super();\n        this._watchers = Object.create(null);\n        const register = (model) => {\n            this._watchers[model.uri.toString()] = new ModelSemanticColoring(model, semanticTokensStylingService, themeService, languageFeatureDebounceService, languageFeaturesService);\n        };\n        const deregister = (model, modelSemanticColoring) => {\n            modelSemanticColoring.dispose();\n            delete this._watchers[model.uri.toString()];\n        };\n        const handleSettingOrThemeChange = () => {\n            for (const model of modelService.getModels()) {\n                const curr = this._watchers[model.uri.toString()];\n                if (isSemanticColoringEnabled(model, themeService, configurationService)) {\n                    if (!curr) {\n                        register(model);\n                    }\n                }\n                else {\n                    if (curr) {\n                        deregister(model, curr);\n                    }\n                }\n            }\n        };\n        modelService.getModels().forEach(model => {\n            if (isSemanticColoringEnabled(model, themeService, configurationService)) {\n                register(model);\n            }\n        });\n        this._register(modelService.onModelAdded((model) => {\n            if (isSemanticColoringEnabled(model, themeService, configurationService)) {\n                register(model);\n            }\n        }));\n        this._register(modelService.onModelRemoved((model) => {\n            const curr = this._watchers[model.uri.toString()];\n            if (curr) {\n                deregister(model, curr);\n            }\n        }));\n        this._register(configurationService.onDidChangeConfiguration(e => {\n            if (e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)) {\n                handleSettingOrThemeChange();\n            }\n        }));\n        this._register(themeService.onDidColorThemeChange(handleSettingOrThemeChange));\n    }\n    dispose() {\n        // Dispose all watchers\n        for (const watcher of Object.values(this._watchers)) {\n            watcher.dispose();\n        }\n        super.dispose();\n    }\n};\nDocumentSemanticTokensFeature = __decorate([\n    __param(0, ISemanticTokensStylingService),\n    __param(1, IModelService),\n    __param(2, IThemeService),\n    __param(3, IConfigurationService),\n    __param(4, ILanguageFeatureDebounceService),\n    __param(5, ILanguageFeaturesService)\n], DocumentSemanticTokensFeature);\nexport { DocumentSemanticTokensFeature };\nlet ModelSemanticColoring = ModelSemanticColoring_1 = class ModelSemanticColoring extends Disposable {\n    constructor(model, _semanticTokensStylingService, themeService, languageFeatureDebounceService, languageFeaturesService) {\n        super();\n        this._semanticTokensStylingService = _semanticTokensStylingService;\n        this._isDisposed = false;\n        this._model = model;\n        this._provider = languageFeaturesService.documentSemanticTokensProvider;\n        this._debounceInformation = languageFeatureDebounceService.for(this._provider, 'DocumentSemanticTokens', { min: ModelSemanticColoring_1.REQUEST_MIN_DELAY, max: ModelSemanticColoring_1.REQUEST_MAX_DELAY });\n        this._fetchDocumentSemanticTokens = this._register(new RunOnceScheduler(() => this._fetchDocumentSemanticTokensNow(), ModelSemanticColoring_1.REQUEST_MIN_DELAY));\n        this._currentDocumentResponse = null;\n        this._currentDocumentRequestCancellationTokenSource = null;\n        this._documentProvidersChangeListeners = [];\n        this._providersChangedDuringRequest = false;\n        this._register(this._model.onDidChangeContent(() => {\n            if (!this._fetchDocumentSemanticTokens.isScheduled()) {\n                this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model));\n            }\n        }));\n        this._register(this._model.onDidChangeAttached(() => {\n            if (!this._fetchDocumentSemanticTokens.isScheduled()) {\n                this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model));\n            }\n        }));\n        this._register(this._model.onDidChangeLanguage(() => {\n            // clear any outstanding state\n            if (this._currentDocumentResponse) {\n                this._currentDocumentResponse.dispose();\n                this._currentDocumentResponse = null;\n            }\n            if (this._currentDocumentRequestCancellationTokenSource) {\n                this._currentDocumentRequestCancellationTokenSource.cancel();\n                this._currentDocumentRequestCancellationTokenSource = null;\n            }\n            this._setDocumentSemanticTokens(null, null, null, []);\n            this._fetchDocumentSemanticTokens.schedule(0);\n        }));\n        const bindDocumentChangeListeners = () => {\n            dispose(this._documentProvidersChangeListeners);\n            this._documentProvidersChangeListeners = [];\n            for (const provider of this._provider.all(model)) {\n                if (typeof provider.onDidChange === 'function') {\n                    this._documentProvidersChangeListeners.push(provider.onDidChange(() => {\n                        if (this._currentDocumentRequestCancellationTokenSource) {\n                            // there is already a request running,\n                            this._providersChangedDuringRequest = true;\n                            return;\n                        }\n                        this._fetchDocumentSemanticTokens.schedule(0);\n                    }));\n                }\n            }\n        };\n        bindDocumentChangeListeners();\n        this._register(this._provider.onDidChange(() => {\n            bindDocumentChangeListeners();\n            this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model));\n        }));\n        this._register(themeService.onDidColorThemeChange(_ => {\n            // clear out existing tokens\n            this._setDocumentSemanticTokens(null, null, null, []);\n            this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model));\n        }));\n        this._fetchDocumentSemanticTokens.schedule(0);\n    }\n    dispose() {\n        if (this._currentDocumentResponse) {\n            this._currentDocumentResponse.dispose();\n            this._currentDocumentResponse = null;\n        }\n        if (this._currentDocumentRequestCancellationTokenSource) {\n            this._currentDocumentRequestCancellationTokenSource.cancel();\n            this._currentDocumentRequestCancellationTokenSource = null;\n        }\n        dispose(this._documentProvidersChangeListeners);\n        this._documentProvidersChangeListeners = [];\n        this._setDocumentSemanticTokens(null, null, null, []);\n        this._isDisposed = true;\n        super.dispose();\n    }\n    _fetchDocumentSemanticTokensNow() {\n        if (this._currentDocumentRequestCancellationTokenSource) {\n            // there is already a request running, let it finish...\n            return;\n        }\n        if (!hasDocumentSemanticTokensProvider(this._provider, this._model)) {\n            // there is no provider\n            if (this._currentDocumentResponse) {\n                // there are semantic tokens set\n                this._model.tokenization.setSemanticTokens(null, false);\n            }\n            return;\n        }\n        if (!this._model.isAttachedToEditor()) {\n            // this document is not visible, there is no need to fetch semantic tokens for it\n            return;\n        }\n        const cancellationTokenSource = new CancellationTokenSource();\n        const lastProvider = this._currentDocumentResponse ? this._currentDocumentResponse.provider : null;\n        const lastResultId = this._currentDocumentResponse ? this._currentDocumentResponse.resultId || null : null;\n        const request = getDocumentSemanticTokens(this._provider, this._model, lastProvider, lastResultId, cancellationTokenSource.token);\n        this._currentDocumentRequestCancellationTokenSource = cancellationTokenSource;\n        this._providersChangedDuringRequest = false;\n        const pendingChanges = [];\n        const contentChangeListener = this._model.onDidChangeContent((e) => {\n            pendingChanges.push(e);\n        });\n        const sw = new StopWatch(false);\n        request.then((res) => {\n            this._debounceInformation.update(this._model, sw.elapsed());\n            this._currentDocumentRequestCancellationTokenSource = null;\n            contentChangeListener.dispose();\n            if (!res) {\n                this._setDocumentSemanticTokens(null, null, null, pendingChanges);\n            }\n            else {\n                const { provider, tokens } = res;\n                const styling = this._semanticTokensStylingService.getStyling(provider);\n                this._setDocumentSemanticTokens(provider, tokens || null, styling, pendingChanges);\n            }\n        }, (err) => {\n            const isExpectedError = err && (errors.isCancellationError(err) || (typeof err.message === 'string' && err.message.indexOf('busy') !== -1));\n            if (!isExpectedError) {\n                errors.onUnexpectedError(err);\n            }\n            // Semantic tokens eats up all errors and considers errors to mean that the result is temporarily not available\n            // The API does not have a special error kind to express this...\n            this._currentDocumentRequestCancellationTokenSource = null;\n            contentChangeListener.dispose();\n            if (pendingChanges.length > 0 || this._providersChangedDuringRequest) {\n                // More changes occurred while the request was running\n                if (!this._fetchDocumentSemanticTokens.isScheduled()) {\n                    this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model));\n                }\n            }\n        });\n    }\n    static _copy(src, srcOffset, dest, destOffset, length) {\n        // protect against overflows\n        length = Math.min(length, dest.length - destOffset, src.length - srcOffset);\n        for (let i = 0; i < length; i++) {\n            dest[destOffset + i] = src[srcOffset + i];\n        }\n    }\n    _setDocumentSemanticTokens(provider, tokens, styling, pendingChanges) {\n        const currentResponse = this._currentDocumentResponse;\n        const rescheduleIfNeeded = () => {\n            if ((pendingChanges.length > 0 || this._providersChangedDuringRequest) && !this._fetchDocumentSemanticTokens.isScheduled()) {\n                this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model));\n            }\n        };\n        if (this._currentDocumentResponse) {\n            this._currentDocumentResponse.dispose();\n            this._currentDocumentResponse = null;\n        }\n        if (this._isDisposed) {\n            // disposed!\n            if (provider && tokens) {\n                provider.releaseDocumentSemanticTokens(tokens.resultId);\n            }\n            return;\n        }\n        if (!provider || !styling) {\n            this._model.tokenization.setSemanticTokens(null, false);\n            return;\n        }\n        if (!tokens) {\n            this._model.tokenization.setSemanticTokens(null, true);\n            rescheduleIfNeeded();\n            return;\n        }\n        if (isSemanticTokensEdits(tokens)) {\n            if (!currentResponse) {\n                // not possible!\n                this._model.tokenization.setSemanticTokens(null, true);\n                return;\n            }\n            if (tokens.edits.length === 0) {\n                // nothing to do!\n                tokens = {\n                    resultId: tokens.resultId,\n                    data: currentResponse.data\n                };\n            }\n            else {\n                let deltaLength = 0;\n                for (const edit of tokens.edits) {\n                    deltaLength += (edit.data ? edit.data.length : 0) - edit.deleteCount;\n                }\n                const srcData = currentResponse.data;\n                const destData = new Uint32Array(srcData.length + deltaLength);\n                let srcLastStart = srcData.length;\n                let destLastStart = destData.length;\n                for (let i = tokens.edits.length - 1; i >= 0; i--) {\n                    const edit = tokens.edits[i];\n                    if (edit.start > srcData.length) {\n                        styling.warnInvalidEditStart(currentResponse.resultId, tokens.resultId, i, edit.start, srcData.length);\n                        // The edits are invalid and there's no way to recover\n                        this._model.tokenization.setSemanticTokens(null, true);\n                        return;\n                    }\n                    const copyCount = srcLastStart - (edit.start + edit.deleteCount);\n                    if (copyCount > 0) {\n                        ModelSemanticColoring_1._copy(srcData, srcLastStart - copyCount, destData, destLastStart - copyCount, copyCount);\n                        destLastStart -= copyCount;\n                    }\n                    if (edit.data) {\n                        ModelSemanticColoring_1._copy(edit.data, 0, destData, destLastStart - edit.data.length, edit.data.length);\n                        destLastStart -= edit.data.length;\n                    }\n                    srcLastStart = edit.start;\n                }\n                if (srcLastStart > 0) {\n                    ModelSemanticColoring_1._copy(srcData, 0, destData, 0, srcLastStart);\n                }\n                tokens = {\n                    resultId: tokens.resultId,\n                    data: destData\n                };\n            }\n        }\n        if (isSemanticTokens(tokens)) {\n            this._currentDocumentResponse = new SemanticTokensResponse(provider, tokens.resultId, tokens.data);\n            const result = toMultilineTokens2(tokens, styling, this._model.getLanguageId());\n            // Adjust incoming semantic tokens\n            if (pendingChanges.length > 0) {\n                // More changes occurred while the request was running\n                // We need to:\n                // 1. Adjust incoming semantic tokens\n                // 2. Request them again\n                for (const change of pendingChanges) {\n                    for (const area of result) {\n                        for (const singleChange of change.changes) {\n                            area.applyEdit(singleChange.range, singleChange.text);\n                        }\n                    }\n                }\n            }\n            this._model.tokenization.setSemanticTokens(result, true);\n        }\n        else {\n            this._model.tokenization.setSemanticTokens(null, true);\n        }\n        rescheduleIfNeeded();\n    }\n};\nModelSemanticColoring.REQUEST_MIN_DELAY = 300;\nModelSemanticColoring.REQUEST_MAX_DELAY = 2000;\nModelSemanticColoring = ModelSemanticColoring_1 = __decorate([\n    __param(1, ISemanticTokensStylingService),\n    __param(2, IThemeService),\n    __param(3, ILanguageFeatureDebounceService),\n    __param(4, ILanguageFeaturesService)\n], ModelSemanticColoring);\nclass SemanticTokensResponse {\n    constructor(provider, resultId, data) {\n        this.provider = provider;\n        this.resultId = resultId;\n        this.data = data;\n    }\n    dispose() {\n        this.provider.releaseDocumentSemanticTokens(this.resultId);\n    }\n}\nregisterEditorFeature(DocumentSemanticTokensFeature);\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 { URI } from '../../../../base/common/uri.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { encodeSemanticTokensDto } from '../../../common/services/semanticTokensDto.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport function isSemanticTokens(v) {\n    return v && !!(v.data);\n}\nexport function isSemanticTokensEdits(v) {\n    return v && Array.isArray(v.edits);\n}\nexport class DocumentSemanticTokensResult {\n    constructor(provider, tokens, error) {\n        this.provider = provider;\n        this.tokens = tokens;\n        this.error = error;\n    }\n}\nexport function hasDocumentSemanticTokensProvider(registry, model) {\n    return registry.has(model);\n}\nfunction getDocumentSemanticTokensProviders(registry, model) {\n    const groups = registry.orderedGroups(model);\n    return (groups.length > 0 ? groups[0] : []);\n}\nexport async function getDocumentSemanticTokens(registry, model, lastProvider, lastResultId, token) {\n    const providers = getDocumentSemanticTokensProviders(registry, model);\n    // Get tokens from all providers at the same time.\n    const results = await Promise.all(providers.map(async (provider) => {\n        let result;\n        let error = null;\n        try {\n            result = await provider.provideDocumentSemanticTokens(model, (provider === lastProvider ? lastResultId : null), token);\n        }\n        catch (err) {\n            error = err;\n            result = null;\n        }\n        if (!result || (!isSemanticTokens(result) && !isSemanticTokensEdits(result))) {\n            result = null;\n        }\n        return new DocumentSemanticTokensResult(provider, result, error);\n    }));\n    // Try to return the first result with actual tokens or\n    // the first result which threw an error (!!)\n    for (const result of results) {\n        if (result.error) {\n            throw result.error;\n        }\n        if (result.tokens) {\n            return result;\n        }\n    }\n    // Return the first result, even if it doesn't have tokens\n    if (results.length > 0) {\n        return results[0];\n    }\n    return null;\n}\nfunction _getDocumentSemanticTokensProviderHighestGroup(registry, model) {\n    const result = registry.orderedGroups(model);\n    return (result.length > 0 ? result[0] : null);\n}\nclass DocumentRangeSemanticTokensResult {\n    constructor(provider, tokens) {\n        this.provider = provider;\n        this.tokens = tokens;\n    }\n}\nexport function hasDocumentRangeSemanticTokensProvider(providers, model) {\n    return providers.has(model);\n}\nfunction getDocumentRangeSemanticTokensProviders(providers, model) {\n    const groups = providers.orderedGroups(model);\n    return (groups.length > 0 ? groups[0] : []);\n}\nexport async function getDocumentRangeSemanticTokens(registry, model, range, token) {\n    const providers = getDocumentRangeSemanticTokensProviders(registry, model);\n    // Get tokens from all providers at the same time.\n    const results = await Promise.all(providers.map(async (provider) => {\n        let result;\n        try {\n            result = await provider.provideDocumentRangeSemanticTokens(model, range, token);\n        }\n        catch (err) {\n            onUnexpectedExternalError(err);\n            result = null;\n        }\n        if (!result || !isSemanticTokens(result)) {\n            result = null;\n        }\n        return new DocumentRangeSemanticTokensResult(provider, result);\n    }));\n    // Try to return the first result with actual tokens\n    for (const result of results) {\n        if (result.tokens) {\n            return result;\n        }\n    }\n    // Return the first result, even if it doesn't have tokens\n    if (results.length > 0) {\n        return results[0];\n    }\n    return null;\n}\nCommandsRegistry.registerCommand('_provideDocumentSemanticTokensLegend', async (accessor, ...args) => {\n    const [uri] = args;\n    assertType(uri instanceof URI);\n    const model = accessor.get(IModelService).getModel(uri);\n    if (!model) {\n        return undefined;\n    }\n    const { documentSemanticTokensProvider } = accessor.get(ILanguageFeaturesService);\n    const providers = _getDocumentSemanticTokensProviderHighestGroup(documentSemanticTokensProvider, model);\n    if (!providers) {\n        // there is no provider => fall back to a document range semantic tokens provider\n        return accessor.get(ICommandService).executeCommand('_provideDocumentRangeSemanticTokensLegend', uri);\n    }\n    return providers[0].getLegend();\n});\nCommandsRegistry.registerCommand('_provideDocumentSemanticTokens', async (accessor, ...args) => {\n    const [uri] = args;\n    assertType(uri instanceof URI);\n    const model = accessor.get(IModelService).getModel(uri);\n    if (!model) {\n        return undefined;\n    }\n    const { documentSemanticTokensProvider } = accessor.get(ILanguageFeaturesService);\n    if (!hasDocumentSemanticTokensProvider(documentSemanticTokensProvider, model)) {\n        // there is no provider => fall back to a document range semantic tokens provider\n        return accessor.get(ICommandService).executeCommand('_provideDocumentRangeSemanticTokens', uri, model.getFullModelRange());\n    }\n    const r = await getDocumentSemanticTokens(documentSemanticTokensProvider, model, null, null, CancellationToken.None);\n    if (!r) {\n        return undefined;\n    }\n    const { provider, tokens } = r;\n    if (!tokens || !isSemanticTokens(tokens)) {\n        return undefined;\n    }\n    const buff = encodeSemanticTokensDto({\n        id: 0,\n        type: 'full',\n        data: tokens.data\n    });\n    if (tokens.resultId) {\n        provider.releaseDocumentSemanticTokens(tokens.resultId);\n    }\n    return buff;\n});\nCommandsRegistry.registerCommand('_provideDocumentRangeSemanticTokensLegend', async (accessor, ...args) => {\n    const [uri, range] = args;\n    assertType(uri instanceof URI);\n    const model = accessor.get(IModelService).getModel(uri);\n    if (!model) {\n        return undefined;\n    }\n    const { documentRangeSemanticTokensProvider } = accessor.get(ILanguageFeaturesService);\n    const providers = getDocumentRangeSemanticTokensProviders(documentRangeSemanticTokensProvider, model);\n    if (providers.length === 0) {\n        // no providers\n        return undefined;\n    }\n    if (providers.length === 1) {\n        // straight forward case, just a single provider\n        return providers[0].getLegend();\n    }\n    if (!range || !Range.isIRange(range)) {\n        // if no range is provided, we cannot support multiple providers\n        // as we cannot fall back to the one which would give results\n        // => return the first legend for backwards compatibility and print a warning\n        console.warn(`provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in`);\n        return providers[0].getLegend();\n    }\n    const result = await getDocumentRangeSemanticTokens(documentRangeSemanticTokensProvider, model, Range.lift(range), CancellationToken.None);\n    if (!result) {\n        return undefined;\n    }\n    return result.provider.getLegend();\n});\nCommandsRegistry.registerCommand('_provideDocumentRangeSemanticTokens', async (accessor, ...args) => {\n    const [uri, range] = args;\n    assertType(uri instanceof URI);\n    assertType(Range.isIRange(range));\n    const model = accessor.get(IModelService).getModel(uri);\n    if (!model) {\n        return undefined;\n    }\n    const { documentRangeSemanticTokensProvider } = accessor.get(ILanguageFeaturesService);\n    const result = await getDocumentRangeSemanticTokens(documentRangeSemanticTokensProvider, model, Range.lift(range), CancellationToken.None);\n    if (!result || !result.tokens) {\n        // there is no provider or it didn't return tokens\n        return undefined;\n    }\n    return encodeSemanticTokensDto({\n        id: 0,\n        type: 'full',\n        data: result.tokens.data\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 { VSBuffer } from '../../../base/common/buffer.js';\nimport * as platform from '../../../base/common/platform.js';\nfunction reverseEndianness(arr) {\n    for (let i = 0, len = arr.length; i < len; i += 4) {\n        // flip bytes 0<->3 and 1<->2\n        const b0 = arr[i + 0];\n        const b1 = arr[i + 1];\n        const b2 = arr[i + 2];\n        const b3 = arr[i + 3];\n        arr[i + 0] = b3;\n        arr[i + 1] = b2;\n        arr[i + 2] = b1;\n        arr[i + 3] = b0;\n    }\n}\nfunction toLittleEndianBuffer(arr) {\n    const uint8Arr = new Uint8Array(arr.buffer, arr.byteOffset, arr.length * 4);\n    if (!platform.isLittleEndian()) {\n        // the byte order must be changed\n        reverseEndianness(uint8Arr);\n    }\n    return VSBuffer.wrap(uint8Arr);\n}\nexport function encodeSemanticTokensDto(semanticTokens) {\n    const dest = new Uint32Array(encodeSemanticTokensDtoSize(semanticTokens));\n    let offset = 0;\n    dest[offset++] = semanticTokens.id;\n    if (semanticTokens.type === 'full') {\n        dest[offset++] = 1 /* EncodedSemanticTokensType.Full */;\n        dest[offset++] = semanticTokens.data.length;\n        dest.set(semanticTokens.data, offset);\n        offset += semanticTokens.data.length;\n    }\n    else {\n        dest[offset++] = 2 /* EncodedSemanticTokensType.Delta */;\n        dest[offset++] = semanticTokens.deltas.length;\n        for (const delta of semanticTokens.deltas) {\n            dest[offset++] = delta.start;\n            dest[offset++] = delta.deleteCount;\n            if (delta.data) {\n                dest[offset++] = delta.data.length;\n                dest.set(delta.data, offset);\n                offset += delta.data.length;\n            }\n            else {\n                dest[offset++] = 0;\n            }\n        }\n    }\n    return toLittleEndianBuffer(dest);\n}\nfunction encodeSemanticTokensDtoSize(semanticTokens) {\n    let result = 0;\n    result += (+1 // id\n        + 1 // type\n    );\n    if (semanticTokens.type === 'full') {\n        result += (+1 // data length\n            + semanticTokens.data.length);\n    }\n    else {\n        result += (+1 // delta count\n        );\n        result += (+1 // start\n            + 1 // deleteCount\n            + 1 // data length\n        ) * semanticTokens.deltas.length;\n        for (const delta of semanticTokens.deltas) {\n            if (delta.data) {\n                result += delta.data.length;\n            }\n        }\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 *--------------------------------------------------------------------------------------------*/\nexport const SEMANTIC_HIGHLIGHTING_SETTING_ID = 'editor.semanticHighlighting';\nexport function isSemanticColoringEnabled(model, themeService, configurationService) {\n    var _a;\n    const setting = (_a = configurationService.getValue(SEMANTIC_HIGHLIGHTING_SETTING_ID, { overrideIdentifier: model.getLanguageId(), resource: model.uri })) === null || _a === void 0 ? void 0 : _a.enabled;\n    if (typeof setting === 'boolean') {\n        return setting;\n    }\n    return themeService.getColorTheme().semanticHighlighting;\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 { createCancelablePromise, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { getDocumentRangeSemanticTokens, hasDocumentRangeSemanticTokensProvider } from '../common/getSemanticTokens.js';\nimport { isSemanticColoringEnabled, SEMANTIC_HIGHLIGHTING_SETTING_ID } from '../common/semanticTokensConfig.js';\nimport { toMultilineTokens2 } from '../../../common/services/semanticTokensProviderStyling.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ISemanticTokensStylingService } from '../../../common/services/semanticTokensStyling.js';\nlet ViewportSemanticTokensContribution = class ViewportSemanticTokensContribution extends Disposable {\n    constructor(editor, _semanticTokensStylingService, _themeService, _configurationService, languageFeatureDebounceService, languageFeaturesService) {\n        super();\n        this._semanticTokensStylingService = _semanticTokensStylingService;\n        this._themeService = _themeService;\n        this._configurationService = _configurationService;\n        this._editor = editor;\n        this._provider = languageFeaturesService.documentRangeSemanticTokensProvider;\n        this._debounceInformation = languageFeatureDebounceService.for(this._provider, 'DocumentRangeSemanticTokens', { min: 100, max: 500 });\n        this._tokenizeViewport = this._register(new RunOnceScheduler(() => this._tokenizeViewportNow(), 100));\n        this._outstandingRequests = [];\n        const scheduleTokenizeViewport = () => {\n            if (this._editor.hasModel()) {\n                this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()));\n            }\n        };\n        this._register(this._editor.onDidScrollChange(() => {\n            scheduleTokenizeViewport();\n        }));\n        this._register(this._editor.onDidChangeModel(() => {\n            this._cancelAll();\n            scheduleTokenizeViewport();\n        }));\n        this._register(this._editor.onDidChangeModelContent((e) => {\n            this._cancelAll();\n            scheduleTokenizeViewport();\n        }));\n        this._register(this._provider.onDidChange(() => {\n            this._cancelAll();\n            scheduleTokenizeViewport();\n        }));\n        this._register(this._configurationService.onDidChangeConfiguration(e => {\n            if (e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)) {\n                this._cancelAll();\n                scheduleTokenizeViewport();\n            }\n        }));\n        this._register(this._themeService.onDidColorThemeChange(() => {\n            this._cancelAll();\n            scheduleTokenizeViewport();\n        }));\n        scheduleTokenizeViewport();\n    }\n    _cancelAll() {\n        for (const request of this._outstandingRequests) {\n            request.cancel();\n        }\n        this._outstandingRequests = [];\n    }\n    _removeOutstandingRequest(req) {\n        for (let i = 0, len = this._outstandingRequests.length; i < len; i++) {\n            if (this._outstandingRequests[i] === req) {\n                this._outstandingRequests.splice(i, 1);\n                return;\n            }\n        }\n    }\n    _tokenizeViewportNow() {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const model = this._editor.getModel();\n        if (model.tokenization.hasCompleteSemanticTokens()) {\n            return;\n        }\n        if (!isSemanticColoringEnabled(model, this._themeService, this._configurationService)) {\n            if (model.tokenization.hasSomeSemanticTokens()) {\n                model.tokenization.setSemanticTokens(null, false);\n            }\n            return;\n        }\n        if (!hasDocumentRangeSemanticTokensProvider(this._provider, model)) {\n            if (model.tokenization.hasSomeSemanticTokens()) {\n                model.tokenization.setSemanticTokens(null, false);\n            }\n            return;\n        }\n        const visibleRanges = this._editor.getVisibleRangesPlusViewportAboveBelow();\n        this._outstandingRequests = this._outstandingRequests.concat(visibleRanges.map(range => this._requestRange(model, range)));\n    }\n    _requestRange(model, range) {\n        const requestVersionId = model.getVersionId();\n        const request = createCancelablePromise(token => Promise.resolve(getDocumentRangeSemanticTokens(this._provider, model, range, token)));\n        const sw = new StopWatch(false);\n        request.then((r) => {\n            this._debounceInformation.update(model, sw.elapsed());\n            if (!r || !r.tokens || model.isDisposed() || model.getVersionId() !== requestVersionId) {\n                return;\n            }\n            const { provider, tokens: result } = r;\n            const styling = this._semanticTokensStylingService.getStyling(provider);\n            model.tokenization.setPartialSemanticTokens(range, toMultilineTokens2(result, styling, model.getLanguageId()));\n        }).then(() => this._removeOutstandingRequest(request), () => this._removeOutstandingRequest(request));\n        return request;\n    }\n};\nViewportSemanticTokensContribution.ID = 'editor.contrib.viewportSemanticTokens';\nViewportSemanticTokensContribution = __decorate([\n    __param(1, ISemanticTokensStylingService),\n    __param(2, IThemeService),\n    __param(3, IConfigurationService),\n    __param(4, ILanguageFeatureDebounceService),\n    __param(5, ILanguageFeaturesService)\n], ViewportSemanticTokensContribution);\nexport { ViewportSemanticTokensContribution };\nregisterEditorContribution(ViewportSemanticTokensContribution.ID, ViewportSemanticTokensContribution, 1 /* EditorContributionInstantiation.AfterFirstRender */);\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 SmartSelectController_1;\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { BracketSelectionRangeProvider } from './bracketSelections.js';\nimport { WordSelectionRangeProvider } from './wordSelections.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nclass SelectionRanges {\n    constructor(index, ranges) {\n        this.index = index;\n        this.ranges = ranges;\n    }\n    mov(fwd) {\n        const index = this.index + (fwd ? 1 : -1);\n        if (index < 0 || index >= this.ranges.length) {\n            return this;\n        }\n        const res = new SelectionRanges(index, this.ranges);\n        if (res.ranges[index].equalsRange(this.ranges[this.index])) {\n            // next range equals this range, retry with next-next\n            return res.mov(fwd);\n        }\n        return res;\n    }\n}\nlet SmartSelectController = SmartSelectController_1 = class SmartSelectController {\n    static get(editor) {\n        return editor.getContribution(SmartSelectController_1.ID);\n    }\n    constructor(_editor, _languageFeaturesService) {\n        this._editor = _editor;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._ignoreSelection = false;\n    }\n    dispose() {\n        var _a;\n        (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\n    }\n    async run(forward) {\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const selections = this._editor.getSelections();\n        const model = this._editor.getModel();\n        if (!this._state) {\n            await provideSelectionRanges(this._languageFeaturesService.selectionRangeProvider, model, selections.map(s => s.getPosition()), this._editor.getOption(113 /* EditorOption.smartSelect */), CancellationToken.None).then(ranges => {\n                var _a;\n                if (!arrays.isNonEmptyArray(ranges) || ranges.length !== selections.length) {\n                    // invalid result\n                    return;\n                }\n                if (!this._editor.hasModel() || !arrays.equals(this._editor.getSelections(), selections, (a, b) => a.equalsSelection(b))) {\n                    // invalid editor state\n                    return;\n                }\n                for (let i = 0; i < ranges.length; i++) {\n                    ranges[i] = ranges[i].filter(range => {\n                        // filter ranges inside the selection\n                        return range.containsPosition(selections[i].getStartPosition()) && range.containsPosition(selections[i].getEndPosition());\n                    });\n                    // prepend current selection\n                    ranges[i].unshift(selections[i]);\n                }\n                this._state = ranges.map(ranges => new SelectionRanges(0, ranges));\n                // listen to caret move and forget about state\n                (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\n                this._selectionListener = this._editor.onDidChangeCursorPosition(() => {\n                    var _a;\n                    if (!this._ignoreSelection) {\n                        (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\n                        this._state = undefined;\n                    }\n                });\n            });\n        }\n        if (!this._state) {\n            // no state\n            return;\n        }\n        this._state = this._state.map(state => state.mov(forward));\n        const newSelections = this._state.map(state => Selection.fromPositions(state.ranges[state.index].getStartPosition(), state.ranges[state.index].getEndPosition()));\n        this._ignoreSelection = true;\n        try {\n            this._editor.setSelections(newSelections);\n        }\n        finally {\n            this._ignoreSelection = false;\n        }\n    }\n};\nSmartSelectController.ID = 'editor.contrib.smartSelectController';\nSmartSelectController = SmartSelectController_1 = __decorate([\n    __param(1, ILanguageFeaturesService)\n], SmartSelectController);\nexport { SmartSelectController };\nclass AbstractSmartSelect extends EditorAction {\n    constructor(forward, opts) {\n        super(opts);\n        this._forward = forward;\n    }\n    async run(_accessor, editor) {\n        const controller = SmartSelectController.get(editor);\n        if (controller) {\n            await controller.run(this._forward);\n        }\n    }\n}\nclass GrowSelectionAction extends AbstractSmartSelect {\n    constructor() {\n        super(true, {\n            id: 'editor.action.smartSelect.expand',\n            label: nls.localize('smartSelect.expand', \"Expand Selection\"),\n            alias: 'Expand Selection',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 17 /* KeyCode.RightArrow */,\n                mac: {\n                    primary: 2048 /* KeyMod.CtrlCmd */ | 256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 17 /* KeyCode.RightArrow */,\n                    secondary: [256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 17 /* KeyCode.RightArrow */],\n                },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MenuId.MenubarSelectionMenu,\n                group: '1_basic',\n                title: nls.localize({ key: 'miSmartSelectGrow', comment: ['&& denotes a mnemonic'] }, \"&&Expand Selection\"),\n                order: 2\n            }\n        });\n    }\n}\n// renamed command id\nCommandsRegistry.registerCommandAlias('editor.action.smartSelect.grow', 'editor.action.smartSelect.expand');\nclass ShrinkSelectionAction extends AbstractSmartSelect {\n    constructor() {\n        super(false, {\n            id: 'editor.action.smartSelect.shrink',\n            label: nls.localize('smartSelect.shrink', \"Shrink Selection\"),\n            alias: 'Shrink Selection',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 15 /* KeyCode.LeftArrow */,\n                mac: {\n                    primary: 2048 /* KeyMod.CtrlCmd */ | 256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 15 /* KeyCode.LeftArrow */,\n                    secondary: [256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 15 /* KeyCode.LeftArrow */],\n                },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            menuOpts: {\n                menuId: MenuId.MenubarSelectionMenu,\n                group: '1_basic',\n                title: nls.localize({ key: 'miSmartSelectShrink', comment: ['&& denotes a mnemonic'] }, \"&&Shrink Selection\"),\n                order: 3\n            }\n        });\n    }\n}\nregisterEditorContribution(SmartSelectController.ID, SmartSelectController, 4 /* EditorContributionInstantiation.Lazy */);\nregisterEditorAction(GrowSelectionAction);\nregisterEditorAction(ShrinkSelectionAction);\nexport async function provideSelectionRanges(registry, model, positions, options, token) {\n    const providers = registry.all(model)\n        .concat(new WordSelectionRangeProvider(options.selectSubwords)); // ALWAYS have word based selection range\n    if (providers.length === 1) {\n        // add word selection and bracket selection when no provider exists\n        providers.unshift(new BracketSelectionRangeProvider());\n    }\n    const work = [];\n    const allRawRanges = [];\n    for (const provider of providers) {\n        work.push(Promise.resolve(provider.provideSelectionRanges(model, positions, token)).then(allProviderRanges => {\n            if (arrays.isNonEmptyArray(allProviderRanges) && allProviderRanges.length === positions.length) {\n                for (let i = 0; i < positions.length; i++) {\n                    if (!allRawRanges[i]) {\n                        allRawRanges[i] = [];\n                    }\n                    for (const oneProviderRanges of allProviderRanges[i]) {\n                        if (Range.isIRange(oneProviderRanges.range) && Range.containsPosition(oneProviderRanges.range, positions[i])) {\n                            allRawRanges[i].push(Range.lift(oneProviderRanges.range));\n                        }\n                    }\n                }\n            }\n        }, onUnexpectedExternalError));\n    }\n    await Promise.all(work);\n    return allRawRanges.map(oneRawRanges => {\n        if (oneRawRanges.length === 0) {\n            return [];\n        }\n        // sort all by start/end position\n        oneRawRanges.sort((a, b) => {\n            if (Position.isBefore(a.getStartPosition(), b.getStartPosition())) {\n                return 1;\n            }\n            else if (Position.isBefore(b.getStartPosition(), a.getStartPosition())) {\n                return -1;\n            }\n            else if (Position.isBefore(a.getEndPosition(), b.getEndPosition())) {\n                return -1;\n            }\n            else if (Position.isBefore(b.getEndPosition(), a.getEndPosition())) {\n                return 1;\n            }\n            else {\n                return 0;\n            }\n        });\n        // remove ranges that don't contain the former range or that are equal to the\n        // former range\n        const oneRanges = [];\n        let last;\n        for (const range of oneRawRanges) {\n            if (!last || (Range.containsRange(range, last) && !Range.equalsRange(range, last))) {\n                oneRanges.push(range);\n                last = range;\n            }\n        }\n        if (!options.selectLeadingAndTrailingWhitespace) {\n            return oneRanges;\n        }\n        // add ranges that expand trivia at line starts and ends whenever a range\n        // wraps onto the a new line\n        const oneRangesWithTrivia = [oneRanges[0]];\n        for (let i = 1; i < oneRanges.length; i++) {\n            const prev = oneRanges[i - 1];\n            const cur = oneRanges[i];\n            if (cur.startLineNumber !== prev.startLineNumber || cur.endLineNumber !== prev.endLineNumber) {\n                // add line/block range without leading/failing whitespace\n                const rangeNoWhitespace = new Range(prev.startLineNumber, model.getLineFirstNonWhitespaceColumn(prev.startLineNumber), prev.endLineNumber, model.getLineLastNonWhitespaceColumn(prev.endLineNumber));\n                if (rangeNoWhitespace.containsRange(prev) && !rangeNoWhitespace.equalsRange(prev) && cur.containsRange(rangeNoWhitespace) && !cur.equalsRange(rangeNoWhitespace)) {\n                    oneRangesWithTrivia.push(rangeNoWhitespace);\n                }\n                // add line/block range\n                const rangeFull = new Range(prev.startLineNumber, 1, prev.endLineNumber, model.getLineMaxColumn(prev.endLineNumber));\n                if (rangeFull.containsRange(prev) && !rangeFull.equalsRange(rangeNoWhitespace) && cur.containsRange(rangeFull) && !cur.equalsRange(rangeFull)) {\n                    oneRangesWithTrivia.push(rangeFull);\n                }\n            }\n            oneRangesWithTrivia.push(cur);\n        }\n        return oneRangesWithTrivia;\n    });\n}\nCommandsRegistry.registerCommand('_executeSelectionRangeProvider', async function (accessor, ...args) {\n    const [resource, positions] = args;\n    assertType(URI.isUri(resource));\n    const registry = accessor.get(ILanguageFeaturesService).selectionRangeProvider;\n    const reference = await accessor.get(ITextModelService).createModelReference(resource);\n    try {\n        return provideSelectionRanges(registry, reference.object.textEditorModel, positions, { selectLeadingAndTrailingWhitespace: true, selectSubwords: true }, CancellationToken.None);\n    }\n    finally {\n        reference.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 { isLowerAsciiLetter, isUpperAsciiLetter } from '../../../../base/common/strings.js';\nimport { Range } from '../../../common/core/range.js';\nexport class WordSelectionRangeProvider {\n    constructor(selectSubwords = true) {\n        this.selectSubwords = selectSubwords;\n    }\n    provideSelectionRanges(model, positions) {\n        const result = [];\n        for (const position of positions) {\n            const bucket = [];\n            result.push(bucket);\n            if (this.selectSubwords) {\n                this._addInWordRanges(bucket, model, position);\n            }\n            this._addWordRanges(bucket, model, position);\n            this._addWhitespaceLine(bucket, model, position);\n            bucket.push({ range: model.getFullModelRange() });\n        }\n        return result;\n    }\n    _addInWordRanges(bucket, model, pos) {\n        const obj = model.getWordAtPosition(pos);\n        if (!obj) {\n            return;\n        }\n        const { word, startColumn } = obj;\n        const offset = pos.column - startColumn;\n        let start = offset;\n        let end = offset;\n        let lastCh = 0;\n        // LEFT anchor (start)\n        for (; start >= 0; start--) {\n            const ch = word.charCodeAt(start);\n            if ((start !== offset) && (ch === 95 /* CharCode.Underline */ || ch === 45 /* CharCode.Dash */)) {\n                // foo-bar OR foo_bar\n                break;\n            }\n            else if (isLowerAsciiLetter(ch) && isUpperAsciiLetter(lastCh)) {\n                // fooBar\n                break;\n            }\n            lastCh = ch;\n        }\n        start += 1;\n        // RIGHT anchor (end)\n        for (; end < word.length; end++) {\n            const ch = word.charCodeAt(end);\n            if (isUpperAsciiLetter(ch) && isLowerAsciiLetter(lastCh)) {\n                // fooBar\n                break;\n            }\n            else if (ch === 95 /* CharCode.Underline */ || ch === 45 /* CharCode.Dash */) {\n                // foo-bar OR foo_bar\n                break;\n            }\n            lastCh = ch;\n        }\n        if (start < end) {\n            bucket.push({ range: new Range(pos.lineNumber, startColumn + start, pos.lineNumber, startColumn + end) });\n        }\n    }\n    _addWordRanges(bucket, model, pos) {\n        const word = model.getWordAtPosition(pos);\n        if (word) {\n            bucket.push({ range: new Range(pos.lineNumber, word.startColumn, pos.lineNumber, word.endColumn) });\n        }\n    }\n    _addWhitespaceLine(bucket, model, pos) {\n        if (model.getLineLength(pos.lineNumber) > 0\n            && model.getLineFirstNonWhitespaceColumn(pos.lineNumber) === 0\n            && model.getLineLastNonWhitespaceColumn(pos.lineNumber) === 0) {\n            bucket.push({ range: new Range(pos.lineNumber, 1, pos.lineNumber, model.getLineMaxColumn(pos.lineNumber)) });\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 { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ToggleStickyScroll, FocusStickyScroll, SelectEditor, SelectPreviousStickyScrollLine, SelectNextStickyScrollLine, GoToStickyScrollLine } from './stickyScrollActions.js';\nimport { StickyScrollController } from './stickyScrollController.js';\nimport { registerAction2 } from '../../../../platform/actions/common/actions.js';\nregisterEditorContribution(StickyScrollController.ID, StickyScrollController, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nregisterAction2(ToggleStickyScroll);\nregisterAction2(FocusStickyScroll);\nregisterAction2(SelectPreviousStickyScrollLine);\nregisterAction2(SelectNextStickyScrollLine);\nregisterAction2(GoToStickyScrollLine);\nregisterAction2(SelectEditor);\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 { EditorAction2 } from '../../../browser/editorExtensions.js';\nimport { localize, localize2 } from '../../../../nls.js';\nimport { Categories } from '../../../../platform/action/common/actionCommonCategories.js';\nimport { Action2, MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { StickyScrollController } from './stickyScrollController.js';\nexport class ToggleStickyScroll extends Action2 {\n    constructor() {\n        super({\n            id: 'editor.action.toggleStickyScroll',\n            title: {\n                ...localize2('toggleEditorStickyScroll', \"Toggle Editor Sticky Scroll\"),\n                mnemonicTitle: localize({ key: 'mitoggleStickyScroll', comment: ['&& denotes a mnemonic'] }, \"&&Toggle Editor Sticky Scroll\"),\n            },\n            metadata: {\n                description: localize2('toggleEditorStickyScroll.description', \"Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport\"),\n            },\n            category: Categories.View,\n            toggled: {\n                condition: ContextKeyExpr.equals('config.editor.stickyScroll.enabled', true),\n                title: localize('stickyScroll', \"Sticky Scroll\"),\n                mnemonicTitle: localize({ key: 'miStickyScroll', comment: ['&& denotes a mnemonic'] }, \"&&Sticky Scroll\"),\n            },\n            menu: [\n                { id: MenuId.CommandPalette },\n                { id: MenuId.MenubarAppearanceMenu, group: '4_editor', order: 3 },\n                { id: MenuId.StickyScrollContext }\n            ]\n        });\n    }\n    async run(accessor) {\n        const configurationService = accessor.get(IConfigurationService);\n        const newValue = !configurationService.getValue('editor.stickyScroll.enabled');\n        return configurationService.updateValue('editor.stickyScroll.enabled', newValue);\n    }\n}\nconst weight = 100 /* KeybindingWeight.EditorContrib */;\nexport class FocusStickyScroll extends EditorAction2 {\n    constructor() {\n        super({\n            id: 'editor.action.focusStickyScroll',\n            title: {\n                ...localize2('focusStickyScroll', \"Focus on the editor sticky scroll\"),\n                mnemonicTitle: localize({ key: 'mifocusStickyScroll', comment: ['&& denotes a mnemonic'] }, \"&&Focus Sticky Scroll\"),\n            },\n            precondition: ContextKeyExpr.and(ContextKeyExpr.has('config.editor.stickyScroll.enabled'), EditorContextKeys.stickyScrollVisible),\n            menu: [\n                { id: MenuId.CommandPalette },\n            ]\n        });\n    }\n    runEditorCommand(_accessor, editor) {\n        var _a;\n        (_a = StickyScrollController.get(editor)) === null || _a === void 0 ? void 0 : _a.focus();\n    }\n}\nexport class SelectNextStickyScrollLine extends EditorAction2 {\n    constructor() {\n        super({\n            id: 'editor.action.selectNextStickyScrollLine',\n            title: localize2('selectNextStickyScrollLine.title', \"Select the next editor sticky scroll line\"),\n            precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),\n            keybinding: {\n                weight,\n                primary: 18 /* KeyCode.DownArrow */\n            }\n        });\n    }\n    runEditorCommand(_accessor, editor) {\n        var _a;\n        (_a = StickyScrollController.get(editor)) === null || _a === void 0 ? void 0 : _a.focusNext();\n    }\n}\nexport class SelectPreviousStickyScrollLine extends EditorAction2 {\n    constructor() {\n        super({\n            id: 'editor.action.selectPreviousStickyScrollLine',\n            title: localize2('selectPreviousStickyScrollLine.title', \"Select the previous sticky scroll line\"),\n            precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),\n            keybinding: {\n                weight,\n                primary: 16 /* KeyCode.UpArrow */\n            }\n        });\n    }\n    runEditorCommand(_accessor, editor) {\n        var _a;\n        (_a = StickyScrollController.get(editor)) === null || _a === void 0 ? void 0 : _a.focusPrevious();\n    }\n}\nexport class GoToStickyScrollLine extends EditorAction2 {\n    constructor() {\n        super({\n            id: 'editor.action.goToFocusedStickyScrollLine',\n            title: localize2('goToFocusedStickyScrollLine.title', \"Go to the focused sticky scroll line\"),\n            precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),\n            keybinding: {\n                weight,\n                primary: 3 /* KeyCode.Enter */\n            }\n        });\n    }\n    runEditorCommand(_accessor, editor) {\n        var _a;\n        (_a = StickyScrollController.get(editor)) === null || _a === void 0 ? void 0 : _a.goToFocused();\n    }\n}\nexport class SelectEditor extends EditorAction2 {\n    constructor() {\n        super({\n            id: 'editor.action.selectEditor',\n            title: localize2('selectEditor.title', \"Select Editor\"),\n            precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),\n            keybinding: {\n                weight,\n                primary: 9 /* KeyCode.Escape */\n            }\n        });\n    }\n    runEditorCommand(_accessor, editor) {\n        var _a;\n        (_a = StickyScrollController.get(editor)) === null || _a === void 0 ? void 0 : _a.selectEditor();\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 { localize2 } from '../../../nls.js';\nexport const Categories = Object.freeze({\n    View: localize2('view', 'View'),\n    Help: localize2('help', 'Help'),\n    Test: localize2('test', 'Test'),\n    File: localize2('file', 'File'),\n    Preferences: localize2('preferences', 'Preferences'),\n    Developer: localize2({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, \"Developer\"),\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 StickyScrollController_1;\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { StickyScrollWidget, StickyScrollWidgetState } from './stickyScrollWidget.js';\nimport { StickyLineCandidateProvider } from './stickyScrollProvider.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ClickLinkGesture } from '../../gotoSymbol/browser/link/clickLinkGesture.js';\nimport { Range } from '../../../common/core/range.js';\nimport { getDefinitionsAtPosition } from '../../gotoSymbol/browser/goToSymbol.js';\nimport { goToDefinitionWithLocation } from '../../inlayHints/browser/inlayHintsLocations.js';\nimport { Position } from '../../../common/core/position.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { StickyRange } from './stickyScrollElement.js';\nimport { StandardMouseEvent } from '../../../../base/browser/mouseEvent.js';\nimport { FoldingController } from '../../folding/browser/folding.js';\nimport { toggleCollapseState } from '../../folding/browser/foldingModel.js';\nlet StickyScrollController = StickyScrollController_1 = class StickyScrollController extends Disposable {\n    constructor(_editor, _contextMenuService, _languageFeaturesService, _instaService, _languageConfigurationService, _languageFeatureDebounceService, _contextKeyService) {\n        super();\n        this._editor = _editor;\n        this._contextMenuService = _contextMenuService;\n        this._languageFeaturesService = _languageFeaturesService;\n        this._instaService = _instaService;\n        this._contextKeyService = _contextKeyService;\n        this._sessionStore = new DisposableStore();\n        this._foldingModel = null;\n        this._maxStickyLines = Number.MAX_SAFE_INTEGER;\n        this._candidateDefinitionsLength = -1;\n        this._focusedStickyElementIndex = -1;\n        this._enabled = false;\n        this._focused = false;\n        this._positionRevealed = false;\n        this._onMouseDown = false;\n        this._endLineNumbers = [];\n        this._showEndForLine = null;\n        this._stickyScrollWidget = new StickyScrollWidget(this._editor);\n        this._stickyLineCandidateProvider = new StickyLineCandidateProvider(this._editor, _languageFeaturesService, _languageConfigurationService);\n        this._register(this._stickyScrollWidget);\n        this._register(this._stickyLineCandidateProvider);\n        this._widgetState = new StickyScrollWidgetState([], [], 0);\n        this._onDidResize();\n        this._readConfiguration();\n        const stickyScrollDomNode = this._stickyScrollWidget.getDomNode();\n        this._register(this._editor.onDidChangeConfiguration(e => {\n            this._readConfigurationChange(e);\n        }));\n        this._register(dom.addDisposableListener(stickyScrollDomNode, dom.EventType.CONTEXT_MENU, async (event) => {\n            this._onContextMenu(dom.getWindow(stickyScrollDomNode), event);\n        }));\n        this._stickyScrollFocusedContextKey = EditorContextKeys.stickyScrollFocused.bindTo(this._contextKeyService);\n        this._stickyScrollVisibleContextKey = EditorContextKeys.stickyScrollVisible.bindTo(this._contextKeyService);\n        const focusTracker = this._register(dom.trackFocus(stickyScrollDomNode));\n        this._register(focusTracker.onDidBlur(_ => {\n            // Suppose that the blurring is caused by scrolling, then keep the focus on the sticky scroll\n            // This is determined by the fact that the height of the widget has become zero and there has been no position revealing\n            if (this._positionRevealed === false && stickyScrollDomNode.clientHeight === 0) {\n                this._focusedStickyElementIndex = -1;\n                this.focus();\n            }\n            // In all other casees, dispose the focus on the sticky scroll\n            else {\n                this._disposeFocusStickyScrollStore();\n            }\n        }));\n        this._register(focusTracker.onDidFocus(_ => {\n            this.focus();\n        }));\n        this._registerMouseListeners();\n        // Suppose that mouse down on the sticky scroll, then do not focus on the sticky scroll because this will be followed by the revealing of a position\n        this._register(dom.addDisposableListener(stickyScrollDomNode, dom.EventType.MOUSE_DOWN, (e) => {\n            this._onMouseDown = true;\n        }));\n    }\n    static get(editor) {\n        return editor.getContribution(StickyScrollController_1.ID);\n    }\n    _disposeFocusStickyScrollStore() {\n        var _a;\n        this._stickyScrollFocusedContextKey.set(false);\n        (_a = this._focusDisposableStore) === null || _a === void 0 ? void 0 : _a.dispose();\n        this._focused = false;\n        this._positionRevealed = false;\n        this._onMouseDown = false;\n    }\n    focus() {\n        // If the mouse is down, do not focus on the sticky scroll\n        if (this._onMouseDown) {\n            this._onMouseDown = false;\n            this._editor.focus();\n            return;\n        }\n        const focusState = this._stickyScrollFocusedContextKey.get();\n        if (focusState === true) {\n            return;\n        }\n        this._focused = true;\n        this._focusDisposableStore = new DisposableStore();\n        this._stickyScrollFocusedContextKey.set(true);\n        this._focusedStickyElementIndex = this._stickyScrollWidget.lineNumbers.length - 1;\n        this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);\n    }\n    focusNext() {\n        if (this._focusedStickyElementIndex < this._stickyScrollWidget.lineNumberCount - 1) {\n            this._focusNav(true);\n        }\n    }\n    focusPrevious() {\n        if (this._focusedStickyElementIndex > 0) {\n            this._focusNav(false);\n        }\n    }\n    selectEditor() {\n        this._editor.focus();\n    }\n    // True is next, false is previous\n    _focusNav(direction) {\n        this._focusedStickyElementIndex = direction ? this._focusedStickyElementIndex + 1 : this._focusedStickyElementIndex - 1;\n        this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);\n    }\n    goToFocused() {\n        const lineNumbers = this._stickyScrollWidget.lineNumbers;\n        this._disposeFocusStickyScrollStore();\n        this._revealPosition({ lineNumber: lineNumbers[this._focusedStickyElementIndex], column: 1 });\n    }\n    _revealPosition(position) {\n        this._reveaInEditor(position, () => this._editor.revealPosition(position));\n    }\n    _revealLineInCenterIfOutsideViewport(position) {\n        this._reveaInEditor(position, () => this._editor.revealLineInCenterIfOutsideViewport(position.lineNumber, 0 /* ScrollType.Smooth */));\n    }\n    _reveaInEditor(position, revealFunction) {\n        if (this._focused) {\n            this._disposeFocusStickyScrollStore();\n        }\n        this._positionRevealed = true;\n        revealFunction();\n        this._editor.setSelection(Range.fromPositions(position));\n        this._editor.focus();\n    }\n    _registerMouseListeners() {\n        const sessionStore = this._register(new DisposableStore());\n        const gesture = this._register(new ClickLinkGesture(this._editor, {\n            extractLineNumberFromMouseEvent: (e) => {\n                const position = this._stickyScrollWidget.getEditorPositionFromNode(e.target.element);\n                return position ? position.lineNumber : 0;\n            }\n        }));\n        const getMouseEventTarget = (mouseEvent) => {\n            if (!this._editor.hasModel()) {\n                return null;\n            }\n            if (mouseEvent.target.type !== 12 /* MouseTargetType.OVERLAY_WIDGET */ || mouseEvent.target.detail !== this._stickyScrollWidget.getId()) {\n                // not hovering over our widget\n                return null;\n            }\n            const mouseTargetElement = mouseEvent.target.element;\n            if (!mouseTargetElement || mouseTargetElement.innerText !== mouseTargetElement.innerHTML) {\n                // not on a span element rendering text\n                return null;\n            }\n            const position = this._stickyScrollWidget.getEditorPositionFromNode(mouseTargetElement);\n            if (!position) {\n                // not hovering a sticky scroll line\n                return null;\n            }\n            return {\n                range: new Range(position.lineNumber, position.column, position.lineNumber, position.column + mouseTargetElement.innerText.length),\n                textElement: mouseTargetElement\n            };\n        };\n        const stickyScrollWidgetDomNode = this._stickyScrollWidget.getDomNode();\n        this._register(dom.addStandardDisposableListener(stickyScrollWidgetDomNode, dom.EventType.CLICK, (mouseEvent) => {\n            if (mouseEvent.ctrlKey || mouseEvent.altKey || mouseEvent.metaKey) {\n                // modifier pressed\n                return;\n            }\n            if (!mouseEvent.leftButton) {\n                // not left click\n                return;\n            }\n            if (mouseEvent.shiftKey) {\n                // shift click\n                const lineIndex = this._stickyScrollWidget.getLineIndexFromChildDomNode(mouseEvent.target);\n                if (lineIndex === null) {\n                    return;\n                }\n                const position = new Position(this._endLineNumbers[lineIndex], 1);\n                this._revealLineInCenterIfOutsideViewport(position);\n                return;\n            }\n            const isInFoldingIconDomNode = this._stickyScrollWidget.isInFoldingIconDomNode(mouseEvent.target);\n            if (isInFoldingIconDomNode) {\n                // clicked on folding icon\n                const lineNumber = this._stickyScrollWidget.getLineNumberFromChildDomNode(mouseEvent.target);\n                this._toggleFoldingRegionForLine(lineNumber);\n                return;\n            }\n            const isInStickyLine = this._stickyScrollWidget.isInStickyLine(mouseEvent.target);\n            if (!isInStickyLine) {\n                return;\n            }\n            // normal click\n            let position = this._stickyScrollWidget.getEditorPositionFromNode(mouseEvent.target);\n            if (!position) {\n                const lineNumber = this._stickyScrollWidget.getLineNumberFromChildDomNode(mouseEvent.target);\n                if (lineNumber === null) {\n                    // not hovering a sticky scroll line\n                    return;\n                }\n                position = new Position(lineNumber, 1);\n            }\n            this._revealPosition(position);\n        }));\n        this._register(dom.addStandardDisposableListener(stickyScrollWidgetDomNode, dom.EventType.MOUSE_MOVE, (mouseEvent) => {\n            if (mouseEvent.shiftKey) {\n                const currentEndForLineIndex = this._stickyScrollWidget.getLineIndexFromChildDomNode(mouseEvent.target);\n                if (currentEndForLineIndex === null || this._showEndForLine !== null && this._showEndForLine === currentEndForLineIndex) {\n                    return;\n                }\n                this._showEndForLine = currentEndForLineIndex;\n                this._renderStickyScroll();\n                return;\n            }\n            if (this._showEndForLine !== null) {\n                this._showEndForLine = null;\n                this._renderStickyScroll();\n            }\n        }));\n        this._register(dom.addDisposableListener(stickyScrollWidgetDomNode, dom.EventType.MOUSE_LEAVE, (e) => {\n            if (this._showEndForLine !== null) {\n                this._showEndForLine = null;\n                this._renderStickyScroll();\n            }\n        }));\n        this._register(gesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, _keyboardEvent]) => {\n            const mouseTarget = getMouseEventTarget(mouseEvent);\n            if (!mouseTarget || !mouseEvent.hasTriggerModifier || !this._editor.hasModel()) {\n                sessionStore.clear();\n                return;\n            }\n            const { range, textElement } = mouseTarget;\n            if (!range.equalsRange(this._stickyRangeProjectedOnEditor)) {\n                this._stickyRangeProjectedOnEditor = range;\n                sessionStore.clear();\n            }\n            else if (textElement.style.textDecoration === 'underline') {\n                return;\n            }\n            const cancellationToken = new CancellationTokenSource();\n            sessionStore.add(toDisposable(() => cancellationToken.dispose(true)));\n            let currentHTMLChild;\n            getDefinitionsAtPosition(this._languageFeaturesService.definitionProvider, this._editor.getModel(), new Position(range.startLineNumber, range.startColumn + 1), cancellationToken.token).then((candidateDefinitions => {\n                if (cancellationToken.token.isCancellationRequested) {\n                    return;\n                }\n                if (candidateDefinitions.length !== 0) {\n                    this._candidateDefinitionsLength = candidateDefinitions.length;\n                    const childHTML = textElement;\n                    if (currentHTMLChild !== childHTML) {\n                        sessionStore.clear();\n                        currentHTMLChild = childHTML;\n                        currentHTMLChild.style.textDecoration = 'underline';\n                        sessionStore.add(toDisposable(() => {\n                            currentHTMLChild.style.textDecoration = 'none';\n                        }));\n                    }\n                    else if (!currentHTMLChild) {\n                        currentHTMLChild = childHTML;\n                        currentHTMLChild.style.textDecoration = 'underline';\n                        sessionStore.add(toDisposable(() => {\n                            currentHTMLChild.style.textDecoration = 'none';\n                        }));\n                    }\n                }\n                else {\n                    sessionStore.clear();\n                }\n            }));\n        }));\n        this._register(gesture.onCancel(() => {\n            sessionStore.clear();\n        }));\n        this._register(gesture.onExecute(async (e) => {\n            if (e.target.type !== 12 /* MouseTargetType.OVERLAY_WIDGET */ || e.target.detail !== this._stickyScrollWidget.getId()) {\n                // not hovering over our widget\n                return;\n            }\n            const position = this._stickyScrollWidget.getEditorPositionFromNode(e.target.element);\n            if (!position) {\n                // not hovering a sticky scroll line\n                return;\n            }\n            if (!this._editor.hasModel() || !this._stickyRangeProjectedOnEditor) {\n                return;\n            }\n            if (this._candidateDefinitionsLength > 1) {\n                if (this._focused) {\n                    this._disposeFocusStickyScrollStore();\n                }\n                this._revealPosition({ lineNumber: position.lineNumber, column: 1 });\n            }\n            this._instaService.invokeFunction(goToDefinitionWithLocation, e, this._editor, { uri: this._editor.getModel().uri, range: this._stickyRangeProjectedOnEditor });\n        }));\n    }\n    _onContextMenu(targetWindow, e) {\n        const event = new StandardMouseEvent(targetWindow, e);\n        this._contextMenuService.showContextMenu({\n            menuId: MenuId.StickyScrollContext,\n            getAnchor: () => event,\n        });\n    }\n    _toggleFoldingRegionForLine(line) {\n        if (!this._foldingModel || line === null) {\n            return;\n        }\n        const stickyLine = this._stickyScrollWidget.getRenderedStickyLine(line);\n        const foldingIcon = stickyLine === null || stickyLine === void 0 ? void 0 : stickyLine.foldingIcon;\n        if (!foldingIcon) {\n            return;\n        }\n        toggleCollapseState(this._foldingModel, Number.MAX_VALUE, [line]);\n        foldingIcon.isCollapsed = !foldingIcon.isCollapsed;\n        const scrollTop = (foldingIcon.isCollapsed ?\n            this._editor.getTopForLineNumber(foldingIcon.foldingEndLine)\n            : this._editor.getTopForLineNumber(foldingIcon.foldingStartLine))\n            - this._editor.getOption(67 /* EditorOption.lineHeight */) * stickyLine.index + 1;\n        this._editor.setScrollTop(scrollTop);\n        this._renderStickyScroll(line);\n    }\n    _readConfiguration() {\n        const options = this._editor.getOption(115 /* EditorOption.stickyScroll */);\n        if (options.enabled === false) {\n            this._editor.removeOverlayWidget(this._stickyScrollWidget);\n            this._sessionStore.clear();\n            this._enabled = false;\n            return;\n        }\n        else if (options.enabled && !this._enabled) {\n            // When sticky scroll was just enabled, add the listeners on the sticky scroll\n            this._editor.addOverlayWidget(this._stickyScrollWidget);\n            this._sessionStore.add(this._editor.onDidScrollChange((e) => {\n                if (e.scrollTopChanged) {\n                    this._showEndForLine = null;\n                    this._renderStickyScroll();\n                }\n            }));\n            this._sessionStore.add(this._editor.onDidLayoutChange(() => this._onDidResize()));\n            this._sessionStore.add(this._editor.onDidChangeModelTokens((e) => this._onTokensChange(e)));\n            this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll(() => {\n                this._showEndForLine = null;\n                this._renderStickyScroll();\n            }));\n            this._enabled = true;\n        }\n        const lineNumberOption = this._editor.getOption(68 /* EditorOption.lineNumbers */);\n        if (lineNumberOption.renderType === 2 /* RenderLineNumbersType.Relative */) {\n            this._sessionStore.add(this._editor.onDidChangeCursorPosition(() => {\n                this._showEndForLine = null;\n                this._renderStickyScroll(0);\n            }));\n        }\n    }\n    _readConfigurationChange(event) {\n        if (event.hasChanged(115 /* EditorOption.stickyScroll */)\n            || event.hasChanged(73 /* EditorOption.minimap */)\n            || event.hasChanged(67 /* EditorOption.lineHeight */)\n            || event.hasChanged(110 /* EditorOption.showFoldingControls */)\n            || event.hasChanged(68 /* EditorOption.lineNumbers */)) {\n            this._readConfiguration();\n        }\n        if (event.hasChanged(68 /* EditorOption.lineNumbers */)) {\n            this._renderStickyScroll(0);\n        }\n    }\n    _needsUpdate(event) {\n        const stickyLineNumbers = this._stickyScrollWidget.getCurrentLines();\n        for (const stickyLineNumber of stickyLineNumbers) {\n            for (const range of event.ranges) {\n                if (stickyLineNumber >= range.fromLineNumber && stickyLineNumber <= range.toLineNumber) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n    _onTokensChange(event) {\n        if (this._needsUpdate(event)) {\n            // Rebuilding the whole widget from line 0\n            this._renderStickyScroll(0);\n        }\n    }\n    _onDidResize() {\n        const layoutInfo = this._editor.getLayoutInfo();\n        // Make sure sticky scroll doesn't take up more than 25% of the editor\n        const theoreticalLines = layoutInfo.height / this._editor.getOption(67 /* EditorOption.lineHeight */);\n        this._maxStickyLines = Math.round(theoreticalLines * .25);\n    }\n    async _renderStickyScroll(rebuildFromLine) {\n        var _a, _b;\n        const model = this._editor.getModel();\n        if (!model || model.isTooLargeForTokenization()) {\n            this._foldingModel = null;\n            this._stickyScrollWidget.setState(undefined, null);\n            return;\n        }\n        const stickyLineVersion = this._stickyLineCandidateProvider.getVersionId();\n        if (stickyLineVersion === undefined || stickyLineVersion === model.getVersionId()) {\n            this._foldingModel = (_b = await ((_a = FoldingController.get(this._editor)) === null || _a === void 0 ? void 0 : _a.getFoldingModel())) !== null && _b !== void 0 ? _b : null;\n            this._widgetState = this.findScrollWidgetState();\n            this._stickyScrollVisibleContextKey.set(!(this._widgetState.startLineNumbers.length === 0));\n            if (!this._focused) {\n                this._stickyScrollWidget.setState(this._widgetState, this._foldingModel, rebuildFromLine);\n            }\n            else {\n                // Suppose that previously the sticky scroll widget had height 0, then if there are visible lines, set the last line as focused\n                if (this._focusedStickyElementIndex === -1) {\n                    this._stickyScrollWidget.setState(this._widgetState, this._foldingModel, rebuildFromLine);\n                    this._focusedStickyElementIndex = this._stickyScrollWidget.lineNumberCount - 1;\n                    if (this._focusedStickyElementIndex !== -1) {\n                        this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);\n                    }\n                }\n                else {\n                    const focusedStickyElementLineNumber = this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];\n                    this._stickyScrollWidget.setState(this._widgetState, this._foldingModel, rebuildFromLine);\n                    // Suppose that after setting the state, there are no sticky lines, set the focused index to -1\n                    if (this._stickyScrollWidget.lineNumberCount === 0) {\n                        this._focusedStickyElementIndex = -1;\n                    }\n                    else {\n                        const previousFocusedLineNumberExists = this._stickyScrollWidget.lineNumbers.includes(focusedStickyElementLineNumber);\n                        // If the line number is still there, do not change anything\n                        // If the line number is not there, set the new focused line to be the last line\n                        if (!previousFocusedLineNumberExists) {\n                            this._focusedStickyElementIndex = this._stickyScrollWidget.lineNumberCount - 1;\n                        }\n                        this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);\n                    }\n                }\n            }\n        }\n    }\n    findScrollWidgetState() {\n        const lineHeight = this._editor.getOption(67 /* EditorOption.lineHeight */);\n        const maxNumberStickyLines = Math.min(this._maxStickyLines, this._editor.getOption(115 /* EditorOption.stickyScroll */).maxLineCount);\n        const scrollTop = this._editor.getScrollTop();\n        let lastLineRelativePosition = 0;\n        const startLineNumbers = [];\n        const endLineNumbers = [];\n        const arrayVisibleRanges = this._editor.getVisibleRanges();\n        if (arrayVisibleRanges.length !== 0) {\n            const fullVisibleRange = new StickyRange(arrayVisibleRanges[0].startLineNumber, arrayVisibleRanges[arrayVisibleRanges.length - 1].endLineNumber);\n            const candidateRanges = this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(fullVisibleRange);\n            for (const range of candidateRanges) {\n                const start = range.startLineNumber;\n                const end = range.endLineNumber;\n                const depth = range.nestingDepth;\n                if (end - start > 0) {\n                    const topOfElementAtDepth = (depth - 1) * lineHeight;\n                    const bottomOfElementAtDepth = depth * lineHeight;\n                    const bottomOfBeginningLine = this._editor.getBottomForLineNumber(start) - scrollTop;\n                    const topOfEndLine = this._editor.getTopForLineNumber(end) - scrollTop;\n                    const bottomOfEndLine = this._editor.getBottomForLineNumber(end) - scrollTop;\n                    if (topOfElementAtDepth > topOfEndLine && topOfElementAtDepth <= bottomOfEndLine) {\n                        startLineNumbers.push(start);\n                        endLineNumbers.push(end + 1);\n                        lastLineRelativePosition = bottomOfEndLine - bottomOfElementAtDepth;\n                        break;\n                    }\n                    else if (bottomOfElementAtDepth > bottomOfBeginningLine && bottomOfElementAtDepth <= bottomOfEndLine) {\n                        startLineNumbers.push(start);\n                        endLineNumbers.push(end + 1);\n                    }\n                    if (startLineNumbers.length === maxNumberStickyLines) {\n                        break;\n                    }\n                }\n            }\n        }\n        this._endLineNumbers = endLineNumbers;\n        return new StickyScrollWidgetState(startLineNumbers, endLineNumbers, lastLineRelativePosition, this._showEndForLine);\n    }\n    dispose() {\n        super.dispose();\n        this._sessionStore.dispose();\n    }\n};\nStickyScrollController.ID = 'store.contrib.stickyScrollController';\nStickyScrollController = StickyScrollController_1 = __decorate([\n    __param(1, IContextMenuService),\n    __param(2, ILanguageFeaturesService),\n    __param(3, IInstantiationService),\n    __param(4, ILanguageConfigurationService),\n    __param(5, ILanguageFeatureDebounceService),\n    __param(6, IContextKeyService)\n], StickyScrollController);\nexport { StickyScrollController };\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 { createTrustedTypesPolicy } from '../../../../base/browser/trustedTypes.js';\nimport { equals } from '../../../../base/common/arrays.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport './stickyScroll.css';\nimport { getColumnOfNodeOffset } from '../../../browser/viewParts/lines/viewLine.js';\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/codeEditor/embeddedCodeEditorWidget.js';\nimport { Position } from '../../../common/core/position.js';\nimport { StringBuilder } from '../../../common/core/stringBuilder.js';\nimport { LineDecoration } from '../../../common/viewLayout/lineDecorations.js';\nimport { RenderLineInput, renderViewLine } from '../../../common/viewLayout/viewLineRenderer.js';\nimport { foldingCollapsedIcon, foldingExpandedIcon } from '../../folding/browser/foldingDecorations.js';\nexport class StickyScrollWidgetState {\n    constructor(startLineNumbers, endLineNumbers, lastLineRelativePosition, showEndForLine = null) {\n        this.startLineNumbers = startLineNumbers;\n        this.endLineNumbers = endLineNumbers;\n        this.lastLineRelativePosition = lastLineRelativePosition;\n        this.showEndForLine = showEndForLine;\n    }\n    equals(other) {\n        return !!other\n            && this.lastLineRelativePosition === other.lastLineRelativePosition\n            && this.showEndForLine === other.showEndForLine\n            && equals(this.startLineNumbers, other.startLineNumbers)\n            && equals(this.endLineNumbers, other.endLineNumbers);\n    }\n}\nconst _ttPolicy = createTrustedTypesPolicy('stickyScrollViewLayer', { createHTML: value => value });\nconst STICKY_INDEX_ATTR = 'data-sticky-line-index';\nconst STICKY_IS_LINE_ATTR = 'data-sticky-is-line';\nconst STICKY_IS_LINE_NUMBER_ATTR = 'data-sticky-is-line-number';\nconst STICKY_IS_FOLDING_ICON_ATTR = 'data-sticky-is-folding-icon';\nexport class StickyScrollWidget extends Disposable {\n    constructor(_editor) {\n        super();\n        this._editor = _editor;\n        this._foldingIconStore = new DisposableStore();\n        this._rootDomNode = document.createElement('div');\n        this._lineNumbersDomNode = document.createElement('div');\n        this._linesDomNodeScrollable = document.createElement('div');\n        this._linesDomNode = document.createElement('div');\n        this._lineHeight = this._editor.getOption(67 /* EditorOption.lineHeight */);\n        this._renderedStickyLines = [];\n        this._lineNumbers = [];\n        this._lastLineRelativePosition = 0;\n        this._minContentWidthInPx = 0;\n        this._isOnGlyphMargin = false;\n        this._lineNumbersDomNode.className = 'sticky-widget-line-numbers';\n        this._lineNumbersDomNode.setAttribute('role', 'none');\n        this._linesDomNode.className = 'sticky-widget-lines';\n        this._linesDomNode.setAttribute('role', 'list');\n        this._linesDomNodeScrollable.className = 'sticky-widget-lines-scrollable';\n        this._linesDomNodeScrollable.appendChild(this._linesDomNode);\n        this._rootDomNode.className = 'sticky-widget';\n        this._rootDomNode.classList.toggle('peek', _editor instanceof EmbeddedCodeEditorWidget);\n        this._rootDomNode.appendChild(this._lineNumbersDomNode);\n        this._rootDomNode.appendChild(this._linesDomNodeScrollable);\n        const updateScrollLeftPosition = () => {\n            this._linesDomNode.style.left = this._editor.getOption(115 /* EditorOption.stickyScroll */).scrollWithEditor ? `-${this._editor.getScrollLeft()}px` : '0px';\n        };\n        this._register(this._editor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(115 /* EditorOption.stickyScroll */)) {\n                updateScrollLeftPosition();\n            }\n            if (e.hasChanged(67 /* EditorOption.lineHeight */)) {\n                this._lineHeight = this._editor.getOption(67 /* EditorOption.lineHeight */);\n            }\n        }));\n        this._register(this._editor.onDidScrollChange((e) => {\n            if (e.scrollLeftChanged) {\n                updateScrollLeftPosition();\n            }\n            if (e.scrollWidthChanged) {\n                this._updateWidgetWidth();\n            }\n        }));\n        this._register(this._editor.onDidChangeModel(() => {\n            updateScrollLeftPosition();\n            this._updateWidgetWidth();\n        }));\n        this._register(this._foldingIconStore);\n        updateScrollLeftPosition();\n        this._register(this._editor.onDidLayoutChange((e) => {\n            this._updateWidgetWidth();\n        }));\n        this._updateWidgetWidth();\n    }\n    get lineNumbers() {\n        return this._lineNumbers;\n    }\n    get lineNumberCount() {\n        return this._lineNumbers.length;\n    }\n    getRenderedStickyLine(lineNumber) {\n        return this._renderedStickyLines.find(stickyLine => stickyLine.lineNumber === lineNumber);\n    }\n    getCurrentLines() {\n        return this._lineNumbers;\n    }\n    setState(_state, foldingModel, _rebuildFromLine) {\n        if (_rebuildFromLine === undefined &&\n            ((!this._previousState && !_state) || (this._previousState && this._previousState.equals(_state)))) {\n            return;\n        }\n        const isWidgetHeightZero = this._isWidgetHeightZero(_state);\n        const state = isWidgetHeightZero ? undefined : _state;\n        const rebuildFromLine = isWidgetHeightZero ? 0 : this._findLineToRebuildWidgetFrom(_state, _rebuildFromLine);\n        this._renderRootNode(state, foldingModel, rebuildFromLine);\n        this._previousState = _state;\n    }\n    _isWidgetHeightZero(state) {\n        if (!state) {\n            return true;\n        }\n        const futureWidgetHeight = state.startLineNumbers.length * this._lineHeight + state.lastLineRelativePosition;\n        if (futureWidgetHeight > 0) {\n            this._lastLineRelativePosition = state.lastLineRelativePosition;\n            const lineNumbers = [...state.startLineNumbers];\n            if (state.showEndForLine !== null) {\n                lineNumbers[state.showEndForLine] = state.endLineNumbers[state.showEndForLine];\n            }\n            this._lineNumbers = lineNumbers;\n        }\n        else {\n            this._lastLineRelativePosition = 0;\n            this._lineNumbers = [];\n        }\n        return futureWidgetHeight === 0;\n    }\n    _findLineToRebuildWidgetFrom(state, _rebuildFromLine) {\n        if (!state || !this._previousState) {\n            return 0;\n        }\n        if (_rebuildFromLine !== undefined) {\n            return _rebuildFromLine;\n        }\n        const previousState = this._previousState;\n        const indexOfLinesAlreadyRendered = state.startLineNumbers.findIndex(startLineNumber => !previousState.startLineNumbers.includes(startLineNumber));\n        return (indexOfLinesAlreadyRendered === -1) ? 0 : indexOfLinesAlreadyRendered;\n    }\n    _updateWidgetWidth() {\n        const layoutInfo = this._editor.getLayoutInfo();\n        const lineNumbersWidth = layoutInfo.contentLeft;\n        this._lineNumbersDomNode.style.width = `${lineNumbersWidth}px`;\n        this._linesDomNodeScrollable.style.setProperty('--vscode-editorStickyScroll-scrollableWidth', `${this._editor.getScrollWidth() - layoutInfo.verticalScrollbarWidth}px`);\n        this._rootDomNode.style.width = `${layoutInfo.width - layoutInfo.verticalScrollbarWidth}px`;\n    }\n    _clearStickyLinesFromLine(clearFromLine) {\n        this._foldingIconStore.clear();\n        // Removing only the lines that need to be rerendered\n        for (let i = clearFromLine; i < this._renderedStickyLines.length; i++) {\n            const stickyLine = this._renderedStickyLines[i];\n            stickyLine.lineNumberDomNode.remove();\n            stickyLine.lineDomNode.remove();\n        }\n        // Keep the lines that need to be updated\n        this._renderedStickyLines = this._renderedStickyLines.slice(0, clearFromLine);\n        this._rootDomNode.style.display = 'none';\n    }\n    _useFoldingOpacityTransition(requireTransitions) {\n        this._lineNumbersDomNode.style.setProperty('--vscode-editorStickyScroll-foldingOpacityTransition', `opacity ${requireTransitions ? 0.5 : 0}s`);\n    }\n    _setFoldingIconsVisibility(allVisible) {\n        for (const line of this._renderedStickyLines) {\n            const foldingIcon = line.foldingIcon;\n            if (!foldingIcon) {\n                continue;\n            }\n            foldingIcon.setVisible(allVisible ? true : foldingIcon.isCollapsed);\n        }\n    }\n    async _renderRootNode(state, foldingModel, rebuildFromLine) {\n        this._clearStickyLinesFromLine(rebuildFromLine);\n        if (!state) {\n            return;\n        }\n        // For existing sticky lines update the top and z-index\n        for (const stickyLine of this._renderedStickyLines) {\n            this._updateTopAndZIndexOfStickyLine(stickyLine);\n        }\n        // For new sticky lines\n        const layoutInfo = this._editor.getLayoutInfo();\n        const linesToRender = this._lineNumbers.slice(rebuildFromLine);\n        for (const [index, line] of linesToRender.entries()) {\n            const stickyLine = this._renderChildNode(index + rebuildFromLine, line, foldingModel, layoutInfo);\n            if (!stickyLine) {\n                continue;\n            }\n            this._linesDomNode.appendChild(stickyLine.lineDomNode);\n            this._lineNumbersDomNode.appendChild(stickyLine.lineNumberDomNode);\n            this._renderedStickyLines.push(stickyLine);\n        }\n        if (foldingModel) {\n            this._setFoldingHoverListeners();\n            this._useFoldingOpacityTransition(!this._isOnGlyphMargin);\n        }\n        const widgetHeight = this._lineNumbers.length * this._lineHeight + this._lastLineRelativePosition;\n        this._rootDomNode.style.display = 'block';\n        this._lineNumbersDomNode.style.height = `${widgetHeight}px`;\n        this._linesDomNodeScrollable.style.height = `${widgetHeight}px`;\n        this._rootDomNode.style.height = `${widgetHeight}px`;\n        this._rootDomNode.style.marginLeft = '0px';\n        this._minContentWidthInPx = Math.max(...this._renderedStickyLines.map(l => l.scrollWidth)) + layoutInfo.verticalScrollbarWidth;\n        this._editor.layoutOverlayWidget(this);\n    }\n    _setFoldingHoverListeners() {\n        const showFoldingControls = this._editor.getOption(110 /* EditorOption.showFoldingControls */);\n        if (showFoldingControls !== 'mouseover') {\n            return;\n        }\n        this._foldingIconStore.add(dom.addDisposableListener(this._lineNumbersDomNode, dom.EventType.MOUSE_ENTER, () => {\n            this._isOnGlyphMargin = true;\n            this._setFoldingIconsVisibility(true);\n        }));\n        this._foldingIconStore.add(dom.addDisposableListener(this._lineNumbersDomNode, dom.EventType.MOUSE_LEAVE, () => {\n            this._isOnGlyphMargin = false;\n            this._useFoldingOpacityTransition(true);\n            this._setFoldingIconsVisibility(false);\n        }));\n    }\n    _renderChildNode(index, line, foldingModel, layoutInfo) {\n        const viewModel = this._editor._getViewModel();\n        if (!viewModel) {\n            return;\n        }\n        const viewLineNumber = viewModel.coordinatesConverter.convertModelPositionToViewPosition(new Position(line, 1)).lineNumber;\n        const lineRenderingData = viewModel.getViewLineRenderingData(viewLineNumber);\n        const lineNumberOption = this._editor.getOption(68 /* EditorOption.lineNumbers */);\n        let actualInlineDecorations;\n        try {\n            actualInlineDecorations = LineDecoration.filter(lineRenderingData.inlineDecorations, viewLineNumber, lineRenderingData.minColumn, lineRenderingData.maxColumn);\n        }\n        catch (err) {\n            actualInlineDecorations = [];\n        }\n        const renderLineInput = new RenderLineInput(true, true, lineRenderingData.content, lineRenderingData.continuesWithWrappedLine, lineRenderingData.isBasicASCII, lineRenderingData.containsRTL, 0, lineRenderingData.tokens, actualInlineDecorations, lineRenderingData.tabSize, lineRenderingData.startVisibleColumn, 1, 1, 1, 500, 'none', true, true, null);\n        const sb = new StringBuilder(2000);\n        const renderOutput = renderViewLine(renderLineInput, sb);\n        let newLine;\n        if (_ttPolicy) {\n            newLine = _ttPolicy.createHTML(sb.build());\n        }\n        else {\n            newLine = sb.build();\n        }\n        const lineHTMLNode = document.createElement('span');\n        lineHTMLNode.setAttribute(STICKY_INDEX_ATTR, String(index));\n        lineHTMLNode.setAttribute(STICKY_IS_LINE_ATTR, '');\n        lineHTMLNode.setAttribute('role', 'listitem');\n        lineHTMLNode.tabIndex = 0;\n        lineHTMLNode.className = 'sticky-line-content';\n        lineHTMLNode.classList.add(`stickyLine${line}`);\n        lineHTMLNode.style.lineHeight = `${this._lineHeight}px`;\n        lineHTMLNode.innerHTML = newLine;\n        const lineNumberHTMLNode = document.createElement('span');\n        lineNumberHTMLNode.setAttribute(STICKY_INDEX_ATTR, String(index));\n        lineNumberHTMLNode.setAttribute(STICKY_IS_LINE_NUMBER_ATTR, '');\n        lineNumberHTMLNode.className = 'sticky-line-number';\n        lineNumberHTMLNode.style.lineHeight = `${this._lineHeight}px`;\n        const lineNumbersWidth = layoutInfo.contentLeft;\n        lineNumberHTMLNode.style.width = `${lineNumbersWidth}px`;\n        const innerLineNumberHTML = document.createElement('span');\n        if (lineNumberOption.renderType === 1 /* RenderLineNumbersType.On */ || lineNumberOption.renderType === 3 /* RenderLineNumbersType.Interval */ && line % 10 === 0) {\n            innerLineNumberHTML.innerText = line.toString();\n        }\n        else if (lineNumberOption.renderType === 2 /* RenderLineNumbersType.Relative */) {\n            innerLineNumberHTML.innerText = Math.abs(line - this._editor.getPosition().lineNumber).toString();\n        }\n        innerLineNumberHTML.className = 'sticky-line-number-inner';\n        innerLineNumberHTML.style.lineHeight = `${this._lineHeight}px`;\n        innerLineNumberHTML.style.width = `${layoutInfo.lineNumbersWidth}px`;\n        innerLineNumberHTML.style.paddingLeft = `${layoutInfo.lineNumbersLeft}px`;\n        lineNumberHTMLNode.appendChild(innerLineNumberHTML);\n        const foldingIcon = this._renderFoldingIconForLine(foldingModel, line);\n        if (foldingIcon) {\n            lineNumberHTMLNode.appendChild(foldingIcon.domNode);\n        }\n        this._editor.applyFontInfo(lineHTMLNode);\n        this._editor.applyFontInfo(innerLineNumberHTML);\n        lineNumberHTMLNode.style.lineHeight = `${this._lineHeight}px`;\n        lineHTMLNode.style.lineHeight = `${this._lineHeight}px`;\n        lineNumberHTMLNode.style.height = `${this._lineHeight}px`;\n        lineHTMLNode.style.height = `${this._lineHeight}px`;\n        const renderedLine = new RenderedStickyLine(index, line, lineHTMLNode, lineNumberHTMLNode, foldingIcon, renderOutput.characterMapping, lineHTMLNode.scrollWidth);\n        return this._updateTopAndZIndexOfStickyLine(renderedLine);\n    }\n    _updateTopAndZIndexOfStickyLine(stickyLine) {\n        var _a;\n        const index = stickyLine.index;\n        const lineHTMLNode = stickyLine.lineDomNode;\n        const lineNumberHTMLNode = stickyLine.lineNumberDomNode;\n        const isLastLine = index === this._lineNumbers.length - 1;\n        const lastLineZIndex = '0';\n        const intermediateLineZIndex = '1';\n        lineHTMLNode.style.zIndex = isLastLine ? lastLineZIndex : intermediateLineZIndex;\n        lineNumberHTMLNode.style.zIndex = isLastLine ? lastLineZIndex : intermediateLineZIndex;\n        const lastLineTop = `${index * this._lineHeight + this._lastLineRelativePosition + (((_a = stickyLine.foldingIcon) === null || _a === void 0 ? void 0 : _a.isCollapsed) ? 1 : 0)}px`;\n        const intermediateLineTop = `${index * this._lineHeight}px`;\n        lineHTMLNode.style.top = isLastLine ? lastLineTop : intermediateLineTop;\n        lineNumberHTMLNode.style.top = isLastLine ? lastLineTop : intermediateLineTop;\n        return stickyLine;\n    }\n    _renderFoldingIconForLine(foldingModel, line) {\n        const showFoldingControls = this._editor.getOption(110 /* EditorOption.showFoldingControls */);\n        if (!foldingModel || showFoldingControls === 'never') {\n            return;\n        }\n        const foldingRegions = foldingModel.regions;\n        const indexOfFoldingRegion = foldingRegions.findRange(line);\n        const startLineNumber = foldingRegions.getStartLineNumber(indexOfFoldingRegion);\n        const isFoldingScope = line === startLineNumber;\n        if (!isFoldingScope) {\n            return;\n        }\n        const isCollapsed = foldingRegions.isCollapsed(indexOfFoldingRegion);\n        const foldingIcon = new StickyFoldingIcon(isCollapsed, startLineNumber, foldingRegions.getEndLineNumber(indexOfFoldingRegion), this._lineHeight);\n        foldingIcon.setVisible(this._isOnGlyphMargin ? true : (isCollapsed || showFoldingControls === 'always'));\n        foldingIcon.domNode.setAttribute(STICKY_IS_FOLDING_ICON_ATTR, '');\n        return foldingIcon;\n    }\n    getId() {\n        return 'editor.contrib.stickyScrollWidget';\n    }\n    getDomNode() {\n        return this._rootDomNode;\n    }\n    getPosition() {\n        return {\n            preference: null\n        };\n    }\n    getMinContentWidthInPx() {\n        return this._minContentWidthInPx;\n    }\n    focusLineWithIndex(index) {\n        if (0 <= index && index < this._renderedStickyLines.length) {\n            this._renderedStickyLines[index].lineDomNode.focus();\n        }\n    }\n    /**\n     * Given a leaf dom node, tries to find the editor position.\n     */\n    getEditorPositionFromNode(spanDomNode) {\n        if (!spanDomNode || spanDomNode.children.length > 0) {\n            // This is not a leaf node\n            return null;\n        }\n        const renderedStickyLine = this._getRenderedStickyLineFromChildDomNode(spanDomNode);\n        if (!renderedStickyLine) {\n            return null;\n        }\n        const column = getColumnOfNodeOffset(renderedStickyLine.characterMapping, spanDomNode, 0);\n        return new Position(renderedStickyLine.lineNumber, column);\n    }\n    getLineNumberFromChildDomNode(domNode) {\n        var _a, _b;\n        return (_b = (_a = this._getRenderedStickyLineFromChildDomNode(domNode)) === null || _a === void 0 ? void 0 : _a.lineNumber) !== null && _b !== void 0 ? _b : null;\n    }\n    _getRenderedStickyLineFromChildDomNode(domNode) {\n        const index = this.getLineIndexFromChildDomNode(domNode);\n        if (index === null || index < 0 || index >= this._renderedStickyLines.length) {\n            return null;\n        }\n        return this._renderedStickyLines[index];\n    }\n    /**\n     * Given a child dom node, tries to find the line number attribute that was stored in the node.\n     * @returns the attribute value or null if none is found.\n     */\n    getLineIndexFromChildDomNode(domNode) {\n        const lineIndex = this._getAttributeValue(domNode, STICKY_INDEX_ATTR);\n        return lineIndex ? parseInt(lineIndex, 10) : null;\n    }\n    /**\n     * Given a child dom node, tries to find if it is (contained in) a sticky line.\n     * @returns a boolean.\n     */\n    isInStickyLine(domNode) {\n        const isInLine = this._getAttributeValue(domNode, STICKY_IS_LINE_ATTR);\n        return isInLine !== undefined;\n    }\n    /**\n     * Given a child dom node, tries to find if this dom node is (contained in) a sticky folding icon.\n     * @returns a boolean.\n     */\n    isInFoldingIconDomNode(domNode) {\n        const isInFoldingIcon = this._getAttributeValue(domNode, STICKY_IS_FOLDING_ICON_ATTR);\n        return isInFoldingIcon !== undefined;\n    }\n    /**\n     * Given the dom node, finds if it or its parent sequence contains the given attribute.\n     * @returns the attribute value or undefined.\n     */\n    _getAttributeValue(domNode, attribute) {\n        while (domNode && domNode !== this._rootDomNode) {\n            const line = domNode.getAttribute(attribute);\n            if (line !== null) {\n                return line;\n            }\n            domNode = domNode.parentElement;\n        }\n        return;\n    }\n}\nclass RenderedStickyLine {\n    constructor(index, lineNumber, lineDomNode, lineNumberDomNode, foldingIcon, characterMapping, scrollWidth) {\n        this.index = index;\n        this.lineNumber = lineNumber;\n        this.lineDomNode = lineDomNode;\n        this.lineNumberDomNode = lineNumberDomNode;\n        this.foldingIcon = foldingIcon;\n        this.characterMapping = characterMapping;\n        this.scrollWidth = scrollWidth;\n    }\n}\nclass StickyFoldingIcon {\n    constructor(isCollapsed, foldingStartLine, foldingEndLine, dimension) {\n        this.isCollapsed = isCollapsed;\n        this.foldingStartLine = foldingStartLine;\n        this.foldingEndLine = foldingEndLine;\n        this.dimension = dimension;\n        this.domNode = document.createElement('div');\n        this.domNode.style.width = `${dimension}px`;\n        this.domNode.style.height = `${dimension}px`;\n        this.domNode.className = ThemeIcon.asClassName(isCollapsed ? foldingCollapsedIcon : foldingExpandedIcon);\n    }\n    setVisible(visible) {\n        this.domNode.style.cursor = visible ? 'pointer' : 'default';\n        this.domNode.style.opacity = visible ? '1' : '0';\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 { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { binarySearch } from '../../../../base/common/arrays.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { StickyModelProvider } from './stickyScrollModelProvider.js';\nexport class StickyLineCandidate {\n    constructor(startLineNumber, endLineNumber, nestingDepth) {\n        this.startLineNumber = startLineNumber;\n        this.endLineNumber = endLineNumber;\n        this.nestingDepth = nestingDepth;\n    }\n}\nlet StickyLineCandidateProvider = class StickyLineCandidateProvider extends Disposable {\n    constructor(editor, _languageFeaturesService, _languageConfigurationService) {\n        super();\n        this._languageFeaturesService = _languageFeaturesService;\n        this._languageConfigurationService = _languageConfigurationService;\n        this._onDidChangeStickyScroll = this._register(new Emitter());\n        this.onDidChangeStickyScroll = this._onDidChangeStickyScroll.event;\n        this._model = null;\n        this._cts = null;\n        this._stickyModelProvider = null;\n        this._editor = editor;\n        this._sessionStore = this._register(new DisposableStore());\n        this._updateSoon = this._register(new RunOnceScheduler(() => this.update(), 50));\n        this._register(this._editor.onDidChangeConfiguration(e => {\n            if (e.hasChanged(115 /* EditorOption.stickyScroll */)) {\n                this.readConfiguration();\n            }\n        }));\n        this.readConfiguration();\n    }\n    readConfiguration() {\n        this._sessionStore.clear();\n        const options = this._editor.getOption(115 /* EditorOption.stickyScroll */);\n        if (!options.enabled) {\n            return;\n        }\n        this._sessionStore.add(this._editor.onDidChangeModel(() => {\n            // We should not show an old model for a different file, it will always be wrong.\n            // So we clear the model here immediately and then trigger an update.\n            this._model = null;\n            this.updateStickyModelProvider();\n            this._onDidChangeStickyScroll.fire();\n            this.update();\n        }));\n        this._sessionStore.add(this._editor.onDidChangeHiddenAreas(() => this.update()));\n        this._sessionStore.add(this._editor.onDidChangeModelContent(() => this._updateSoon.schedule()));\n        this._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(() => this.update()));\n        this._sessionStore.add(toDisposable(() => {\n            var _a;\n            (_a = this._stickyModelProvider) === null || _a === void 0 ? void 0 : _a.dispose();\n            this._stickyModelProvider = null;\n        }));\n        this.updateStickyModelProvider();\n        this.update();\n    }\n    getVersionId() {\n        var _a;\n        return (_a = this._model) === null || _a === void 0 ? void 0 : _a.version;\n    }\n    updateStickyModelProvider() {\n        var _a;\n        (_a = this._stickyModelProvider) === null || _a === void 0 ? void 0 : _a.dispose();\n        this._stickyModelProvider = null;\n        const editor = this._editor;\n        if (editor.hasModel()) {\n            this._stickyModelProvider = new StickyModelProvider(editor, () => this._updateSoon.schedule(), this._languageConfigurationService, this._languageFeaturesService);\n        }\n    }\n    async update() {\n        var _a;\n        (_a = this._cts) === null || _a === void 0 ? void 0 : _a.dispose(true);\n        this._cts = new CancellationTokenSource();\n        await this.updateStickyModel(this._cts.token);\n        this._onDidChangeStickyScroll.fire();\n    }\n    async updateStickyModel(token) {\n        if (!this._editor.hasModel() || !this._stickyModelProvider || this._editor.getModel().isTooLargeForTokenization()) {\n            this._model = null;\n            return;\n        }\n        const model = await this._stickyModelProvider.update(token);\n        if (token.isCancellationRequested) {\n            // the computation was canceled, so do not overwrite the model\n            return;\n        }\n        this._model = model;\n    }\n    updateIndex(index) {\n        if (index === -1) {\n            index = 0;\n        }\n        else if (index < 0) {\n            index = -index - 2;\n        }\n        return index;\n    }\n    getCandidateStickyLinesIntersectingFromStickyModel(range, outlineModel, result, depth, lastStartLineNumber) {\n        if (outlineModel.children.length === 0) {\n            return;\n        }\n        let lastLine = lastStartLineNumber;\n        const childrenStartLines = [];\n        for (let i = 0; i < outlineModel.children.length; i++) {\n            const child = outlineModel.children[i];\n            if (child.range) {\n                childrenStartLines.push(child.range.startLineNumber);\n            }\n        }\n        const lowerBound = this.updateIndex(binarySearch(childrenStartLines, range.startLineNumber, (a, b) => { return a - b; }));\n        const upperBound = this.updateIndex(binarySearch(childrenStartLines, range.startLineNumber + depth, (a, b) => { return a - b; }));\n        for (let i = lowerBound; i <= upperBound; i++) {\n            const child = outlineModel.children[i];\n            if (!child) {\n                return;\n            }\n            if (child.range) {\n                const childStartLine = child.range.startLineNumber;\n                const childEndLine = child.range.endLineNumber;\n                if (range.startLineNumber <= childEndLine + 1 && childStartLine - 1 <= range.endLineNumber && childStartLine !== lastLine) {\n                    lastLine = childStartLine;\n                    result.push(new StickyLineCandidate(childStartLine, childEndLine - 1, depth + 1));\n                    this.getCandidateStickyLinesIntersectingFromStickyModel(range, child, result, depth + 1, childStartLine);\n                }\n            }\n            else {\n                this.getCandidateStickyLinesIntersectingFromStickyModel(range, child, result, depth, lastStartLineNumber);\n            }\n        }\n    }\n    getCandidateStickyLinesIntersecting(range) {\n        var _a, _b;\n        if (!((_a = this._model) === null || _a === void 0 ? void 0 : _a.element)) {\n            return [];\n        }\n        let stickyLineCandidates = [];\n        this.getCandidateStickyLinesIntersectingFromStickyModel(range, this._model.element, stickyLineCandidates, 0, -1);\n        const hiddenRanges = (_b = this._editor._getViewModel()) === null || _b === void 0 ? void 0 : _b.getHiddenAreas();\n        if (hiddenRanges) {\n            for (const hiddenRange of hiddenRanges) {\n                stickyLineCandidates = stickyLineCandidates.filter(stickyLine => !(stickyLine.startLineNumber >= hiddenRange.startLineNumber && stickyLine.endLineNumber <= hiddenRange.endLineNumber + 1));\n            }\n        }\n        return stickyLineCandidates;\n    }\n};\nStickyLineCandidateProvider = __decorate([\n    __param(1, ILanguageFeaturesService),\n    __param(2, ILanguageConfigurationService)\n], StickyLineCandidateProvider);\nexport { StickyLineCandidateProvider };\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 { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { OutlineElement, OutlineGroup, OutlineModel } from '../../documentSymbols/browser/outlineModel.js';\nimport { createCancelablePromise, Delayer } from '../../../../base/common/async.js';\nimport { FoldingController, RangesLimitReporter } from '../../folding/browser/folding.js';\nimport { SyntaxRangeProvider } from '../../folding/browser/syntaxRangeProvider.js';\nimport { IndentRangeProvider } from '../../folding/browser/indentRangeProvider.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { StickyElement, StickyModel, StickyRange } from './stickyScrollElement.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nvar ModelProvider;\n(function (ModelProvider) {\n    ModelProvider[\"OUTLINE_MODEL\"] = \"outlineModel\";\n    ModelProvider[\"FOLDING_PROVIDER_MODEL\"] = \"foldingProviderModel\";\n    ModelProvider[\"INDENTATION_MODEL\"] = \"indentationModel\";\n})(ModelProvider || (ModelProvider = {}));\nvar Status;\n(function (Status) {\n    Status[Status[\"VALID\"] = 0] = \"VALID\";\n    Status[Status[\"INVALID\"] = 1] = \"INVALID\";\n    Status[Status[\"CANCELED\"] = 2] = \"CANCELED\";\n})(Status || (Status = {}));\nlet StickyModelProvider = class StickyModelProvider extends Disposable {\n    constructor(_editor, onProviderUpdate, _languageConfigurationService, _languageFeaturesService) {\n        super();\n        this._editor = _editor;\n        this._modelProviders = [];\n        this._modelPromise = null;\n        this._updateScheduler = this._register(new Delayer(300));\n        this._updateOperation = this._register(new DisposableStore());\n        switch (this._editor.getOption(115 /* EditorOption.stickyScroll */).defaultModel) {\n            case ModelProvider.OUTLINE_MODEL:\n                this._modelProviders.push(new StickyModelFromCandidateOutlineProvider(this._editor, _languageFeaturesService));\n            // fall through\n            case ModelProvider.FOLDING_PROVIDER_MODEL:\n                this._modelProviders.push(new StickyModelFromCandidateSyntaxFoldingProvider(this._editor, onProviderUpdate, _languageFeaturesService));\n            // fall through\n            case ModelProvider.INDENTATION_MODEL:\n                this._modelProviders.push(new StickyModelFromCandidateIndentationFoldingProvider(this._editor, _languageConfigurationService));\n                break;\n        }\n    }\n    dispose() {\n        this._modelProviders.forEach(provider => provider.dispose());\n        this._updateOperation.clear();\n        this._cancelModelPromise();\n        super.dispose();\n    }\n    _cancelModelPromise() {\n        if (this._modelPromise) {\n            this._modelPromise.cancel();\n            this._modelPromise = null;\n        }\n    }\n    async update(token) {\n        this._updateOperation.clear();\n        this._updateOperation.add({\n            dispose: () => {\n                this._cancelModelPromise();\n                this._updateScheduler.cancel();\n            }\n        });\n        this._cancelModelPromise();\n        return await this._updateScheduler.trigger(async () => {\n            for (const modelProvider of this._modelProviders) {\n                const { statusPromise, modelPromise } = modelProvider.computeStickyModel(token);\n                this._modelPromise = modelPromise;\n                const status = await statusPromise;\n                if (this._modelPromise !== modelPromise) {\n                    return null;\n                }\n                switch (status) {\n                    case Status.CANCELED:\n                        this._updateOperation.clear();\n                        return null;\n                    case Status.VALID:\n                        return modelProvider.stickyModel;\n                }\n            }\n            return null;\n        }).catch((error) => {\n            onUnexpectedError(error);\n            return null;\n        });\n    }\n};\nStickyModelProvider = __decorate([\n    __param(2, IInstantiationService),\n    __param(3, ILanguageFeaturesService)\n], StickyModelProvider);\nexport { StickyModelProvider };\nclass StickyModelCandidateProvider extends Disposable {\n    constructor(_editor) {\n        super();\n        this._editor = _editor;\n        this._stickyModel = null;\n    }\n    get stickyModel() {\n        return this._stickyModel;\n    }\n    _invalid() {\n        this._stickyModel = null;\n        return Status.INVALID;\n    }\n    computeStickyModel(token) {\n        if (token.isCancellationRequested || !this.isProviderValid()) {\n            return { statusPromise: this._invalid(), modelPromise: null };\n        }\n        const providerModelPromise = createCancelablePromise(token => this.createModelFromProvider(token));\n        return {\n            statusPromise: providerModelPromise.then(providerModel => {\n                if (!this.isModelValid(providerModel)) {\n                    return this._invalid();\n                }\n                if (token.isCancellationRequested) {\n                    return Status.CANCELED;\n                }\n                this._stickyModel = this.createStickyModel(token, providerModel);\n                return Status.VALID;\n            }).then(undefined, (err) => {\n                onUnexpectedError(err);\n                return Status.CANCELED;\n            }),\n            modelPromise: providerModelPromise\n        };\n    }\n    /**\n     * Method which checks whether the model returned by the provider is valid and can be used to compute a sticky model.\n     * This method by default returns true.\n     * @param model model returned by the provider\n     * @returns boolean indicating whether the model is valid\n     */\n    isModelValid(model) {\n        return true;\n    }\n    /**\n     * Method which checks whether the provider is valid before applying it to find the provider model.\n     * This method by default returns true.\n     * @returns boolean indicating whether the provider is valid\n     */\n    isProviderValid() {\n        return true;\n    }\n}\nlet StickyModelFromCandidateOutlineProvider = class StickyModelFromCandidateOutlineProvider extends StickyModelCandidateProvider {\n    constructor(_editor, _languageFeaturesService) {\n        super(_editor);\n        this._languageFeaturesService = _languageFeaturesService;\n    }\n    createModelFromProvider(token) {\n        return OutlineModel.create(this._languageFeaturesService.documentSymbolProvider, this._editor.getModel(), token);\n    }\n    createStickyModel(token, model) {\n        var _a;\n        const { stickyOutlineElement, providerID } = this._stickyModelFromOutlineModel(model, (_a = this._stickyModel) === null || _a === void 0 ? void 0 : _a.outlineProviderId);\n        const textModel = this._editor.getModel();\n        return new StickyModel(textModel.uri, textModel.getVersionId(), stickyOutlineElement, providerID);\n    }\n    isModelValid(model) {\n        return model && model.children.size > 0;\n    }\n    _stickyModelFromOutlineModel(outlineModel, preferredProvider) {\n        let outlineElements;\n        // When several possible outline providers\n        if (Iterable.first(outlineModel.children.values()) instanceof OutlineGroup) {\n            const provider = Iterable.find(outlineModel.children.values(), outlineGroupOfModel => outlineGroupOfModel.id === preferredProvider);\n            if (provider) {\n                outlineElements = provider.children;\n            }\n            else {\n                let tempID = '';\n                let maxTotalSumOfRanges = -1;\n                let optimalOutlineGroup = undefined;\n                for (const [_key, outlineGroup] of outlineModel.children.entries()) {\n                    const totalSumRanges = this._findSumOfRangesOfGroup(outlineGroup);\n                    if (totalSumRanges > maxTotalSumOfRanges) {\n                        optimalOutlineGroup = outlineGroup;\n                        maxTotalSumOfRanges = totalSumRanges;\n                        tempID = outlineGroup.id;\n                    }\n                }\n                preferredProvider = tempID;\n                outlineElements = optimalOutlineGroup.children;\n            }\n        }\n        else {\n            outlineElements = outlineModel.children;\n        }\n        const stickyChildren = [];\n        const outlineElementsArray = Array.from(outlineElements.values()).sort((element1, element2) => {\n            const range1 = new StickyRange(element1.symbol.range.startLineNumber, element1.symbol.range.endLineNumber);\n            const range2 = new StickyRange(element2.symbol.range.startLineNumber, element2.symbol.range.endLineNumber);\n            return this._comparator(range1, range2);\n        });\n        for (const outlineElement of outlineElementsArray) {\n            stickyChildren.push(this._stickyModelFromOutlineElement(outlineElement, outlineElement.symbol.selectionRange.startLineNumber));\n        }\n        const stickyOutlineElement = new StickyElement(undefined, stickyChildren, undefined);\n        return {\n            stickyOutlineElement: stickyOutlineElement,\n            providerID: preferredProvider\n        };\n    }\n    _stickyModelFromOutlineElement(outlineElement, previousStartLine) {\n        const children = [];\n        for (const child of outlineElement.children.values()) {\n            if (child.symbol.selectionRange.startLineNumber !== child.symbol.range.endLineNumber) {\n                if (child.symbol.selectionRange.startLineNumber !== previousStartLine) {\n                    children.push(this._stickyModelFromOutlineElement(child, child.symbol.selectionRange.startLineNumber));\n                }\n                else {\n                    for (const subchild of child.children.values()) {\n                        children.push(this._stickyModelFromOutlineElement(subchild, child.symbol.selectionRange.startLineNumber));\n                    }\n                }\n            }\n        }\n        children.sort((child1, child2) => this._comparator(child1.range, child2.range));\n        const range = new StickyRange(outlineElement.symbol.selectionRange.startLineNumber, outlineElement.symbol.range.endLineNumber);\n        return new StickyElement(range, children, undefined);\n    }\n    _comparator(range1, range2) {\n        if (range1.startLineNumber !== range2.startLineNumber) {\n            return range1.startLineNumber - range2.startLineNumber;\n        }\n        else {\n            return range2.endLineNumber - range1.endLineNumber;\n        }\n    }\n    _findSumOfRangesOfGroup(outline) {\n        let res = 0;\n        for (const child of outline.children.values()) {\n            res += this._findSumOfRangesOfGroup(child);\n        }\n        if (outline instanceof OutlineElement) {\n            return res + outline.symbol.range.endLineNumber - outline.symbol.selectionRange.startLineNumber;\n        }\n        else {\n            return res;\n        }\n    }\n};\nStickyModelFromCandidateOutlineProvider = __decorate([\n    __param(1, ILanguageFeaturesService)\n], StickyModelFromCandidateOutlineProvider);\nclass StickyModelFromCandidateFoldingProvider extends StickyModelCandidateProvider {\n    constructor(editor) {\n        super(editor);\n        this._foldingLimitReporter = new RangesLimitReporter(editor);\n    }\n    createStickyModel(token, model) {\n        const foldingElement = this._fromFoldingRegions(model);\n        const textModel = this._editor.getModel();\n        return new StickyModel(textModel.uri, textModel.getVersionId(), foldingElement, undefined);\n    }\n    isModelValid(model) {\n        return model !== null;\n    }\n    _fromFoldingRegions(foldingRegions) {\n        const length = foldingRegions.length;\n        const orderedStickyElements = [];\n        // The root sticky outline element\n        const stickyOutlineElement = new StickyElement(undefined, [], undefined);\n        for (let i = 0; i < length; i++) {\n            // Finding the parent index of the current range\n            const parentIndex = foldingRegions.getParentIndex(i);\n            let parentNode;\n            if (parentIndex !== -1) {\n                // Access the reference of the parent node\n                parentNode = orderedStickyElements[parentIndex];\n            }\n            else {\n                // In that case the parent node is the root node\n                parentNode = stickyOutlineElement;\n            }\n            const child = new StickyElement(new StickyRange(foldingRegions.getStartLineNumber(i), foldingRegions.getEndLineNumber(i) + 1), [], parentNode);\n            parentNode.children.push(child);\n            orderedStickyElements.push(child);\n        }\n        return stickyOutlineElement;\n    }\n}\nlet StickyModelFromCandidateIndentationFoldingProvider = class StickyModelFromCandidateIndentationFoldingProvider extends StickyModelFromCandidateFoldingProvider {\n    constructor(editor, _languageConfigurationService) {\n        super(editor);\n        this._languageConfigurationService = _languageConfigurationService;\n        this.provider = this._register(new IndentRangeProvider(editor.getModel(), this._languageConfigurationService, this._foldingLimitReporter));\n    }\n    async createModelFromProvider(token) {\n        return this.provider.compute(token);\n    }\n};\nStickyModelFromCandidateIndentationFoldingProvider = __decorate([\n    __param(1, ILanguageConfigurationService)\n], StickyModelFromCandidateIndentationFoldingProvider);\nlet StickyModelFromCandidateSyntaxFoldingProvider = class StickyModelFromCandidateSyntaxFoldingProvider extends StickyModelFromCandidateFoldingProvider {\n    constructor(editor, onProviderUpdate, _languageFeaturesService) {\n        super(editor);\n        this._languageFeaturesService = _languageFeaturesService;\n        const selectedProviders = FoldingController.getFoldingRangeProviders(this._languageFeaturesService, editor.getModel());\n        if (selectedProviders.length > 0) {\n            this.provider = this._register(new SyntaxRangeProvider(editor.getModel(), selectedProviders, onProviderUpdate, this._foldingLimitReporter, undefined));\n        }\n    }\n    isProviderValid() {\n        return this.provider !== undefined;\n    }\n    async createModelFromProvider(token) {\n        var _a, _b;\n        return (_b = (_a = this.provider) === null || _a === void 0 ? void 0 : _a.compute(token)) !== null && _b !== void 0 ? _b : null;\n    }\n};\nStickyModelFromCandidateSyntaxFoldingProvider = __decorate([\n    __param(2, ILanguageFeaturesService)\n], StickyModelFromCandidateSyntaxFoldingProvider);\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 class StickyRange {\n    constructor(startLineNumber, endLineNumber) {\n        this.startLineNumber = startLineNumber;\n        this.endLineNumber = endLineNumber;\n    }\n}\nexport class StickyElement {\n    constructor(\n    /**\n     * Range of line numbers spanned by the current scope\n     */\n    range, \n    /**\n     * Must be sorted by start line number\n    */\n    children, \n    /**\n     * Parent sticky outline element\n     */\n    parent) {\n        this.range = range;\n        this.children = children;\n        this.parent = parent;\n    }\n}\nexport class StickyModel {\n    constructor(uri, version, element, outlineProviderId) {\n        this.uri = uri;\n        this.version = version;\n        this.element = element;\n        this.outlineProviderId = outlineProviderId;\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 { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { FuzzyScore } from '../../../../base/common/filters.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { Disposable, RefCountedDisposable } from '../../../../base/common/lifecycle.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { registerEditorFeature } from '../../../common/editorFeatures.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CompletionModel, LineContext } from './completionModel.js';\nimport { CompletionOptions, provideSuggestionItems, QuickSuggestionsOptions } from './suggest.js';\nimport { ISuggestMemoryService } from './suggestMemory.js';\nimport { SuggestModel } from './suggestModel.js';\nimport { WordDistance } from './wordDistance.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nclass SuggestInlineCompletion {\n    constructor(range, insertText, filterText, additionalTextEdits, command, completion) {\n        this.range = range;\n        this.insertText = insertText;\n        this.filterText = filterText;\n        this.additionalTextEdits = additionalTextEdits;\n        this.command = command;\n        this.completion = completion;\n    }\n}\nlet InlineCompletionResults = class InlineCompletionResults extends RefCountedDisposable {\n    constructor(model, line, word, completionModel, completions, _suggestMemoryService) {\n        super(completions.disposable);\n        this.model = model;\n        this.line = line;\n        this.word = word;\n        this.completionModel = completionModel;\n        this._suggestMemoryService = _suggestMemoryService;\n    }\n    canBeReused(model, line, word) {\n        return this.model === model // same model\n            && this.line === line\n            && this.word.word.length > 0\n            && this.word.startColumn === word.startColumn && this.word.endColumn < word.endColumn // same word\n            && this.completionModel.getIncompleteProvider().size === 0; // no incomplete results\n    }\n    get items() {\n        var _a;\n        const result = [];\n        // Split items by preselected index. This ensures the memory-selected item shows first and that better/worst\n        // ranked items are before/after\n        const { items } = this.completionModel;\n        const selectedIndex = this._suggestMemoryService.select(this.model, { lineNumber: this.line, column: this.word.endColumn + this.completionModel.lineContext.characterCountDelta }, items);\n        const first = Iterable.slice(items, selectedIndex);\n        const second = Iterable.slice(items, 0, selectedIndex);\n        let resolveCount = 5;\n        for (const item of Iterable.concat(first, second)) {\n            if (item.score === FuzzyScore.Default) {\n                // skip items that have no overlap\n                continue;\n            }\n            const range = new Range(item.editStart.lineNumber, item.editStart.column, item.editInsertEnd.lineNumber, item.editInsertEnd.column + this.completionModel.lineContext.characterCountDelta // end PLUS character delta\n            );\n            const insertText = item.completion.insertTextRules && (item.completion.insertTextRules & 4 /* CompletionItemInsertTextRule.InsertAsSnippet */)\n                ? { snippet: item.completion.insertText }\n                : item.completion.insertText;\n            result.push(new SuggestInlineCompletion(range, insertText, (_a = item.filterTextLow) !== null && _a !== void 0 ? _a : item.labelLow, item.completion.additionalTextEdits, item.completion.command, item));\n            // resolve the first N suggestions eagerly\n            if (resolveCount-- >= 0) {\n                item.resolve(CancellationToken.None);\n            }\n        }\n        return result;\n    }\n};\nInlineCompletionResults = __decorate([\n    __param(5, ISuggestMemoryService)\n], InlineCompletionResults);\nlet SuggestInlineCompletions = class SuggestInlineCompletions extends Disposable {\n    constructor(_languageFeatureService, _clipboardService, _suggestMemoryService, _editorService) {\n        super();\n        this._languageFeatureService = _languageFeatureService;\n        this._clipboardService = _clipboardService;\n        this._suggestMemoryService = _suggestMemoryService;\n        this._editorService = _editorService;\n        this._store.add(_languageFeatureService.inlineCompletionsProvider.register('*', this));\n    }\n    async provideInlineCompletions(model, position, context, token) {\n        var _a;\n        if (context.selectedSuggestionInfo) {\n            return;\n        }\n        let editor;\n        for (const candidate of this._editorService.listCodeEditors()) {\n            if (candidate.getModel() === model) {\n                editor = candidate;\n                break;\n            }\n        }\n        if (!editor) {\n            return;\n        }\n        const config = editor.getOption(89 /* EditorOption.quickSuggestions */);\n        if (QuickSuggestionsOptions.isAllOff(config)) {\n            // quick suggest is off (for this model/language)\n            return;\n        }\n        model.tokenization.tokenizeIfCheap(position.lineNumber);\n        const lineTokens = model.tokenization.getLineTokens(position.lineNumber);\n        const tokenType = lineTokens.getStandardTokenType(lineTokens.findTokenIndexAtOffset(Math.max(position.column - 1 - 1, 0)));\n        if (QuickSuggestionsOptions.valueFor(config, tokenType) !== 'inline') {\n            // quick suggest is off (for this token)\n            return undefined;\n        }\n        // We consider non-empty leading words and trigger characters. The latter only\n        // when no word is being typed (word characters superseed trigger characters)\n        let wordInfo = model.getWordAtPosition(position);\n        let triggerCharacterInfo;\n        if (!(wordInfo === null || wordInfo === void 0 ? void 0 : wordInfo.word)) {\n            triggerCharacterInfo = this._getTriggerCharacterInfo(model, position);\n        }\n        if (!(wordInfo === null || wordInfo === void 0 ? void 0 : wordInfo.word) && !triggerCharacterInfo) {\n            // not at word, not a trigger character\n            return;\n        }\n        // ensure that we have word information and that we are at the end of a word\n        // otherwise we stop because we don't want to do quick suggestions inside words\n        if (!wordInfo) {\n            wordInfo = model.getWordUntilPosition(position);\n        }\n        if (wordInfo.endColumn !== position.column) {\n            return;\n        }\n        let result;\n        const leadingLineContents = model.getValueInRange(new Range(position.lineNumber, 1, position.lineNumber, position.column));\n        if (!triggerCharacterInfo && ((_a = this._lastResult) === null || _a === void 0 ? void 0 : _a.canBeReused(model, position.lineNumber, wordInfo))) {\n            // reuse a previous result iff possible, only a refilter is needed\n            // TODO@jrieken this can be improved further and only incomplete results can be updated\n            // console.log(`REUSE with ${wordInfo.word}`);\n            const newLineContext = new LineContext(leadingLineContents, position.column - this._lastResult.word.endColumn);\n            this._lastResult.completionModel.lineContext = newLineContext;\n            this._lastResult.acquire();\n            result = this._lastResult;\n        }\n        else {\n            // refesh model is required\n            const completions = await provideSuggestionItems(this._languageFeatureService.completionProvider, model, position, new CompletionOptions(undefined, SuggestModel.createSuggestFilter(editor).itemKind, triggerCharacterInfo === null || triggerCharacterInfo === void 0 ? void 0 : triggerCharacterInfo.providers), triggerCharacterInfo && { triggerKind: 1 /* CompletionTriggerKind.TriggerCharacter */, triggerCharacter: triggerCharacterInfo.ch }, token);\n            let clipboardText;\n            if (completions.needsClipboard) {\n                clipboardText = await this._clipboardService.readText();\n            }\n            const completionModel = new CompletionModel(completions.items, position.column, new LineContext(leadingLineContents, 0), WordDistance.None, editor.getOption(118 /* EditorOption.suggest */), editor.getOption(112 /* EditorOption.snippetSuggestions */), { boostFullMatch: false, firstMatchCanBeWeak: false }, clipboardText);\n            result = new InlineCompletionResults(model, position.lineNumber, wordInfo, completionModel, completions, this._suggestMemoryService);\n        }\n        this._lastResult = result;\n        return result;\n    }\n    handleItemDidShow(_completions, item) {\n        item.completion.resolve(CancellationToken.None);\n    }\n    freeInlineCompletions(result) {\n        result.release();\n    }\n    _getTriggerCharacterInfo(model, position) {\n        var _a;\n        const ch = model.getValueInRange(Range.fromPositions({ lineNumber: position.lineNumber, column: position.column - 1 }, position));\n        const providers = new Set();\n        for (const provider of this._languageFeatureService.completionProvider.all(model)) {\n            if ((_a = provider.triggerCharacters) === null || _a === void 0 ? void 0 : _a.includes(ch)) {\n                providers.add(provider);\n            }\n        }\n        if (providers.size === 0) {\n            return undefined;\n        }\n        return { providers, ch };\n    }\n};\nSuggestInlineCompletions = __decorate([\n    __param(0, ILanguageFeaturesService),\n    __param(1, IClipboardService),\n    __param(2, ISuggestMemoryService),\n    __param(3, ICodeEditorService)\n], SuggestInlineCompletions);\nexport { SuggestInlineCompletions };\nregisterEditorFeature(SuggestInlineCompletions);\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 { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport * as nls from '../../../../nls.js';\nclass ForceRetokenizeAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.forceRetokenize',\n            label: nls.localize('forceRetokenize', \"Developer: Force Retokenize\"),\n            alias: 'Developer: Force Retokenize',\n            precondition: undefined\n        });\n    }\n    run(accessor, editor) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const model = editor.getModel();\n        model.tokenization.resetTokenization();\n        const sw = new StopWatch();\n        model.tokenization.forceTokenization(model.getLineCount());\n        sw.stop();\n        console.log(`tokenization took ${sw.elapsed()}`);\n    }\n}\nregisterEditorAction(ForceRetokenizeAction);\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 { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { TabFocus } from '../../../browser/config/tabFocus.js';\nimport * as nls from '../../../../nls.js';\nimport { Action2, registerAction2 } from '../../../../platform/actions/common/actions.js';\nexport class ToggleTabFocusModeAction extends Action2 {\n    constructor() {\n        super({\n            id: ToggleTabFocusModeAction.ID,\n            title: nls.localize2({ key: 'toggle.tabMovesFocus', comment: ['Turn on/off use of tab key for moving focus around VS Code'] }, 'Toggle Tab Key Moves Focus'),\n            precondition: undefined,\n            keybinding: {\n                primary: 2048 /* KeyMod.CtrlCmd */ | 43 /* KeyCode.KeyM */,\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 43 /* KeyCode.KeyM */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            metadata: {\n                description: nls.localize2('tabMovesFocusDescriptions', \"Determines whether the tab key moves focus around the workbench or inserts the tab character in the current editor. This is also called tab trapping, tab navigation, or tab focus mode.\"),\n            },\n            f1: true\n        });\n    }\n    run() {\n        const oldValue = TabFocus.getTabFocusMode();\n        const newValue = !oldValue;\n        TabFocus.setTabFocusMode(newValue);\n        if (newValue) {\n            alert(nls.localize('toggle.tabMovesFocus.on', \"Pressing Tab will now move focus to the next focusable element\"));\n        }\n        else {\n            alert(nls.localize('toggle.tabMovesFocus.off', \"Pressing Tab will now insert the tab character\"));\n        }\n    }\n}\nToggleTabFocusModeAction.ID = 'editor.action.toggleTabFocusMode';\nregisterAction2(ToggleTabFocusModeAction);\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 { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { InvisibleCharacters, isBasicASCII } from '../../../../base/common/strings.js';\nimport './unicodeHighlighter.css';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { inUntrustedWorkspace, unicodeHighlightConfigKeys } from '../../../common/config/editorOptions.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { UnicodeTextModelHighlighter } from '../../../common/services/unicodeTextModelHighlighter.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { isModelDecorationInComment, isModelDecorationInString, isModelDecorationVisible } from '../../../common/viewModel/viewModelDecorations.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { MarkdownHover, renderMarkdownHovers } from '../../hover/browser/markdownHoverParticipant.js';\nimport { BannerController } from './bannerController.js';\nimport * as nls from '../../../../nls.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { IWorkspaceTrustManagementService } from '../../../../platform/workspace/common/workspaceTrust.js';\nexport const warningIcon = registerIcon('extensions-warning-message', Codicon.warning, nls.localize('warningIcon', 'Icon shown with a warning message in the extensions editor.'));\nlet UnicodeHighlighter = class UnicodeHighlighter extends Disposable {\n    constructor(_editor, _editorWorkerService, _workspaceTrustService, instantiationService) {\n        super();\n        this._editor = _editor;\n        this._editorWorkerService = _editorWorkerService;\n        this._workspaceTrustService = _workspaceTrustService;\n        this._highlighter = null;\n        this._bannerClosed = false;\n        this._updateState = (state) => {\n            if (state && state.hasMore) {\n                if (this._bannerClosed) {\n                    return;\n                }\n                // This document contains many non-basic ASCII characters.\n                const max = Math.max(state.ambiguousCharacterCount, state.nonBasicAsciiCharacterCount, state.invisibleCharacterCount);\n                let data;\n                if (state.nonBasicAsciiCharacterCount >= max) {\n                    data = {\n                        message: nls.localize('unicodeHighlighting.thisDocumentHasManyNonBasicAsciiUnicodeCharacters', 'This document contains many non-basic ASCII unicode characters'),\n                        command: new DisableHighlightingOfNonBasicAsciiCharactersAction(),\n                    };\n                }\n                else if (state.ambiguousCharacterCount >= max) {\n                    data = {\n                        message: nls.localize('unicodeHighlighting.thisDocumentHasManyAmbiguousUnicodeCharacters', 'This document contains many ambiguous unicode characters'),\n                        command: new DisableHighlightingOfAmbiguousCharactersAction(),\n                    };\n                }\n                else if (state.invisibleCharacterCount >= max) {\n                    data = {\n                        message: nls.localize('unicodeHighlighting.thisDocumentHasManyInvisibleUnicodeCharacters', 'This document contains many invisible unicode characters'),\n                        command: new DisableHighlightingOfInvisibleCharactersAction(),\n                    };\n                }\n                else {\n                    throw new Error('Unreachable');\n                }\n                this._bannerController.show({\n                    id: 'unicodeHighlightBanner',\n                    message: data.message,\n                    icon: warningIcon,\n                    actions: [\n                        {\n                            label: data.command.shortLabel,\n                            href: `command:${data.command.id}`\n                        }\n                    ],\n                    onClose: () => {\n                        this._bannerClosed = true;\n                    },\n                });\n            }\n            else {\n                this._bannerController.hide();\n            }\n        };\n        this._bannerController = this._register(instantiationService.createInstance(BannerController, _editor));\n        this._register(this._editor.onDidChangeModel(() => {\n            this._bannerClosed = false;\n            this._updateHighlighter();\n        }));\n        this._options = _editor.getOption(125 /* EditorOption.unicodeHighlighting */);\n        this._register(_workspaceTrustService.onDidChangeTrust(e => {\n            this._updateHighlighter();\n        }));\n        this._register(_editor.onDidChangeConfiguration(e => {\n            if (e.hasChanged(125 /* EditorOption.unicodeHighlighting */)) {\n                this._options = _editor.getOption(125 /* EditorOption.unicodeHighlighting */);\n                this._updateHighlighter();\n            }\n        }));\n        this._updateHighlighter();\n    }\n    dispose() {\n        if (this._highlighter) {\n            this._highlighter.dispose();\n            this._highlighter = null;\n        }\n        super.dispose();\n    }\n    _updateHighlighter() {\n        this._updateState(null);\n        if (this._highlighter) {\n            this._highlighter.dispose();\n            this._highlighter = null;\n        }\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const options = resolveOptions(this._workspaceTrustService.isWorkspaceTrusted(), this._options);\n        if ([\n            options.nonBasicASCII,\n            options.ambiguousCharacters,\n            options.invisibleCharacters,\n        ].every((option) => option === false)) {\n            // Don't do anything if the feature is fully disabled\n            return;\n        }\n        const highlightOptions = {\n            nonBasicASCII: options.nonBasicASCII,\n            ambiguousCharacters: options.ambiguousCharacters,\n            invisibleCharacters: options.invisibleCharacters,\n            includeComments: options.includeComments,\n            includeStrings: options.includeStrings,\n            allowedCodePoints: Object.keys(options.allowedCharacters).map(c => c.codePointAt(0)),\n            allowedLocales: Object.keys(options.allowedLocales).map(locale => {\n                if (locale === '_os') {\n                    const osLocale = new Intl.NumberFormat().resolvedOptions().locale;\n                    return osLocale;\n                }\n                else if (locale === '_vscode') {\n                    return platform.language;\n                }\n                return locale;\n            }),\n        };\n        if (this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)) {\n            this._highlighter = new DocumentUnicodeHighlighter(this._editor, highlightOptions, this._updateState, this._editorWorkerService);\n        }\n        else {\n            this._highlighter = new ViewportUnicodeHighlighter(this._editor, highlightOptions, this._updateState);\n        }\n    }\n    getDecorationInfo(decoration) {\n        if (this._highlighter) {\n            return this._highlighter.getDecorationInfo(decoration);\n        }\n        return null;\n    }\n};\nUnicodeHighlighter.ID = 'editor.contrib.unicodeHighlighter';\nUnicodeHighlighter = __decorate([\n    __param(1, IEditorWorkerService),\n    __param(2, IWorkspaceTrustManagementService),\n    __param(3, IInstantiationService)\n], UnicodeHighlighter);\nexport { UnicodeHighlighter };\nfunction resolveOptions(trusted, options) {\n    return {\n        nonBasicASCII: options.nonBasicASCII === inUntrustedWorkspace ? !trusted : options.nonBasicASCII,\n        ambiguousCharacters: options.ambiguousCharacters,\n        invisibleCharacters: options.invisibleCharacters,\n        includeComments: options.includeComments === inUntrustedWorkspace ? !trusted : options.includeComments,\n        includeStrings: options.includeStrings === inUntrustedWorkspace ? !trusted : options.includeStrings,\n        allowedCharacters: options.allowedCharacters,\n        allowedLocales: options.allowedLocales,\n    };\n}\nlet DocumentUnicodeHighlighter = class DocumentUnicodeHighlighter extends Disposable {\n    constructor(_editor, _options, _updateState, _editorWorkerService) {\n        super();\n        this._editor = _editor;\n        this._options = _options;\n        this._updateState = _updateState;\n        this._editorWorkerService = _editorWorkerService;\n        this._model = this._editor.getModel();\n        this._decorations = this._editor.createDecorationsCollection();\n        this._updateSoon = this._register(new RunOnceScheduler(() => this._update(), 250));\n        this._register(this._editor.onDidChangeModelContent(() => {\n            this._updateSoon.schedule();\n        }));\n        this._updateSoon.schedule();\n    }\n    dispose() {\n        this._decorations.clear();\n        super.dispose();\n    }\n    _update() {\n        if (this._model.isDisposed()) {\n            return;\n        }\n        if (!this._model.mightContainNonBasicASCII()) {\n            this._decorations.clear();\n            return;\n        }\n        const modelVersionId = this._model.getVersionId();\n        this._editorWorkerService\n            .computedUnicodeHighlights(this._model.uri, this._options)\n            .then((info) => {\n            if (this._model.isDisposed()) {\n                return;\n            }\n            if (this._model.getVersionId() !== modelVersionId) {\n                // model changed in the meantime\n                return;\n            }\n            this._updateState(info);\n            const decorations = [];\n            if (!info.hasMore) {\n                // Don't show decoration if there are too many.\n                // In this case, a banner is shown.\n                for (const range of info.ranges) {\n                    decorations.push({\n                        range: range,\n                        options: Decorations.instance.getDecorationFromOptions(this._options),\n                    });\n                }\n            }\n            this._decorations.set(decorations);\n        });\n    }\n    getDecorationInfo(decoration) {\n        if (!this._decorations.has(decoration)) {\n            return null;\n        }\n        const model = this._editor.getModel();\n        if (!isModelDecorationVisible(model, decoration)) {\n            return null;\n        }\n        const text = model.getValueInRange(decoration.range);\n        return {\n            reason: computeReason(text, this._options),\n            inComment: isModelDecorationInComment(model, decoration),\n            inString: isModelDecorationInString(model, decoration),\n        };\n    }\n};\nDocumentUnicodeHighlighter = __decorate([\n    __param(3, IEditorWorkerService)\n], DocumentUnicodeHighlighter);\nclass ViewportUnicodeHighlighter extends Disposable {\n    constructor(_editor, _options, _updateState) {\n        super();\n        this._editor = _editor;\n        this._options = _options;\n        this._updateState = _updateState;\n        this._model = this._editor.getModel();\n        this._decorations = this._editor.createDecorationsCollection();\n        this._updateSoon = this._register(new RunOnceScheduler(() => this._update(), 250));\n        this._register(this._editor.onDidLayoutChange(() => {\n            this._updateSoon.schedule();\n        }));\n        this._register(this._editor.onDidScrollChange(() => {\n            this._updateSoon.schedule();\n        }));\n        this._register(this._editor.onDidChangeHiddenAreas(() => {\n            this._updateSoon.schedule();\n        }));\n        this._register(this._editor.onDidChangeModelContent(() => {\n            this._updateSoon.schedule();\n        }));\n        this._updateSoon.schedule();\n    }\n    dispose() {\n        this._decorations.clear();\n        super.dispose();\n    }\n    _update() {\n        if (this._model.isDisposed()) {\n            return;\n        }\n        if (!this._model.mightContainNonBasicASCII()) {\n            this._decorations.clear();\n            return;\n        }\n        const ranges = this._editor.getVisibleRanges();\n        const decorations = [];\n        const totalResult = {\n            ranges: [],\n            ambiguousCharacterCount: 0,\n            invisibleCharacterCount: 0,\n            nonBasicAsciiCharacterCount: 0,\n            hasMore: false,\n        };\n        for (const range of ranges) {\n            const result = UnicodeTextModelHighlighter.computeUnicodeHighlights(this._model, this._options, range);\n            for (const r of result.ranges) {\n                totalResult.ranges.push(r);\n            }\n            totalResult.ambiguousCharacterCount += totalResult.ambiguousCharacterCount;\n            totalResult.invisibleCharacterCount += totalResult.invisibleCharacterCount;\n            totalResult.nonBasicAsciiCharacterCount += totalResult.nonBasicAsciiCharacterCount;\n            totalResult.hasMore = totalResult.hasMore || result.hasMore;\n        }\n        if (!totalResult.hasMore) {\n            // Don't show decorations if there are too many.\n            // A banner will be shown instead.\n            for (const range of totalResult.ranges) {\n                decorations.push({ range, options: Decorations.instance.getDecorationFromOptions(this._options) });\n            }\n        }\n        this._updateState(totalResult);\n        this._decorations.set(decorations);\n    }\n    getDecorationInfo(decoration) {\n        if (!this._decorations.has(decoration)) {\n            return null;\n        }\n        const model = this._editor.getModel();\n        const text = model.getValueInRange(decoration.range);\n        if (!isModelDecorationVisible(model, decoration)) {\n            return null;\n        }\n        return {\n            reason: computeReason(text, this._options),\n            inComment: isModelDecorationInComment(model, decoration),\n            inString: isModelDecorationInString(model, decoration),\n        };\n    }\n}\nconst configureUnicodeHighlightOptionsStr = nls.localize('unicodeHighlight.configureUnicodeHighlightOptions', 'Configure Unicode Highlight Options');\nlet UnicodeHighlighterHoverParticipant = class UnicodeHighlighterHoverParticipant {\n    constructor(_editor, _languageService, _openerService) {\n        this._editor = _editor;\n        this._languageService = _languageService;\n        this._openerService = _openerService;\n        this.hoverOrdinal = 5;\n    }\n    computeSync(anchor, lineDecorations) {\n        if (!this._editor.hasModel() || anchor.type !== 1 /* HoverAnchorType.Range */) {\n            return [];\n        }\n        const model = this._editor.getModel();\n        const unicodeHighlighter = this._editor.getContribution(UnicodeHighlighter.ID);\n        if (!unicodeHighlighter) {\n            return [];\n        }\n        const result = [];\n        const existedReason = new Set();\n        let index = 300;\n        for (const d of lineDecorations) {\n            const highlightInfo = unicodeHighlighter.getDecorationInfo(d);\n            if (!highlightInfo) {\n                continue;\n            }\n            const char = model.getValueInRange(d.range);\n            // text refers to a single character.\n            const codePoint = char.codePointAt(0);\n            const codePointStr = formatCodePointMarkdown(codePoint);\n            let reason;\n            switch (highlightInfo.reason.kind) {\n                case 0 /* UnicodeHighlighterReasonKind.Ambiguous */: {\n                    if (isBasicASCII(highlightInfo.reason.confusableWith)) {\n                        reason = nls.localize('unicodeHighlight.characterIsAmbiguousASCII', 'The character {0} could be confused with the ASCII character {1}, which is more common in source code.', codePointStr, formatCodePointMarkdown(highlightInfo.reason.confusableWith.codePointAt(0)));\n                    }\n                    else {\n                        reason = nls.localize('unicodeHighlight.characterIsAmbiguous', 'The character {0} could be confused with the character {1}, which is more common in source code.', codePointStr, formatCodePointMarkdown(highlightInfo.reason.confusableWith.codePointAt(0)));\n                    }\n                    break;\n                }\n                case 1 /* UnicodeHighlighterReasonKind.Invisible */:\n                    reason = nls.localize('unicodeHighlight.characterIsInvisible', 'The character {0} is invisible.', codePointStr);\n                    break;\n                case 2 /* UnicodeHighlighterReasonKind.NonBasicAscii */:\n                    reason = nls.localize('unicodeHighlight.characterIsNonBasicAscii', 'The character {0} is not a basic ASCII character.', codePointStr);\n                    break;\n            }\n            if (existedReason.has(reason)) {\n                continue;\n            }\n            existedReason.add(reason);\n            const adjustSettingsArgs = {\n                codePoint: codePoint,\n                reason: highlightInfo.reason,\n                inComment: highlightInfo.inComment,\n                inString: highlightInfo.inString,\n            };\n            const adjustSettings = nls.localize('unicodeHighlight.adjustSettings', 'Adjust settings');\n            const uri = `command:${ShowExcludeOptions.ID}?${encodeURIComponent(JSON.stringify(adjustSettingsArgs))}`;\n            const markdown = new MarkdownString('', true)\n                .appendMarkdown(reason)\n                .appendText(' ')\n                .appendLink(uri, adjustSettings, configureUnicodeHighlightOptionsStr);\n            result.push(new MarkdownHover(this, d.range, [markdown], false, index++));\n        }\n        return result;\n    }\n    renderHoverParts(context, hoverParts) {\n        return renderMarkdownHovers(context, hoverParts, this._editor, this._languageService, this._openerService);\n    }\n};\nUnicodeHighlighterHoverParticipant = __decorate([\n    __param(1, ILanguageService),\n    __param(2, IOpenerService)\n], UnicodeHighlighterHoverParticipant);\nexport { UnicodeHighlighterHoverParticipant };\nfunction codePointToHex(codePoint) {\n    return `U+${codePoint.toString(16).padStart(4, '0')}`;\n}\nfunction formatCodePointMarkdown(codePoint) {\n    let value = `\\`${codePointToHex(codePoint)}\\``;\n    if (!InvisibleCharacters.isInvisibleCharacter(codePoint)) {\n        // Don't render any control characters or any invisible characters, as they cannot be seen anyways.\n        value += ` \"${`${renderCodePointAsInlineCode(codePoint)}`}\"`;\n    }\n    return value;\n}\nfunction renderCodePointAsInlineCode(codePoint) {\n    if (codePoint === 96 /* CharCode.BackTick */) {\n        return '`` ` ``';\n    }\n    return '`' + String.fromCodePoint(codePoint) + '`';\n}\nfunction computeReason(char, options) {\n    return UnicodeTextModelHighlighter.computeUnicodeHighlightReason(char, options);\n}\nclass Decorations {\n    constructor() {\n        this.map = new Map();\n    }\n    getDecorationFromOptions(options) {\n        return this.getDecoration(!options.includeComments, !options.includeStrings);\n    }\n    getDecoration(hideInComments, hideInStrings) {\n        const key = `${hideInComments}${hideInStrings}`;\n        let options = this.map.get(key);\n        if (!options) {\n            options = ModelDecorationOptions.createDynamic({\n                description: 'unicode-highlight',\n                stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n                className: 'unicode-highlight',\n                showIfCollapsed: true,\n                overviewRuler: null,\n                minimap: null,\n                hideInCommentTokens: hideInComments,\n                hideInStringTokens: hideInStrings,\n            });\n            this.map.set(key, options);\n        }\n        return options;\n    }\n}\nDecorations.instance = new Decorations();\nexport class DisableHighlightingInCommentsAction extends EditorAction {\n    constructor() {\n        super({\n            id: DisableHighlightingOfAmbiguousCharactersAction.ID,\n            label: nls.localize('action.unicodeHighlight.disableHighlightingInComments', 'Disable highlighting of characters in comments'),\n            alias: 'Disable highlighting of characters in comments',\n            precondition: undefined\n        });\n        this.shortLabel = nls.localize('unicodeHighlight.disableHighlightingInComments.shortLabel', 'Disable Highlight In Comments');\n    }\n    async run(accessor, editor, args) {\n        const configurationService = accessor === null || accessor === void 0 ? void 0 : accessor.get(IConfigurationService);\n        if (configurationService) {\n            this.runAction(configurationService);\n        }\n    }\n    async runAction(configurationService) {\n        await configurationService.updateValue(unicodeHighlightConfigKeys.includeComments, false, 2 /* ConfigurationTarget.USER */);\n    }\n}\nexport class DisableHighlightingInStringsAction extends EditorAction {\n    constructor() {\n        super({\n            id: DisableHighlightingOfAmbiguousCharactersAction.ID,\n            label: nls.localize('action.unicodeHighlight.disableHighlightingInStrings', 'Disable highlighting of characters in strings'),\n            alias: 'Disable highlighting of characters in strings',\n            precondition: undefined\n        });\n        this.shortLabel = nls.localize('unicodeHighlight.disableHighlightingInStrings.shortLabel', 'Disable Highlight In Strings');\n    }\n    async run(accessor, editor, args) {\n        const configurationService = accessor === null || accessor === void 0 ? void 0 : accessor.get(IConfigurationService);\n        if (configurationService) {\n            this.runAction(configurationService);\n        }\n    }\n    async runAction(configurationService) {\n        await configurationService.updateValue(unicodeHighlightConfigKeys.includeStrings, false, 2 /* ConfigurationTarget.USER */);\n    }\n}\nexport class DisableHighlightingOfAmbiguousCharactersAction extends EditorAction {\n    constructor() {\n        super({\n            id: DisableHighlightingOfAmbiguousCharactersAction.ID,\n            label: nls.localize('action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters', 'Disable highlighting of ambiguous characters'),\n            alias: 'Disable highlighting of ambiguous characters',\n            precondition: undefined\n        });\n        this.shortLabel = nls.localize('unicodeHighlight.disableHighlightingOfAmbiguousCharacters.shortLabel', 'Disable Ambiguous Highlight');\n    }\n    async run(accessor, editor, args) {\n        const configurationService = accessor === null || accessor === void 0 ? void 0 : accessor.get(IConfigurationService);\n        if (configurationService) {\n            this.runAction(configurationService);\n        }\n    }\n    async runAction(configurationService) {\n        await configurationService.updateValue(unicodeHighlightConfigKeys.ambiguousCharacters, false, 2 /* ConfigurationTarget.USER */);\n    }\n}\nDisableHighlightingOfAmbiguousCharactersAction.ID = 'editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters';\nexport class DisableHighlightingOfInvisibleCharactersAction extends EditorAction {\n    constructor() {\n        super({\n            id: DisableHighlightingOfInvisibleCharactersAction.ID,\n            label: nls.localize('action.unicodeHighlight.disableHighlightingOfInvisibleCharacters', 'Disable highlighting of invisible characters'),\n            alias: 'Disable highlighting of invisible characters',\n            precondition: undefined\n        });\n        this.shortLabel = nls.localize('unicodeHighlight.disableHighlightingOfInvisibleCharacters.shortLabel', 'Disable Invisible Highlight');\n    }\n    async run(accessor, editor, args) {\n        const configurationService = accessor === null || accessor === void 0 ? void 0 : accessor.get(IConfigurationService);\n        if (configurationService) {\n            this.runAction(configurationService);\n        }\n    }\n    async runAction(configurationService) {\n        await configurationService.updateValue(unicodeHighlightConfigKeys.invisibleCharacters, false, 2 /* ConfigurationTarget.USER */);\n    }\n}\nDisableHighlightingOfInvisibleCharactersAction.ID = 'editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters';\nexport class DisableHighlightingOfNonBasicAsciiCharactersAction extends EditorAction {\n    constructor() {\n        super({\n            id: DisableHighlightingOfNonBasicAsciiCharactersAction.ID,\n            label: nls.localize('action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters', 'Disable highlighting of non basic ASCII characters'),\n            alias: 'Disable highlighting of non basic ASCII characters',\n            precondition: undefined\n        });\n        this.shortLabel = nls.localize('unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters.shortLabel', 'Disable Non ASCII Highlight');\n    }\n    async run(accessor, editor, args) {\n        const configurationService = accessor === null || accessor === void 0 ? void 0 : accessor.get(IConfigurationService);\n        if (configurationService) {\n            this.runAction(configurationService);\n        }\n    }\n    async runAction(configurationService) {\n        await configurationService.updateValue(unicodeHighlightConfigKeys.nonBasicASCII, false, 2 /* ConfigurationTarget.USER */);\n    }\n}\nDisableHighlightingOfNonBasicAsciiCharactersAction.ID = 'editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters';\nexport class ShowExcludeOptions extends EditorAction {\n    constructor() {\n        super({\n            id: ShowExcludeOptions.ID,\n            label: nls.localize('action.unicodeHighlight.showExcludeOptions', \"Show Exclude Options\"),\n            alias: 'Show Exclude Options',\n            precondition: undefined\n        });\n    }\n    async run(accessor, editor, args) {\n        const { codePoint, reason, inString, inComment } = args;\n        const char = String.fromCodePoint(codePoint);\n        const quickPickService = accessor.get(IQuickInputService);\n        const configurationService = accessor.get(IConfigurationService);\n        function getExcludeCharFromBeingHighlightedLabel(codePoint) {\n            if (InvisibleCharacters.isInvisibleCharacter(codePoint)) {\n                return nls.localize('unicodeHighlight.excludeInvisibleCharFromBeingHighlighted', 'Exclude {0} (invisible character) from being highlighted', codePointToHex(codePoint));\n            }\n            return nls.localize('unicodeHighlight.excludeCharFromBeingHighlighted', 'Exclude {0} from being highlighted', `${codePointToHex(codePoint)} \"${char}\"`);\n        }\n        const options = [];\n        if (reason.kind === 0 /* UnicodeHighlighterReasonKind.Ambiguous */) {\n            for (const locale of reason.notAmbiguousInLocales) {\n                options.push({\n                    label: nls.localize(\"unicodeHighlight.allowCommonCharactersInLanguage\", \"Allow unicode characters that are more common in the language \\\"{0}\\\".\", locale),\n                    run: async () => {\n                        excludeLocaleFromBeingHighlighted(configurationService, [locale]);\n                    },\n                });\n            }\n        }\n        options.push({\n            label: getExcludeCharFromBeingHighlightedLabel(codePoint),\n            run: () => excludeCharFromBeingHighlighted(configurationService, [codePoint])\n        });\n        if (inComment) {\n            const action = new DisableHighlightingInCommentsAction();\n            options.push({ label: action.label, run: async () => action.runAction(configurationService) });\n        }\n        else if (inString) {\n            const action = new DisableHighlightingInStringsAction();\n            options.push({ label: action.label, run: async () => action.runAction(configurationService) });\n        }\n        if (reason.kind === 0 /* UnicodeHighlighterReasonKind.Ambiguous */) {\n            const action = new DisableHighlightingOfAmbiguousCharactersAction();\n            options.push({ label: action.label, run: async () => action.runAction(configurationService) });\n        }\n        else if (reason.kind === 1 /* UnicodeHighlighterReasonKind.Invisible */) {\n            const action = new DisableHighlightingOfInvisibleCharactersAction();\n            options.push({ label: action.label, run: async () => action.runAction(configurationService) });\n        }\n        else if (reason.kind === 2 /* UnicodeHighlighterReasonKind.NonBasicAscii */) {\n            const action = new DisableHighlightingOfNonBasicAsciiCharactersAction();\n            options.push({ label: action.label, run: async () => action.runAction(configurationService) });\n        }\n        else {\n            expectNever(reason);\n        }\n        const result = await quickPickService.pick(options, { title: configureUnicodeHighlightOptionsStr });\n        if (result) {\n            await result.run();\n        }\n    }\n}\nShowExcludeOptions.ID = 'editor.action.unicodeHighlight.showExcludeOptions';\nasync function excludeCharFromBeingHighlighted(configurationService, charCodes) {\n    const existingValue = configurationService.getValue(unicodeHighlightConfigKeys.allowedCharacters);\n    let value;\n    if ((typeof existingValue === 'object') && existingValue) {\n        value = existingValue;\n    }\n    else {\n        value = {};\n    }\n    for (const charCode of charCodes) {\n        value[String.fromCodePoint(charCode)] = true;\n    }\n    await configurationService.updateValue(unicodeHighlightConfigKeys.allowedCharacters, value, 2 /* ConfigurationTarget.USER */);\n}\nasync function excludeLocaleFromBeingHighlighted(configurationService, locales) {\n    var _a;\n    const existingValue = (_a = configurationService.inspect(unicodeHighlightConfigKeys.allowedLocales).user) === null || _a === void 0 ? void 0 : _a.value;\n    let value;\n    if ((typeof existingValue === 'object') && existingValue) {\n        // Copy value, as the existing value is read only\n        value = Object.assign({}, existingValue);\n    }\n    else {\n        value = {};\n    }\n    for (const locale of locales) {\n        value[locale] = true;\n    }\n    await configurationService.updateValue(unicodeHighlightConfigKeys.allowedLocales, value, 2 /* ConfigurationTarget.USER */);\n}\nfunction expectNever(value) {\n    throw new Error(`Unexpected value: ${value}`);\n}\nregisterEditorAction(DisableHighlightingOfAmbiguousCharactersAction);\nregisterEditorAction(DisableHighlightingOfInvisibleCharactersAction);\nregisterEditorAction(DisableHighlightingOfNonBasicAsciiCharactersAction);\nregisterEditorAction(ShowExcludeOptions);\nregisterEditorContribution(UnicodeHighlighter.ID, UnicodeHighlighter, 1 /* EditorContributionInstantiation.AfterFirstRender */);\nHoverParticipantRegistry.register(UnicodeHighlighterHoverParticipant);\n", "var __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};\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 './bannerController.css';\nimport { $, append, clearNode } from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { Action } from '../../../../base/common/actions.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { Link } from '../../../../platform/opener/browser/link.js';\nimport { widgetClose } from '../../../../platform/theme/common/iconRegistry.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nconst BANNER_ELEMENT_HEIGHT = 26;\nlet BannerController = class BannerController extends Disposable {\n    constructor(_editor, instantiationService) {\n        super();\n        this._editor = _editor;\n        this.instantiationService = instantiationService;\n        this.banner = this._register(this.instantiationService.createInstance(Banner));\n    }\n    hide() {\n        this._editor.setBanner(null, 0);\n        this.banner.clear();\n    }\n    show(item) {\n        this.banner.show({\n            ...item,\n            onClose: () => {\n                var _a;\n                this.hide();\n                (_a = item.onClose) === null || _a === void 0 ? void 0 : _a.call(item);\n            }\n        });\n        this._editor.setBanner(this.banner.element, BANNER_ELEMENT_HEIGHT);\n    }\n};\nBannerController = __decorate([\n    __param(1, IInstantiationService)\n], BannerController);\nexport { BannerController };\n// TODO@hediet: Investigate if this can be reused by the workspace banner (bannerPart.ts).\nlet Banner = class Banner extends Disposable {\n    constructor(instantiationService) {\n        super();\n        this.instantiationService = instantiationService;\n        this.markdownRenderer = this.instantiationService.createInstance(MarkdownRenderer, {});\n        this.element = $('div.editor-banner');\n        this.element.tabIndex = 0;\n    }\n    getAriaLabel(item) {\n        if (item.ariaLabel) {\n            return item.ariaLabel;\n        }\n        if (typeof item.message === 'string') {\n            return item.message;\n        }\n        return undefined;\n    }\n    getBannerMessage(message) {\n        if (typeof message === 'string') {\n            const element = $('span');\n            element.innerText = message;\n            return element;\n        }\n        return this.markdownRenderer.render(message).element;\n    }\n    clear() {\n        clearNode(this.element);\n    }\n    show(item) {\n        // Clear previous item\n        clearNode(this.element);\n        // Banner aria label\n        const ariaLabel = this.getAriaLabel(item);\n        if (ariaLabel) {\n            this.element.setAttribute('aria-label', ariaLabel);\n        }\n        // Icon\n        const iconContainer = append(this.element, $('div.icon-container'));\n        iconContainer.setAttribute('aria-hidden', 'true');\n        if (item.icon) {\n            iconContainer.appendChild($(`div${ThemeIcon.asCSSSelector(item.icon)}`));\n        }\n        // Message\n        const messageContainer = append(this.element, $('div.message-container'));\n        messageContainer.setAttribute('aria-hidden', 'true');\n        messageContainer.appendChild(this.getBannerMessage(item.message));\n        // Message Actions\n        this.messageActionsContainer = append(this.element, $('div.message-actions-container'));\n        if (item.actions) {\n            for (const action of item.actions) {\n                this._register(this.instantiationService.createInstance(Link, this.messageActionsContainer, { ...action, tabIndex: -1 }, {}));\n            }\n        }\n        // Action\n        const actionBarContainer = append(this.element, $('div.action-container'));\n        this.actionBar = this._register(new ActionBar(actionBarContainer));\n        this.actionBar.push(this._register(new Action('banner.close', 'Close Banner', ThemeIcon.asClassName(widgetClose), true, () => {\n            if (typeof item.onClose === 'function') {\n                item.onClose();\n            }\n        })), { icon: true, label: false });\n        this.actionBar.setFocusable(false);\n    }\n};\nBanner = __decorate([\n    __param(0, IInstantiationService)\n], Banner);\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 { $, append, EventHelper } from '../../../base/browser/dom.js';\nimport { DomEmitter } from '../../../base/browser/event.js';\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\nimport { EventType as TouchEventType, Gesture } from '../../../base/browser/touch.js';\nimport { Event } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { IOpenerService } from '../common/opener.js';\nimport './link.css';\nimport { getDefaultHoverDelegate } from '../../../base/browser/ui/hover/hoverDelegateFactory.js';\nimport { IHoverService } from '../../hover/browser/hover.js';\nlet Link = class Link extends Disposable {\n    get enabled() {\n        return this._enabled;\n    }\n    set enabled(enabled) {\n        if (enabled) {\n            this.el.setAttribute('aria-disabled', 'false');\n            this.el.tabIndex = 0;\n            this.el.style.pointerEvents = 'auto';\n            this.el.style.opacity = '1';\n            this.el.style.cursor = 'pointer';\n            this._enabled = false;\n        }\n        else {\n            this.el.setAttribute('aria-disabled', 'true');\n            this.el.tabIndex = -1;\n            this.el.style.pointerEvents = 'none';\n            this.el.style.opacity = '0.4';\n            this.el.style.cursor = 'default';\n            this._enabled = true;\n        }\n        this._enabled = enabled;\n    }\n    constructor(container, _link, options = {}, _hoverService, openerService) {\n        var _a, _b;\n        super();\n        this._link = _link;\n        this._hoverService = _hoverService;\n        this._enabled = true;\n        this.el = append(container, $('a.monaco-link', {\n            tabIndex: (_a = _link.tabIndex) !== null && _a !== void 0 ? _a : 0,\n            href: _link.href,\n        }, _link.label));\n        this.hoverDelegate = (_b = options.hoverDelegate) !== null && _b !== void 0 ? _b : getDefaultHoverDelegate('mouse');\n        this.setTooltip(_link.title);\n        this.el.setAttribute('role', 'button');\n        const onClickEmitter = this._register(new DomEmitter(this.el, 'click'));\n        const onKeyPress = this._register(new DomEmitter(this.el, 'keypress'));\n        const onEnterPress = Event.chain(onKeyPress.event, $ => $.map(e => new StandardKeyboardEvent(e))\n            .filter(e => e.keyCode === 3 /* KeyCode.Enter */));\n        const onTap = this._register(new DomEmitter(this.el, TouchEventType.Tap)).event;\n        this._register(Gesture.addTarget(this.el));\n        const onOpen = Event.any(onClickEmitter.event, onEnterPress, onTap);\n        this._register(onOpen(e => {\n            if (!this.enabled) {\n                return;\n            }\n            EventHelper.stop(e, true);\n            if (options === null || options === void 0 ? void 0 : options.opener) {\n                options.opener(this._link.href);\n            }\n            else {\n                openerService.open(this._link.href, { allowCommands: true });\n            }\n        }));\n        this.enabled = true;\n    }\n    setTooltip(title) {\n        if (this.hoverDelegate.showNativeHover) {\n            this.el.title = title !== null && title !== void 0 ? title : '';\n        }\n        else if (!this.hover && title) {\n            this.hover = this._register(this._hoverService.setupUpdatableHover(this.hoverDelegate, this.el, title));\n        }\n        else if (this.hover) {\n            this.hover.update(title);\n        }\n    }\n};\nLink = __decorate([\n    __param(3, IHoverService),\n    __param(4, IOpenerService)\n], Link);\nexport { Link };\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\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 { Disposable } from '../../../../base/common/lifecycle.js';\nimport { basename } from '../../../../base/common/resources.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport * as nls from '../../../../nls.js';\nimport { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';\nconst ignoreUnusualLineTerminators = 'ignoreUnusualLineTerminators';\nfunction writeIgnoreState(codeEditorService, model, state) {\n    codeEditorService.setModelProperty(model.uri, ignoreUnusualLineTerminators, state);\n}\nfunction readIgnoreState(codeEditorService, model) {\n    return codeEditorService.getModelProperty(model.uri, ignoreUnusualLineTerminators);\n}\nlet UnusualLineTerminatorsDetector = class UnusualLineTerminatorsDetector extends Disposable {\n    constructor(_editor, _dialogService, _codeEditorService) {\n        super();\n        this._editor = _editor;\n        this._dialogService = _dialogService;\n        this._codeEditorService = _codeEditorService;\n        this._isPresentingDialog = false;\n        this._config = this._editor.getOption(126 /* EditorOption.unusualLineTerminators */);\n        this._register(this._editor.onDidChangeConfiguration((e) => {\n            if (e.hasChanged(126 /* EditorOption.unusualLineTerminators */)) {\n                this._config = this._editor.getOption(126 /* EditorOption.unusualLineTerminators */);\n                this._checkForUnusualLineTerminators();\n            }\n        }));\n        this._register(this._editor.onDidChangeModel(() => {\n            this._checkForUnusualLineTerminators();\n        }));\n        this._register(this._editor.onDidChangeModelContent((e) => {\n            if (e.isUndoing) {\n                // skip checking in case of undoing\n                return;\n            }\n            this._checkForUnusualLineTerminators();\n        }));\n        this._checkForUnusualLineTerminators();\n    }\n    async _checkForUnusualLineTerminators() {\n        if (this._config === 'off') {\n            return;\n        }\n        if (!this._editor.hasModel()) {\n            return;\n        }\n        const model = this._editor.getModel();\n        if (!model.mightContainUnusualLineTerminators()) {\n            return;\n        }\n        const ignoreState = readIgnoreState(this._codeEditorService, model);\n        if (ignoreState === true) {\n            // this model should be ignored\n            return;\n        }\n        if (this._editor.getOption(91 /* EditorOption.readOnly */)) {\n            // read only editor => sorry!\n            return;\n        }\n        if (this._config === 'auto') {\n            // just do it!\n            model.removeUnusualLineTerminators(this._editor.getSelections());\n            return;\n        }\n        if (this._isPresentingDialog) {\n            // we're currently showing the dialog, which is async.\n            // avoid spamming the user\n            return;\n        }\n        let result;\n        try {\n            this._isPresentingDialog = true;\n            result = await this._dialogService.confirm({\n                title: nls.localize('unusualLineTerminators.title', \"Unusual Line Terminators\"),\n                message: nls.localize('unusualLineTerminators.message', \"Detected unusual line terminators\"),\n                detail: nls.localize('unusualLineTerminators.detail', \"The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\\n\\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.\", basename(model.uri)),\n                primaryButton: nls.localize({ key: 'unusualLineTerminators.fix', comment: ['&& denotes a mnemonic'] }, \"&&Remove Unusual Line Terminators\"),\n                cancelButton: nls.localize('unusualLineTerminators.ignore', \"Ignore\")\n            });\n        }\n        finally {\n            this._isPresentingDialog = false;\n        }\n        if (!result.confirmed) {\n            // this model should be ignored\n            writeIgnoreState(this._codeEditorService, model, true);\n            return;\n        }\n        model.removeUnusualLineTerminators(this._editor.getSelections());\n    }\n};\nUnusualLineTerminatorsDetector.ID = 'editor.contrib.unusualLineTerminatorsDetector';\nUnusualLineTerminatorsDetector = __decorate([\n    __param(1, IDialogService),\n    __param(2, ICodeEditorService)\n], UnusualLineTerminatorsDetector);\nexport { UnusualLineTerminatorsDetector };\nregisterEditorContribution(UnusualLineTerminatorsDetector.ID, UnusualLineTerminatorsDetector, 1 /* EditorContributionInstantiation.AfterFirstRender */);\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 WordHighlighter_1, WordHighlighterContribution_1;\nimport * as nls from '../../../../nls.js';\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { createCancelablePromise, first, timeout } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { isDiffEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution, registerModelAndPositionCommand } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { DocumentHighlightKind } from '../../../common/languages.js';\nimport { shouldSynchronizeModel } from '../../../common/model.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getHighlightDecorationOptions } from './highlightDecorations.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { Schemas } from '../../../../base/common/network.js';\nimport { ResourceMap } from '../../../../base/common/map.js';\nimport { score } from '../../../common/languageSelector.js';\n// import { TextualMultiDocumentHighlightFeature } from 'vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider';\n// import { registerEditorFeature } from 'vs/editor/common/editorFeatures';\nconst ctxHasWordHighlights = new RawContextKey('hasWordHighlights', false);\nexport function getOccurrencesAtPosition(registry, model, position, token) {\n    const orderedByScore = registry.ordered(model);\n    // in order of score ask the occurrences provider\n    // until someone response with a good result\n    // (good = none empty array)\n    return first(orderedByScore.map(provider => () => {\n        return Promise.resolve(provider.provideDocumentHighlights(model, position, token))\n            .then(undefined, onUnexpectedExternalError);\n    }), arrays.isNonEmptyArray).then(result => {\n        if (result) {\n            const map = new ResourceMap();\n            map.set(model.uri, result);\n            return map;\n        }\n        return new ResourceMap();\n    });\n}\nexport function getOccurrencesAcrossMultipleModels(registry, model, position, wordSeparators, token, otherModels) {\n    const orderedByScore = registry.ordered(model);\n    // in order of score ask the occurrences provider\n    // until someone response with a good result\n    // (good = none empty array)\n    return first(orderedByScore.map(provider => () => {\n        const filteredModels = otherModels.filter(otherModel => {\n            return shouldSynchronizeModel(otherModel);\n        }).filter(otherModel => {\n            return score(provider.selector, otherModel.uri, otherModel.getLanguageId(), true, undefined, undefined) > 0;\n        });\n        return Promise.resolve(provider.provideMultiDocumentHighlights(model, position, filteredModels, token))\n            .then(undefined, onUnexpectedExternalError);\n    }), (t) => t instanceof ResourceMap && t.size > 0);\n}\nclass OccurenceAtPositionRequest {\n    constructor(_model, _selection, _wordSeparators) {\n        this._model = _model;\n        this._selection = _selection;\n        this._wordSeparators = _wordSeparators;\n        this._wordRange = this._getCurrentWordRange(_model, _selection);\n        this._result = null;\n    }\n    get result() {\n        if (!this._result) {\n            this._result = createCancelablePromise(token => this._compute(this._model, this._selection, this._wordSeparators, token));\n        }\n        return this._result;\n    }\n    _getCurrentWordRange(model, selection) {\n        const word = model.getWordAtPosition(selection.getPosition());\n        if (word) {\n            return new Range(selection.startLineNumber, word.startColumn, selection.startLineNumber, word.endColumn);\n        }\n        return null;\n    }\n    isValid(model, selection, decorations) {\n        const lineNumber = selection.startLineNumber;\n        const startColumn = selection.startColumn;\n        const endColumn = selection.endColumn;\n        const currentWordRange = this._getCurrentWordRange(model, selection);\n        let requestIsValid = Boolean(this._wordRange && this._wordRange.equalsRange(currentWordRange));\n        // Even if we are on a different word, if that word is in the decorations ranges, the request is still valid\n        // (Same symbol)\n        for (let i = 0, len = decorations.length; !requestIsValid && i < len; i++) {\n            const range = decorations.getRange(i);\n            if (range && range.startLineNumber === lineNumber) {\n                if (range.startColumn <= startColumn && range.endColumn >= endColumn) {\n                    requestIsValid = true;\n                }\n            }\n        }\n        return requestIsValid;\n    }\n    cancel() {\n        this.result.cancel();\n    }\n}\nclass SemanticOccurenceAtPositionRequest extends OccurenceAtPositionRequest {\n    constructor(model, selection, wordSeparators, providers) {\n        super(model, selection, wordSeparators);\n        this._providers = providers;\n    }\n    _compute(model, selection, wordSeparators, token) {\n        return getOccurrencesAtPosition(this._providers, model, selection.getPosition(), token).then(value => {\n            if (!value) {\n                return new ResourceMap();\n            }\n            return value;\n        });\n    }\n}\nclass MultiModelOccurenceRequest extends OccurenceAtPositionRequest {\n    constructor(model, selection, wordSeparators, providers, otherModels) {\n        super(model, selection, wordSeparators);\n        this._providers = providers;\n        this._otherModels = otherModels;\n    }\n    _compute(model, selection, wordSeparators, token) {\n        return getOccurrencesAcrossMultipleModels(this._providers, model, selection.getPosition(), wordSeparators, token, this._otherModels).then(value => {\n            if (!value) {\n                return new ResourceMap();\n            }\n            return value;\n        });\n    }\n}\nclass TextualOccurenceRequest extends OccurenceAtPositionRequest {\n    constructor(model, selection, word, wordSeparators, otherModels) {\n        super(model, selection, wordSeparators);\n        this._otherModels = otherModels;\n        this._selectionIsEmpty = selection.isEmpty();\n        this._word = word;\n    }\n    _compute(model, selection, wordSeparators, token) {\n        return timeout(250, token).then(() => {\n            const result = new ResourceMap();\n            let wordResult;\n            if (this._word) {\n                wordResult = this._word;\n            }\n            else {\n                wordResult = model.getWordAtPosition(selection.getPosition());\n            }\n            if (!wordResult) {\n                return new ResourceMap();\n            }\n            const allModels = [model, ...this._otherModels];\n            for (const otherModel of allModels) {\n                if (otherModel.isDisposed()) {\n                    continue;\n                }\n                const matches = otherModel.findMatches(wordResult.word, true, false, true, wordSeparators, false);\n                const highlights = matches.map(m => ({\n                    range: m.range,\n                    kind: DocumentHighlightKind.Text\n                }));\n                if (highlights) {\n                    result.set(otherModel.uri, highlights);\n                }\n            }\n            return result;\n        });\n    }\n    isValid(model, selection, decorations) {\n        const currentSelectionIsEmpty = selection.isEmpty();\n        if (this._selectionIsEmpty !== currentSelectionIsEmpty) {\n            return false;\n        }\n        return super.isValid(model, selection, decorations);\n    }\n}\nfunction computeOccurencesAtPosition(registry, model, selection, word, wordSeparators) {\n    if (registry.has(model)) {\n        return new SemanticOccurenceAtPositionRequest(model, selection, wordSeparators, registry);\n    }\n    return new TextualOccurenceRequest(model, selection, word, wordSeparators, []);\n}\nfunction computeOccurencesMultiModel(registry, model, selection, word, wordSeparators, otherModels) {\n    if (registry.has(model)) {\n        return new MultiModelOccurenceRequest(model, selection, wordSeparators, registry, otherModels);\n    }\n    return new TextualOccurenceRequest(model, selection, word, wordSeparators, otherModels);\n}\nregisterModelAndPositionCommand('_executeDocumentHighlights', async (accessor, model, position) => {\n    const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n    const map = await getOccurrencesAtPosition(languageFeaturesService.documentHighlightProvider, model, position, CancellationToken.None);\n    return map === null || map === void 0 ? void 0 : map.get(model.uri);\n});\nlet WordHighlighter = WordHighlighter_1 = class WordHighlighter {\n    constructor(editor, providers, multiProviders, contextKeyService, codeEditorService) {\n        this.toUnhook = new DisposableStore();\n        this.workerRequestTokenId = 0;\n        this.workerRequestCompleted = false;\n        this.workerRequestValue = new ResourceMap();\n        this.lastCursorPositionChangeTime = 0;\n        this.renderDecorationsTimer = -1;\n        this.editor = editor;\n        this.providers = providers;\n        this.multiDocumentProviders = multiProviders;\n        this.codeEditorService = codeEditorService;\n        this._hasWordHighlights = ctxHasWordHighlights.bindTo(contextKeyService);\n        this._ignorePositionChangeEvent = false;\n        this.occurrencesHighlight = this.editor.getOption(81 /* EditorOption.occurrencesHighlight */);\n        this.model = this.editor.getModel();\n        this.toUnhook.add(editor.onDidChangeCursorPosition((e) => {\n            if (this._ignorePositionChangeEvent) {\n                // We are changing the position => ignore this event\n                return;\n            }\n            if (this.occurrencesHighlight === 'off') {\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            this._onPositionChanged(e);\n        }));\n        this.toUnhook.add(editor.onDidFocusEditorText((e) => {\n            if (this.occurrencesHighlight === 'off') {\n                // Early exit if nothing needs to be done\n                return;\n            }\n            if (!this.workerRequest) {\n                this._run();\n            }\n        }));\n        this.toUnhook.add(editor.onDidChangeModelContent((e) => {\n            this._stopAll();\n        }));\n        this.toUnhook.add(editor.onDidChangeModel((e) => {\n            if (!e.newModelUrl && e.oldModelUrl) {\n                this._stopSingular();\n            }\n            else {\n                if (WordHighlighter_1.query) {\n                    this._run();\n                }\n            }\n        }));\n        this.toUnhook.add(editor.onDidChangeConfiguration((e) => {\n            const newValue = this.editor.getOption(81 /* EditorOption.occurrencesHighlight */);\n            if (this.occurrencesHighlight !== newValue) {\n                this.occurrencesHighlight = newValue;\n                this._stopAll();\n            }\n        }));\n        this.decorations = this.editor.createDecorationsCollection();\n        this.workerRequestTokenId = 0;\n        this.workerRequest = null;\n        this.workerRequestCompleted = false;\n        this.lastCursorPositionChangeTime = 0;\n        this.renderDecorationsTimer = -1;\n        // if there is a query already, highlight off that query\n        if (WordHighlighter_1.query) {\n            this._run();\n        }\n    }\n    hasDecorations() {\n        return (this.decorations.length > 0);\n    }\n    restore() {\n        if (this.occurrencesHighlight === 'off') {\n            return;\n        }\n        this._run();\n    }\n    _getSortedHighlights() {\n        return (this.decorations.getRanges()\n            .sort(Range.compareRangesUsingStarts));\n    }\n    moveNext() {\n        const highlights = this._getSortedHighlights();\n        const index = highlights.findIndex((range) => range.containsPosition(this.editor.getPosition()));\n        const newIndex = ((index + 1) % highlights.length);\n        const dest = highlights[newIndex];\n        try {\n            this._ignorePositionChangeEvent = true;\n            this.editor.setPosition(dest.getStartPosition());\n            this.editor.revealRangeInCenterIfOutsideViewport(dest);\n            const word = this._getWord();\n            if (word) {\n                const lineContent = this.editor.getModel().getLineContent(dest.startLineNumber);\n                alert(`${lineContent}, ${newIndex + 1} of ${highlights.length} for '${word.word}'`);\n            }\n        }\n        finally {\n            this._ignorePositionChangeEvent = false;\n        }\n    }\n    moveBack() {\n        const highlights = this._getSortedHighlights();\n        const index = highlights.findIndex((range) => range.containsPosition(this.editor.getPosition()));\n        const newIndex = ((index - 1 + highlights.length) % highlights.length);\n        const dest = highlights[newIndex];\n        try {\n            this._ignorePositionChangeEvent = true;\n            this.editor.setPosition(dest.getStartPosition());\n            this.editor.revealRangeInCenterIfOutsideViewport(dest);\n            const word = this._getWord();\n            if (word) {\n                const lineContent = this.editor.getModel().getLineContent(dest.startLineNumber);\n                alert(`${lineContent}, ${newIndex + 1} of ${highlights.length} for '${word.word}'`);\n            }\n        }\n        finally {\n            this._ignorePositionChangeEvent = false;\n        }\n    }\n    _removeSingleDecorations() {\n        // return if no model\n        if (!this.editor.hasModel()) {\n            return;\n        }\n        const currentDecorationIDs = WordHighlighter_1.storedDecorations.get(this.editor.getModel().uri);\n        if (!currentDecorationIDs) {\n            return;\n        }\n        this.editor.removeDecorations(currentDecorationIDs);\n        WordHighlighter_1.storedDecorations.delete(this.editor.getModel().uri);\n        if (this.decorations.length > 0) {\n            this.decorations.clear();\n            this._hasWordHighlights.set(false);\n        }\n    }\n    _removeAllDecorations() {\n        const currentEditors = this.codeEditorService.listCodeEditors();\n        const deleteURI = [];\n        // iterate over editors and store models in currentModels\n        for (const editor of currentEditors) {\n            if (!editor.hasModel()) {\n                continue;\n            }\n            const currentDecorationIDs = WordHighlighter_1.storedDecorations.get(editor.getModel().uri);\n            if (!currentDecorationIDs) {\n                continue;\n            }\n            editor.removeDecorations(currentDecorationIDs);\n            deleteURI.push(editor.getModel().uri);\n            const editorHighlighterContrib = WordHighlighterContribution.get(editor);\n            if (!(editorHighlighterContrib === null || editorHighlighterContrib === void 0 ? void 0 : editorHighlighterContrib.wordHighlighter)) {\n                continue;\n            }\n            if (editorHighlighterContrib.wordHighlighter.decorations.length > 0) {\n                editorHighlighterContrib.wordHighlighter.decorations.clear();\n                editorHighlighterContrib.wordHighlighter.workerRequest = null;\n                editorHighlighterContrib.wordHighlighter._hasWordHighlights.set(false);\n            }\n        }\n        for (const uri of deleteURI) {\n            WordHighlighter_1.storedDecorations.delete(uri);\n        }\n    }\n    _stopSingular() {\n        var _a, _b, _c, _d;\n        // Remove any existing decorations + a possible query, and re - run to update decorations\n        this._removeSingleDecorations();\n        if (this.editor.hasTextFocus()) {\n            if (((_a = this.editor.getModel()) === null || _a === void 0 ? void 0 : _a.uri.scheme) !== Schemas.vscodeNotebookCell && ((_c = (_b = WordHighlighter_1.query) === null || _b === void 0 ? void 0 : _b.modelInfo) === null || _c === void 0 ? void 0 : _c.model.uri.scheme) !== Schemas.vscodeNotebookCell) { // clear query if focused non-nb editor\n                WordHighlighter_1.query = null;\n                this._run(); // TODO: @Yoyokrazy -- investigate why we need a full rerun here. likely addressed a case/patch in the first iteration of this feature\n            }\n            else { // remove modelInfo to account for nb cell being disposed\n                if ((_d = WordHighlighter_1.query) === null || _d === void 0 ? void 0 : _d.modelInfo) {\n                    WordHighlighter_1.query.modelInfo = null;\n                }\n            }\n        }\n        // Cancel any renderDecorationsTimer\n        if (this.renderDecorationsTimer !== -1) {\n            clearTimeout(this.renderDecorationsTimer);\n            this.renderDecorationsTimer = -1;\n        }\n        // Cancel any worker request\n        if (this.workerRequest !== null) {\n            this.workerRequest.cancel();\n            this.workerRequest = null;\n        }\n        // Invalidate any worker request callback\n        if (!this.workerRequestCompleted) {\n            this.workerRequestTokenId++;\n            this.workerRequestCompleted = true;\n        }\n    }\n    _stopAll() {\n        // Remove any existing decorations\n        // TODO: @Yoyokrazy -- this triggers as notebooks scroll, causing highlights to disappear momentarily.\n        // maybe a nb type check?\n        this._removeAllDecorations();\n        // Cancel any renderDecorationsTimer\n        if (this.renderDecorationsTimer !== -1) {\n            clearTimeout(this.renderDecorationsTimer);\n            this.renderDecorationsTimer = -1;\n        }\n        // Cancel any worker request\n        if (this.workerRequest !== null) {\n            this.workerRequest.cancel();\n            this.workerRequest = null;\n        }\n        // Invalidate any worker request callback\n        if (!this.workerRequestCompleted) {\n            this.workerRequestTokenId++;\n            this.workerRequestCompleted = true;\n        }\n    }\n    _onPositionChanged(e) {\n        var _a;\n        // disabled\n        if (this.occurrencesHighlight === 'off') {\n            this._stopAll();\n            return;\n        }\n        // ignore typing & other\n        // need to check if the model is a notebook cell, should not stop if nb\n        if (e.reason !== 3 /* CursorChangeReason.Explicit */ && ((_a = this.editor.getModel()) === null || _a === void 0 ? void 0 : _a.uri.scheme) !== Schemas.vscodeNotebookCell) {\n            this._stopAll();\n            return;\n        }\n        this._run();\n    }\n    _getWord() {\n        const editorSelection = this.editor.getSelection();\n        const lineNumber = editorSelection.startLineNumber;\n        const startColumn = editorSelection.startColumn;\n        if (this.model.isDisposed()) {\n            return null;\n        }\n        return this.model.getWordAtPosition({\n            lineNumber: lineNumber,\n            column: startColumn\n        });\n    }\n    getOtherModelsToHighlight(model) {\n        if (!model) {\n            return [];\n        }\n        // notebook case\n        const isNotebookEditor = model.uri.scheme === Schemas.vscodeNotebookCell;\n        if (isNotebookEditor) {\n            const currentModels = [];\n            const currentEditors = this.codeEditorService.listCodeEditors();\n            for (const editor of currentEditors) {\n                const tempModel = editor.getModel();\n                if (tempModel && tempModel !== model && tempModel.uri.scheme === Schemas.vscodeNotebookCell) {\n                    currentModels.push(tempModel);\n                }\n            }\n            return currentModels;\n        }\n        // inline case\n        // ? current works when highlighting outside of an inline diff, highlighting in.\n        // ? broken when highlighting within a diff editor. highlighting the main editor does not work\n        // ? editor group service could be useful here\n        const currentModels = [];\n        const currentEditors = this.codeEditorService.listCodeEditors();\n        for (const editor of currentEditors) {\n            if (!isDiffEditor(editor)) {\n                continue;\n            }\n            const diffModel = editor.getModel();\n            if (!diffModel) {\n                continue;\n            }\n            if (model === diffModel.modified) { // embedded inline chat diff would pass this, allowing highlights\n                //? currentModels.push(diffModel.original);\n                currentModels.push(diffModel.modified);\n            }\n        }\n        if (currentModels.length) { // no matching editors have been found\n            return currentModels;\n        }\n        // multi-doc OFF\n        if (this.occurrencesHighlight === 'singleFile') {\n            return [];\n        }\n        // multi-doc ON\n        for (const editor of currentEditors) {\n            const tempModel = editor.getModel();\n            const isValidModel = tempModel && tempModel !== model;\n            if (isValidModel) {\n                currentModels.push(tempModel);\n            }\n        }\n        return currentModels;\n    }\n    _run() {\n        var _a;\n        let workerRequestIsValid;\n        const hasTextFocus = this.editor.hasTextFocus();\n        if (!hasTextFocus) { // new nb cell scrolled in, didChangeModel fires\n            if (!WordHighlighter_1.query) { // no previous query, nothing to highlight off of\n                return;\n            }\n        }\n        else { // has text focus\n            const editorSelection = this.editor.getSelection();\n            // ignore multiline selection\n            if (!editorSelection || editorSelection.startLineNumber !== editorSelection.endLineNumber) {\n                WordHighlighter_1.query = null;\n                this._stopAll();\n                return;\n            }\n            const startColumn = editorSelection.startColumn;\n            const endColumn = editorSelection.endColumn;\n            const word = this._getWord();\n            // The selection must be inside a word or surround one word at most\n            if (!word || word.startColumn > startColumn || word.endColumn < endColumn) {\n                // no previous query, nothing to highlight\n                WordHighlighter_1.query = null;\n                this._stopAll();\n                return;\n            }\n            // All the effort below is trying to achieve this:\n            // - when cursor is moved to a word, trigger immediately a findOccurrences request\n            // - 250ms later after the last cursor move event, render the occurrences\n            // - no flickering!\n            workerRequestIsValid = (this.workerRequest && this.workerRequest.isValid(this.model, editorSelection, this.decorations));\n            WordHighlighter_1.query = {\n                modelInfo: {\n                    model: this.model,\n                    selection: editorSelection,\n                },\n                word: word\n            };\n        }\n        // There are 4 cases:\n        // a) old workerRequest is valid & completed, renderDecorationsTimer fired\n        // b) old workerRequest is valid & completed, renderDecorationsTimer not fired\n        // c) old workerRequest is valid, but not completed\n        // d) old workerRequest is not valid\n        // For a) no action is needed\n        // For c), member 'lastCursorPositionChangeTime' will be used when installing the timer so no action is needed\n        this.lastCursorPositionChangeTime = (new Date()).getTime();\n        if (workerRequestIsValid) {\n            if (this.workerRequestCompleted && this.renderDecorationsTimer !== -1) {\n                // case b)\n                // Delay the firing of renderDecorationsTimer by an extra 250 ms\n                clearTimeout(this.renderDecorationsTimer);\n                this.renderDecorationsTimer = -1;\n                this._beginRenderDecorations();\n            }\n        }\n        else {\n            // case d)\n            // Stop all previous actions and start fresh\n            this._stopAll();\n            const myRequestId = ++this.workerRequestTokenId;\n            this.workerRequestCompleted = false;\n            const otherModelsToHighlight = this.getOtherModelsToHighlight(this.editor.getModel());\n            // when reaching here, there are two possible states.\n            // \t\t1) we have text focus, and a valid query was updated.\n            // \t\t2) we do not have text focus, and a valid query is cached.\n            // the query will ALWAYS have the correct data for the current highlight request, so it can always be passed to the workerRequest safely\n            if (!WordHighlighter_1.query.modelInfo || WordHighlighter_1.query.modelInfo.model.isDisposed()) {\n                return;\n            }\n            this.workerRequest = this.computeWithModel(WordHighlighter_1.query.modelInfo.model, WordHighlighter_1.query.modelInfo.selection, WordHighlighter_1.query.word, otherModelsToHighlight);\n            (_a = this.workerRequest) === null || _a === void 0 ? void 0 : _a.result.then(data => {\n                if (myRequestId === this.workerRequestTokenId) {\n                    this.workerRequestCompleted = true;\n                    this.workerRequestValue = data || [];\n                    this._beginRenderDecorations();\n                }\n            }, onUnexpectedError);\n        }\n    }\n    computeWithModel(model, selection, word, otherModels) {\n        if (!otherModels.length) {\n            return computeOccurencesAtPosition(this.providers, model, selection, word, this.editor.getOption(131 /* EditorOption.wordSeparators */));\n        }\n        else {\n            return computeOccurencesMultiModel(this.multiDocumentProviders, model, selection, word, this.editor.getOption(131 /* EditorOption.wordSeparators */), otherModels);\n        }\n    }\n    _beginRenderDecorations() {\n        const currentTime = (new Date()).getTime();\n        const minimumRenderTime = this.lastCursorPositionChangeTime + 250;\n        if (currentTime >= minimumRenderTime) {\n            // Synchronous\n            this.renderDecorationsTimer = -1;\n            this.renderDecorations();\n        }\n        else {\n            // Asynchronous\n            this.renderDecorationsTimer = setTimeout(() => {\n                this.renderDecorations();\n            }, (minimumRenderTime - currentTime));\n        }\n    }\n    renderDecorations() {\n        var _a, _b, _c;\n        this.renderDecorationsTimer = -1;\n        // create new loop, iterate over current editors using this.codeEditorService.listCodeEditors(),\n        // if the URI of that codeEditor is in the map, then add the decorations to the decorations array\n        // then set the decorations for the editor\n        const currentEditors = this.codeEditorService.listCodeEditors();\n        for (const editor of currentEditors) {\n            const editorHighlighterContrib = WordHighlighterContribution.get(editor);\n            if (!editorHighlighterContrib) {\n                continue;\n            }\n            const newDecorations = [];\n            const uri = (_a = editor.getModel()) === null || _a === void 0 ? void 0 : _a.uri;\n            if (uri && this.workerRequestValue.has(uri)) {\n                const oldDecorationIDs = WordHighlighter_1.storedDecorations.get(uri);\n                const newDocumentHighlights = this.workerRequestValue.get(uri);\n                if (newDocumentHighlights) {\n                    for (const highlight of newDocumentHighlights) {\n                        if (!highlight.range) {\n                            continue;\n                        }\n                        newDecorations.push({\n                            range: highlight.range,\n                            options: getHighlightDecorationOptions(highlight.kind)\n                        });\n                    }\n                }\n                let newDecorationIDs = [];\n                editor.changeDecorations((changeAccessor) => {\n                    newDecorationIDs = changeAccessor.deltaDecorations(oldDecorationIDs !== null && oldDecorationIDs !== void 0 ? oldDecorationIDs : [], newDecorations);\n                });\n                WordHighlighter_1.storedDecorations = WordHighlighter_1.storedDecorations.set(uri, newDecorationIDs);\n                if (newDecorations.length > 0) {\n                    (_b = editorHighlighterContrib.wordHighlighter) === null || _b === void 0 ? void 0 : _b.decorations.set(newDecorations);\n                    (_c = editorHighlighterContrib.wordHighlighter) === null || _c === void 0 ? void 0 : _c._hasWordHighlights.set(true);\n                }\n            }\n        }\n    }\n    dispose() {\n        this._stopSingular();\n        this.toUnhook.dispose();\n    }\n};\nWordHighlighter.storedDecorations = new ResourceMap();\nWordHighlighter.query = null;\nWordHighlighter = WordHighlighter_1 = __decorate([\n    __param(4, ICodeEditorService)\n], WordHighlighter);\nlet WordHighlighterContribution = WordHighlighterContribution_1 = class WordHighlighterContribution extends Disposable {\n    static get(editor) {\n        return editor.getContribution(WordHighlighterContribution_1.ID);\n    }\n    constructor(editor, contextKeyService, languageFeaturesService, codeEditorService) {\n        super();\n        this._wordHighlighter = null;\n        const createWordHighlighterIfPossible = () => {\n            if (editor.hasModel() && !editor.getModel().isTooLargeForTokenization()) {\n                this._wordHighlighter = new WordHighlighter(editor, languageFeaturesService.documentHighlightProvider, languageFeaturesService.multiDocumentHighlightProvider, contextKeyService, codeEditorService);\n            }\n        };\n        this._register(editor.onDidChangeModel((e) => {\n            if (this._wordHighlighter) {\n                this._wordHighlighter.dispose();\n                this._wordHighlighter = null;\n            }\n            createWordHighlighterIfPossible();\n        }));\n        createWordHighlighterIfPossible();\n    }\n    get wordHighlighter() {\n        return this._wordHighlighter;\n    }\n    saveViewState() {\n        if (this._wordHighlighter && this._wordHighlighter.hasDecorations()) {\n            return true;\n        }\n        return false;\n    }\n    moveNext() {\n        var _a;\n        (_a = this._wordHighlighter) === null || _a === void 0 ? void 0 : _a.moveNext();\n    }\n    moveBack() {\n        var _a;\n        (_a = this._wordHighlighter) === null || _a === void 0 ? void 0 : _a.moveBack();\n    }\n    restoreViewState(state) {\n        if (this._wordHighlighter && state) {\n            this._wordHighlighter.restore();\n        }\n    }\n    dispose() {\n        if (this._wordHighlighter) {\n            this._wordHighlighter.dispose();\n            this._wordHighlighter = null;\n        }\n        super.dispose();\n    }\n};\nWordHighlighterContribution.ID = 'editor.contrib.wordHighlighter';\nWordHighlighterContribution = WordHighlighterContribution_1 = __decorate([\n    __param(1, IContextKeyService),\n    __param(2, ILanguageFeaturesService),\n    __param(3, ICodeEditorService)\n], WordHighlighterContribution);\nexport { WordHighlighterContribution };\nclass WordHighlightNavigationAction extends EditorAction {\n    constructor(next, opts) {\n        super(opts);\n        this._isNext = next;\n    }\n    run(accessor, editor) {\n        const controller = WordHighlighterContribution.get(editor);\n        if (!controller) {\n            return;\n        }\n        if (this._isNext) {\n            controller.moveNext();\n        }\n        else {\n            controller.moveBack();\n        }\n    }\n}\nclass NextWordHighlightAction extends WordHighlightNavigationAction {\n    constructor() {\n        super(true, {\n            id: 'editor.action.wordHighlight.next',\n            label: nls.localize('wordHighlight.next.label', \"Go to Next Symbol Highlight\"),\n            alias: 'Go to Next Symbol Highlight',\n            precondition: ctxHasWordHighlights,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 65 /* KeyCode.F7 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nclass PrevWordHighlightAction extends WordHighlightNavigationAction {\n    constructor() {\n        super(false, {\n            id: 'editor.action.wordHighlight.prev',\n            label: nls.localize('wordHighlight.previous.label', \"Go to Previous Symbol Highlight\"),\n            alias: 'Go to Previous Symbol Highlight',\n            precondition: ctxHasWordHighlights,\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 1024 /* KeyMod.Shift */ | 65 /* KeyCode.F7 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nclass TriggerWordHighlightAction extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.wordHighlight.trigger',\n            label: nls.localize('wordHighlight.trigger.label', \"Trigger Symbol Highlight\"),\n            alias: 'Trigger Symbol Highlight',\n            precondition: ctxHasWordHighlights.toNegated(),\n            kbOpts: {\n                kbExpr: EditorContextKeys.editorTextFocus,\n                primary: 0,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor, editor, args) {\n        const controller = WordHighlighterContribution.get(editor);\n        if (!controller) {\n            return;\n        }\n        controller.restoreViewState(true);\n    }\n}\nregisterEditorContribution(WordHighlighterContribution.ID, WordHighlighterContribution, 0 /* EditorContributionInstantiation.Eager */); // eager because it uses `saveViewState`/`restoreViewState`\nregisterEditorAction(NextWordHighlightAction);\nregisterEditorAction(PrevWordHighlightAction);\nregisterEditorAction(TriggerWordHighlightAction);\n// registerEditorFeature(TextualMultiDocumentHighlightFeature);\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 { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand } from '../../../browser/editorExtensions.js';\nimport { ReplaceCommand } from '../../../common/commands/replaceCommand.js';\nimport { EditorOptions } from '../../../common/config/editorOptions.js';\nimport { CursorState } from '../../../common/cursorCommon.js';\nimport { WordOperations } from '../../../common/cursor/cursorWordOperations.js';\nimport { getMapForWordSeparators } from '../../../common/core/wordCharacterClassifier.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport * as nls from '../../../../nls.js';\nimport { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from '../../../../platform/accessibility/common/accessibility.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IsWindowsContext } from '../../../../platform/contextkey/common/contextkeys.js';\nexport class MoveWordCommand extends EditorCommand {\n    constructor(opts) {\n        super(opts);\n        this._inSelectionMode = opts.inSelectionMode;\n        this._wordNavigationType = opts.wordNavigationType;\n    }\n    runEditorCommand(accessor, editor, args) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const wordSeparators = getMapForWordSeparators(editor.getOption(131 /* EditorOption.wordSeparators */), editor.getOption(130 /* EditorOption.wordSegmenterLocales */));\n        const model = editor.getModel();\n        const selections = editor.getSelections();\n        const result = selections.map((sel) => {\n            const inPosition = new Position(sel.positionLineNumber, sel.positionColumn);\n            const outPosition = this._move(wordSeparators, model, inPosition, this._wordNavigationType);\n            return this._moveTo(sel, outPosition, this._inSelectionMode);\n        });\n        model.pushStackElement();\n        editor._getViewModel().setCursorStates('moveWordCommand', 3 /* CursorChangeReason.Explicit */, result.map(r => CursorState.fromModelSelection(r)));\n        if (result.length === 1) {\n            const pos = new Position(result[0].positionLineNumber, result[0].positionColumn);\n            editor.revealPosition(pos, 0 /* ScrollType.Smooth */);\n        }\n    }\n    _moveTo(from, to, inSelectionMode) {\n        if (inSelectionMode) {\n            // move just position\n            return new Selection(from.selectionStartLineNumber, from.selectionStartColumn, to.lineNumber, to.column);\n        }\n        else {\n            // move everything\n            return new Selection(to.lineNumber, to.column, to.lineNumber, to.column);\n        }\n    }\n}\nexport class WordLeftCommand extends MoveWordCommand {\n    _move(wordSeparators, model, position, wordNavigationType) {\n        return WordOperations.moveWordLeft(wordSeparators, model, position, wordNavigationType);\n    }\n}\nexport class WordRightCommand extends MoveWordCommand {\n    _move(wordSeparators, model, position, wordNavigationType) {\n        return WordOperations.moveWordRight(wordSeparators, model, position, wordNavigationType);\n    }\n}\nexport class CursorWordStartLeft extends WordLeftCommand {\n    constructor() {\n        super({\n            inSelectionMode: false,\n            wordNavigationType: 0 /* WordNavigationType.WordStart */,\n            id: 'cursorWordStartLeft',\n            precondition: undefined\n        });\n    }\n}\nexport class CursorWordEndLeft extends WordLeftCommand {\n    constructor() {\n        super({\n            inSelectionMode: false,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'cursorWordEndLeft',\n            precondition: undefined\n        });\n    }\n}\nexport class CursorWordLeft extends WordLeftCommand {\n    constructor() {\n        var _a;\n        super({\n            inSelectionMode: false,\n            wordNavigationType: 1 /* WordNavigationType.WordStartFast */,\n            id: 'cursorWordLeft',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\n                primary: 2048 /* KeyMod.CtrlCmd */ | 15 /* KeyCode.LeftArrow */,\n                mac: { primary: 512 /* KeyMod.Alt */ | 15 /* KeyCode.LeftArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nexport class CursorWordStartLeftSelect extends WordLeftCommand {\n    constructor() {\n        super({\n            inSelectionMode: true,\n            wordNavigationType: 0 /* WordNavigationType.WordStart */,\n            id: 'cursorWordStartLeftSelect',\n            precondition: undefined\n        });\n    }\n}\nexport class CursorWordEndLeftSelect extends WordLeftCommand {\n    constructor() {\n        super({\n            inSelectionMode: true,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'cursorWordEndLeftSelect',\n            precondition: undefined\n        });\n    }\n}\nexport class CursorWordLeftSelect extends WordLeftCommand {\n    constructor() {\n        var _a;\n        super({\n            inSelectionMode: true,\n            wordNavigationType: 1 /* WordNavigationType.WordStartFast */,\n            id: 'cursorWordLeftSelect',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 15 /* KeyCode.LeftArrow */,\n                mac: { primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 15 /* KeyCode.LeftArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\n// Accessibility navigation commands should only be enabled on windows since they are tuned to what NVDA expects\nexport class CursorWordAccessibilityLeft extends WordLeftCommand {\n    constructor() {\n        super({\n            inSelectionMode: false,\n            wordNavigationType: 3 /* WordNavigationType.WordAccessibility */,\n            id: 'cursorWordAccessibilityLeft',\n            precondition: undefined\n        });\n    }\n    _move(wordCharacterClassifier, model, position, wordNavigationType) {\n        return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue, wordCharacterClassifier.intlSegmenterLocales), model, position, wordNavigationType);\n    }\n}\nexport class CursorWordAccessibilityLeftSelect extends WordLeftCommand {\n    constructor() {\n        super({\n            inSelectionMode: true,\n            wordNavigationType: 3 /* WordNavigationType.WordAccessibility */,\n            id: 'cursorWordAccessibilityLeftSelect',\n            precondition: undefined\n        });\n    }\n    _move(wordCharacterClassifier, model, position, wordNavigationType) {\n        return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue, wordCharacterClassifier.intlSegmenterLocales), model, position, wordNavigationType);\n    }\n}\nexport class CursorWordStartRight extends WordRightCommand {\n    constructor() {\n        super({\n            inSelectionMode: false,\n            wordNavigationType: 0 /* WordNavigationType.WordStart */,\n            id: 'cursorWordStartRight',\n            precondition: undefined\n        });\n    }\n}\nexport class CursorWordEndRight extends WordRightCommand {\n    constructor() {\n        var _a;\n        super({\n            inSelectionMode: false,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'cursorWordEndRight',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\n                primary: 2048 /* KeyMod.CtrlCmd */ | 17 /* KeyCode.RightArrow */,\n                mac: { primary: 512 /* KeyMod.Alt */ | 17 /* KeyCode.RightArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nexport class CursorWordRight extends WordRightCommand {\n    constructor() {\n        super({\n            inSelectionMode: false,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'cursorWordRight',\n            precondition: undefined\n        });\n    }\n}\nexport class CursorWordStartRightSelect extends WordRightCommand {\n    constructor() {\n        super({\n            inSelectionMode: true,\n            wordNavigationType: 0 /* WordNavigationType.WordStart */,\n            id: 'cursorWordStartRightSelect',\n            precondition: undefined\n        });\n    }\n}\nexport class CursorWordEndRightSelect extends WordRightCommand {\n    constructor() {\n        var _a;\n        super({\n            inSelectionMode: true,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'cursorWordEndRightSelect',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 17 /* KeyCode.RightArrow */,\n                mac: { primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 17 /* KeyCode.RightArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nexport class CursorWordRightSelect extends WordRightCommand {\n    constructor() {\n        super({\n            inSelectionMode: true,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'cursorWordRightSelect',\n            precondition: undefined\n        });\n    }\n}\nexport class CursorWordAccessibilityRight extends WordRightCommand {\n    constructor() {\n        super({\n            inSelectionMode: false,\n            wordNavigationType: 3 /* WordNavigationType.WordAccessibility */,\n            id: 'cursorWordAccessibilityRight',\n            precondition: undefined\n        });\n    }\n    _move(wordCharacterClassifier, model, position, wordNavigationType) {\n        return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue, wordCharacterClassifier.intlSegmenterLocales), model, position, wordNavigationType);\n    }\n}\nexport class CursorWordAccessibilityRightSelect extends WordRightCommand {\n    constructor() {\n        super({\n            inSelectionMode: true,\n            wordNavigationType: 3 /* WordNavigationType.WordAccessibility */,\n            id: 'cursorWordAccessibilityRightSelect',\n            precondition: undefined\n        });\n    }\n    _move(wordCharacterClassifier, model, position, wordNavigationType) {\n        return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue, wordCharacterClassifier.intlSegmenterLocales), model, position, wordNavigationType);\n    }\n}\nexport class DeleteWordCommand extends EditorCommand {\n    constructor(opts) {\n        super(opts);\n        this._whitespaceHeuristics = opts.whitespaceHeuristics;\n        this._wordNavigationType = opts.wordNavigationType;\n    }\n    runEditorCommand(accessor, editor, args) {\n        const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n        if (!editor.hasModel()) {\n            return;\n        }\n        const wordSeparators = getMapForWordSeparators(editor.getOption(131 /* EditorOption.wordSeparators */), editor.getOption(130 /* EditorOption.wordSegmenterLocales */));\n        const model = editor.getModel();\n        const selections = editor.getSelections();\n        const autoClosingBrackets = editor.getOption(6 /* EditorOption.autoClosingBrackets */);\n        const autoClosingQuotes = editor.getOption(11 /* EditorOption.autoClosingQuotes */);\n        const autoClosingPairs = languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getAutoClosingPairs();\n        const viewModel = editor._getViewModel();\n        const commands = selections.map((sel) => {\n            const deleteRange = this._delete({\n                wordSeparators,\n                model,\n                selection: sel,\n                whitespaceHeuristics: this._whitespaceHeuristics,\n                autoClosingDelete: editor.getOption(9 /* EditorOption.autoClosingDelete */),\n                autoClosingBrackets,\n                autoClosingQuotes,\n                autoClosingPairs,\n                autoClosedCharacters: viewModel.getCursorAutoClosedCharacters(),\n            }, this._wordNavigationType);\n            return new ReplaceCommand(deleteRange, '');\n        });\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, commands);\n        editor.pushUndoStop();\n    }\n}\nexport class DeleteWordLeftCommand extends DeleteWordCommand {\n    _delete(ctx, wordNavigationType) {\n        const r = WordOperations.deleteWordLeft(ctx, wordNavigationType);\n        if (r) {\n            return r;\n        }\n        return new Range(1, 1, 1, 1);\n    }\n}\nexport class DeleteWordRightCommand extends DeleteWordCommand {\n    _delete(ctx, wordNavigationType) {\n        const r = WordOperations.deleteWordRight(ctx, wordNavigationType);\n        if (r) {\n            return r;\n        }\n        const lineCount = ctx.model.getLineCount();\n        const maxColumn = ctx.model.getLineMaxColumn(lineCount);\n        return new Range(lineCount, maxColumn, lineCount, maxColumn);\n    }\n}\nexport class DeleteWordStartLeft extends DeleteWordLeftCommand {\n    constructor() {\n        super({\n            whitespaceHeuristics: false,\n            wordNavigationType: 0 /* WordNavigationType.WordStart */,\n            id: 'deleteWordStartLeft',\n            precondition: EditorContextKeys.writable\n        });\n    }\n}\nexport class DeleteWordEndLeft extends DeleteWordLeftCommand {\n    constructor() {\n        super({\n            whitespaceHeuristics: false,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'deleteWordEndLeft',\n            precondition: EditorContextKeys.writable\n        });\n    }\n}\nexport class DeleteWordLeft extends DeleteWordLeftCommand {\n    constructor() {\n        super({\n            whitespaceHeuristics: true,\n            wordNavigationType: 0 /* WordNavigationType.WordStart */,\n            id: 'deleteWordLeft',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1 /* KeyCode.Backspace */,\n                mac: { primary: 512 /* KeyMod.Alt */ | 1 /* KeyCode.Backspace */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nexport class DeleteWordStartRight extends DeleteWordRightCommand {\n    constructor() {\n        super({\n            whitespaceHeuristics: false,\n            wordNavigationType: 0 /* WordNavigationType.WordStart */,\n            id: 'deleteWordStartRight',\n            precondition: EditorContextKeys.writable\n        });\n    }\n}\nexport class DeleteWordEndRight extends DeleteWordRightCommand {\n    constructor() {\n        super({\n            whitespaceHeuristics: false,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'deleteWordEndRight',\n            precondition: EditorContextKeys.writable\n        });\n    }\n}\nexport class DeleteWordRight extends DeleteWordRightCommand {\n    constructor() {\n        super({\n            whitespaceHeuristics: true,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'deleteWordRight',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 20 /* KeyCode.Delete */,\n                mac: { primary: 512 /* KeyMod.Alt */ | 20 /* KeyCode.Delete */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nexport class DeleteInsideWord extends EditorAction {\n    constructor() {\n        super({\n            id: 'deleteInsideWord',\n            precondition: EditorContextKeys.writable,\n            label: nls.localize('deleteInsideWord', \"Delete Word\"),\n            alias: 'Delete Word'\n        });\n    }\n    run(accessor, editor, args) {\n        if (!editor.hasModel()) {\n            return;\n        }\n        const wordSeparators = getMapForWordSeparators(editor.getOption(131 /* EditorOption.wordSeparators */), editor.getOption(130 /* EditorOption.wordSegmenterLocales */));\n        const model = editor.getModel();\n        const selections = editor.getSelections();\n        const commands = selections.map((sel) => {\n            const deleteRange = WordOperations.deleteInsideWord(wordSeparators, model, sel);\n            return new ReplaceCommand(deleteRange, '');\n        });\n        editor.pushUndoStop();\n        editor.executeCommands(this.id, commands);\n        editor.pushUndoStop();\n    }\n}\nregisterEditorCommand(new CursorWordStartLeft());\nregisterEditorCommand(new CursorWordEndLeft());\nregisterEditorCommand(new CursorWordLeft());\nregisterEditorCommand(new CursorWordStartLeftSelect());\nregisterEditorCommand(new CursorWordEndLeftSelect());\nregisterEditorCommand(new CursorWordLeftSelect());\nregisterEditorCommand(new CursorWordStartRight());\nregisterEditorCommand(new CursorWordEndRight());\nregisterEditorCommand(new CursorWordRight());\nregisterEditorCommand(new CursorWordStartRightSelect());\nregisterEditorCommand(new CursorWordEndRightSelect());\nregisterEditorCommand(new CursorWordRightSelect());\nregisterEditorCommand(new CursorWordAccessibilityLeft());\nregisterEditorCommand(new CursorWordAccessibilityLeftSelect());\nregisterEditorCommand(new CursorWordAccessibilityRight());\nregisterEditorCommand(new CursorWordAccessibilityRightSelect());\nregisterEditorCommand(new DeleteWordStartLeft());\nregisterEditorCommand(new DeleteWordEndLeft());\nregisterEditorCommand(new DeleteWordLeft());\nregisterEditorCommand(new DeleteWordStartRight());\nregisterEditorCommand(new DeleteWordEndRight());\nregisterEditorCommand(new DeleteWordRight());\nregisterEditorAction(DeleteInsideWord);\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 { registerEditorCommand } from '../../../browser/editorExtensions.js';\nimport { WordPartOperations } from '../../../common/cursor/cursorWordOperations.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { DeleteWordCommand, MoveWordCommand } from '../../wordOperations/browser/wordOperations.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nexport class DeleteWordPartLeft extends DeleteWordCommand {\n    constructor() {\n        super({\n            whitespaceHeuristics: true,\n            wordNavigationType: 0 /* WordNavigationType.WordStart */,\n            id: 'deleteWordPartLeft',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 0,\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 1 /* KeyCode.Backspace */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    _delete(ctx, wordNavigationType) {\n        const r = WordPartOperations.deleteWordPartLeft(ctx);\n        if (r) {\n            return r;\n        }\n        return new Range(1, 1, 1, 1);\n    }\n}\nexport class DeleteWordPartRight extends DeleteWordCommand {\n    constructor() {\n        super({\n            whitespaceHeuristics: true,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'deleteWordPartRight',\n            precondition: EditorContextKeys.writable,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 0,\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 20 /* KeyCode.Delete */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    _delete(ctx, wordNavigationType) {\n        const r = WordPartOperations.deleteWordPartRight(ctx);\n        if (r) {\n            return r;\n        }\n        const lineCount = ctx.model.getLineCount();\n        const maxColumn = ctx.model.getLineMaxColumn(lineCount);\n        return new Range(lineCount, maxColumn, lineCount, maxColumn);\n    }\n}\nexport class WordPartLeftCommand extends MoveWordCommand {\n    _move(wordSeparators, model, position, wordNavigationType) {\n        return WordPartOperations.moveWordPartLeft(wordSeparators, model, position);\n    }\n}\nexport class CursorWordPartLeft extends WordPartLeftCommand {\n    constructor() {\n        super({\n            inSelectionMode: false,\n            wordNavigationType: 0 /* WordNavigationType.WordStart */,\n            id: 'cursorWordPartLeft',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 0,\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 15 /* KeyCode.LeftArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\n// Register previous id for compatibility purposes\nCommandsRegistry.registerCommandAlias('cursorWordPartStartLeft', 'cursorWordPartLeft');\nexport class CursorWordPartLeftSelect extends WordPartLeftCommand {\n    constructor() {\n        super({\n            inSelectionMode: true,\n            wordNavigationType: 0 /* WordNavigationType.WordStart */,\n            id: 'cursorWordPartLeftSelect',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 0,\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 15 /* KeyCode.LeftArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\n// Register previous id for compatibility purposes\nCommandsRegistry.registerCommandAlias('cursorWordPartStartLeftSelect', 'cursorWordPartLeftSelect');\nexport class WordPartRightCommand extends MoveWordCommand {\n    _move(wordSeparators, model, position, wordNavigationType) {\n        return WordPartOperations.moveWordPartRight(wordSeparators, model, position);\n    }\n}\nexport class CursorWordPartRight extends WordPartRightCommand {\n    constructor() {\n        super({\n            inSelectionMode: false,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'cursorWordPartRight',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 0,\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 17 /* KeyCode.RightArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nexport class CursorWordPartRightSelect extends WordPartRightCommand {\n    constructor() {\n        super({\n            inSelectionMode: true,\n            wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n            id: 'cursorWordPartRightSelect',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.textInputFocus,\n                primary: 0,\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 17 /* KeyCode.RightArrow */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n}\nregisterEditorCommand(new DeleteWordPartLeft());\nregisterEditorCommand(new DeleteWordPartRight());\nregisterEditorCommand(new CursorWordPartLeft());\nregisterEditorCommand(new CursorWordPartLeftSelect());\nregisterEditorCommand(new CursorWordPartRight());\nregisterEditorCommand(new CursorWordPartRightSelect());\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 *--------------------------------------------------------------------------------------------*/\nimport './iPadShowKeyboard.css';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { isIOS } from '../../../../base/common/platform.js';\nexport class IPadShowKeyboard extends Disposable {\n    constructor(editor) {\n        super();\n        this.editor = editor;\n        this.widget = null;\n        if (isIOS) {\n            this._register(editor.onDidChangeConfiguration(() => this.update()));\n            this.update();\n        }\n    }\n    update() {\n        const shouldHaveWidget = (!this.editor.getOption(91 /* EditorOption.readOnly */));\n        if (!this.widget && shouldHaveWidget) {\n            this.widget = new ShowKeyboardWidget(this.editor);\n        }\n        else if (this.widget && !shouldHaveWidget) {\n            this.widget.dispose();\n            this.widget = null;\n        }\n    }\n    dispose() {\n        super.dispose();\n        if (this.widget) {\n            this.widget.dispose();\n            this.widget = null;\n        }\n    }\n}\nIPadShowKeyboard.ID = 'editor.contrib.iPadShowKeyboard';\nclass ShowKeyboardWidget extends Disposable {\n    constructor(editor) {\n        super();\n        this.editor = editor;\n        this._domNode = document.createElement('textarea');\n        this._domNode.className = 'iPadShowKeyboard';\n        this._register(dom.addDisposableListener(this._domNode, 'touchstart', (e) => {\n            this.editor.focus();\n        }));\n        this._register(dom.addDisposableListener(this._domNode, 'focus', (e) => {\n            this.editor.focus();\n        }));\n        this.editor.addOverlayWidget(this);\n    }\n    dispose() {\n        this.editor.removeOverlayWidget(this);\n        super.dispose();\n    }\n    // ----- IOverlayWidget API\n    getId() {\n        return ShowKeyboardWidget.ID;\n    }\n    getDomNode() {\n        return this._domNode;\n    }\n    getPosition() {\n        return {\n            preference: 1 /* OverlayWidgetPositionPreference.BOTTOM_RIGHT_CORNER */\n        };\n    }\n}\nShowKeyboardWidget.ID = 'editor.contrib.ShowKeyboardWidget';\nregisterEditorContribution(IPadShowKeyboard.ID, IPadShowKeyboard, 3 /* EditorContributionInstantiation.Eventually */);\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 './editor.all.js';\nimport './standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport './standalone/browser/inspectTokens/inspectTokens.js';\nimport './standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport './standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport './standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport './standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport './standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport './standalone/browser/toggleHighContrast/toggleHighContrast.js';\nexport * from './editor.api.js';\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 { Registry } from '../../../../platform/registry/common/platform.js';\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\nimport { QuickHelpNLS } from '../../../common/standaloneStrings.js';\nimport { HelpQuickAccessProvider } from '../../../../platform/quickinput/browser/helpQuickAccess.js';\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\n    ctor: HelpQuickAccessProvider,\n    prefix: '',\n    helpEntries: [{ description: QuickHelpNLS.helpQuickAccessActionLabel }]\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 HelpQuickAccessProvider_1;\nimport { localize } from '../../../nls.js';\nimport { Registry } from '../../registry/common/platform.js';\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { Extensions } from '../common/quickAccess.js';\nimport { IQuickInputService } from '../common/quickInput.js';\nlet HelpQuickAccessProvider = HelpQuickAccessProvider_1 = class HelpQuickAccessProvider {\n    constructor(quickInputService, keybindingService) {\n        this.quickInputService = quickInputService;\n        this.keybindingService = keybindingService;\n        this.registry = Registry.as(Extensions.Quickaccess);\n    }\n    provide(picker) {\n        const disposables = new DisposableStore();\n        // Open a picker with the selected value if picked\n        disposables.add(picker.onDidAccept(() => {\n            const [item] = picker.selectedItems;\n            if (item) {\n                this.quickInputService.quickAccess.show(item.prefix, { preserveValue: true });\n            }\n        }));\n        // Also open a picker when we detect the user typed the exact\n        // name of a provider (e.g. `?term` for terminals)\n        disposables.add(picker.onDidChangeValue(value => {\n            const providerDescriptor = this.registry.getQuickAccessProvider(value.substr(HelpQuickAccessProvider_1.PREFIX.length));\n            if (providerDescriptor && providerDescriptor.prefix && providerDescriptor.prefix !== HelpQuickAccessProvider_1.PREFIX) {\n                this.quickInputService.quickAccess.show(providerDescriptor.prefix, { preserveValue: true });\n            }\n        }));\n        // Fill in all providers\n        picker.items = this.getQuickAccessProviders().filter(p => p.prefix !== HelpQuickAccessProvider_1.PREFIX);\n        return disposables;\n    }\n    getQuickAccessProviders() {\n        const providers = this.registry\n            .getQuickAccessProviders()\n            .sort((providerA, providerB) => providerA.prefix.localeCompare(providerB.prefix))\n            .flatMap(provider => this.createPicks(provider));\n        return providers;\n    }\n    createPicks(provider) {\n        return provider.helpEntries.map(helpEntry => {\n            const prefix = helpEntry.prefix || provider.prefix;\n            const label = prefix || '\\u2026' /* ... */;\n            return {\n                prefix,\n                label,\n                keybinding: helpEntry.commandId ? this.keybindingService.lookupKeybinding(helpEntry.commandId) : undefined,\n                ariaLabel: localize('helpPickAriaLabel', \"{0}, {1}\", label, helpEntry.description),\n                description: helpEntry.description\n            };\n        });\n    }\n};\nHelpQuickAccessProvider.PREFIX = '?';\nHelpQuickAccessProvider = HelpQuickAccessProvider_1 = __decorate([\n    __param(0, IQuickInputService),\n    __param(1, IKeybindingService)\n], HelpQuickAccessProvider);\nexport { HelpQuickAccessProvider };\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\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 *--------------------------------------------------------------------------------------------*/\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) {\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);\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) {\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));\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 *--------------------------------------------------------------------------------------------*/\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 { AbstractGotoLineQuickAccessProvider } from '../../../contrib/quickAccess/browser/gotoLineQuickAccess.js';\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { GoToLineNLS } from '../../../common/standaloneStrings.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nlet StandaloneGotoLineQuickAccessProvider = class StandaloneGotoLineQuickAccessProvider extends AbstractGotoLineQuickAccessProvider {\n    constructor(editorService) {\n        super();\n        this.editorService = editorService;\n        this.onDidActiveTextEditorControlChange = Event.None;\n    }\n    get activeTextEditorControl() {\n        var _a;\n        return (_a = this.editorService.getFocusedCodeEditor()) !== null && _a !== void 0 ? _a : undefined;\n    }\n};\nStandaloneGotoLineQuickAccessProvider = __decorate([\n    __param(0, ICodeEditorService)\n], StandaloneGotoLineQuickAccessProvider);\nexport { StandaloneGotoLineQuickAccessProvider };\nexport class GotoLineAction extends EditorAction {\n    constructor() {\n        super({\n            id: GotoLineAction.ID,\n            label: GoToLineNLS.gotoLineActionLabel,\n            alias: 'Go to Line/Column...',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.focus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 37 /* KeyCode.KeyG */,\n                mac: { primary: 256 /* KeyMod.WinCtrl */ | 37 /* KeyCode.KeyG */ },\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            }\n        });\n    }\n    run(accessor) {\n        accessor.get(IQuickInputService).quickAccess.show(StandaloneGotoLineQuickAccessProvider.PREFIX);\n    }\n}\nGotoLineAction.ID = 'editor.action.gotoLine';\nregisterEditorAction(GotoLineAction);\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\n    ctor: StandaloneGotoLineQuickAccessProvider,\n    prefix: StandaloneGotoLineQuickAccessProvider.PREFIX,\n    helpEntries: [{ description: GoToLineNLS.gotoLineActionLabel, commandId: GotoLineAction.ID }]\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 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) {\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);\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) {\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            const [item] = picker.selectedItems;\n            if (item && item.range) {\n                this.gotoLocation(context, { range: item.range.selection, keyMods: picker.keyMods, preserveFocus: event.inBackground });\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);\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) {\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} \u2022 ${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                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", "import { createMatches as createFuzzyMatches, fuzzyScore } from './filters.js';\nimport { sep } from './path.js';\nimport { isWindows } from './platform.js';\nimport { stripWildcards } from './strings.js';\nconst NO_SCORE2 = [undefined, []];\nexport function scoreFuzzy2(target, query, patternStart = 0, wordStart = 0) {\n    // Score: multiple inputs\n    const preparedQuery = query;\n    if (preparedQuery.values && preparedQuery.values.length > 1) {\n        return doScoreFuzzy2Multiple(target, preparedQuery.values, patternStart, wordStart);\n    }\n    // Score: single input\n    return doScoreFuzzy2Single(target, query, patternStart, wordStart);\n}\nfunction doScoreFuzzy2Multiple(target, query, patternStart, wordStart) {\n    let totalScore = 0;\n    const totalMatches = [];\n    for (const queryPiece of query) {\n        const [score, matches] = doScoreFuzzy2Single(target, queryPiece, patternStart, wordStart);\n        if (typeof score !== 'number') {\n            // if a single query value does not match, return with\n            // no score entirely, we require all queries to match\n            return NO_SCORE2;\n        }\n        totalScore += score;\n        totalMatches.push(...matches);\n    }\n    // if we have a score, ensure that the positions are\n    // sorted in ascending order and distinct\n    return [totalScore, normalizeMatches(totalMatches)];\n}\nfunction doScoreFuzzy2Single(target, query, patternStart, wordStart) {\n    const score = fuzzyScore(query.original, query.originalLowercase, patternStart, target, target.toLowerCase(), wordStart, { firstMatchCanBeWeak: true, boostFullMatch: true });\n    if (!score) {\n        return NO_SCORE2;\n    }\n    return [score[0], createFuzzyMatches(score)];\n}\nconst NO_ITEM_SCORE = Object.freeze({ score: 0 });\nfunction normalizeMatches(matches) {\n    // sort matches by start to be able to normalize\n    const sortedMatches = matches.sort((matchA, matchB) => {\n        return matchA.start - matchB.start;\n    });\n    // merge matches that overlap\n    const normalizedMatches = [];\n    let currentMatch = undefined;\n    for (const match of sortedMatches) {\n        // if we have no current match or the matches\n        // do not overlap, we take it as is and remember\n        // it for future merging\n        if (!currentMatch || !matchOverlaps(currentMatch, match)) {\n            currentMatch = match;\n            normalizedMatches.push(match);\n        }\n        // otherwise we merge the matches\n        else {\n            currentMatch.start = Math.min(currentMatch.start, match.start);\n            currentMatch.end = Math.max(currentMatch.end, match.end);\n        }\n    }\n    return normalizedMatches;\n}\nfunction matchOverlaps(matchA, matchB) {\n    if (matchA.end < matchB.start) {\n        return false; // A ends before B starts\n    }\n    if (matchB.end < matchA.start) {\n        return false; // B ends before A starts\n    }\n    return true;\n}\n/*\n * If a query is wrapped in quotes, the user does not want to\n * use fuzzy search for this query.\n */\nfunction queryExpectsExactMatch(query) {\n    return query.startsWith('\"') && query.endsWith('\"');\n}\n/**\n * Helper function to prepare a search value for scoring by removing unwanted characters\n * and allowing to score on multiple pieces separated by whitespace character.\n */\nconst MULTIPLE_QUERY_VALUES_SEPARATOR = ' ';\nexport function prepareQuery(original) {\n    if (typeof original !== 'string') {\n        original = '';\n    }\n    const originalLowercase = original.toLowerCase();\n    const { pathNormalized, normalized, normalizedLowercase } = normalizeQuery(original);\n    const containsPathSeparator = pathNormalized.indexOf(sep) >= 0;\n    const expectExactMatch = queryExpectsExactMatch(original);\n    let values = undefined;\n    const originalSplit = original.split(MULTIPLE_QUERY_VALUES_SEPARATOR);\n    if (originalSplit.length > 1) {\n        for (const originalPiece of originalSplit) {\n            const expectExactMatchPiece = queryExpectsExactMatch(originalPiece);\n            const { pathNormalized: pathNormalizedPiece, normalized: normalizedPiece, normalizedLowercase: normalizedLowercasePiece } = normalizeQuery(originalPiece);\n            if (normalizedPiece) {\n                if (!values) {\n                    values = [];\n                }\n                values.push({\n                    original: originalPiece,\n                    originalLowercase: originalPiece.toLowerCase(),\n                    pathNormalized: pathNormalizedPiece,\n                    normalized: normalizedPiece,\n                    normalizedLowercase: normalizedLowercasePiece,\n                    expectContiguousMatch: expectExactMatchPiece\n                });\n            }\n        }\n    }\n    return { original, originalLowercase, pathNormalized, normalized, normalizedLowercase, values, containsPathSeparator, expectContiguousMatch: expectExactMatch };\n}\nfunction normalizeQuery(original) {\n    let pathNormalized;\n    if (isWindows) {\n        pathNormalized = original.replace(/\\//g, sep); // Help Windows users to search for paths when using slash\n    }\n    else {\n        pathNormalized = original.replace(/\\\\/g, sep); // Help macOS/Linux users to search for paths when using backslash\n    }\n    // we remove quotes here because quotes are used for exact match search\n    const normalized = stripWildcards(pathNormalized).replace(/\\s|\"/g, '');\n    return {\n        pathNormalized,\n        normalized,\n        normalizedLowercase: normalized.toLowerCase()\n    };\n}\nexport function pieceToQuery(arg1) {\n    if (Array.isArray(arg1)) {\n        return prepareQuery(arg1.map(piece => piece.original).join(MULTIPLE_QUERY_VALUES_SEPARATOR));\n    }\n    return prepareQuery(arg1.original);\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 *--------------------------------------------------------------------------------------------*/\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 '../../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded\nimport '../../../contrib/symbolIcons/browser/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors\nimport { AbstractGotoSymbolQuickAccessProvider } from '../../../contrib/quickAccess/browser/gotoSymbolQuickAccess.js';\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { QuickOutlineNLS } from '../../../common/standaloneStrings.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IQuickInputService, ItemActivation } from '../../../../platform/quickinput/common/quickInput.js';\nimport { IOutlineModelService } from '../../../contrib/documentSymbols/browser/outlineModel.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nlet StandaloneGotoSymbolQuickAccessProvider = class StandaloneGotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccessProvider {\n    constructor(editorService, languageFeaturesService, outlineModelService) {\n        super(languageFeaturesService, outlineModelService);\n        this.editorService = editorService;\n        this.onDidActiveTextEditorControlChange = Event.None;\n    }\n    get activeTextEditorControl() {\n        var _a;\n        return (_a = this.editorService.getFocusedCodeEditor()) !== null && _a !== void 0 ? _a : undefined;\n    }\n};\nStandaloneGotoSymbolQuickAccessProvider = __decorate([\n    __param(0, ICodeEditorService),\n    __param(1, ILanguageFeaturesService),\n    __param(2, IOutlineModelService)\n], StandaloneGotoSymbolQuickAccessProvider);\nexport { StandaloneGotoSymbolQuickAccessProvider };\nexport class GotoSymbolAction extends EditorAction {\n    constructor() {\n        super({\n            id: GotoSymbolAction.ID,\n            label: QuickOutlineNLS.quickOutlineActionLabel,\n            alias: 'Go to Symbol...',\n            precondition: EditorContextKeys.hasDocumentSymbolProvider,\n            kbOpts: {\n                kbExpr: EditorContextKeys.focus,\n                primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 45 /* KeyCode.KeyO */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            contextMenuOpts: {\n                group: 'navigation',\n                order: 3\n            }\n        });\n    }\n    run(accessor) {\n        accessor.get(IQuickInputService).quickAccess.show(AbstractGotoSymbolQuickAccessProvider.PREFIX, { itemActivation: ItemActivation.NONE });\n    }\n}\nGotoSymbolAction.ID = 'editor.action.quickOutline';\nregisterEditorAction(GotoSymbolAction);\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\n    ctor: StandaloneGotoSymbolQuickAccessProvider,\n    prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX,\n    helpEntries: [\n        { description: QuickOutlineNLS.quickOutlineActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX, commandId: GotoSymbolAction.ID },\n        { description: QuickOutlineNLS.quickOutlineByCategoryActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY }\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 { Registry } from '../../../../platform/registry/common/platform.js';\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\nimport { QuickCommandNLS } from '../../../common/standaloneStrings.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { AbstractEditorCommandsQuickAccessProvider } from '../../../contrib/quickAccess/browser/commandsQuickAccess.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nlet StandaloneCommandsQuickAccessProvider = class StandaloneCommandsQuickAccessProvider extends AbstractEditorCommandsQuickAccessProvider {\n    get activeTextEditorControl() { var _a; return (_a = this.codeEditorService.getFocusedCodeEditor()) !== null && _a !== void 0 ? _a : undefined; }\n    constructor(instantiationService, codeEditorService, keybindingService, commandService, telemetryService, dialogService) {\n        super({ showAlias: false }, instantiationService, keybindingService, commandService, telemetryService, dialogService);\n        this.codeEditorService = codeEditorService;\n    }\n    async getCommandPicks() {\n        return this.getCodeEditorCommandPicks();\n    }\n    hasAdditionalCommandPicks() {\n        return false;\n    }\n    async getAdditionalCommandPicks() {\n        return [];\n    }\n};\nStandaloneCommandsQuickAccessProvider = __decorate([\n    __param(0, IInstantiationService),\n    __param(1, ICodeEditorService),\n    __param(2, IKeybindingService),\n    __param(3, ICommandService),\n    __param(4, ITelemetryService),\n    __param(5, IDialogService)\n], StandaloneCommandsQuickAccessProvider);\nexport { StandaloneCommandsQuickAccessProvider };\nexport class GotoLineAction extends EditorAction {\n    constructor() {\n        super({\n            id: GotoLineAction.ID,\n            label: QuickCommandNLS.quickCommandActionLabel,\n            alias: 'Command Palette',\n            precondition: undefined,\n            kbOpts: {\n                kbExpr: EditorContextKeys.focus,\n                primary: 59 /* KeyCode.F1 */,\n                weight: 100 /* KeybindingWeight.EditorContrib */\n            },\n            contextMenuOpts: {\n                group: 'z_commands',\n                order: 1\n            }\n        });\n    }\n    run(accessor) {\n        accessor.get(IQuickInputService).quickAccess.show(StandaloneCommandsQuickAccessProvider.PREFIX);\n    }\n}\nGotoLineAction.ID = 'editor.action.quickCommand';\nregisterEditorAction(GotoLineAction);\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\n    ctor: StandaloneCommandsQuickAccessProvider,\n    prefix: StandaloneCommandsQuickAccessProvider.PREFIX,\n    helpEntries: [{ description: QuickCommandNLS.quickCommandHelp, commandId: GotoLineAction.ID }]\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 { 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 *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar AbstractCommandsQuickAccessProvider_1, CommandsHistory_1;\nimport { toErrorMessage } from '../../../base/common/errorMessage.js';\nimport { isCancellationError } from '../../../base/common/errors.js';\nimport { matchesContiguousSubString, matchesPrefix, matchesWords, or } from '../../../base/common/filters.js';\nimport { createSingleCallFunction } from '../../../base/common/functional.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { LRUCache } from '../../../base/common/map.js';\nimport { TfIdfCalculator, normalizeTfIdfScores } from '../../../base/common/tfIdf.js';\nimport { localize } from '../../../nls.js';\nimport { ICommandService } from '../../commands/common/commands.js';\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\nimport { IDialogService } from '../../dialogs/common/dialogs.js';\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { ILogService } from '../../log/common/log.js';\nimport { PickerQuickAccessProvider } from './pickerQuickAccess.js';\nimport { IStorageService, WillSaveStateReason } from '../../storage/common/storage.js';\nimport { ITelemetryService } from '../../telemetry/common/telemetry.js';\nlet AbstractCommandsQuickAccessProvider = AbstractCommandsQuickAccessProvider_1 = class AbstractCommandsQuickAccessProvider extends PickerQuickAccessProvider {\n    constructor(options, instantiationService, keybindingService, commandService, telemetryService, dialogService) {\n        super(AbstractCommandsQuickAccessProvider_1.PREFIX, options);\n        this.instantiationService = instantiationService;\n        this.keybindingService = keybindingService;\n        this.commandService = commandService;\n        this.telemetryService = telemetryService;\n        this.dialogService = dialogService;\n        this.commandsHistory = this._register(this.instantiationService.createInstance(CommandsHistory));\n        this.options = options;\n    }\n    async _getPicks(filter, _disposables, token, runOptions) {\n        var _a, _b, _c, _d;\n        // Ask subclass for all command picks\n        const allCommandPicks = await this.getCommandPicks(token);\n        if (token.isCancellationRequested) {\n            return [];\n        }\n        const runTfidf = createSingleCallFunction(() => {\n            const tfidf = new TfIdfCalculator();\n            tfidf.updateDocuments(allCommandPicks.map(commandPick => ({\n                key: commandPick.commandId,\n                textChunks: [this.getTfIdfChunk(commandPick)]\n            })));\n            const result = tfidf.calculateScores(filter, token);\n            return normalizeTfIdfScores(result)\n                .filter(score => score.score > AbstractCommandsQuickAccessProvider_1.TFIDF_THRESHOLD)\n                .slice(0, AbstractCommandsQuickAccessProvider_1.TFIDF_MAX_RESULTS);\n        });\n        // Filter\n        const filteredCommandPicks = [];\n        for (const commandPick of allCommandPicks) {\n            const labelHighlights = (_a = AbstractCommandsQuickAccessProvider_1.WORD_FILTER(filter, commandPick.label)) !== null && _a !== void 0 ? _a : undefined;\n            const aliasHighlights = commandPick.commandAlias ? (_b = AbstractCommandsQuickAccessProvider_1.WORD_FILTER(filter, commandPick.commandAlias)) !== null && _b !== void 0 ? _b : undefined : undefined;\n            // Add if matching in label or alias\n            if (labelHighlights || aliasHighlights) {\n                commandPick.highlights = {\n                    label: labelHighlights,\n                    detail: this.options.showAlias ? aliasHighlights : undefined\n                };\n                filteredCommandPicks.push(commandPick);\n            }\n            // Also add if we have a 100% command ID match\n            else if (filter === commandPick.commandId) {\n                filteredCommandPicks.push(commandPick);\n            }\n            // Handle tf-idf scoring for the rest if there's a filter\n            else if (filter.length >= 3) {\n                const tfidf = runTfidf();\n                if (token.isCancellationRequested) {\n                    return [];\n                }\n                // Add if we have a tf-idf score\n                const tfidfScore = tfidf.find(score => score.key === commandPick.commandId);\n                if (tfidfScore) {\n                    commandPick.tfIdfScore = tfidfScore.score;\n                    filteredCommandPicks.push(commandPick);\n                }\n            }\n        }\n        // Add description to commands that have duplicate labels\n        const mapLabelToCommand = new Map();\n        for (const commandPick of filteredCommandPicks) {\n            const existingCommandForLabel = mapLabelToCommand.get(commandPick.label);\n            if (existingCommandForLabel) {\n                commandPick.description = commandPick.commandId;\n                existingCommandForLabel.description = existingCommandForLabel.commandId;\n            }\n            else {\n                mapLabelToCommand.set(commandPick.label, commandPick);\n            }\n        }\n        // Sort by MRU order and fallback to name otherwise\n        filteredCommandPicks.sort((commandPickA, commandPickB) => {\n            // If a result came from tf-idf, we want to put that towards the bottom\n            if (commandPickA.tfIdfScore && commandPickB.tfIdfScore) {\n                if (commandPickA.tfIdfScore === commandPickB.tfIdfScore) {\n                    return commandPickA.label.localeCompare(commandPickB.label); // prefer lexicographically smaller command\n                }\n                return commandPickB.tfIdfScore - commandPickA.tfIdfScore; // prefer higher tf-idf score\n            }\n            else if (commandPickA.tfIdfScore) {\n                return 1; // first command has a score but other doesn't so other wins\n            }\n            else if (commandPickB.tfIdfScore) {\n                return -1; // other command has a score but first doesn't so first wins\n            }\n            const commandACounter = this.commandsHistory.peek(commandPickA.commandId);\n            const commandBCounter = this.commandsHistory.peek(commandPickB.commandId);\n            if (commandACounter && commandBCounter) {\n                return commandACounter > commandBCounter ? -1 : 1; // use more recently used command before older\n            }\n            if (commandACounter) {\n                return -1; // first command was used, so it wins over the non used one\n            }\n            if (commandBCounter) {\n                return 1; // other command was used so it wins over the command\n            }\n            if (this.options.suggestedCommandIds) {\n                const commandASuggestion = this.options.suggestedCommandIds.has(commandPickA.commandId);\n                const commandBSuggestion = this.options.suggestedCommandIds.has(commandPickB.commandId);\n                if (commandASuggestion && commandBSuggestion) {\n                    return 0; // honor the order of the array\n                }\n                if (commandASuggestion) {\n                    return -1; // first command was suggested, so it wins over the non suggested one\n                }\n                if (commandBSuggestion) {\n                    return 1; // other command was suggested so it wins over the command\n                }\n            }\n            // both commands were never used, so we sort by name\n            return commandPickA.label.localeCompare(commandPickB.label);\n        });\n        const commandPicks = [];\n        let addOtherSeparator = false;\n        let addSuggestedSeparator = true;\n        let addCommonlyUsedSeparator = !!this.options.suggestedCommandIds;\n        for (let i = 0; i < filteredCommandPicks.length; i++) {\n            const commandPick = filteredCommandPicks[i];\n            // Separator: recently used\n            if (i === 0 && this.commandsHistory.peek(commandPick.commandId)) {\n                commandPicks.push({ type: 'separator', label: localize('recentlyUsed', \"recently used\") });\n                addOtherSeparator = true;\n            }\n            if (addSuggestedSeparator && commandPick.tfIdfScore !== undefined) {\n                commandPicks.push({ type: 'separator', label: localize('suggested', \"similar commands\") });\n                addSuggestedSeparator = false;\n            }\n            // Separator: commonly used\n            if (addCommonlyUsedSeparator && commandPick.tfIdfScore === undefined && !this.commandsHistory.peek(commandPick.commandId) && ((_c = this.options.suggestedCommandIds) === null || _c === void 0 ? void 0 : _c.has(commandPick.commandId))) {\n                commandPicks.push({ type: 'separator', label: localize('commonlyUsed', \"commonly used\") });\n                addOtherSeparator = true;\n                addCommonlyUsedSeparator = false;\n            }\n            // Separator: other commands\n            if (addOtherSeparator && commandPick.tfIdfScore === undefined && !this.commandsHistory.peek(commandPick.commandId) && !((_d = this.options.suggestedCommandIds) === null || _d === void 0 ? void 0 : _d.has(commandPick.commandId))) {\n                commandPicks.push({ type: 'separator', label: localize('morecCommands', \"other commands\") });\n                addOtherSeparator = false;\n            }\n            // Command\n            commandPicks.push(this.toCommandPick(commandPick, runOptions));\n        }\n        if (!this.hasAdditionalCommandPicks(filter, token)) {\n            return commandPicks;\n        }\n        return {\n            picks: commandPicks,\n            additionalPicks: (async () => {\n                var _a;\n                const additionalCommandPicks = await this.getAdditionalCommandPicks(allCommandPicks, filteredCommandPicks, filter, token);\n                if (token.isCancellationRequested) {\n                    return [];\n                }\n                const commandPicks = additionalCommandPicks.map(commandPick => this.toCommandPick(commandPick, runOptions));\n                // Basically, if we haven't already added a separator, we add one before the additional picks so long\n                // as one hasn't been added to the start of the array.\n                if (addSuggestedSeparator && ((_a = commandPicks[0]) === null || _a === void 0 ? void 0 : _a.type) !== 'separator') {\n                    commandPicks.unshift({ type: 'separator', label: localize('suggested', \"similar commands\") });\n                }\n                return commandPicks;\n            })()\n        };\n    }\n    toCommandPick(commandPick, runOptions) {\n        if (commandPick.type === 'separator') {\n            return commandPick;\n        }\n        const keybinding = this.keybindingService.lookupKeybinding(commandPick.commandId);\n        const ariaLabel = keybinding ?\n            localize('commandPickAriaLabelWithKeybinding', \"{0}, {1}\", commandPick.label, keybinding.getAriaLabel()) :\n            commandPick.label;\n        return {\n            ...commandPick,\n            ariaLabel,\n            detail: this.options.showAlias && commandPick.commandAlias !== commandPick.label ? commandPick.commandAlias : undefined,\n            keybinding,\n            accept: async () => {\n                var _a, _b;\n                // Add to history\n                this.commandsHistory.push(commandPick.commandId);\n                // Telementry\n                this.telemetryService.publicLog2('workbenchActionExecuted', {\n                    id: commandPick.commandId,\n                    from: (_a = runOptions === null || runOptions === void 0 ? void 0 : runOptions.from) !== null && _a !== void 0 ? _a : 'quick open'\n                });\n                // Run\n                try {\n                    ((_b = commandPick.args) === null || _b === void 0 ? void 0 : _b.length)\n                        ? await this.commandService.executeCommand(commandPick.commandId, ...commandPick.args)\n                        : await this.commandService.executeCommand(commandPick.commandId);\n                }\n                catch (error) {\n                    if (!isCancellationError(error)) {\n                        this.dialogService.error(localize('canNotRun', \"Command '{0}' resulted in an error\", commandPick.label), toErrorMessage(error));\n                    }\n                }\n            }\n        };\n    }\n    // TF-IDF string to be indexed\n    getTfIdfChunk({ label, commandAlias, commandDescription }) {\n        let chunk = label;\n        if (commandAlias && commandAlias !== label) {\n            chunk += ` - ${commandAlias}`;\n        }\n        if (commandDescription && commandDescription.value !== label) {\n            // If the original is the same as the value, don't add it\n            chunk += ` - ${commandDescription.value === commandDescription.original ? commandDescription.value : `${commandDescription.value} (${commandDescription.original})`}`;\n        }\n        return chunk;\n    }\n};\nAbstractCommandsQuickAccessProvider.PREFIX = '>';\nAbstractCommandsQuickAccessProvider.TFIDF_THRESHOLD = 0.5;\nAbstractCommandsQuickAccessProvider.TFIDF_MAX_RESULTS = 5;\nAbstractCommandsQuickAccessProvider.WORD_FILTER = or(matchesPrefix, matchesWords, matchesContiguousSubString);\nAbstractCommandsQuickAccessProvider = AbstractCommandsQuickAccessProvider_1 = __decorate([\n    __param(1, IInstantiationService),\n    __param(2, IKeybindingService),\n    __param(3, ICommandService),\n    __param(4, ITelemetryService),\n    __param(5, IDialogService)\n], AbstractCommandsQuickAccessProvider);\nexport { AbstractCommandsQuickAccessProvider };\nlet CommandsHistory = CommandsHistory_1 = class CommandsHistory extends Disposable {\n    constructor(storageService, configurationService, logService) {\n        super();\n        this.storageService = storageService;\n        this.configurationService = configurationService;\n        this.logService = logService;\n        this.configuredCommandsHistoryLength = 0;\n        this.updateConfiguration();\n        this.load();\n        this.registerListeners();\n    }\n    registerListeners() {\n        this._register(this.configurationService.onDidChangeConfiguration(e => this.updateConfiguration(e)));\n        this._register(this.storageService.onWillSaveState(e => {\n            if (e.reason === WillSaveStateReason.SHUTDOWN) {\n                // Commands history is very dynamic and so we limit impact\n                // on storage to only save on shutdown. This helps reduce\n                // the overhead of syncing this data across machines.\n                this.saveState();\n            }\n        }));\n    }\n    updateConfiguration(e) {\n        if (e && !e.affectsConfiguration('workbench.commandPalette.history')) {\n            return;\n        }\n        this.configuredCommandsHistoryLength = CommandsHistory_1.getConfiguredCommandHistoryLength(this.configurationService);\n        if (CommandsHistory_1.cache && CommandsHistory_1.cache.limit !== this.configuredCommandsHistoryLength) {\n            CommandsHistory_1.cache.limit = this.configuredCommandsHistoryLength;\n            CommandsHistory_1.hasChanges = true;\n        }\n    }\n    load() {\n        const raw = this.storageService.get(CommandsHistory_1.PREF_KEY_CACHE, 0 /* StorageScope.PROFILE */);\n        let serializedCache;\n        if (raw) {\n            try {\n                serializedCache = JSON.parse(raw);\n            }\n            catch (error) {\n                this.logService.error(`[CommandsHistory] invalid data: ${error}`);\n            }\n        }\n        const cache = CommandsHistory_1.cache = new LRUCache(this.configuredCommandsHistoryLength, 1);\n        if (serializedCache) {\n            let entries;\n            if (serializedCache.usesLRU) {\n                entries = serializedCache.entries;\n            }\n            else {\n                entries = serializedCache.entries.sort((a, b) => a.value - b.value);\n            }\n            entries.forEach(entry => cache.set(entry.key, entry.value));\n        }\n        CommandsHistory_1.counter = this.storageService.getNumber(CommandsHistory_1.PREF_KEY_COUNTER, 0 /* StorageScope.PROFILE */, CommandsHistory_1.counter);\n    }\n    push(commandId) {\n        if (!CommandsHistory_1.cache) {\n            return;\n        }\n        CommandsHistory_1.cache.set(commandId, CommandsHistory_1.counter++); // set counter to command\n        CommandsHistory_1.hasChanges = true;\n    }\n    peek(commandId) {\n        var _a;\n        return (_a = CommandsHistory_1.cache) === null || _a === void 0 ? void 0 : _a.peek(commandId);\n    }\n    saveState() {\n        if (!CommandsHistory_1.cache) {\n            return;\n        }\n        if (!CommandsHistory_1.hasChanges) {\n            return;\n        }\n        const serializedCache = { usesLRU: true, entries: [] };\n        CommandsHistory_1.cache.forEach((value, key) => serializedCache.entries.push({ key, value }));\n        this.storageService.store(CommandsHistory_1.PREF_KEY_CACHE, JSON.stringify(serializedCache), 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n        this.storageService.store(CommandsHistory_1.PREF_KEY_COUNTER, CommandsHistory_1.counter, 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n        CommandsHistory_1.hasChanges = false;\n    }\n    static getConfiguredCommandHistoryLength(configurationService) {\n        var _a, _b;\n        const config = configurationService.getValue();\n        const configuredCommandHistoryLength = (_b = (_a = config.workbench) === null || _a === void 0 ? void 0 : _a.commandPalette) === null || _b === void 0 ? void 0 : _b.history;\n        if (typeof configuredCommandHistoryLength === 'number') {\n            return configuredCommandHistoryLength;\n        }\n        return CommandsHistory_1.DEFAULT_COMMANDS_HISTORY_LENGTH;\n    }\n};\nCommandsHistory.DEFAULT_COMMANDS_HISTORY_LENGTH = 50;\nCommandsHistory.PREF_KEY_CACHE = 'commandPalette.mru.cache';\nCommandsHistory.PREF_KEY_COUNTER = 'commandPalette.mru.counter';\nCommandsHistory.counter = 1;\nCommandsHistory.hasChanges = false;\nCommandsHistory = CommandsHistory_1 = __decorate([\n    __param(0, IStorageService),\n    __param(1, IConfigurationService),\n    __param(2, ILogService)\n], CommandsHistory);\nexport { CommandsHistory };\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction countMapFrom(values) {\n    var _a;\n    const map = new Map();\n    for (const value of values) {\n        map.set(value, ((_a = map.get(value)) !== null && _a !== void 0 ? _a : 0) + 1);\n    }\n    return map;\n}\n/**\n * Implementation of tf-idf (term frequency-inverse document frequency) for a set of\n * documents where each document contains one or more chunks of text.\n * Each document is identified by a key, and the score for each document is computed\n * by taking the max score over all the chunks in the document.\n */\nexport class TfIdfCalculator {\n    constructor() {\n        /**\n         * Total number of chunks\n         */\n        this.chunkCount = 0;\n        this.chunkOccurrences = new Map();\n        this.documents = new Map();\n    }\n    calculateScores(query, token) {\n        const embedding = this.computeEmbedding(query);\n        const idfCache = new Map();\n        const scores = [];\n        // For each document, generate one score\n        for (const [key, doc] of this.documents) {\n            if (token.isCancellationRequested) {\n                return [];\n            }\n            for (const chunk of doc.chunks) {\n                const score = this.computeSimilarityScore(chunk, embedding, idfCache);\n                if (score > 0) {\n                    scores.push({ key, score });\n                }\n            }\n        }\n        return scores;\n    }\n    /**\n     * Count how many times each term (word) appears in a string.\n     */\n    static termFrequencies(input) {\n        return countMapFrom(TfIdfCalculator.splitTerms(input));\n    }\n    /**\n     * Break a string into terms (words).\n     */\n    static *splitTerms(input) {\n        const normalize = (word) => word.toLowerCase();\n        // Only match on words that are at least 3 characters long and start with a letter\n        for (const [word] of input.matchAll(/\\b\\p{Letter}[\\p{Letter}\\d]{2,}\\b/gu)) {\n            yield normalize(word);\n            const camelParts = word.replace(/([a-z])([A-Z])/g, '$1 $2').split(/\\s+/g);\n            if (camelParts.length > 1) {\n                for (const part of camelParts) {\n                    // Require at least 3 letters in the parts of a camel case word\n                    if (part.length > 2 && /\\p{Letter}{3,}/gu.test(part)) {\n                        yield normalize(part);\n                    }\n                }\n            }\n        }\n    }\n    updateDocuments(documents) {\n        var _a;\n        for (const { key } of documents) {\n            this.deleteDocument(key);\n        }\n        for (const doc of documents) {\n            const chunks = [];\n            for (const text of doc.textChunks) {\n                // TODO: See if we can compute the tf lazily\n                // The challenge is that we need to also update the `chunkOccurrences`\n                // and all of those updates need to get flushed before the real TF-IDF of\n                // anything is computed.\n                const tf = TfIdfCalculator.termFrequencies(text);\n                // Update occurrences list\n                for (const term of tf.keys()) {\n                    this.chunkOccurrences.set(term, ((_a = this.chunkOccurrences.get(term)) !== null && _a !== void 0 ? _a : 0) + 1);\n                }\n                chunks.push({ text, tf });\n            }\n            this.chunkCount += chunks.length;\n            this.documents.set(doc.key, { chunks });\n        }\n        return this;\n    }\n    deleteDocument(key) {\n        const doc = this.documents.get(key);\n        if (!doc) {\n            return;\n        }\n        this.documents.delete(key);\n        this.chunkCount -= doc.chunks.length;\n        // Update term occurrences for the document\n        for (const chunk of doc.chunks) {\n            for (const term of chunk.tf.keys()) {\n                const currentOccurrences = this.chunkOccurrences.get(term);\n                if (typeof currentOccurrences === 'number') {\n                    const newOccurrences = currentOccurrences - 1;\n                    if (newOccurrences <= 0) {\n                        this.chunkOccurrences.delete(term);\n                    }\n                    else {\n                        this.chunkOccurrences.set(term, newOccurrences);\n                    }\n                }\n            }\n        }\n    }\n    computeSimilarityScore(chunk, queryEmbedding, idfCache) {\n        // Compute the dot product between the chunk's embedding and the query embedding\n        // Note that the chunk embedding is computed lazily on a per-term basis.\n        // This lets us skip a large number of calculations because the majority\n        // of chunks do not share any terms with the query.\n        let sum = 0;\n        for (const [term, termTfidf] of Object.entries(queryEmbedding)) {\n            const chunkTf = chunk.tf.get(term);\n            if (!chunkTf) {\n                // Term does not appear in chunk so it has no contribution\n                continue;\n            }\n            let chunkIdf = idfCache.get(term);\n            if (typeof chunkIdf !== 'number') {\n                chunkIdf = this.computeIdf(term);\n                idfCache.set(term, chunkIdf);\n            }\n            const chunkTfidf = chunkTf * chunkIdf;\n            sum += chunkTfidf * termTfidf;\n        }\n        return sum;\n    }\n    computeEmbedding(input) {\n        const tf = TfIdfCalculator.termFrequencies(input);\n        return this.computeTfidf(tf);\n    }\n    computeIdf(term) {\n        var _a;\n        const chunkOccurrences = (_a = this.chunkOccurrences.get(term)) !== null && _a !== void 0 ? _a : 0;\n        return chunkOccurrences > 0\n            ? Math.log((this.chunkCount + 1) / chunkOccurrences)\n            : 0;\n    }\n    computeTfidf(termFrequencies) {\n        const embedding = Object.create(null);\n        for (const [word, occurrences] of termFrequencies) {\n            const idf = this.computeIdf(word);\n            if (idf > 0) {\n                embedding[word] = occurrences * idf;\n            }\n        }\n        return embedding;\n    }\n}\n/**\n * Normalize the scores to be between 0 and 1 and sort them decending.\n * @param scores array of scores from {@link TfIdfCalculator.calculateScores}\n * @returns normalized scores\n */\nexport function normalizeTfIdfScores(scores) {\n    var _a, _b;\n    // copy of scores\n    const result = scores.slice(0);\n    // sort descending\n    result.sort((a, b) => b.score - a.score);\n    // normalize\n    const max = (_b = (_a = result[0]) === null || _a === void 0 ? void 0 : _a.score) !== null && _b !== void 0 ? _b : 0;\n    if (max > 0) {\n        for (const score of result) {\n            score.score /= max;\n        }\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 { timeout } from '../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\nimport { Disposable, DisposableStore, MutableDisposable } from '../../../base/common/lifecycle.js';\nimport { isFunction } from '../../../base/common/types.js';\nexport var TriggerAction;\n(function (TriggerAction) {\n    /**\n     * Do nothing after the button was clicked.\n     */\n    TriggerAction[TriggerAction[\"NO_ACTION\"] = 0] = \"NO_ACTION\";\n    /**\n     * Close the picker.\n     */\n    TriggerAction[TriggerAction[\"CLOSE_PICKER\"] = 1] = \"CLOSE_PICKER\";\n    /**\n     * Update the results of the picker.\n     */\n    TriggerAction[TriggerAction[\"REFRESH_PICKER\"] = 2] = \"REFRESH_PICKER\";\n    /**\n     * Remove the item from the picker.\n     */\n    TriggerAction[TriggerAction[\"REMOVE_ITEM\"] = 3] = \"REMOVE_ITEM\";\n})(TriggerAction || (TriggerAction = {}));\nfunction isPicksWithActive(obj) {\n    const candidate = obj;\n    return Array.isArray(candidate.items);\n}\nfunction isFastAndSlowPicks(obj) {\n    const candidate = obj;\n    return !!candidate.picks && candidate.additionalPicks instanceof Promise;\n}\nexport class PickerQuickAccessProvider extends Disposable {\n    constructor(prefix, options) {\n        super();\n        this.prefix = prefix;\n        this.options = options;\n    }\n    provide(picker, token, runOptions) {\n        var _a;\n        const disposables = new DisposableStore();\n        // Apply options if any\n        picker.canAcceptInBackground = !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.canAcceptInBackground);\n        // Disable filtering & sorting, we control the results\n        picker.matchOnLabel = picker.matchOnDescription = picker.matchOnDetail = picker.sortByLabel = false;\n        // Set initial picks and update on type\n        let picksCts = undefined;\n        const picksDisposable = disposables.add(new MutableDisposable());\n        const updatePickerItems = async () => {\n            var _a;\n            const picksDisposables = picksDisposable.value = new DisposableStore();\n            // Cancel any previous ask for picks and busy\n            picksCts === null || picksCts === void 0 ? void 0 : picksCts.dispose(true);\n            picker.busy = false;\n            // Create new cancellation source for this run\n            picksCts = new CancellationTokenSource(token);\n            // Collect picks and support both long running and short or combined\n            const picksToken = picksCts.token;\n            let picksFilter = picker.value.substring(this.prefix.length);\n            if (!((_a = this.options) === null || _a === void 0 ? void 0 : _a.shouldSkipTrimPickFilter)) {\n                picksFilter = picksFilter.trim();\n            }\n            const providedPicks = this._getPicks(picksFilter, picksDisposables, picksToken, runOptions);\n            const applyPicks = (picks, skipEmpty) => {\n                var _a;\n                let items;\n                let activeItem = undefined;\n                if (isPicksWithActive(picks)) {\n                    items = picks.items;\n                    activeItem = picks.active;\n                }\n                else {\n                    items = picks;\n                }\n                if (items.length === 0) {\n                    if (skipEmpty) {\n                        return false;\n                    }\n                    // We show the no results pick if we have no input to prevent completely empty pickers #172613\n                    if ((picksFilter.length > 0 || picker.hideInput) && ((_a = this.options) === null || _a === void 0 ? void 0 : _a.noResultsPick)) {\n                        if (isFunction(this.options.noResultsPick)) {\n                            items = [this.options.noResultsPick(picksFilter)];\n                        }\n                        else {\n                            items = [this.options.noResultsPick];\n                        }\n                    }\n                }\n                picker.items = items;\n                if (activeItem) {\n                    picker.activeItems = [activeItem];\n                }\n                return true;\n            };\n            const applyFastAndSlowPicks = async (fastAndSlowPicks) => {\n                let fastPicksApplied = false;\n                let slowPicksApplied = false;\n                await Promise.all([\n                    // Fast Picks: if `mergeDelay` is configured, in order to reduce\n                    // amount of flicker, we race against the slow picks over some delay\n                    // and then set the fast picks.\n                    // If the slow picks are faster, we reduce the flicker by only\n                    // setting the items once.\n                    (async () => {\n                        if (typeof fastAndSlowPicks.mergeDelay === 'number') {\n                            await timeout(fastAndSlowPicks.mergeDelay);\n                            if (picksToken.isCancellationRequested) {\n                                return;\n                            }\n                        }\n                        if (!slowPicksApplied) {\n                            fastPicksApplied = applyPicks(fastAndSlowPicks.picks, true /* skip over empty to reduce flicker */);\n                        }\n                    })(),\n                    // Slow Picks: we await the slow picks and then set them at\n                    // once together with the fast picks, but only if we actually\n                    // have additional results.\n                    (async () => {\n                        picker.busy = true;\n                        try {\n                            const awaitedAdditionalPicks = await fastAndSlowPicks.additionalPicks;\n                            if (picksToken.isCancellationRequested) {\n                                return;\n                            }\n                            let picks;\n                            let activePick = undefined;\n                            if (isPicksWithActive(fastAndSlowPicks.picks)) {\n                                picks = fastAndSlowPicks.picks.items;\n                                activePick = fastAndSlowPicks.picks.active;\n                            }\n                            else {\n                                picks = fastAndSlowPicks.picks;\n                            }\n                            let additionalPicks;\n                            let additionalActivePick = undefined;\n                            if (isPicksWithActive(awaitedAdditionalPicks)) {\n                                additionalPicks = awaitedAdditionalPicks.items;\n                                additionalActivePick = awaitedAdditionalPicks.active;\n                            }\n                            else {\n                                additionalPicks = awaitedAdditionalPicks;\n                            }\n                            if (additionalPicks.length > 0 || !fastPicksApplied) {\n                                // If we do not have any activePick or additionalActivePick\n                                // we try to preserve the currently active pick from the\n                                // fast results. This fixes an issue where the user might\n                                // have made a pick active before the additional results\n                                // kick in.\n                                // See https://github.com/microsoft/vscode/issues/102480\n                                let fallbackActivePick = undefined;\n                                if (!activePick && !additionalActivePick) {\n                                    const fallbackActivePickCandidate = picker.activeItems[0];\n                                    if (fallbackActivePickCandidate && picks.indexOf(fallbackActivePickCandidate) !== -1) {\n                                        fallbackActivePick = fallbackActivePickCandidate;\n                                    }\n                                }\n                                applyPicks({\n                                    items: [...picks, ...additionalPicks],\n                                    active: activePick || additionalActivePick || fallbackActivePick\n                                });\n                            }\n                        }\n                        finally {\n                            if (!picksToken.isCancellationRequested) {\n                                picker.busy = false;\n                            }\n                            slowPicksApplied = true;\n                        }\n                    })()\n                ]);\n            };\n            // No Picks\n            if (providedPicks === null) {\n                // Ignore\n            }\n            // Fast and Slow Picks\n            else if (isFastAndSlowPicks(providedPicks)) {\n                await applyFastAndSlowPicks(providedPicks);\n            }\n            // Fast Picks\n            else if (!(providedPicks instanceof Promise)) {\n                applyPicks(providedPicks);\n            }\n            // Slow Picks\n            else {\n                picker.busy = true;\n                try {\n                    const awaitedPicks = await providedPicks;\n                    if (picksToken.isCancellationRequested) {\n                        return;\n                    }\n                    if (isFastAndSlowPicks(awaitedPicks)) {\n                        await applyFastAndSlowPicks(awaitedPicks);\n                    }\n                    else {\n                        applyPicks(awaitedPicks);\n                    }\n                }\n                finally {\n                    if (!picksToken.isCancellationRequested) {\n                        picker.busy = false;\n                    }\n                }\n            }\n        };\n        disposables.add(picker.onDidChangeValue(() => updatePickerItems()));\n        updatePickerItems();\n        // Accept the pick on accept and hide picker\n        disposables.add(picker.onDidAccept(event => {\n            const [item] = picker.selectedItems;\n            if (typeof (item === null || item === void 0 ? void 0 : item.accept) === 'function') {\n                if (!event.inBackground) {\n                    picker.hide(); // hide picker unless we accept in background\n                }\n                item.accept(picker.keyMods, event);\n            }\n        }));\n        const buttonTrigger = async (button, item) => {\n            var _a, _b;\n            if (typeof item.trigger !== 'function') {\n                return;\n            }\n            const buttonIndex = (_b = (_a = item.buttons) === null || _a === void 0 ? void 0 : _a.indexOf(button)) !== null && _b !== void 0 ? _b : -1;\n            if (buttonIndex >= 0) {\n                const result = item.trigger(buttonIndex, picker.keyMods);\n                const action = (typeof result === 'number') ? result : await result;\n                if (token.isCancellationRequested) {\n                    return;\n                }\n                switch (action) {\n                    case TriggerAction.NO_ACTION:\n                        break;\n                    case TriggerAction.CLOSE_PICKER:\n                        picker.hide();\n                        break;\n                    case TriggerAction.REFRESH_PICKER:\n                        updatePickerItems();\n                        break;\n                    case TriggerAction.REMOVE_ITEM: {\n                        const index = picker.items.indexOf(item);\n                        if (index !== -1) {\n                            const items = picker.items.slice();\n                            const removed = items.splice(index, 1);\n                            const activeItems = picker.activeItems.filter(activeItem => activeItem !== removed[0]);\n                            const keepScrollPositionBefore = picker.keepScrollPosition;\n                            picker.keepScrollPosition = true;\n                            picker.items = items;\n                            if (activeItems) {\n                                picker.activeItems = activeItems;\n                            }\n                            picker.keepScrollPosition = keepScrollPositionBefore;\n                        }\n                        break;\n                    }\n                }\n            }\n        };\n        // Trigger the pick with button index if button triggered\n        disposables.add(picker.onDidTriggerItemButton(({ button, item }) => buttonTrigger(button, item)));\n        disposables.add(picker.onDidTriggerSeparatorButton(({ button, separator }) => buttonTrigger(button, separator)));\n        return disposables;\n    }\n}\n", "/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n    return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { ReferencesController } from '../../../contrib/gotoSymbol/browser/peek/referencesController.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IStorageService } from '../../../../platform/storage/common/storage.js';\nlet StandaloneReferencesController = class StandaloneReferencesController extends ReferencesController {\n    constructor(editor, contextKeyService, editorService, notificationService, instantiationService, storageService, configurationService) {\n        super(true, editor, contextKeyService, editorService, notificationService, instantiationService, storageService, configurationService);\n    }\n};\nStandaloneReferencesController = __decorate([\n    __param(1, IContextKeyService),\n    __param(2, ICodeEditorService),\n    __param(3, INotificationService),\n    __param(4, IInstantiationService),\n    __param(5, IStorageService),\n    __param(6, IConfigurationService)\n], StandaloneReferencesController);\nexport { StandaloneReferencesController };\nregisterEditorContribution(ReferencesController.ID, StandaloneReferencesController, 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 *--------------------------------------------------------------------------------------------*/\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { IStandaloneThemeService } from '../../common/standaloneTheme.js';\nimport { ToggleHighContrastNLS } from '../../../common/standaloneStrings.js';\nimport { isDark, isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { HC_BLACK_THEME_NAME, HC_LIGHT_THEME_NAME, VS_DARK_THEME_NAME, VS_LIGHT_THEME_NAME } from '../standaloneThemeService.js';\nclass ToggleHighContrast extends EditorAction {\n    constructor() {\n        super({\n            id: 'editor.action.toggleHighContrast',\n            label: ToggleHighContrastNLS.toggleHighContrast,\n            alias: 'Toggle High Contrast Theme',\n            precondition: undefined\n        });\n        this._originalThemeName = null;\n    }\n    run(accessor, editor) {\n        const standaloneThemeService = accessor.get(IStandaloneThemeService);\n        const currentTheme = standaloneThemeService.getColorTheme();\n        if (isHighContrast(currentTheme.type)) {\n            // We must toggle back to the integrator's theme\n            standaloneThemeService.setTheme(this._originalThemeName || (isDark(currentTheme.type) ? VS_DARK_THEME_NAME : VS_LIGHT_THEME_NAME));\n            this._originalThemeName = null;\n        }\n        else {\n            standaloneThemeService.setTheme(isDark(currentTheme.type) ? HC_BLACK_THEME_NAME : HC_LIGHT_THEME_NAME);\n            this._originalThemeName = currentTheme.themeName;\n        }\n    }\n}\nregisterEditorAction(ToggleHighContrast);\n", "import { colorValues } from \"@framerjs/fresco/tokens\"\nimport { assert } from \"@framerjs/shared\"\nimport {\n\tdarkSyntaxColors,\n\tlightSyntaxColors,\n} from \"document/components/chrome/properties/panels/CodeExportPanel.styles.ts\"\nimport * as monaco from \"monaco-editor\"\n\nconst lightThemeColors = {\n\t\"editor.background\": colorValues.light.codeEditorBackground,\n\t// Hide the indent guides...\n\t\"editorIndentGuide.background\": colorValues.light.codeEditorBackground,\n\t\"editorIndentGuide.background1\": colorValues.light.codeEditorBackground,\n\t\"editorIndentGuide.background2\": colorValues.light.codeEditorBackground,\n\t\"editorIndentGuide.background3\": colorValues.light.codeEditorBackground,\n\t\"editorIndentGuide.background4\": colorValues.light.codeEditorBackground,\n\t\"editorIndentGuide.background5\": colorValues.light.codeEditorBackground,\n\t\"editorIndentGuide.background6\": colorValues.light.codeEditorBackground,\n\t// ...except for the active ones\n\t\"editorIndentGuide.activeBackground\": \"#DDDDDD\",\n\t\"editorIndentGuide.activeBackground1\": \"#DDDDDD\",\n\t\"editorIndentGuide.activeBackground2\": \"#DDDDDD\",\n\t\"editorIndentGuide.activeBackground3\": \"#DDDDDD\",\n\t\"editorIndentGuide.activeBackground4\": \"#DDDDDD\",\n\t\"editorIndentGuide.activeBackground5\": \"#DDDDDD\",\n\t\"editorIndentGuide.activeBackground6\": \"#DDDDDD\",\n\t\"editorLineNumber.foreground\": \"#D5D5D5\",\n\t\"editorLineNumber.activeForeground\": \"#999999\",\n\t\"editor.lineHighlightBackground\": \"#FAFAFA\",\n\t\"editor.selectionBackground\": \"#E5E5E5\",\n\t\"editor.wordHighlightBackground\": \"#E5E5E5\",\n\t\"editor.wordHighlightStrongBackground\": \"#E5E5E5\",\n\t\"editorBracketMatch.background\": \"#E5E5E5\",\n\t\"editorSuggestWidget.selectedBackground\": \"#EEEEEE\",\n\t\"editorSuggestWidget.foreground\": \"#777777\",\n\t\"editorSuggestWidget.highlightForeground\": \"#666666\",\n\t\"editor.findMatchHighlightBackground\": \"#E6F1FE\",\n\t\"editor.findMatchBackground\": \"#ADD6FF\",\n\t\"minimapSlider.background\": \"#00000005\",\n\t\"minimapSlider.hoverBackground\": \"#00000010\",\n\t\"minimapSlider.activeBackground\": \"#00000012\",\n}\n\nconst darkThemeColors = {\n\t\"editor.background\": colorValues.dark.codeEditorBackground,\n\t// Hide the indent guides...\n\t\"editorIndentGuide.background\": \"#181818\",\n\t\"editorIndentGuide.background1\": \"#181818\",\n\t\"editorIndentGuide.background2\": \"#181818\",\n\t\"editorIndentGuide.background3\": \"#181818\",\n\t\"editorIndentGuide.background4\": \"#181818\",\n\t\"editorIndentGuide.background5\": \"#181818\",\n\t\"editorIndentGuide.background6\": \"#181818\",\n\t// ...except for the active ones\n\t\"editorIndentGuide.activeBackground\": \"#333333\",\n\t\"editorIndentGuide.activeBackground1\": \"#333333\",\n\t\"editorIndentGuide.activeBackground2\": \"#333333\",\n\t\"editorIndentGuide.activeBackground3\": \"#333333\",\n\t\"editorIndentGuide.activeBackground4\": \"#333333\",\n\t\"editorIndentGuide.activeBackground5\": \"#333333\",\n\t\"editorIndentGuide.activeBackground6\": \"#333333\",\n\t\"editorLineNumber.foreground\": \"#333333\",\n\t\"editorLineNumber.activeForeground\": \"#777777\",\n\t\"editor.lineHighlightBackground\": \"#151515\",\n\t\"editor.selectionBackground\": \"#444444\",\n\t\"editor.wordHighlightBackground\": \"#333333\",\n\t\"editor.wordHighlightStrongBackground\": \"#333333\",\n\t\"editorBracketMatch.background\": \"#444444\",\n\t\"editorSuggestWidget.selectedBackground\": \"#333333\",\n\t\"editorSuggestWidget.foreground\": \"#999999\",\n\t\"editorSuggestWidget.highlightForeground\": \"#EEEEEE\",\n\t\"editor.findMatchHighlightBackground\": \"#2E343A\",\n\t\"minimapSlider.background\": \"#FFFFFF10\",\n\t\"minimapSlider.hoverBackground\": \"#FFFFFF15\",\n\t\"minimapSlider.activeBackground\": \"#FFFFFF17\",\n}\n\nconst lightThemeMinimalEditor = {\n\t...lightThemeColors,\n\t\"editor.background\": \"#F3F3F3\",\n\t\"editorIndentGuide.background\": \"#F3F3F3\",\n\t\"editorIndentGuide.background1\": \"#F3F3F3\",\n\t\"editorIndentGuide.background2\": \"#F3F3F3\",\n\t\"editorIndentGuide.background3\": \"#F3F3F3\",\n\t\"editorIndentGuide.background4\": \"#F3F3F3\",\n\t\"editorIndentGuide.background5\": \"#F3F3F3\",\n\t\"editorIndentGuide.background6\": \"#F3F3F3\",\n\t\"editor.lineHighlightBackground\": \"#F3F3F3\",\n}\nconst darkThemeMinimalEditor = {\n\t...darkThemeColors,\n\t\"editor.background\": \"#2B2B2B\",\n\t\"editorIndentGuide.background\": \"#2B2B2B\",\n\t\"editorIndentGuide.background1\": \"#2B2B2B\",\n\t\"editorIndentGuide.background2\": \"#2B2B2B\",\n\t\"editorIndentGuide.background3\": \"#2B2B2B\",\n\t\"editorIndentGuide.background4\": \"#2B2B2B\",\n\t\"editorIndentGuide.background5\": \"#2B2B2B\",\n\t\"editorIndentGuide.background6\": \"#2B2B2B\",\n\t\"editor.lineHighlightBackground\": \"#2B2B2B\",\n\t// Default inactive selection background is very bright and doesn't look\n\t// good, so let's change it to be the same as active selection background.\n\t\"editor.inactiveSelectionBackground\": \"#444444\",\n\t\"editorLineNumber.foreground\": \"#555555\",\n\t\"editorLineNumber.activeForeground\": \"#999999\",\n\t\"editorCursor.foreground\": \"#999999\",\n}\n\nexport const lightMinimal = makeTheme(\n\t\"framer-light-minimal\",\n\t\"vs\",\n\tstripHashtags(lightSyntaxColors),\n\tlightThemeMinimalEditor,\n)\nexport const darkMinimal = makeTheme(\n\t\"framer-dark-minimal\",\n\t\"vs-dark\",\n\tstripHashtags(darkSyntaxColors),\n\tdarkThemeMinimalEditor,\n)\n\nexport const lightMinimalDisabled = makeTheme(\"framer-light-minimal-disabled\", \"vs\", stripHashtags(lightSyntaxColors), {\n\t...lightThemeMinimalEditor,\n\t\"editor.background\": colorValues.light.codeEditorDisabledBackground,\n\t// Disable indent guides completely in a disabled state\n\t\"editorIndentGuide.background\": \"#00000000\",\n\t\"editorIndentGuide.background1\": \"#00000000\",\n\t\"editorIndentGuide.background2\": \"#00000000\",\n\t\"editorIndentGuide.background3\": \"#00000000\",\n\t\"editorIndentGuide.background4\": \"#00000000\",\n\t\"editorIndentGuide.background5\": \"#00000000\",\n\t\"editorIndentGuide.background6\": \"#00000000\",\n\t\"editorIndentGuide.activeBackground\": \"#00000000\",\n\t\"editorIndentGuide.activeBackground1\": \"#00000000\",\n\t\"editorIndentGuide.activeBackground2\": \"#00000000\",\n\t\"editorIndentGuide.activeBackground3\": \"#00000000\",\n\t\"editorIndentGuide.activeBackground4\": \"#00000000\",\n\t\"editorIndentGuide.activeBackground5\": \"#00000000\",\n\t\"editorIndentGuide.activeBackground6\": \"#00000000\",\n\t// Same as \"inactive\" editorLineNumber.foreground, to mimic being disabled.\n\t\"editorLineNumber.activeForeground\": \"#D5D5D5\",\n\t\"editor.selectionBackground\": \"#F3F3F3\",\n})\nexport const darkMinimalDisabled = makeTheme(\n\t\"framer-dark-minimal-disabled\",\n\t\"vs-dark\",\n\tstripHashtags(darkSyntaxColors),\n\t{\n\t\t...darkThemeMinimalEditor,\n\t\t\"editor.background\": colorValues.dark.codeEditorDisabledBackground,\n\t\t// Disable indent guides completely in a disabled state\n\t\t\"editorIndentGuide.background\": \"#00000000\",\n\t\t\"editorIndentGuide.background1\": \"#00000000\",\n\t\t\"editorIndentGuide.background2\": \"#00000000\",\n\t\t\"editorIndentGuide.background3\": \"#00000000\",\n\t\t\"editorIndentGuide.background4\": \"#00000000\",\n\t\t\"editorIndentGuide.background5\": \"#00000000\",\n\t\t\"editorIndentGuide.background6\": \"#00000000\",\n\t\t\"editorIndentGuide.activeBackground\": \"#00000000\",\n\t\t\"editorIndentGuide.activeBackground1\": \"#00000000\",\n\t\t\"editorIndentGuide.activeBackground2\": \"#00000000\",\n\t\t\"editorIndentGuide.activeBackground3\": \"#00000000\",\n\t\t\"editorIndentGuide.activeBackground4\": \"#00000000\",\n\t\t\"editorIndentGuide.activeBackground5\": \"#00000000\",\n\t\t\"editorIndentGuide.activeBackground6\": \"#00000000\",\n\t\t// Same as \"inactive\" editorLineNumber.foreground, to mimic being disabled.\n\t\t\"editorLineNumber.activeForeground\": \"#555555\",\n\t\t\"editor.selectionBackground\": \"#2B2B2B\",\n\t\t// Default inactive selection background is very bright and doesn't look\n\t\t// good, so let's change it to be the same as active selection background.\n\t\t\"editor.inactiveSelectionBackground\": \"#2B2B2B\",\n\t},\n)\n\nexport const light = makeTheme(\"framer-light\", \"vs\", stripHashtags(lightSyntaxColors), lightThemeColors)\nexport const dark = makeTheme(\"framer-dark\", \"vs-dark\", stripHashtags(darkSyntaxColors), darkThemeColors)\n\nexport const lightMinimalInsideModal = makeTheme(\n\t\"framer-light-minimal-inside-modal\",\n\t\"vs\",\n\tstripHashtags({\n\t\t...lightSyntaxColors,\n\t\tgrayFade: \"#999999\",\n\t}),\n\t{\n\t\t...lightThemeColors,\n\t\t\"editor.background\": colorValues.light.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background\": colorValues.light.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background1\": colorValues.light.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background2\": colorValues.light.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background3\": colorValues.light.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background4\": colorValues.light.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background5\": colorValues.light.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background6\": colorValues.light.codeEditorInsideModalBackground,\n\t\t\"editor.lineHighlightBackground\": colorValues.light.codeEditorInsideModalBackground,\n\t\t\"editorLineNumber.foreground\": \"#BBBBBB\",\n\t\t\"editorLineNumber.activeForeground\": \"#999999\",\n\t},\n)\n\nexport const darkMinimalInsideModal = makeTheme(\n\t\"framer-dark-minimal-inside-modal\",\n\t\"vs-dark\",\n\tstripHashtags({\n\t\t...darkSyntaxColors,\n\t\tgrayFade: \"#999999\",\n\t}),\n\t{\n\t\t...darkThemeColors,\n\t\t\"editor.background\": colorValues.dark.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background\": colorValues.dark.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background1\": colorValues.dark.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background2\": colorValues.dark.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background3\": colorValues.dark.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background4\": colorValues.dark.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background5\": colorValues.dark.codeEditorInsideModalBackground,\n\t\t\"editorIndentGuide.background6\": colorValues.dark.codeEditorInsideModalBackground,\n\t\t\"editor.lineHighlightBackground\": colorValues.dark.codeEditorInsideModalBackground,\n\t\t\"editorLineNumber.foreground\": \"#808080\",\n\t\t\"editorLineNumber.activeForeground\": \"#999999\",\n\t},\n)\n\n// @NOTE: keep theme sync with the handoff code highlight in theme.ts\nfunction makeTheme(name: string, base: \"vs\" | \"vs-dark\", colors: any, skinColors: any): string {\n\tmonaco.editor.defineTheme(name, {\n\t\tbase,\n\t\tinherit: true,\n\t\trules: [\n\t\t\t// Default\n\t\t\t{ token: \"\", foreground: colors.default },\n\t\t\t{ token: \"identifier\", foreground: colors.default },\n\t\t\t{ token: \"variable\", foreground: colors.default },\n\t\t\t{ token: \"type\", foreground: colors.default },\n\t\t\t{ token: \"metatag\", foreground: colors.default },\n\t\t\t{ token: \"meta\", foreground: colors.default },\n\t\t\t{ token: \"key\", foreground: colors.default },\n\t\t\t{ token: \"delimiter\", foreground: colors.default },\n\t\t\t{ token: \"meta.object-literal.key\", foreground: colors.default },\n\t\t\t{ token: \"storage.type.function.arrow\", foreground: colors.default },\n\t\t\t{ token: \"attribute.value.html\", foreground: colors.default },\n\t\t\t{ token: \"delimiter.html\", foreground: colors.default },\n\t\t\t{ token: \"attribute.name.css\", foreground: colors.default },\n\n\t\t\t// GrayFade\n\t\t\t{ token: \"annotation\", foreground: colors.grayFade },\n\t\t\t{ token: \"comment\", foreground: colors.grayFade },\n\t\t\t{ token: \"punctuation.definition.comment\", foreground: colors.grayFade },\n\t\t\t{ token: \"prolog\", foreground: colors.grayFade },\n\t\t\t{ token: \"doctype\", foreground: colors.grayFade },\n\t\t\t{ token: \"cdata\", foreground: colors.grayFade },\n\t\t\t{ token: \"regex\", foreground: colors.grayFade },\n\t\t\t{ token: \"important\", foreground: colors.grayFade },\n\n\t\t\t// Gray\n\t\t\t{ token: \"punctuation\", foreground: colors.gray },\n\t\t\t{ token: \"meta.brace\", foreground: colors.gray },\n\t\t\t{ token: \"keyword.operator\", foreground: colors.gray },\n\n\t\t\t// Purple\n\t\t\t{ token: \"string\", foreground: colors.purple },\n\t\t\t{ token: \"punctuation.definition.string\", foreground: colors.purple },\n\t\t\t{ token: \"string.value.json\", foreground: colors.purple },\n\t\t\t{ token: \"metatag\", foreground: colors.purple },\n\t\t\t{ token: \"attribute\", foreground: colors.purple },\n\t\t\t{ token: \"char\", foreground: colors.purple },\n\t\t\t{ token: \"builtin\", foreground: colors.purple },\n\t\t\t{ token: \"inserted\", foreground: colors.purple },\n\t\t\t{ token: \"attribute.value.css\", foreground: colors.purple },\n\n\t\t\t// Purple Fade\n\t\t\t{ token: \"punctuation.definition.template-expression\", foreground: colors.purpleFade },\n\n\t\t\t// Blue\n\t\t\t{ token: \"atrule\", foreground: colors.blue },\n\t\t\t{ token: \"attr-value\", foreground: colors.blue },\n\t\t\t{ token: \"keyword\", foreground: colors.blue },\n\t\t\t{ token: \"variable.other.property\", foreground: colors.blue },\n\n\t\t\t// LightBlue\n\t\t\t{ token: \"entity\", foreground: colors.lightBlue },\n\t\t\t{ token: \"attribute.name.html\", foreground: colors.lightBlue },\n\t\t\t{ token: \"variable.other.object\", foreground: colors.lightBlue },\n\t\t\t{ token: \"support.type.primitive\", foreground: colors.lightBlue },\n\t\t\t{ token: \"string.key.json\", foreground: colors.lightBlue },\n\n\t\t\t// Teal\n\t\t\t{ token: \"storage\", foreground: colors.teal },\n\n\t\t\t// Pink\n\t\t\t{ token: \"variable.language.this.tsx\", foreground: colors.pink },\n\n\t\t\t// Orange\n\t\t\t{ token: \"boolean\", foreground: colors.orange },\n\t\t\t{ token: \"class-name\", foreground: colors.orange },\n\t\t\t{ token: \"constant.language\", foreground: colors.orange },\n\t\t\t{ token: \"property\", foreground: colors.orange },\n\t\t\t{ token: \"number\", foreground: colors.orange },\n\t\t\t{ token: \"constant\", foreground: colors.orange },\n\t\t\t{ token: \"meta.delimiter\", foreground: colors.orange },\n\t\t\t{ token: \"symbol\", foreground: colors.orange },\n\t\t\t{ token: \"deleted\", foreground: colors.orange },\n\n\t\t\t// Yellow\n\t\t\t{ token: \"selector\", foreground: colors.yellow },\n\t\t\t{ token: \"tag\", foreground: colors.yellow },\n\t\t\t{ token: \"entity.name.type\", foreground: colors.yellow },\n\t\t\t{ token: \"entity.name.function\", foreground: colors.yellow },\n\t\t\t{ token: \"entity.name.type.interface\", foreground: colors.yellow },\n\t\t\t{ token: \"entity.name.type.module\", foreground: colors.yellow },\n\t\t\t{ token: \"entity.other.inherited-class\", foreground: colors.yellow },\n\t\t\t{ token: \"support.class\", foreground: colors.yellow },\n\n\t\t\t// Styled\n\t\t\t{ token: \"emphasis\", fontStyle: \"italic\" },\n\t\t\t{ token: \"strong\", fontStyle: \"bold\" },\n\t\t],\n\t\tcolors: skinColors,\n\t})\n\treturn name\n}\n\nfunction stripHashtags(colors: { [key: string]: string }) {\n\tconst result = { ...colors }\n\tfor (const key in result) {\n\t\tconst value = result[key]\n\t\tassert(value, \"Color must be defined\")\n\n\t\tresult[key] = value.slice(1)\n\t}\n\treturn result\n}\n"],
  "mappings": "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",
  "names": ["__decorate", "__param", "_a", "container", "provider", "result", "group", "child", "OutlineModelService", "__decorate", "__param", "editor", "_a", "init_utils", "__decorate", "__param", "__decorate", "__param", "editor", "foreground", "editor", "CancellationTokenSource", "Emitter", "MarkerSeverity", "Position", "Range", "Selection", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__copyProps", "__reExport", "monaco_editor_core_exports", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__copyProps", "__reExport", "monaco_editor_core_exports", "LanguageServiceDefaultsImpl", "optionsDefault", "getMode", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__copyProps", "__reExport", "monaco_editor_core_exports", "LanguageServiceDefaultsImpl", "modeConfigurationDefault", "getMode", "init_actions", "editor", "_a", "_b", "container", "init_actions", "SelectionAnchorController", "editor", "_a", "init_model", "init_actions", "editor", "_a", "editor", "editor", "generateUuid", "size", "_a", "init_platform", "Extensions", "_a", "__decorate", "__param", "RelativePathProvider", "_a", "DefaultDropProvidersFeature", "DefaultPasteProvidersFeature", "__decorate", "__param", "parent", "child", "marker", "stack", "_a", "_b", "_c", "_d", "__decorate", "__param", "editor", "InlineProgressManager", "__decorate", "__param", "MessageController", "editor", "_a", "dispose", "editor", "__decorate", "__param", "PostEditWidget", "editor", "_a", "PostEditWidgetManager", "model", "__decorate", "__param", "CopyPasteController", "editor", "container", "_a", "_b", "_c", "_d", "token", "edits", "init_actions", "editor", "_a", "_b", "CodeActionTriggerSource", "_a", "_a", "_b", "_c", "ApplyCodeActionReason", "__decorate", "__param", "CodeActionKeybindingResolver", "_a", "__decorate", "__param", "LightBulbState", "LightBulbWidget", "_a", "_b", "_c", "_d", "lineNumber", "__decorate", "__param", "container", "_a", "_b", "ActionItemRenderer", "_c", "ActionList", "init_actions", "__decorate", "__param", "ActionWidgetService", "container", "_a", "_b", "CodeActionsState", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "marker", "__decorate", "__param", "CodeActionController", "editor", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "diagnostic", "editor", "init_platform", "provider", "__decorate", "__param", "CodeLensCache", "item", "_a", "editor", "decoration", "_a", "__decorate", "__param", "CodeLensContribution", "_a", "_b", "_c", "promises", "request", "i", "editor", "_a", "__decorate", "__param", "DefaultDocumentColorProviderFeature", "__decorate", "__param", "ColorDetector", "editor", "decoration", "$", "container", "h", "transparent", "__decorate", "__param", "ColorHoverParticipant", "StandaloneColorPickerParticipant", "colorInfo", "__decorate", "__param", "editor", "color", "_a", "_b", "init_actions", "__decorate", "__param", "InlineCompletionsHintsWidget", "editor", "_a", "_b", "_c", "model", "reader", "InlineSuggestionHintsContentWidget", "editor", "__decorate", "__param", "container", "CustomizedMenuWorkbenchToolBar", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "__decorate", "__param", "_a", "_b", "__decorate", "__param", "ContentHoverWidget", "_a", "editor", "container", "size", "_b", "_c", "_d", "HoverParticipantRegistry", "__decorate", "__param", "$", "_a", "_b", "MarkdownHoverParticipant", "$", "_a", "container", "editor", "init_model", "editor", "_a", "_a", "_b", "_c", "__decorate", "__param", "EmbeddedCodeEditorWidget", "editor", "_a", "width", "__decorate", "__param", "editor", "PeekContext", "PeekContextController", "defaultOptions", "PeekViewWidget", "container", "_a", "_b", "basename", "__decorate", "__param", "DataSource", "StringRepresentationProvider", "_a", "basename", "__decorate", "__param", "FileReferencesTemplate", "container", "dirname", "__decorate", "__param", "FileReferencesRenderer", "container", "score", "_a", "basename", "__decorate", "__param", "_a", "ReferenceWidget", "editor", "dirname", "__decorate", "__param", "ReferencesController", "editor", "_a", "_b", "_a", "__decorate", "__param", "SymbolNavigationService", "_a", "_b", "EditorState", "editor", "init_actions", "provider", "model", "position", "_a", "_b", "editor", "accessor", "references", "init_actions", "editor", "_a", "accessor", "__decorate", "__param", "hasTriggerModifier", "InlayHintsController", "editor", "_a", "model", "_b", "noBreakWhitespace", "__decorate", "__param", "InlayHintsHover", "editor", "_a", "editor", "HoverResult", "__decorate", "__param", "$", "EditorHoverStatusBar", "__decorate", "__param", "ContentHoverController", "HoverResult", "editor", "_a", "init_model", "_a", "_b", "$", "editor", "__decorate", "__param", "HoverController", "editor", "mouseEvent", "isHoverSticky", "_a", "_b", "_c", "_d", "__decorate", "__param", "StandaloneColorPickerController", "_a", "editor", "StandaloneColorPickerWidget", "_a", "__decorate", "__param", "init_actions", "editor", "_a", "firstNonWhitespaceIndex", "j", "lenJ", "init_actions", "editor", "init_actions", "__decorate", "__param", "ContextMenuController", "editor", "actions", "editor", "_a", "CursorState", "editor", "_a", "editor", "_a", "editor", "_b", "init_platform", "__decorate", "__param", "DropIntoEditorController", "editor", "_a", "edits", "editor", "_a", "init_model", "init_model", "editor", "len", "editor", "editor", "_a", "_a", "__decorate", "__param", "ContextScopedFindInput", "container", "ContextScopedReplaceInput", "container", "__decorate", "__param", "_a", "_b", "_a", "_b", "expanded", "init_actions", "__decorate", "__param", "editor", "CommonFindController", "_a", "FindController", "editor", "__decorate", "__param", "editor", "size", "_a", "_b", "h", "line", "editor", "_a", "_b", "RangesCollector", "__decorate", "__param", "FoldingController", "editor", "_a", "_b", "options", "foldingModel", "editor", "_a", "editor", "__decorate", "__param", "FormatOnType", "FormatOnPaste", "editor", "__decorate", "__param", "model", "init_utils", "init_model", "editor", "d", "__decorate", "__param", "GhostTextWidget", "editor", "editor", "lines", "isBasicASCII", "containsRTL", "node", "providers", "maxCharCode", "__decorate", "__param", "InlineCompletionsSource", "_a", "_b", "_a", "init_actions", "container", "_a", "sw", "_b", "_c", "editor", "__decorate", "__param", "name", "dirname", "CommentBasedVariableResolver", "__decorate", "__param", "id", "placeholder", "SnippetSession", "editor", "array", "__decorate", "__param", "_defaultOptions", "SnippetController2", "editor", "_a", "model", "__decorate", "__param", "VersionIdChangeReason", "InlineCompletionsModel", "_a", "c", "_b", "tx", "editor", "__decorate", "__param", "score", "SuggestMemoryService", "_a", "__decorate", "__param", "WordContextKey", "_a", "__decorate", "__param", "SuggestAlternatives", "_a", "editor", "column", "editor", "__decorate", "__param", "LineContext", "editor", "SuggestModel", "_a", "_b", "_c", "_d", "_e", "_f", "completions", "wordDistance", "model", "ctx", "editor", "init_actions", "__decorate", "__param", "StatusBarViewItem", "_a", "SuggestWidgetStatus", "container", "__decorate", "__param", "SuggestDetailsWidget", "_a", "_b", "_a", "size", "left", "top", "FileKind", "__decorate", "__param", "_a", "ItemRenderer", "container", "__decorate", "__param", "editor", "_a", "_b", "size", "SuggestWidget", "_c", "_d", "detail", "__decorate", "__param", "_sticky", "SuggestController", "editor", "_a", "_b", "_c", "basename", "editor", "weight", "_a", "editor", "__decorate", "__param", "InlineCompletionsController", "editor", "_a", "_b", "_c", "init_actions", "editor", "_a", "__decorate", "__param", "InlineCompletionsHoverParticipant", "$", "_a", "init_actions", "__decorate", "__param", "GotoDefinitionAtPositionEditorContribution", "editor", "_a", "__decorate", "__param", "MarkerList", "MarkerNavigationService", "__decorate", "__param", "init_actions", "init_actions", "SeverityIcon", "__decorate", "__param", "MessageWidget", "editor", "container", "MarkerNavigationWidget", "basename", "__decorate", "__param", "MarkerController", "editor", "_a", "_b", "_c", "editor", "_a", "HoverFocusBehavior", "editor", "_a", "__decorate", "__param", "$", "MarkerHoverParticipant", "message", "basename", "messageElement", "adjustedLineContent", "__decorate", "__param", "editor", "AutoIndentOnPaste", "editor", "lastNonWhitespaceIndex", "__decorate", "__param", "MoveLinesCommand", "init_actions", "editor", "i", "__decorate", "__param", "DECORATION_CLASS_NAME", "LinkedEditingContribution", "editor", "_a", "commonPrefixLength", "commonSuffixLength", "editor", "accessor", "__decorate", "__param", "LinkDetector", "editor", "relativePath", "decoration", "_a", "editor", "init_actions", "init_model", "__decorate", "__param", "editor", "SelectionHighlighter", "findState", "editor", "init_model", "__decorate", "__param", "GhostTextWidget", "editor", "_a", "init_actions", "__decorate", "__param", "InlineEditHintsWidget", "editor", "_a", "_b", "_c", "model", "InlineEditHintsContentWidget", "editor", "CustomizedMenuWorkbenchToolBar", "StatusBarViewItem", "__decorate", "__param", "StatusBarViewItem", "CustomizedMenuWorkbenchToolBar", "container", "editor", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "__decorate", "__param", "__decorate", "__param", "InlineEditController", "editor", "_a", "_b", "wait", "GhostTextWidget", "wait", "init_actions", "editor", "__decorate", "__param", "InlineEditHoverParticipant", "Context", "ParameterHintState", "editor", "first", "__decorate", "__param", "$", "ParameterHintsWidget", "editor", "Context", "_a", "__decorate", "__param", "ParameterHintsController", "editor", "_a", "editor", "weight", "Context", "init_actions", "init_platform", "__decorate", "__param", "_sticky", "RenameWidget", "_a", "_b", "_c", "_d", "_e", "container", "_a", "_b", "__decorate", "__param", "RenameController", "editor", "_a", "_b", "accessor", "__decorate", "__param", "SectionHeaderDetector", "editor", "_a", "_b", "decoration", "decoration", "_a", "__decorate", "__param", "DocumentSemanticTokensFeature", "ModelSemanticColoring", "__decorate", "__param", "__decorate", "__param", "ViewportSemanticTokensContribution", "editor", "init_actions", "__decorate", "__param", "SmartSelectController", "editor", "_a", "ranges", "editor", "init_actions", "_a", "_b", "__decorate", "__param", "ModelProvider", "Status", "StickyModelProvider", "status", "token", "StickyModelFromCandidateOutlineProvider", "_a", "__decorate", "__param", "editor", "StickyModelFromCandidateIndentationFoldingProvider", "StickyModelFromCandidateSyntaxFoldingProvider", "_b", "__decorate", "__param", "StickyLineCandidateProvider", "editor", "_a", "_b", "init_actions", "__decorate", "__param", "StickyScrollController", "editor", "_a", "position", "_b", "weight", "editor", "_a", "init_actions", "__decorate", "__param", "InlineCompletionResults", "_a", "first", "SuggestInlineCompletions", "editor", "editor", "init_actions", "__decorate", "__param", "Link", "container", "_a", "_b", "$", "EventType", "__decorate", "__param", "BannerController", "_a", "Banner", "Link", "__decorate", "__param", "__decorate", "__param", "UnicodeHighlighter", "decoration", "DocumentUnicodeHighlighter", "decoration", "__decorate", "__param", "UnicodeHighlighterHoverParticipant", "editor", "codePoint", "_a", "__decorate", "__param", "UnusualLineTerminatorsDetector", "basename", "init_model", "__decorate", "__param", "WordHighlighter", "editor", "_a", "_b", "_c", "_d", "currentModels", "currentEditors", "WordHighlighterContribution", "editor", "editor", "_a", "editor", "import_contribution", "editor", "init_platform", "init_platform", "__decorate", "__param", "HelpQuickAccessProvider", "Extensions", "Extensions", "init_model", "_a", "editor", "editor", "_a", "_b", "init_platform", "__decorate", "__param", "StandaloneGotoLineQuickAccessProvider", "_a", "Extensions", "score", "__decorate", "__param", "AbstractGotoSymbolQuickAccessProvider", "editor", "_a", "_b", "updateLastSeparatorLabel", "document", "init_platform", "__decorate", "__param", "StandaloneGotoSymbolQuickAccessProvider", "_a", "Extensions", "init_platform", "init_iconLabels", "_a", "score", "_b", "TriggerAction", "_a", "_b", "__decorate", "__param", "AbstractCommandsQuickAccessProvider", "_a", "_b", "_c", "_d", "score", "commandPicks", "CommandsHistory", "_a", "_b", "__decorate", "__param", "_a", "__decorate", "__param", "StandaloneCommandsQuickAccessProvider", "_a", "GotoLineAction", "Extensions", "__decorate", "__param", "StandaloneReferencesController", "editor", "editor"]
}
