monaco-editor-core 0.55.0-dev-20251008 → 0.55.0-dev-20251009

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.de.js +2 -2
  3. package/esm/nls.messages.es.js +2 -2
  4. package/esm/nls.messages.fr.js +2 -2
  5. package/esm/nls.messages.it.js +2 -2
  6. package/esm/nls.messages.ja.js +2 -2
  7. package/esm/nls.messages.js +1 -1
  8. package/esm/nls.messages.json +1 -1
  9. package/esm/nls.messages.ko.js +2 -2
  10. package/esm/nls.messages.ru.js +2 -2
  11. package/esm/nls.messages.zh-cn.js +2 -2
  12. package/esm/nls.messages.zh-tw.js +2 -2
  13. package/esm/nls.metadata.json +3 -1
  14. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  15. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  16. package/esm/vs/base/browser/ui/toolbar/toolbar.js +4 -1
  17. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  18. package/esm/vs/base/common/codiconsLibrary.js +9 -1
  19. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  20. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +5 -8
  21. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
  22. package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js +36 -31
  23. package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js.map +1 -1
  24. package/esm/vs/editor/common/core/text/abstractText.js +5 -1
  25. package/esm/vs/editor/common/core/text/abstractText.js.map +1 -1
  26. package/esm/vs/editor/common/model/tokens/treeSitter/tokenStore.js +2 -1
  27. package/esm/vs/editor/common/model/tokens/treeSitter/tokenStore.js.map +1 -1
  28. package/esm/vs/editor/contrib/find/browser/findController.js +54 -61
  29. package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
  30. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +5 -8
  31. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
  32. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +18 -23
  33. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  34. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  35. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +10 -12
  36. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js.map +1 -1
  37. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +9 -13
  38. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js.map +1 -1
  39. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +8 -1
  40. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  41. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
  42. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  43. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  44. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  45. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  46. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  47. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  48. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  49. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  50. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  51. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +10 -12
  52. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
  53. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  54. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  55. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +5 -5
  56. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  57. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  58. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  59. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  60. package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
  61. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  62. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  63. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  64. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  65. package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
  66. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  67. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +18 -24
  68. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
  69. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +15 -18
  70. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  71. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  72. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  73. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  74. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  75. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  76. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +7 -6
  77. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js.map +1 -1
  78. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -32
  79. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
  80. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  81. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  82. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  83. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
  84. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  85. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  86. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  87. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  88. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  89. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  90. package/esm/vs/platform/actions/common/menuService.js +2 -2
  91. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  92. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  93. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  94. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  95. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  96. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  97. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  98. package/esm/vs/platform/list/browser/listService.js +27 -27
  99. package/esm/vs/platform/markers/common/markerService.js +2 -2
  100. package/esm/vs/platform/markers/common/markers.js +6 -6
  101. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
  102. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  103. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  104. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  105. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  106. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  107. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  108. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  109. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  110. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  111. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  112. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  113. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  114. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  115. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  116. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  117. package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
  118. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  119. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  120. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  121. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  122. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  123. package/package.json +2 -2
  124. package/version.txt +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/find/browser/findController.ts"],"names":[],"mappings":"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","file":"findController.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","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 *--------------------------------------------------------------------------------------------*/\n\nimport { Delayer } from '../../../../base/common/async.js';\nimport { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorCommand, EditorContributionInstantiation, MultiEditorAction, registerEditorAction, registerEditorCommand, registerEditorContribution, registerMultiEditorAction, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { overviewRulerRangeHighlight } from '../../../common/core/editorColorRegistry.js';\nimport { IRange } from '../../../common/core/range.js';\nimport { IEditorContribution } from '../../../common/editorCommon.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, FindReplaceStateChangedEvent, INewFindReplaceState } from './findState.js';\nimport { FindWidget, IFindController } 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, IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextViewService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IHoverService } from '../../../../platform/hover/browser/hover.js';\nimport { FindWidgetSearchHistory } from './findWidgetSearchHistory.js';\nimport { ReplaceWidgetHistory } from './replaceWidgetHistory.js';\n\nconst SEARCH_STRING_MAX_LENGTH = 524288;\n\nexport function getSelectionSearchString(editor: ICodeEditor, seedSearchStringFromSelection: 'single' | 'multiple' = 'single', seedSearchStringFromNonEmptySelection: boolean = false): string | null {\n\tif (!editor.hasModel()) {\n\t\treturn null;\n\t}\n\n\tconst selection = editor.getSelection();\n\t// if selection spans multiple lines, default search string to empty\n\n\tif ((seedSearchStringFromSelection === 'single' && selection.startLineNumber === selection.endLineNumber)\n\t\t|| seedSearchStringFromSelection === 'multiple') {\n\t\tif (selection.isEmpty()) {\n\t\t\tconst wordAtPosition = editor.getConfiguredWordAtPosition(selection.getStartPosition());\n\t\t\tif (wordAtPosition && (false === seedSearchStringFromNonEmptySelection)) {\n\t\t\t\treturn wordAtPosition.word;\n\t\t\t}\n\t\t} else {\n\t\t\tif (editor.getModel().getValueLengthInRange(selection) < SEARCH_STRING_MAX_LENGTH) {\n\t\t\t\treturn editor.getModel().getValueInRange(selection);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport const enum FindStartFocusAction {\n\tNoFocusChange,\n\tFocusFindInput,\n\tFocusReplaceInput\n}\n\nexport interface IFindStartOptions {\n\tforceRevealReplace: boolean;\n\tseedSearchStringFromSelection: 'none' | 'single' | 'multiple';\n\tseedSearchStringFromNonEmptySelection: boolean;\n\tseedSearchStringFromGlobalClipboard: boolean;\n\tshouldFocus: FindStartFocusAction;\n\tshouldAnimate: boolean;\n\tupdateSearchScope: boolean;\n\tloop: boolean;\n}\n\nexport interface IFindStartArguments {\n\tsearchString?: string;\n\treplaceString?: string;\n\tisRegex?: boolean;\n\tmatchWholeWord?: boolean;\n\tisCaseSensitive?: boolean;\n\tpreserveCase?: boolean;\n\tfindInSelection?: boolean;\n}\n\nexport class CommonFindController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.findController';\n\n\tprotected _editor: ICodeEditor;\n\tprivate readonly _findWidgetVisible: IContextKey<boolean>;\n\tprotected _state: FindReplaceState;\n\tprotected _updateHistoryDelayer: Delayer<void>;\n\tprivate _model: FindModelBoundToEditorModel | null;\n\tprotected readonly _storageService: IStorageService;\n\tprivate readonly _clipboardService: IClipboardService;\n\tprotected readonly _contextKeyService: IContextKeyService;\n\tprotected readonly _notificationService: INotificationService;\n\tprotected readonly _hoverService: IHoverService;\n\n\tget editor() {\n\t\treturn this._editor;\n\t}\n\n\tpublic static get(editor: ICodeEditor): CommonFindController | null {\n\t\treturn editor.getContribution<CommonFindController>(CommonFindController.ID);\n\t}\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IStorageService storageService: IStorageService,\n\t\t@IClipboardService clipboardService: IClipboardService,\n\t\t@INotificationService notificationService: INotificationService,\n\t\t@IHoverService hoverService: IHoverService\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._findWidgetVisible = CONTEXT_FIND_WIDGET_VISIBLE.bindTo(contextKeyService);\n\t\tthis._contextKeyService = contextKeyService;\n\t\tthis._storageService = storageService;\n\t\tthis._clipboardService = clipboardService;\n\t\tthis._notificationService = notificationService;\n\t\tthis._hoverService = hoverService;\n\n\t\tthis._updateHistoryDelayer = new Delayer<void>(500);\n\t\tthis._state = this._register(new FindReplaceState());\n\t\tthis.loadQueryState();\n\t\tthis._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n\n\t\tthis._model = null;\n\n\t\tthis._register(this._editor.onDidChangeModel(() => {\n\t\t\tconst shouldRestartFind = (this._editor.getModel() && this._state.isRevealed);\n\n\t\t\tthis.disposeModel();\n\n\t\t\tthis._state.change({\n\t\t\t\tsearchScope: null,\n\t\t\t\tmatchCase: this._storageService.getBoolean('editor.matchCase', StorageScope.WORKSPACE, false),\n\t\t\t\twholeWord: this._storageService.getBoolean('editor.wholeWord', StorageScope.WORKSPACE, false),\n\t\t\t\tisRegex: this._storageService.getBoolean('editor.isRegex', StorageScope.WORKSPACE, false),\n\t\t\t\tpreserveCase: this._storageService.getBoolean('editor.preserveCase', StorageScope.WORKSPACE, false)\n\t\t\t}, false);\n\n\t\t\tif (shouldRestartFind) {\n\t\t\t\tthis._start({\n\t\t\t\t\tforceRevealReplace: false,\n\t\t\t\t\tseedSearchStringFromSelection: 'none',\n\t\t\t\t\tseedSearchStringFromNonEmptySelection: false,\n\t\t\t\t\tseedSearchStringFromGlobalClipboard: false,\n\t\t\t\t\tshouldFocus: FindStartFocusAction.NoFocusChange,\n\t\t\t\t\tshouldAnimate: false,\n\t\t\t\t\tupdateSearchScope: false,\n\t\t\t\t\tloop: this._editor.getOption(EditorOption.find).loop\n\t\t\t\t});\n\t\t\t}\n\t\t}));\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis.disposeModel();\n\t\tsuper.dispose();\n\t}\n\n\tprivate disposeModel(): void {\n\t\tif (this._model) {\n\t\t\tthis._model.dispose();\n\t\t\tthis._model = null;\n\t\t}\n\t}\n\n\tprivate _onStateChanged(e: FindReplaceStateChangedEvent): void {\n\t\tthis.saveQueryState(e);\n\n\t\tif (e.isRevealed) {\n\t\t\tif (this._state.isRevealed) {\n\t\t\t\tthis._findWidgetVisible.set(true);\n\t\t\t} else {\n\t\t\t\tthis._findWidgetVisible.reset();\n\t\t\t\tthis.disposeModel();\n\t\t\t}\n\t\t}\n\t\tif (e.searchString) {\n\t\t\tthis.setGlobalBufferTerm(this._state.searchString);\n\t\t}\n\t}\n\n\tprivate saveQueryState(e: FindReplaceStateChangedEvent) {\n\t\tif (e.isRegex) {\n\t\t\tthis._storageService.store('editor.isRegex', this._state.actualIsRegex, StorageScope.WORKSPACE, StorageTarget.MACHINE);\n\t\t}\n\t\tif (e.wholeWord) {\n\t\t\tthis._storageService.store('editor.wholeWord', this._state.actualWholeWord, StorageScope.WORKSPACE, StorageTarget.MACHINE);\n\t\t}\n\t\tif (e.matchCase) {\n\t\t\tthis._storageService.store('editor.matchCase', this._state.actualMatchCase, StorageScope.WORKSPACE, StorageTarget.MACHINE);\n\t\t}\n\t\tif (e.preserveCase) {\n\t\t\tthis._storageService.store('editor.preserveCase', this._state.actualPreserveCase, StorageScope.WORKSPACE, StorageTarget.MACHINE);\n\t\t}\n\t}\n\n\tprivate loadQueryState() {\n\t\tthis._state.change({\n\t\t\tmatchCase: this._storageService.getBoolean('editor.matchCase', StorageScope.WORKSPACE, this._state.matchCase),\n\t\t\twholeWord: this._storageService.getBoolean('editor.wholeWord', StorageScope.WORKSPACE, this._state.wholeWord),\n\t\t\tisRegex: this._storageService.getBoolean('editor.isRegex', StorageScope.WORKSPACE, this._state.isRegex),\n\t\t\tpreserveCase: this._storageService.getBoolean('editor.preserveCase', StorageScope.WORKSPACE, this._state.preserveCase)\n\t\t}, false);\n\t}\n\n\tpublic isFindInputFocused(): boolean {\n\t\treturn !!CONTEXT_FIND_INPUT_FOCUSED.getValue(this._contextKeyService);\n\t}\n\n\tpublic getState(): FindReplaceState {\n\t\treturn this._state;\n\t}\n\n\tpublic closeFindWidget(): void {\n\t\tthis._state.change({\n\t\t\tisRevealed: false,\n\t\t\tsearchScope: null\n\t\t}, false);\n\t\tthis._editor.focus();\n\t}\n\n\tpublic toggleCaseSensitive(): void {\n\t\tthis._state.change({ matchCase: !this._state.matchCase }, false);\n\t\tif (!this._state.isRevealed) {\n\t\t\tthis.highlightFindOptions();\n\t\t}\n\t}\n\n\tpublic toggleWholeWords(): void {\n\t\tthis._state.change({ wholeWord: !this._state.wholeWord }, false);\n\t\tif (!this._state.isRevealed) {\n\t\t\tthis.highlightFindOptions();\n\t\t}\n\t}\n\n\tpublic toggleRegex(): void {\n\t\tthis._state.change({ isRegex: !this._state.isRegex }, false);\n\t\tif (!this._state.isRevealed) {\n\t\t\tthis.highlightFindOptions();\n\t\t}\n\t}\n\n\tpublic togglePreserveCase(): void {\n\t\tthis._state.change({ preserveCase: !this._state.preserveCase }, false);\n\t\tif (!this._state.isRevealed) {\n\t\t\tthis.highlightFindOptions();\n\t\t}\n\t}\n\n\tpublic toggleSearchScope(): void {\n\t\tif (this._state.searchScope) {\n\t\t\tthis._state.change({ searchScope: null }, true);\n\t\t} else {\n\t\t\tif (this._editor.hasModel()) {\n\t\t\t\tlet selections = this._editor.getSelections();\n\t\t\t\tselections = selections.map(selection => {\n\t\t\t\t\tif (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n\t\t\t\t\t\tselection = selection.setEndPosition(\n\t\t\t\t\t\t\tselection.endLineNumber - 1,\n\t\t\t\t\t\t\tthis._editor.getModel()!.getLineMaxColumn(selection.endLineNumber - 1)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!selection.isEmpty()) {\n\t\t\t\t\t\treturn selection;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}).filter((element): element is Selection => !!element);\n\n\t\t\t\tif (selections.length) {\n\t\t\t\t\tthis._state.change({ searchScope: selections }, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic setSearchString(searchString: string): void {\n\t\tif (this._state.isRegex) {\n\t\t\tsearchString = strings.escapeRegExpCharacters(searchString);\n\t\t}\n\t\tthis._state.change({ searchString: searchString }, false);\n\t}\n\n\tpublic highlightFindOptions(ignoreWhenVisible: boolean = false): void {\n\t\t// overwritten in subclass\n\t}\n\n\tprotected async _start(opts: IFindStartOptions, newState?: INewFindReplaceState): Promise<void> {\n\t\tthis.disposeModel();\n\n\t\tif (!this._editor.hasModel()) {\n\t\t\t// cannot do anything with an editor that doesn't have a model...\n\t\t\treturn;\n\t\t}\n\n\t\tconst stateChanges: INewFindReplaceState = {\n\t\t\t...newState,\n\t\t\tisRevealed: true\n\t\t};\n\n\t\tif (opts.seedSearchStringFromSelection === 'single') {\n\t\t\tconst selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection, opts.seedSearchStringFromNonEmptySelection);\n\t\t\tif (selectionSearchString) {\n\t\t\t\tif (this._state.isRegex) {\n\t\t\t\t\tstateChanges.searchString = strings.escapeRegExpCharacters(selectionSearchString);\n\t\t\t\t} else {\n\t\t\t\t\tstateChanges.searchString = selectionSearchString;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (opts.seedSearchStringFromSelection === 'multiple' && !opts.updateSearchScope) {\n\t\t\tconst selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection);\n\t\t\tif (selectionSearchString) {\n\t\t\t\tstateChanges.searchString = selectionSearchString;\n\t\t\t}\n\t\t}\n\n\t\tif (!stateChanges.searchString && opts.seedSearchStringFromGlobalClipboard) {\n\t\t\tconst selectionSearchString = await this.getGlobalBufferTerm();\n\n\t\t\tif (!this._editor.hasModel()) {\n\t\t\t\t// the editor has lost its model in the meantime\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (selectionSearchString) {\n\t\t\t\tstateChanges.searchString = selectionSearchString;\n\t\t\t}\n\t\t}\n\n\t\t// Overwrite isReplaceRevealed\n\t\tif (opts.forceRevealReplace || stateChanges.isReplaceRevealed) {\n\t\t\tstateChanges.isReplaceRevealed = true;\n\t\t} else if (!this._findWidgetVisible.get()) {\n\t\t\tstateChanges.isReplaceRevealed = false;\n\t\t}\n\n\t\tif (opts.updateSearchScope) {\n\t\t\tconst currentSelections = this._editor.getSelections();\n\t\t\tif (currentSelections.some(selection => !selection.isEmpty())) {\n\t\t\t\tstateChanges.searchScope = currentSelections;\n\t\t\t}\n\t\t}\n\n\t\tstateChanges.loop = opts.loop;\n\n\t\tthis._state.change(stateChanges, false);\n\n\t\tif (!this._model) {\n\t\t\tthis._model = new FindModelBoundToEditorModel(this._editor, this._state);\n\t\t}\n\t}\n\n\tpublic start(opts: IFindStartOptions, newState?: INewFindReplaceState): Promise<void> {\n\t\treturn this._start(opts, newState);\n\t}\n\n\tpublic moveToNextMatch(): boolean {\n\t\tif (this._model) {\n\t\t\tthis._model.moveToNextMatch();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic moveToPrevMatch(): boolean {\n\t\tif (this._model) {\n\t\t\tthis._model.moveToPrevMatch();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic goToMatch(index: number): boolean {\n\t\tif (this._model) {\n\t\t\tthis._model.moveToMatch(index);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic replace(): boolean {\n\t\tif (this._model) {\n\t\t\tthis._model.replace();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic replaceAll(): boolean {\n\t\tif (this._model) {\n\t\t\tif (this._editor.getModel()?.isTooLargeForHeapOperation()) {\n\t\t\t\tthis._notificationService.warn(nls.localize('too.large.for.replaceall', \"The file is too large to perform a replace all operation.\"));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._model.replaceAll();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic selectAllMatches(): boolean {\n\t\tif (this._model) {\n\t\t\tthis._model.selectAllMatches();\n\t\t\tthis._editor.focus();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic async getGlobalBufferTerm(): Promise<string> {\n\t\tif (this._editor.getOption(EditorOption.find).globalFindClipboard\n\t\t\t&& this._editor.hasModel()\n\t\t\t&& !this._editor.getModel().isTooLargeForSyncing()\n\t\t) {\n\t\t\treturn this._clipboardService.readFindText();\n\t\t}\n\t\treturn '';\n\t}\n\n\tpublic setGlobalBufferTerm(text: string): void {\n\t\tif (this._editor.getOption(EditorOption.find).globalFindClipboard\n\t\t\t&& this._editor.hasModel()\n\t\t\t&& !this._editor.getModel().isTooLargeForSyncing()\n\t\t) {\n\t\t\t// intentionally not awaited\n\t\t\tthis._clipboardService.writeFindText(text);\n\t\t}\n\t}\n}\n\nexport class FindController extends CommonFindController implements IFindController {\n\n\tprivate _widget: FindWidget | null;\n\tprivate _findOptionsWidget: FindOptionsWidget | null;\n\tprivate _findWidgetSearchHistory: FindWidgetSearchHistory;\n\tprivate _replaceWidgetHistory: ReplaceWidgetHistory;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IContextViewService private readonly _contextViewService: IContextViewService,\n\t\t@IContextKeyService _contextKeyService: IContextKeyService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@INotificationService notificationService: INotificationService,\n\t\t@IStorageService _storageService: IStorageService,\n\t\t@IClipboardService clipboardService: IClipboardService,\n\t\t@IHoverService hoverService: IHoverService,\n\t) {\n\t\tsuper(editor, _contextKeyService, _storageService, clipboardService, notificationService, hoverService);\n\t\tthis._widget = null;\n\t\tthis._findOptionsWidget = null;\n\t\tthis._findWidgetSearchHistory = FindWidgetSearchHistory.getOrCreate(_storageService);\n\t\tthis._replaceWidgetHistory = ReplaceWidgetHistory.getOrCreate(_storageService);\n\t}\n\n\tprotected override async _start(opts: IFindStartOptions, newState?: INewFindReplaceState): Promise<void> {\n\t\tif (!this._widget) {\n\t\t\tthis._createFindWidget();\n\t\t}\n\n\t\tconst selection = this._editor.getSelection();\n\t\tlet updateSearchScope = false;\n\n\t\tswitch (this._editor.getOption(EditorOption.find).autoFindInSelection) {\n\t\t\tcase 'always':\n\t\t\t\tupdateSearchScope = true;\n\t\t\t\tbreak;\n\t\t\tcase 'never':\n\t\t\t\tupdateSearchScope = false;\n\t\t\t\tbreak;\n\t\t\tcase 'multiline': {\n\t\t\t\tconst isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\n\t\t\t\tupdateSearchScope = isSelectionMultipleLine;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\topts.updateSearchScope = opts.updateSearchScope || updateSearchScope;\n\n\t\tawait super._start(opts, newState);\n\n\t\tif (this._widget) {\n\t\t\tif (opts.shouldFocus === FindStartFocusAction.FocusReplaceInput) {\n\t\t\t\tthis._widget.focusReplaceInput();\n\t\t\t} else if (opts.shouldFocus === FindStartFocusAction.FocusFindInput) {\n\t\t\t\tthis._widget.focusFindInput();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic override highlightFindOptions(ignoreWhenVisible: boolean = false): void {\n\t\tif (!this._widget) {\n\t\t\tthis._createFindWidget();\n\t\t}\n\t\tif (this._state.isRevealed && !ignoreWhenVisible) {\n\t\t\tthis._widget!.highlightFindOptions();\n\t\t} else {\n\t\t\tthis._findOptionsWidget!.highlightFindOptions();\n\t\t}\n\t}\n\n\tprivate _createFindWidget() {\n\t\tthis._widget = this._register(new FindWidget(this._editor, this, this._state, this._contextViewService, this._keybindingService, this._contextKeyService, this._hoverService, this._findWidgetSearchHistory, this._replaceWidgetHistory));\n\t\tthis._findOptionsWidget = this._register(new FindOptionsWidget(this._editor, this._state, this._keybindingService));\n\t}\n\n\tsaveViewState(): any {\n\t\treturn this._widget?.getViewState();\n\t}\n\n\trestoreViewState(state: any): void {\n\t\tthis._widget?.setViewState(state);\n\t}\n}\n\nexport const StartFindAction = registerMultiEditorAction(new MultiEditorAction({\n\tid: FIND_IDS.StartFindAction,\n\tlabel: nls.localize2('startFindAction', \"Find\"),\n\tprecondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\n\tkbOpts: {\n\t\tkbExpr: null,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyF,\n\t\tweight: KeybindingWeight.EditorContrib\n\t},\n\tmenuOpts: {\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '3_find',\n\t\ttitle: nls.localize({ key: 'miFind', comment: ['&& denotes a mnemonic'] }, \"&&Find\"),\n\t\torder: 1\n\t}\n}));\n\nStartFindAction.addImplementation(0, (accessor: ServicesAccessor, editor: ICodeEditor, args: any): boolean | Promise<void> => {\n\tconst controller = CommonFindController.get(editor);\n\tif (!controller) {\n\t\treturn false;\n\t}\n\treturn controller.start({\n\t\tforceRevealReplace: false,\n\t\tseedSearchStringFromSelection: editor.getOption(EditorOption.find).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n\t\tseedSearchStringFromNonEmptySelection: editor.getOption(EditorOption.find).seedSearchStringFromSelection === 'selection',\n\t\tseedSearchStringFromGlobalClipboard: editor.getOption(EditorOption.find).globalFindClipboard,\n\t\tshouldFocus: FindStartFocusAction.FocusFindInput,\n\t\tshouldAnimate: true,\n\t\tupdateSearchScope: false,\n\t\tloop: editor.getOption(EditorOption.find).loop\n\t});\n});\n\nconst findArgDescription = {\n\tdescription: 'Open a new In-Editor Find Widget.',\n\targs: [{\n\t\tname: 'Open a new In-Editor Find Widget args',\n\t\tschema: {\n\t\t\tproperties: {\n\t\t\t\tsearchString: { type: 'string' },\n\t\t\t\treplaceString: { type: 'string' },\n\t\t\t\tisRegex: { type: 'boolean' },\n\t\t\t\tmatchWholeWord: { type: 'boolean' },\n\t\t\t\tisCaseSensitive: { type: 'boolean' },\n\t\t\t\tpreserveCase: { type: 'boolean' },\n\t\t\t\tfindInSelection: { type: 'boolean' },\n\t\t\t}\n\t\t}\n\t}]\n} as const;\n\nexport class StartFindWithArgsAction extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.StartFindWithArgs,\n\t\t\tlabel: nls.localize2('startFindWithArgsAction', \"Find with Arguments\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: null,\n\t\t\t\tprimary: 0,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmetadata: findArgDescription\n\t\t});\n\t}\n\n\tpublic async run(accessor: ServicesAccessor, editor: ICodeEditor, args?: IFindStartArguments): Promise<void> {\n\t\tconst controller = CommonFindController.get(editor);\n\t\tif (controller) {\n\t\t\tconst newState: INewFindReplaceState = args ? {\n\t\t\t\tsearchString: args.searchString,\n\t\t\t\treplaceString: args.replaceString,\n\t\t\t\tisReplaceRevealed: args.replaceString !== undefined,\n\t\t\t\tisRegex: args.isRegex,\n\t\t\t\t// isRegexOverride: args.regexOverride,\n\t\t\t\twholeWord: args.matchWholeWord,\n\t\t\t\t// wholeWordOverride: args.wholeWordOverride,\n\t\t\t\tmatchCase: args.isCaseSensitive,\n\t\t\t\t// matchCaseOverride: args.matchCaseOverride,\n\t\t\t\tpreserveCase: args.preserveCase,\n\t\t\t\t// preserveCaseOverride: args.preserveCaseOverride,\n\t\t\t} : {};\n\n\t\t\tawait controller.start({\n\t\t\t\tforceRevealReplace: false,\n\t\t\t\tseedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(EditorOption.find).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n\t\t\t\tseedSearchStringFromNonEmptySelection: editor.getOption(EditorOption.find).seedSearchStringFromSelection === 'selection',\n\t\t\t\tseedSearchStringFromGlobalClipboard: true,\n\t\t\t\tshouldFocus: FindStartFocusAction.FocusFindInput,\n\t\t\t\tshouldAnimate: true,\n\t\t\t\tupdateSearchScope: args?.findInSelection || false,\n\t\t\t\tloop: editor.getOption(EditorOption.find).loop\n\t\t\t}, newState);\n\n\t\t\tcontroller.setGlobalBufferTerm(controller.getState().searchString);\n\t\t}\n\t}\n}\n\nexport class StartFindWithSelectionAction extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.StartFindWithSelection,\n\t\t\tlabel: nls.localize2('startFindWithSelectionAction', \"Find with Selection\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: null,\n\t\t\t\tprimary: 0,\n\t\t\t\tmac: {\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyE,\n\t\t\t\t},\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic async run(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {\n\t\tconst controller = CommonFindController.get(editor);\n\t\tif (controller) {\n\t\t\tawait controller.start({\n\t\t\t\tforceRevealReplace: false,\n\t\t\t\tseedSearchStringFromSelection: 'multiple',\n\t\t\t\tseedSearchStringFromNonEmptySelection: false,\n\t\t\t\tseedSearchStringFromGlobalClipboard: false,\n\t\t\t\tshouldFocus: FindStartFocusAction.NoFocusChange,\n\t\t\t\tshouldAnimate: true,\n\t\t\t\tupdateSearchScope: false,\n\t\t\t\tloop: editor.getOption(EditorOption.find).loop\n\t\t\t});\n\n\t\t\tcontroller.setGlobalBufferTerm(controller.getState().searchString);\n\t\t}\n\t}\n}\nexport abstract class MatchFindAction extends EditorAction {\n\tpublic async run(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {\n\t\tconst controller = CommonFindController.get(editor);\n\t\tif (controller && !this._run(controller)) {\n\t\t\tawait controller.start({\n\t\t\t\tforceRevealReplace: false,\n\t\t\t\tseedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(EditorOption.find).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n\t\t\t\tseedSearchStringFromNonEmptySelection: editor.getOption(EditorOption.find).seedSearchStringFromSelection === 'selection',\n\t\t\t\tseedSearchStringFromGlobalClipboard: true,\n\t\t\t\tshouldFocus: FindStartFocusAction.NoFocusChange,\n\t\t\t\tshouldAnimate: true,\n\t\t\t\tupdateSearchScope: false,\n\t\t\t\tloop: editor.getOption(EditorOption.find).loop\n\t\t\t});\n\t\t\tthis._run(controller);\n\t\t}\n\t}\n\n\tprotected abstract _run(controller: CommonFindController): boolean;\n}\n\nexport class NextMatchFindAction extends MatchFindAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.NextMatchFindAction,\n\t\t\tlabel: nls.localize2('findNextMatchAction', \"Find Next\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: [{\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyCode.F3,\n\t\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyCode.KeyG, secondary: [KeyCode.F3] },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}, {\n\t\t\t\tkbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\n\t\t\t\tprimary: KeyCode.Enter,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}]\n\t\t});\n\t}\n\n\tprotected _run(controller: CommonFindController): boolean {\n\t\tconst result = controller.moveToNextMatch();\n\t\tif (result) {\n\t\t\tcontroller.editor.pushUndoStop();\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\n\nexport class PreviousMatchFindAction extends MatchFindAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.PreviousMatchFindAction,\n\t\t\tlabel: nls.localize2('findPreviousMatchAction', \"Find Previous\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: [{\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyMod.Shift | KeyCode.F3,\n\t\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyG, secondary: [KeyMod.Shift | KeyCode.F3] },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}, {\n\t\t\t\tkbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\n\t\t\t\tprimary: KeyMod.Shift | KeyCode.Enter,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t\t]\n\t\t});\n\t}\n\n\tprotected _run(controller: CommonFindController): boolean {\n\t\treturn controller.moveToPrevMatch();\n\t}\n}\n\nexport class MoveToMatchFindAction extends EditorAction {\n\n\tprivate _highlightDecorations: string[] = [];\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.GoToMatchFindAction,\n\t\t\tlabel: nls.localize2('findMatchAction.goToMatch', \"Go to Match...\"),\n\t\t\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void | Promise<void> {\n\t\tconst controller = CommonFindController.get(editor);\n\t\tif (!controller) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst matchesCount = controller.getState().matchesCount;\n\t\tif (matchesCount < 1) {\n\t\t\tconst notificationService = accessor.get(INotificationService);\n\t\t\tnotificationService.notify({\n\t\t\t\tseverity: Severity.Warning,\n\t\t\t\tmessage: nls.localize('findMatchAction.noResults', \"No matches. Try searching for something else.\")\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst quickInputService = accessor.get(IQuickInputService);\n\t\tconst disposables = new DisposableStore();\n\t\tconst inputBox = disposables.add(quickInputService.createInputBox());\n\t\tinputBox.placeholder = nls.localize('findMatchAction.inputPlaceHolder', \"Type a number to go to a specific match (between 1 and {0})\", matchesCount);\n\n\t\tconst toFindMatchIndex = (value: string): number | undefined => {\n\t\t\tconst index = parseInt(value);\n\t\t\tif (isNaN(index)) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst matchCount = controller.getState().matchesCount;\n\t\t\tif (index > 0 && index <= matchCount) {\n\t\t\t\treturn index - 1; // zero based\n\t\t\t} else if (index < 0 && index >= -matchCount) {\n\t\t\t\treturn matchCount + index;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t};\n\n\t\tconst updatePickerAndEditor = (value: string) => {\n\t\t\tconst index = toFindMatchIndex(value);\n\t\t\tif (typeof index === 'number') {\n\t\t\t\t// valid\n\t\t\t\tinputBox.validationMessage = undefined;\n\t\t\t\tcontroller.goToMatch(index);\n\t\t\t\tconst currentMatch = controller.getState().currentMatch;\n\t\t\t\tif (currentMatch) {\n\t\t\t\t\tthis.addDecorations(editor, currentMatch);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tinputBox.validationMessage = nls.localize('findMatchAction.inputValidationMessage', \"Please type a number between 1 and {0}\", controller.getState().matchesCount);\n\t\t\t\tthis.clearDecorations(editor);\n\t\t\t}\n\t\t};\n\t\tdisposables.add(inputBox.onDidChangeValue(value => {\n\t\t\tupdatePickerAndEditor(value);\n\t\t}));\n\n\t\tdisposables.add(inputBox.onDidAccept(() => {\n\t\t\tconst index = toFindMatchIndex(inputBox.value);\n\t\t\tif (typeof index === 'number') {\n\t\t\t\tcontroller.goToMatch(index);\n\t\t\t\tinputBox.hide();\n\t\t\t} else {\n\t\t\t\tinputBox.validationMessage = nls.localize('findMatchAction.inputValidationMessage', \"Please type a number between 1 and {0}\", controller.getState().matchesCount);\n\t\t\t}\n\t\t}));\n\n\t\tdisposables.add(inputBox.onDidHide(() => {\n\t\t\tthis.clearDecorations(editor);\n\t\t\tdisposables.dispose();\n\t\t}));\n\n\t\tinputBox.show();\n\t}\n\n\tprivate clearDecorations(editor: ICodeEditor): void {\n\t\teditor.changeDecorations(changeAccessor => {\n\t\t\tthis._highlightDecorations = changeAccessor.deltaDecorations(this._highlightDecorations, []);\n\t\t});\n\t}\n\n\tprivate addDecorations(editor: ICodeEditor, range: IRange): void {\n\t\teditor.changeDecorations(changeAccessor => {\n\t\t\tthis._highlightDecorations = changeAccessor.deltaDecorations(this._highlightDecorations, [\n\t\t\t\t{\n\t\t\t\t\trange,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tdescription: 'find-match-quick-access-range-highlight',\n\t\t\t\t\t\tclassName: 'rangeHighlight',\n\t\t\t\t\t\tisWholeLine: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\trange,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tdescription: 'find-match-quick-access-range-highlight-overview',\n\t\t\t\t\t\toverviewRuler: {\n\t\t\t\t\t\t\tcolor: themeColorFromId(overviewRulerRangeHighlight),\n\t\t\t\t\t\t\tposition: OverviewRulerLane.Full\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]);\n\t\t});\n\t}\n}\n\nexport abstract class SelectionMatchFindAction extends EditorAction {\n\tpublic async run(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {\n\t\tconst controller = CommonFindController.get(editor);\n\t\tif (!controller) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectionSearchString = getSelectionSearchString(editor, 'single', false);\n\t\tif (selectionSearchString) {\n\t\t\tcontroller.setSearchString(selectionSearchString);\n\t\t}\n\t\tif (!this._run(controller)) {\n\t\t\tawait controller.start({\n\t\t\t\tforceRevealReplace: false,\n\t\t\t\tseedSearchStringFromSelection: 'none',\n\t\t\t\tseedSearchStringFromNonEmptySelection: false,\n\t\t\t\tseedSearchStringFromGlobalClipboard: false,\n\t\t\t\tshouldFocus: FindStartFocusAction.NoFocusChange,\n\t\t\t\tshouldAnimate: true,\n\t\t\t\tupdateSearchScope: false,\n\t\t\t\tloop: editor.getOption(EditorOption.find).loop\n\t\t\t});\n\t\t\tthis._run(controller);\n\t\t}\n\t}\n\n\tprotected abstract _run(controller: CommonFindController): boolean;\n}\n\nexport class NextSelectionMatchFindAction extends SelectionMatchFindAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.NextSelectionMatchFindAction,\n\t\t\tlabel: nls.localize2('nextSelectionMatchFindAction', \"Find Next Selection\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.F3,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _run(controller: CommonFindController): boolean {\n\t\treturn controller.moveToNextMatch();\n\t}\n}\n\nexport class PreviousSelectionMatchFindAction extends SelectionMatchFindAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.PreviousSelectionMatchFindAction,\n\t\t\tlabel: nls.localize2('previousSelectionMatchFindAction', \"Find Previous Selection\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.F3,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _run(controller: CommonFindController): boolean {\n\t\treturn controller.moveToPrevMatch();\n\t}\n}\n\nexport const StartFindReplaceAction = registerMultiEditorAction(new MultiEditorAction({\n\tid: FIND_IDS.StartFindReplaceAction,\n\tlabel: nls.localize2('startReplace', \"Replace\"),\n\tprecondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\n\tkbOpts: {\n\t\tkbExpr: null,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyH,\n\t\tmac: { primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KeyF },\n\t\tweight: KeybindingWeight.EditorContrib\n\t},\n\tmenuOpts: {\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '3_find',\n\t\ttitle: nls.localize({ key: 'miReplace', comment: ['&& denotes a mnemonic'] }, \"&&Replace\"),\n\t\torder: 2\n\t}\n}));\n\nStartFindReplaceAction.addImplementation(0, (accessor: ServicesAccessor, editor: ICodeEditor, args: any): boolean | Promise<void> => {\n\tif (!editor.hasModel() || editor.getOption(EditorOption.readOnly)) {\n\t\treturn false;\n\t}\n\tconst controller = CommonFindController.get(editor);\n\tif (!controller) {\n\t\treturn false;\n\t}\n\n\tconst currentSelection = editor.getSelection();\n\tconst findInputFocused = controller.isFindInputFocused();\n\t// we only seed search string from selection when the current selection is single line and not empty,\n\t// + the find input is not focused\n\tconst seedSearchStringFromSelection = !currentSelection.isEmpty()\n\t\t&& currentSelection.startLineNumber === currentSelection.endLineNumber\n\t\t&& (editor.getOption(EditorOption.find).seedSearchStringFromSelection !== 'never')\n\t\t&& !findInputFocused;\n\t/*\n\t* 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\t* findInputFocused true -> seedSearchStringFromSelection false, FocusReplaceInput\n\t* findInputFocused false, seedSearchStringFromSelection true FocusReplaceInput\n\t* findInputFocused false seedSearchStringFromSelection false FocusFindInput\n\t*/\n\tconst shouldFocus = (findInputFocused || seedSearchStringFromSelection) ?\n\t\tFindStartFocusAction.FocusReplaceInput : FindStartFocusAction.FocusFindInput;\n\n\treturn controller.start({\n\t\tforceRevealReplace: true,\n\t\tseedSearchStringFromSelection: seedSearchStringFromSelection ? 'single' : 'none',\n\t\tseedSearchStringFromNonEmptySelection: editor.getOption(EditorOption.find).seedSearchStringFromSelection === 'selection',\n\t\tseedSearchStringFromGlobalClipboard: editor.getOption(EditorOption.find).seedSearchStringFromSelection !== 'never',\n\t\tshouldFocus: shouldFocus,\n\t\tshouldAnimate: true,\n\t\tupdateSearchScope: false,\n\t\tloop: editor.getOption(EditorOption.find).loop\n\t});\n});\n\nregisterEditorContribution(CommonFindController.ID, FindController, EditorContributionInstantiation.Eager); // eager because it uses `saveViewState`/`restoreViewState`\n\nregisterEditorAction(StartFindWithArgsAction);\nregisterEditorAction(StartFindWithSelectionAction);\nregisterEditorAction(NextMatchFindAction);\nregisterEditorAction(PreviousMatchFindAction);\nregisterEditorAction(MoveToMatchFindAction);\nregisterEditorAction(NextSelectionMatchFindAction);\nregisterEditorAction(PreviousSelectionMatchFindAction);\n\nconst FindCommand = EditorCommand.bindToContribution<CommonFindController>(CommonFindController.get);\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.CloseFindWidgetCommand,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.closeFindWidget(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: ContextKeyExpr.and(EditorContextKeys.focus, ContextKeyExpr.not('isComposing')),\n\t\tprimary: KeyCode.Escape,\n\t\tsecondary: [KeyMod.Shift | KeyCode.Escape]\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ToggleCaseSensitiveCommand,\n\tprecondition: undefined,\n\thandler: x => x.toggleCaseSensitive(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: ToggleCaseSensitiveKeybinding.primary,\n\t\tmac: ToggleCaseSensitiveKeybinding.mac,\n\t\twin: ToggleCaseSensitiveKeybinding.win,\n\t\tlinux: ToggleCaseSensitiveKeybinding.linux\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ToggleWholeWordCommand,\n\tprecondition: undefined,\n\thandler: x => x.toggleWholeWords(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: ToggleWholeWordKeybinding.primary,\n\t\tmac: ToggleWholeWordKeybinding.mac,\n\t\twin: ToggleWholeWordKeybinding.win,\n\t\tlinux: ToggleWholeWordKeybinding.linux\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ToggleRegexCommand,\n\tprecondition: undefined,\n\thandler: x => x.toggleRegex(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: ToggleRegexKeybinding.primary,\n\t\tmac: ToggleRegexKeybinding.mac,\n\t\twin: ToggleRegexKeybinding.win,\n\t\tlinux: ToggleRegexKeybinding.linux\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ToggleSearchScopeCommand,\n\tprecondition: undefined,\n\thandler: x => x.toggleSearchScope(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: ToggleSearchScopeKeybinding.primary,\n\t\tmac: ToggleSearchScopeKeybinding.mac,\n\t\twin: ToggleSearchScopeKeybinding.win,\n\t\tlinux: ToggleSearchScopeKeybinding.linux\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.TogglePreserveCaseCommand,\n\tprecondition: undefined,\n\thandler: x => x.togglePreserveCase(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: TogglePreserveCaseKeybinding.primary,\n\t\tmac: TogglePreserveCaseKeybinding.mac,\n\t\twin: TogglePreserveCaseKeybinding.win,\n\t\tlinux: TogglePreserveCaseKeybinding.linux\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ReplaceOneAction,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.replace(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Digit1\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ReplaceOneAction,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.replace(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\n\t\tprimary: KeyCode.Enter\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ReplaceAllAction,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.replaceAll(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.Enter\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ReplaceAllAction,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.replaceAll(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\n\t\tprimary: undefined,\n\t\tmac: {\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.Enter,\n\t\t}\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.SelectAllMatchesAction,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.selectAllMatches(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: KeyMod.Alt | KeyCode.Enter\n\t}\n}));\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/find/browser/findController.ts"],"names":[],"mappings":"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","file":"findController.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","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 *--------------------------------------------------------------------------------------------*/\n\nimport { Delayer } from '../../../../base/common/async.js';\nimport { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorCommand, EditorContributionInstantiation, MultiEditorAction, registerEditorAction, registerEditorCommand, registerEditorContribution, registerMultiEditorAction, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { overviewRulerRangeHighlight } from '../../../common/core/editorColorRegistry.js';\nimport { IRange } from '../../../common/core/range.js';\nimport { IEditorContribution } from '../../../common/editorCommon.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, FindReplaceStateChangedEvent, INewFindReplaceState } from './findState.js';\nimport { FindWidget, IFindController } 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, IContextKey, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextViewService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IHoverService } from '../../../../platform/hover/browser/hover.js';\nimport { FindWidgetSearchHistory } from './findWidgetSearchHistory.js';\nimport { ReplaceWidgetHistory } from './replaceWidgetHistory.js';\n\nconst SEARCH_STRING_MAX_LENGTH = 524288;\n\nexport function getSelectionSearchString(editor: ICodeEditor, seedSearchStringFromSelection: 'single' | 'multiple' = 'single', seedSearchStringFromNonEmptySelection: boolean = false): string | null {\n\tif (!editor.hasModel()) {\n\t\treturn null;\n\t}\n\n\tconst selection = editor.getSelection();\n\t// if selection spans multiple lines, default search string to empty\n\n\tif ((seedSearchStringFromSelection === 'single' && selection.startLineNumber === selection.endLineNumber)\n\t\t|| seedSearchStringFromSelection === 'multiple') {\n\t\tif (selection.isEmpty()) {\n\t\t\tconst wordAtPosition = editor.getConfiguredWordAtPosition(selection.getStartPosition());\n\t\t\tif (wordAtPosition && (false === seedSearchStringFromNonEmptySelection)) {\n\t\t\t\treturn wordAtPosition.word;\n\t\t\t}\n\t\t} else {\n\t\t\tif (editor.getModel().getValueLengthInRange(selection) < SEARCH_STRING_MAX_LENGTH) {\n\t\t\t\treturn editor.getModel().getValueInRange(selection);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport const enum FindStartFocusAction {\n\tNoFocusChange,\n\tFocusFindInput,\n\tFocusReplaceInput\n}\n\nexport interface IFindStartOptions {\n\tforceRevealReplace: boolean;\n\tseedSearchStringFromSelection: 'none' | 'single' | 'multiple';\n\tseedSearchStringFromNonEmptySelection: boolean;\n\tseedSearchStringFromGlobalClipboard: boolean;\n\tshouldFocus: FindStartFocusAction;\n\tshouldAnimate: boolean;\n\tupdateSearchScope: boolean;\n\tloop: boolean;\n}\n\nexport interface IFindStartArguments {\n\tsearchString?: string;\n\treplaceString?: string;\n\tisRegex?: boolean;\n\tmatchWholeWord?: boolean;\n\tisCaseSensitive?: boolean;\n\tpreserveCase?: boolean;\n\tfindInSelection?: boolean;\n}\n\nexport class CommonFindController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.findController';\n\n\tprotected _editor: ICodeEditor;\n\tprivate readonly _findWidgetVisible: IContextKey<boolean>;\n\tprotected _state: FindReplaceState;\n\tprotected _updateHistoryDelayer: Delayer<void>;\n\tprivate _model: FindModelBoundToEditorModel | null;\n\tprotected readonly _storageService: IStorageService;\n\tprivate readonly _clipboardService: IClipboardService;\n\tprotected readonly _contextKeyService: IContextKeyService;\n\tprotected readonly _notificationService: INotificationService;\n\tprotected readonly _hoverService: IHoverService;\n\n\tget editor() {\n\t\treturn this._editor;\n\t}\n\n\tpublic static get(editor: ICodeEditor): CommonFindController | null {\n\t\treturn editor.getContribution<CommonFindController>(CommonFindController.ID);\n\t}\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IStorageService storageService: IStorageService,\n\t\t@IClipboardService clipboardService: IClipboardService,\n\t\t@INotificationService notificationService: INotificationService,\n\t\t@IHoverService hoverService: IHoverService\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\t\tthis._findWidgetVisible = CONTEXT_FIND_WIDGET_VISIBLE.bindTo(contextKeyService);\n\t\tthis._contextKeyService = contextKeyService;\n\t\tthis._storageService = storageService;\n\t\tthis._clipboardService = clipboardService;\n\t\tthis._notificationService = notificationService;\n\t\tthis._hoverService = hoverService;\n\n\t\tthis._updateHistoryDelayer = new Delayer<void>(500);\n\t\tthis._state = this._register(new FindReplaceState());\n\t\tthis.loadQueryState();\n\t\tthis._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n\n\t\tthis._model = null;\n\n\t\tthis._register(this._editor.onDidChangeModel(() => {\n\t\t\tconst shouldRestartFind = (this._editor.getModel() && this._state.isRevealed);\n\n\t\t\tthis.disposeModel();\n\n\t\t\tthis._state.change({\n\t\t\t\tsearchScope: null,\n\t\t\t\tmatchCase: this._storageService.getBoolean('editor.matchCase', StorageScope.WORKSPACE, false),\n\t\t\t\twholeWord: this._storageService.getBoolean('editor.wholeWord', StorageScope.WORKSPACE, false),\n\t\t\t\tisRegex: this._storageService.getBoolean('editor.isRegex', StorageScope.WORKSPACE, false),\n\t\t\t\tpreserveCase: this._storageService.getBoolean('editor.preserveCase', StorageScope.WORKSPACE, false)\n\t\t\t}, false);\n\n\t\t\tif (shouldRestartFind) {\n\t\t\t\tthis._start({\n\t\t\t\t\tforceRevealReplace: false,\n\t\t\t\t\tseedSearchStringFromSelection: 'none',\n\t\t\t\t\tseedSearchStringFromNonEmptySelection: false,\n\t\t\t\t\tseedSearchStringFromGlobalClipboard: false,\n\t\t\t\t\tshouldFocus: FindStartFocusAction.NoFocusChange,\n\t\t\t\t\tshouldAnimate: false,\n\t\t\t\t\tupdateSearchScope: false,\n\t\t\t\t\tloop: this._editor.getOption(EditorOption.find).loop\n\t\t\t\t});\n\t\t\t}\n\t\t}));\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis.disposeModel();\n\t\tsuper.dispose();\n\t}\n\n\tprivate disposeModel(): void {\n\t\tif (this._model) {\n\t\t\tthis._model.dispose();\n\t\t\tthis._model = null;\n\t\t}\n\t}\n\n\tprivate _onStateChanged(e: FindReplaceStateChangedEvent): void {\n\t\tthis.saveQueryState(e);\n\n\t\tif (e.isRevealed) {\n\t\t\tif (this._state.isRevealed) {\n\t\t\t\tthis._findWidgetVisible.set(true);\n\t\t\t} else {\n\t\t\t\tthis._findWidgetVisible.reset();\n\t\t\t\tthis.disposeModel();\n\t\t\t}\n\t\t}\n\t\tif (e.searchString) {\n\t\t\tthis.setGlobalBufferTerm(this._state.searchString);\n\t\t}\n\t}\n\n\tprivate saveQueryState(e: FindReplaceStateChangedEvent) {\n\t\tif (e.isRegex) {\n\t\t\tthis._storageService.store('editor.isRegex', this._state.actualIsRegex, StorageScope.WORKSPACE, StorageTarget.MACHINE);\n\t\t}\n\t\tif (e.wholeWord) {\n\t\t\tthis._storageService.store('editor.wholeWord', this._state.actualWholeWord, StorageScope.WORKSPACE, StorageTarget.MACHINE);\n\t\t}\n\t\tif (e.matchCase) {\n\t\t\tthis._storageService.store('editor.matchCase', this._state.actualMatchCase, StorageScope.WORKSPACE, StorageTarget.MACHINE);\n\t\t}\n\t\tif (e.preserveCase) {\n\t\t\tthis._storageService.store('editor.preserveCase', this._state.actualPreserveCase, StorageScope.WORKSPACE, StorageTarget.MACHINE);\n\t\t}\n\t}\n\n\tprivate loadQueryState() {\n\t\tthis._state.change({\n\t\t\tmatchCase: this._storageService.getBoolean('editor.matchCase', StorageScope.WORKSPACE, this._state.matchCase),\n\t\t\twholeWord: this._storageService.getBoolean('editor.wholeWord', StorageScope.WORKSPACE, this._state.wholeWord),\n\t\t\tisRegex: this._storageService.getBoolean('editor.isRegex', StorageScope.WORKSPACE, this._state.isRegex),\n\t\t\tpreserveCase: this._storageService.getBoolean('editor.preserveCase', StorageScope.WORKSPACE, this._state.preserveCase)\n\t\t}, false);\n\t}\n\n\tpublic isFindInputFocused(): boolean {\n\t\treturn !!CONTEXT_FIND_INPUT_FOCUSED.getValue(this._contextKeyService);\n\t}\n\n\tpublic getState(): FindReplaceState {\n\t\treturn this._state;\n\t}\n\n\tpublic closeFindWidget(): void {\n\t\tthis._state.change({\n\t\t\tisRevealed: false,\n\t\t\tsearchScope: null\n\t\t}, false);\n\t\tthis._editor.focus();\n\t}\n\n\tpublic toggleCaseSensitive(): void {\n\t\tthis._state.change({ matchCase: !this._state.matchCase }, false);\n\t\tif (!this._state.isRevealed) {\n\t\t\tthis.highlightFindOptions();\n\t\t}\n\t}\n\n\tpublic toggleWholeWords(): void {\n\t\tthis._state.change({ wholeWord: !this._state.wholeWord }, false);\n\t\tif (!this._state.isRevealed) {\n\t\t\tthis.highlightFindOptions();\n\t\t}\n\t}\n\n\tpublic toggleRegex(): void {\n\t\tthis._state.change({ isRegex: !this._state.isRegex }, false);\n\t\tif (!this._state.isRevealed) {\n\t\t\tthis.highlightFindOptions();\n\t\t}\n\t}\n\n\tpublic togglePreserveCase(): void {\n\t\tthis._state.change({ preserveCase: !this._state.preserveCase }, false);\n\t\tif (!this._state.isRevealed) {\n\t\t\tthis.highlightFindOptions();\n\t\t}\n\t}\n\n\tpublic toggleSearchScope(): void {\n\t\tif (this._state.searchScope) {\n\t\t\tthis._state.change({ searchScope: null }, true);\n\t\t} else {\n\t\t\tif (this._editor.hasModel()) {\n\t\t\t\tlet selections = this._editor.getSelections();\n\t\t\t\tselections = selections.map(selection => {\n\t\t\t\t\tif (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n\t\t\t\t\t\tselection = selection.setEndPosition(\n\t\t\t\t\t\t\tselection.endLineNumber - 1,\n\t\t\t\t\t\t\tthis._editor.getModel()!.getLineMaxColumn(selection.endLineNumber - 1)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!selection.isEmpty()) {\n\t\t\t\t\t\treturn selection;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}).filter((element): element is Selection => !!element);\n\n\t\t\t\tif (selections.length) {\n\t\t\t\t\tthis._state.change({ searchScope: selections }, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic setSearchString(searchString: string): void {\n\t\tif (this._state.isRegex) {\n\t\t\tsearchString = strings.escapeRegExpCharacters(searchString);\n\t\t}\n\t\tthis._state.change({ searchString: searchString }, false);\n\t}\n\n\tpublic highlightFindOptions(ignoreWhenVisible: boolean = false): void {\n\t\t// overwritten in subclass\n\t}\n\n\tprotected async _start(opts: IFindStartOptions, newState?: INewFindReplaceState): Promise<void> {\n\t\tthis.disposeModel();\n\n\t\tif (!this._editor.hasModel()) {\n\t\t\t// cannot do anything with an editor that doesn't have a model...\n\t\t\treturn;\n\t\t}\n\n\t\tconst stateChanges: INewFindReplaceState = {\n\t\t\t...newState,\n\t\t\tisRevealed: true\n\t\t};\n\n\t\tif (opts.seedSearchStringFromSelection === 'single') {\n\t\t\tconst selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection, opts.seedSearchStringFromNonEmptySelection);\n\t\t\tif (selectionSearchString) {\n\t\t\t\tif (this._state.isRegex) {\n\t\t\t\t\tstateChanges.searchString = strings.escapeRegExpCharacters(selectionSearchString);\n\t\t\t\t} else {\n\t\t\t\t\tstateChanges.searchString = selectionSearchString;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (opts.seedSearchStringFromSelection === 'multiple' && !opts.updateSearchScope) {\n\t\t\tconst selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection);\n\t\t\tif (selectionSearchString) {\n\t\t\t\tstateChanges.searchString = selectionSearchString;\n\t\t\t}\n\t\t}\n\n\t\tif (!stateChanges.searchString && opts.seedSearchStringFromGlobalClipboard) {\n\t\t\tconst selectionSearchString = await this.getGlobalBufferTerm();\n\n\t\t\tif (!this._editor.hasModel()) {\n\t\t\t\t// the editor has lost its model in the meantime\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (selectionSearchString) {\n\t\t\t\tstateChanges.searchString = selectionSearchString;\n\t\t\t}\n\t\t}\n\n\t\t// Overwrite isReplaceRevealed\n\t\tif (opts.forceRevealReplace || stateChanges.isReplaceRevealed) {\n\t\t\tstateChanges.isReplaceRevealed = true;\n\t\t} else if (!this._findWidgetVisible.get()) {\n\t\t\tstateChanges.isReplaceRevealed = false;\n\t\t}\n\n\t\tif (opts.updateSearchScope) {\n\t\t\tconst currentSelections = this._editor.getSelections();\n\t\t\tif (currentSelections.some(selection => !selection.isEmpty())) {\n\t\t\t\tstateChanges.searchScope = currentSelections;\n\t\t\t}\n\t\t}\n\n\t\tstateChanges.loop = opts.loop;\n\n\t\tthis._state.change(stateChanges, false);\n\n\t\tif (!this._model) {\n\t\t\tthis._model = new FindModelBoundToEditorModel(this._editor, this._state);\n\t\t}\n\t}\n\n\tpublic start(opts: IFindStartOptions, newState?: INewFindReplaceState): Promise<void> {\n\t\treturn this._start(opts, newState);\n\t}\n\n\tpublic moveToNextMatch(): boolean {\n\t\tif (this._model) {\n\t\t\tthis._model.moveToNextMatch();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic moveToPrevMatch(): boolean {\n\t\tif (this._model) {\n\t\t\tthis._model.moveToPrevMatch();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic goToMatch(index: number): boolean {\n\t\tif (this._model) {\n\t\t\tthis._model.moveToMatch(index);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic replace(): boolean {\n\t\tif (this._model) {\n\t\t\tthis._model.replace();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic replaceAll(): boolean {\n\t\tif (this._model) {\n\t\t\tif (this._editor.getModel()?.isTooLargeForHeapOperation()) {\n\t\t\t\tthis._notificationService.warn(nls.localize('too.large.for.replaceall', \"The file is too large to perform a replace all operation.\"));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._model.replaceAll();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic selectAllMatches(): boolean {\n\t\tif (this._model) {\n\t\t\tthis._model.selectAllMatches();\n\t\t\tthis._editor.focus();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic async getGlobalBufferTerm(): Promise<string> {\n\t\tif (this._editor.getOption(EditorOption.find).globalFindClipboard\n\t\t\t&& this._editor.hasModel()\n\t\t\t&& !this._editor.getModel().isTooLargeForSyncing()\n\t\t) {\n\t\t\treturn this._clipboardService.readFindText();\n\t\t}\n\t\treturn '';\n\t}\n\n\tpublic setGlobalBufferTerm(text: string): void {\n\t\tif (this._editor.getOption(EditorOption.find).globalFindClipboard\n\t\t\t&& this._editor.hasModel()\n\t\t\t&& !this._editor.getModel().isTooLargeForSyncing()\n\t\t) {\n\t\t\t// intentionally not awaited\n\t\t\tthis._clipboardService.writeFindText(text);\n\t\t}\n\t}\n}\n\nexport class FindController extends CommonFindController implements IFindController {\n\n\tprivate _widget: FindWidget | null;\n\tprivate _findOptionsWidget: FindOptionsWidget | null;\n\tprivate _findWidgetSearchHistory: FindWidgetSearchHistory;\n\tprivate _replaceWidgetHistory: ReplaceWidgetHistory;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IContextViewService private readonly _contextViewService: IContextViewService,\n\t\t@IContextKeyService _contextKeyService: IContextKeyService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@INotificationService notificationService: INotificationService,\n\t\t@IStorageService _storageService: IStorageService,\n\t\t@IClipboardService clipboardService: IClipboardService,\n\t\t@IHoverService hoverService: IHoverService,\n\t) {\n\t\tsuper(editor, _contextKeyService, _storageService, clipboardService, notificationService, hoverService);\n\t\tthis._widget = null;\n\t\tthis._findOptionsWidget = null;\n\t\tthis._findWidgetSearchHistory = FindWidgetSearchHistory.getOrCreate(_storageService);\n\t\tthis._replaceWidgetHistory = ReplaceWidgetHistory.getOrCreate(_storageService);\n\t}\n\n\tprotected override async _start(opts: IFindStartOptions, newState?: INewFindReplaceState): Promise<void> {\n\t\tif (!this._widget) {\n\t\t\tthis._createFindWidget();\n\t\t}\n\n\t\tconst selection = this._editor.getSelection();\n\t\tlet updateSearchScope = false;\n\n\t\tswitch (this._editor.getOption(EditorOption.find).autoFindInSelection) {\n\t\t\tcase 'always':\n\t\t\t\tupdateSearchScope = true;\n\t\t\t\tbreak;\n\t\t\tcase 'never':\n\t\t\t\tupdateSearchScope = false;\n\t\t\t\tbreak;\n\t\t\tcase 'multiline': {\n\t\t\t\tconst isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\n\t\t\t\tupdateSearchScope = isSelectionMultipleLine;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\topts.updateSearchScope = opts.updateSearchScope || updateSearchScope;\n\n\t\tawait super._start(opts, newState);\n\n\t\tif (this._widget) {\n\t\t\tif (opts.shouldFocus === FindStartFocusAction.FocusReplaceInput) {\n\t\t\t\tthis._widget.focusReplaceInput();\n\t\t\t} else if (opts.shouldFocus === FindStartFocusAction.FocusFindInput) {\n\t\t\t\tthis._widget.focusFindInput();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic override highlightFindOptions(ignoreWhenVisible: boolean = false): void {\n\t\tif (!this._widget) {\n\t\t\tthis._createFindWidget();\n\t\t}\n\t\tif (this._state.isRevealed && !ignoreWhenVisible) {\n\t\t\tthis._widget!.highlightFindOptions();\n\t\t} else {\n\t\t\tthis._findOptionsWidget!.highlightFindOptions();\n\t\t}\n\t}\n\n\tprivate _createFindWidget() {\n\t\tthis._widget = this._register(new FindWidget(this._editor, this, this._state, this._contextViewService, this._keybindingService, this._contextKeyService, this._hoverService, this._findWidgetSearchHistory, this._replaceWidgetHistory));\n\t\tthis._findOptionsWidget = this._register(new FindOptionsWidget(this._editor, this._state, this._keybindingService));\n\t}\n\n\tsaveViewState(): any {\n\t\treturn this._widget?.getViewState();\n\t}\n\n\trestoreViewState(state: any): void {\n\t\tthis._widget?.setViewState(state);\n\t}\n}\n\nexport const StartFindAction = registerMultiEditorAction(new MultiEditorAction({\n\tid: FIND_IDS.StartFindAction,\n\tlabel: nls.localize2('startFindAction', \"Find\"),\n\tprecondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\n\tkbOpts: {\n\t\tkbExpr: null,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyF,\n\t\tweight: KeybindingWeight.EditorContrib\n\t},\n\tmenuOpts: {\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '3_find',\n\t\ttitle: nls.localize({ key: 'miFind', comment: ['&& denotes a mnemonic'] }, \"&&Find\"),\n\t\torder: 1\n\t}\n}));\n\nStartFindAction.addImplementation(0, (accessor: ServicesAccessor, editor: ICodeEditor, args: any): boolean | Promise<void> => {\n\tconst controller = CommonFindController.get(editor);\n\tif (!controller) {\n\t\treturn false;\n\t}\n\treturn controller.start({\n\t\tforceRevealReplace: false,\n\t\tseedSearchStringFromSelection: editor.getOption(EditorOption.find).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n\t\tseedSearchStringFromNonEmptySelection: editor.getOption(EditorOption.find).seedSearchStringFromSelection === 'selection',\n\t\tseedSearchStringFromGlobalClipboard: editor.getOption(EditorOption.find).globalFindClipboard,\n\t\tshouldFocus: FindStartFocusAction.FocusFindInput,\n\t\tshouldAnimate: true,\n\t\tupdateSearchScope: false,\n\t\tloop: editor.getOption(EditorOption.find).loop\n\t});\n});\n\nconst findArgDescription = {\n\tdescription: 'Open a new In-Editor Find Widget.',\n\targs: [{\n\t\tname: 'Open a new In-Editor Find Widget args',\n\t\tschema: {\n\t\t\tproperties: {\n\t\t\t\tsearchString: { type: 'string' },\n\t\t\t\treplaceString: { type: 'string' },\n\t\t\t\tisRegex: { type: 'boolean' },\n\t\t\t\tmatchWholeWord: { type: 'boolean' },\n\t\t\t\tisCaseSensitive: { type: 'boolean' },\n\t\t\t\tpreserveCase: { type: 'boolean' },\n\t\t\t\tfindInSelection: { type: 'boolean' },\n\t\t\t}\n\t\t}\n\t}]\n} as const;\n\nexport class StartFindWithArgsAction extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.StartFindWithArgs,\n\t\t\tlabel: nls.localize2('startFindWithArgsAction', \"Find with Arguments\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: null,\n\t\t\t\tprimary: 0,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmetadata: findArgDescription\n\t\t});\n\t}\n\n\tpublic async run(accessor: ServicesAccessor, editor: ICodeEditor, args?: IFindStartArguments): Promise<void> {\n\t\tconst controller = CommonFindController.get(editor);\n\t\tif (controller) {\n\t\t\tconst newState: INewFindReplaceState = args ? {\n\t\t\t\tsearchString: args.searchString,\n\t\t\t\treplaceString: args.replaceString,\n\t\t\t\tisReplaceRevealed: args.replaceString !== undefined,\n\t\t\t\tisRegex: args.isRegex,\n\t\t\t\t// isRegexOverride: args.regexOverride,\n\t\t\t\twholeWord: args.matchWholeWord,\n\t\t\t\t// wholeWordOverride: args.wholeWordOverride,\n\t\t\t\tmatchCase: args.isCaseSensitive,\n\t\t\t\t// matchCaseOverride: args.matchCaseOverride,\n\t\t\t\tpreserveCase: args.preserveCase,\n\t\t\t\t// preserveCaseOverride: args.preserveCaseOverride,\n\t\t\t} : {};\n\n\t\t\tawait controller.start({\n\t\t\t\tforceRevealReplace: false,\n\t\t\t\tseedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(EditorOption.find).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n\t\t\t\tseedSearchStringFromNonEmptySelection: editor.getOption(EditorOption.find).seedSearchStringFromSelection === 'selection',\n\t\t\t\tseedSearchStringFromGlobalClipboard: true,\n\t\t\t\tshouldFocus: FindStartFocusAction.FocusFindInput,\n\t\t\t\tshouldAnimate: true,\n\t\t\t\tupdateSearchScope: args?.findInSelection || false,\n\t\t\t\tloop: editor.getOption(EditorOption.find).loop\n\t\t\t}, newState);\n\n\t\t\tcontroller.setGlobalBufferTerm(controller.getState().searchString);\n\t\t}\n\t}\n}\n\nexport class StartFindWithSelectionAction extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.StartFindWithSelection,\n\t\t\tlabel: nls.localize2('startFindWithSelectionAction', \"Find with Selection\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: null,\n\t\t\t\tprimary: 0,\n\t\t\t\tmac: {\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyE,\n\t\t\t\t},\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic async run(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {\n\t\tconst controller = CommonFindController.get(editor);\n\t\tif (controller) {\n\t\t\tawait controller.start({\n\t\t\t\tforceRevealReplace: false,\n\t\t\t\tseedSearchStringFromSelection: 'multiple',\n\t\t\t\tseedSearchStringFromNonEmptySelection: false,\n\t\t\t\tseedSearchStringFromGlobalClipboard: false,\n\t\t\t\tshouldFocus: FindStartFocusAction.NoFocusChange,\n\t\t\t\tshouldAnimate: true,\n\t\t\t\tupdateSearchScope: false,\n\t\t\t\tloop: editor.getOption(EditorOption.find).loop\n\t\t\t});\n\n\t\t\tcontroller.setGlobalBufferTerm(controller.getState().searchString);\n\t\t}\n\t}\n}\n\nasync function matchFindAction(editor: ICodeEditor, next: boolean): Promise<void> {\n\tconst controller = CommonFindController.get(editor);\n\tif (!controller) {\n\t\treturn;\n\t}\n\n\tconst runMatch = (): boolean => {\n\t\tconst result = next ? controller.moveToNextMatch() : controller.moveToPrevMatch();\n\t\tif (result) {\n\t\t\tcontroller.editor.pushUndoStop();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t};\n\n\tif (!runMatch()) {\n\t\tawait controller.start({\n\t\t\tforceRevealReplace: false,\n\t\t\tseedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(EditorOption.find).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n\t\t\tseedSearchStringFromNonEmptySelection: editor.getOption(EditorOption.find).seedSearchStringFromSelection === 'selection',\n\t\t\tseedSearchStringFromGlobalClipboard: true,\n\t\t\tshouldFocus: FindStartFocusAction.NoFocusChange,\n\t\t\tshouldAnimate: true,\n\t\t\tupdateSearchScope: false,\n\t\t\tloop: editor.getOption(EditorOption.find).loop\n\t\t});\n\t\trunMatch();\n\t}\n}\n\nexport const NextMatchFindAction = registerMultiEditorAction(new MultiEditorAction({\n\tid: FIND_IDS.NextMatchFindAction,\n\tlabel: nls.localize2('findNextMatchAction', \"Find Next\"),\n\tprecondition: undefined,\n\tkbOpts: [{\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: KeyCode.F3,\n\t\tmac: { primary: KeyMod.CtrlCmd | KeyCode.KeyG, secondary: [KeyCode.F3] },\n\t\tweight: KeybindingWeight.EditorContrib\n\t}, {\n\t\tkbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\n\t\tprimary: KeyCode.Enter,\n\t\tweight: KeybindingWeight.EditorContrib\n\t}]\n}));\n\nNextMatchFindAction.addImplementation(0, async (accessor: ServicesAccessor, editor: ICodeEditor, args: any): Promise<void> => {\n\treturn matchFindAction(editor, true);\n});\n\n\nexport const PreviousMatchFindAction = registerMultiEditorAction(new MultiEditorAction({\n\tid: FIND_IDS.PreviousMatchFindAction,\n\tlabel: nls.localize2('findPreviousMatchAction', \"Find Previous\"),\n\tprecondition: undefined,\n\tkbOpts: [{\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: KeyMod.Shift | KeyCode.F3,\n\t\tmac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyG, secondary: [KeyMod.Shift | KeyCode.F3] },\n\t\tweight: KeybindingWeight.EditorContrib\n\t}, {\n\t\tkbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\n\t\tprimary: KeyMod.Shift | KeyCode.Enter,\n\t\tweight: KeybindingWeight.EditorContrib\n\t}]\n}));\n\nPreviousMatchFindAction.addImplementation(0, async (accessor: ServicesAccessor, editor: ICodeEditor, args: any): Promise<void> => {\n\treturn matchFindAction(editor, false);\n});\n\nexport class MoveToMatchFindAction extends EditorAction {\n\n\tprivate _highlightDecorations: string[] = [];\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.GoToMatchFindAction,\n\t\t\tlabel: nls.localize2('findMatchAction.goToMatch', \"Go to Match...\"),\n\t\t\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void | Promise<void> {\n\t\tconst controller = CommonFindController.get(editor);\n\t\tif (!controller) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst matchesCount = controller.getState().matchesCount;\n\t\tif (matchesCount < 1) {\n\t\t\tconst notificationService = accessor.get(INotificationService);\n\t\t\tnotificationService.notify({\n\t\t\t\tseverity: Severity.Warning,\n\t\t\t\tmessage: nls.localize('findMatchAction.noResults', \"No matches. Try searching for something else.\")\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst quickInputService = accessor.get(IQuickInputService);\n\t\tconst disposables = new DisposableStore();\n\t\tconst inputBox = disposables.add(quickInputService.createInputBox());\n\t\tinputBox.placeholder = nls.localize('findMatchAction.inputPlaceHolder', \"Type a number to go to a specific match (between 1 and {0})\", matchesCount);\n\n\t\tconst toFindMatchIndex = (value: string): number | undefined => {\n\t\t\tconst index = parseInt(value);\n\t\t\tif (isNaN(index)) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst matchCount = controller.getState().matchesCount;\n\t\t\tif (index > 0 && index <= matchCount) {\n\t\t\t\treturn index - 1; // zero based\n\t\t\t} else if (index < 0 && index >= -matchCount) {\n\t\t\t\treturn matchCount + index;\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t};\n\n\t\tconst updatePickerAndEditor = (value: string) => {\n\t\t\tconst index = toFindMatchIndex(value);\n\t\t\tif (typeof index === 'number') {\n\t\t\t\t// valid\n\t\t\t\tinputBox.validationMessage = undefined;\n\t\t\t\tcontroller.goToMatch(index);\n\t\t\t\tconst currentMatch = controller.getState().currentMatch;\n\t\t\t\tif (currentMatch) {\n\t\t\t\t\tthis.addDecorations(editor, currentMatch);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tinputBox.validationMessage = nls.localize('findMatchAction.inputValidationMessage', \"Please type a number between 1 and {0}\", controller.getState().matchesCount);\n\t\t\t\tthis.clearDecorations(editor);\n\t\t\t}\n\t\t};\n\t\tdisposables.add(inputBox.onDidChangeValue(value => {\n\t\t\tupdatePickerAndEditor(value);\n\t\t}));\n\n\t\tdisposables.add(inputBox.onDidAccept(() => {\n\t\t\tconst index = toFindMatchIndex(inputBox.value);\n\t\t\tif (typeof index === 'number') {\n\t\t\t\tcontroller.goToMatch(index);\n\t\t\t\tinputBox.hide();\n\t\t\t} else {\n\t\t\t\tinputBox.validationMessage = nls.localize('findMatchAction.inputValidationMessage', \"Please type a number between 1 and {0}\", controller.getState().matchesCount);\n\t\t\t}\n\t\t}));\n\n\t\tdisposables.add(inputBox.onDidHide(() => {\n\t\t\tthis.clearDecorations(editor);\n\t\t\tdisposables.dispose();\n\t\t}));\n\n\t\tinputBox.show();\n\t}\n\n\tprivate clearDecorations(editor: ICodeEditor): void {\n\t\teditor.changeDecorations(changeAccessor => {\n\t\t\tthis._highlightDecorations = changeAccessor.deltaDecorations(this._highlightDecorations, []);\n\t\t});\n\t}\n\n\tprivate addDecorations(editor: ICodeEditor, range: IRange): void {\n\t\teditor.changeDecorations(changeAccessor => {\n\t\t\tthis._highlightDecorations = changeAccessor.deltaDecorations(this._highlightDecorations, [\n\t\t\t\t{\n\t\t\t\t\trange,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tdescription: 'find-match-quick-access-range-highlight',\n\t\t\t\t\t\tclassName: 'rangeHighlight',\n\t\t\t\t\t\tisWholeLine: true\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\trange,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tdescription: 'find-match-quick-access-range-highlight-overview',\n\t\t\t\t\t\toverviewRuler: {\n\t\t\t\t\t\t\tcolor: themeColorFromId(overviewRulerRangeHighlight),\n\t\t\t\t\t\t\tposition: OverviewRulerLane.Full\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]);\n\t\t});\n\t}\n}\n\nexport abstract class SelectionMatchFindAction extends EditorAction {\n\tpublic async run(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {\n\t\tconst controller = CommonFindController.get(editor);\n\t\tif (!controller) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectionSearchString = getSelectionSearchString(editor, 'single', false);\n\t\tif (selectionSearchString) {\n\t\t\tcontroller.setSearchString(selectionSearchString);\n\t\t}\n\t\tif (!this._run(controller)) {\n\t\t\tawait controller.start({\n\t\t\t\tforceRevealReplace: false,\n\t\t\t\tseedSearchStringFromSelection: 'none',\n\t\t\t\tseedSearchStringFromNonEmptySelection: false,\n\t\t\t\tseedSearchStringFromGlobalClipboard: false,\n\t\t\t\tshouldFocus: FindStartFocusAction.NoFocusChange,\n\t\t\t\tshouldAnimate: true,\n\t\t\t\tupdateSearchScope: false,\n\t\t\t\tloop: editor.getOption(EditorOption.find).loop\n\t\t\t});\n\t\t\tthis._run(controller);\n\t\t}\n\t}\n\n\tprotected abstract _run(controller: CommonFindController): boolean;\n}\n\nexport class NextSelectionMatchFindAction extends SelectionMatchFindAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.NextSelectionMatchFindAction,\n\t\t\tlabel: nls.localize2('nextSelectionMatchFindAction', \"Find Next Selection\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.F3,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _run(controller: CommonFindController): boolean {\n\t\treturn controller.moveToNextMatch();\n\t}\n}\n\nexport class PreviousSelectionMatchFindAction extends SelectionMatchFindAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: FIND_IDS.PreviousSelectionMatchFindAction,\n\t\t\tlabel: nls.localize2('previousSelectionMatchFindAction', \"Find Previous Selection\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.focus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.F3,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _run(controller: CommonFindController): boolean {\n\t\treturn controller.moveToPrevMatch();\n\t}\n}\n\nexport const StartFindReplaceAction = registerMultiEditorAction(new MultiEditorAction({\n\tid: FIND_IDS.StartFindReplaceAction,\n\tlabel: nls.localize2('startReplace', \"Replace\"),\n\tprecondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\n\tkbOpts: {\n\t\tkbExpr: null,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyH,\n\t\tmac: { primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KeyF },\n\t\tweight: KeybindingWeight.EditorContrib\n\t},\n\tmenuOpts: {\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '3_find',\n\t\ttitle: nls.localize({ key: 'miReplace', comment: ['&& denotes a mnemonic'] }, \"&&Replace\"),\n\t\torder: 2\n\t}\n}));\n\nStartFindReplaceAction.addImplementation(0, (accessor: ServicesAccessor, editor: ICodeEditor, args: any): boolean | Promise<void> => {\n\tif (!editor.hasModel() || editor.getOption(EditorOption.readOnly)) {\n\t\treturn false;\n\t}\n\tconst controller = CommonFindController.get(editor);\n\tif (!controller) {\n\t\treturn false;\n\t}\n\n\tconst currentSelection = editor.getSelection();\n\tconst findInputFocused = controller.isFindInputFocused();\n\t// we only seed search string from selection when the current selection is single line and not empty,\n\t// + the find input is not focused\n\tconst seedSearchStringFromSelection = !currentSelection.isEmpty()\n\t\t&& currentSelection.startLineNumber === currentSelection.endLineNumber\n\t\t&& (editor.getOption(EditorOption.find).seedSearchStringFromSelection !== 'never')\n\t\t&& !findInputFocused;\n\t/*\n\t* 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\t* findInputFocused true -> seedSearchStringFromSelection false, FocusReplaceInput\n\t* findInputFocused false, seedSearchStringFromSelection true FocusReplaceInput\n\t* findInputFocused false seedSearchStringFromSelection false FocusFindInput\n\t*/\n\tconst shouldFocus = (findInputFocused || seedSearchStringFromSelection) ?\n\t\tFindStartFocusAction.FocusReplaceInput : FindStartFocusAction.FocusFindInput;\n\n\treturn controller.start({\n\t\tforceRevealReplace: true,\n\t\tseedSearchStringFromSelection: seedSearchStringFromSelection ? 'single' : 'none',\n\t\tseedSearchStringFromNonEmptySelection: editor.getOption(EditorOption.find).seedSearchStringFromSelection === 'selection',\n\t\tseedSearchStringFromGlobalClipboard: editor.getOption(EditorOption.find).seedSearchStringFromSelection !== 'never',\n\t\tshouldFocus: shouldFocus,\n\t\tshouldAnimate: true,\n\t\tupdateSearchScope: false,\n\t\tloop: editor.getOption(EditorOption.find).loop\n\t});\n});\n\nregisterEditorContribution(CommonFindController.ID, FindController, EditorContributionInstantiation.Eager); // eager because it uses `saveViewState`/`restoreViewState`\n\nregisterEditorAction(StartFindWithArgsAction);\nregisterEditorAction(StartFindWithSelectionAction);\nregisterEditorAction(MoveToMatchFindAction);\nregisterEditorAction(NextSelectionMatchFindAction);\nregisterEditorAction(PreviousSelectionMatchFindAction);\n\nconst FindCommand = EditorCommand.bindToContribution<CommonFindController>(CommonFindController.get);\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.CloseFindWidgetCommand,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.closeFindWidget(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: ContextKeyExpr.and(EditorContextKeys.focus, ContextKeyExpr.not('isComposing')),\n\t\tprimary: KeyCode.Escape,\n\t\tsecondary: [KeyMod.Shift | KeyCode.Escape]\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ToggleCaseSensitiveCommand,\n\tprecondition: undefined,\n\thandler: x => x.toggleCaseSensitive(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: ToggleCaseSensitiveKeybinding.primary,\n\t\tmac: ToggleCaseSensitiveKeybinding.mac,\n\t\twin: ToggleCaseSensitiveKeybinding.win,\n\t\tlinux: ToggleCaseSensitiveKeybinding.linux\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ToggleWholeWordCommand,\n\tprecondition: undefined,\n\thandler: x => x.toggleWholeWords(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: ToggleWholeWordKeybinding.primary,\n\t\tmac: ToggleWholeWordKeybinding.mac,\n\t\twin: ToggleWholeWordKeybinding.win,\n\t\tlinux: ToggleWholeWordKeybinding.linux\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ToggleRegexCommand,\n\tprecondition: undefined,\n\thandler: x => x.toggleRegex(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: ToggleRegexKeybinding.primary,\n\t\tmac: ToggleRegexKeybinding.mac,\n\t\twin: ToggleRegexKeybinding.win,\n\t\tlinux: ToggleRegexKeybinding.linux\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ToggleSearchScopeCommand,\n\tprecondition: undefined,\n\thandler: x => x.toggleSearchScope(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: ToggleSearchScopeKeybinding.primary,\n\t\tmac: ToggleSearchScopeKeybinding.mac,\n\t\twin: ToggleSearchScopeKeybinding.win,\n\t\tlinux: ToggleSearchScopeKeybinding.linux\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.TogglePreserveCaseCommand,\n\tprecondition: undefined,\n\thandler: x => x.togglePreserveCase(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: TogglePreserveCaseKeybinding.primary,\n\t\tmac: TogglePreserveCaseKeybinding.mac,\n\t\twin: TogglePreserveCaseKeybinding.win,\n\t\tlinux: TogglePreserveCaseKeybinding.linux\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ReplaceOneAction,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.replace(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Digit1\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ReplaceOneAction,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.replace(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\n\t\tprimary: KeyCode.Enter\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ReplaceAllAction,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.replaceAll(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.Enter\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.ReplaceAllAction,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.replaceAll(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\n\t\tprimary: undefined,\n\t\tmac: {\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.Enter,\n\t\t}\n\t}\n}));\n\nregisterEditorCommand(new FindCommand({\n\tid: FIND_IDS.SelectAllMatchesAction,\n\tprecondition: CONTEXT_FIND_WIDGET_VISIBLE,\n\thandler: x => x.selectAllMatches(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib + 5,\n\t\tkbExpr: EditorContextKeys.focus,\n\t\tprimary: KeyMod.Alt | KeyCode.Enter\n\t}\n}));\n"]}
@@ -14,10 +14,8 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  var GlyphHoverWidget_1;
15
15
  import * as dom from '../../../../base/browser/dom.js';
16
16
  import { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';
17
- import { MarkdownRenderer } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
18
- import { ILanguageService } from '../../../common/languages/language.js';
17
+ import { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
19
18
  import { HoverOperation } from './hoverOperation.js';
20
- import { IOpenerService } from '../../../../platform/opener/common/opener.js';
21
19
  import { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';
22
20
  import { GlyphHoverComputer } from './glyphHoverComputer.js';
23
21
  import { isMousePositionWithinElement } from './hoverUtils.js';
@@ -25,15 +23,15 @@ const $ = dom.$;
25
23
  let GlyphHoverWidget = class GlyphHoverWidget extends Disposable {
26
24
  static { GlyphHoverWidget_1 = this; }
27
25
  static { this.ID = 'editor.contrib.modesGlyphHoverWidget'; }
28
- constructor(editor, languageService, openerService) {
26
+ constructor(editor, _markdownRendererService) {
29
27
  super();
28
+ this._markdownRendererService = _markdownRendererService;
30
29
  this._renderDisposeables = this._register(new DisposableStore());
31
30
  this._editor = editor;
32
31
  this._isVisible = false;
33
32
  this._messages = [];
34
33
  this._hover = this._register(new HoverWidget(true));
35
34
  this._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);
36
- this._markdownRenderer = new MarkdownRenderer({ editor: this._editor }, languageService, openerService);
37
35
  this._hoverOperation = this._register(new HoverOperation(this._editor, new GlyphHoverComputer(this._editor)));
38
36
  this._register(this._hoverOperation.onResult((result) => this._withResult(result)));
39
37
  this._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));
@@ -121,7 +119,7 @@ let GlyphHoverWidget = class GlyphHoverWidget extends Disposable {
121
119
  for (const msg of messages) {
122
120
  const markdownHoverElement = $('div.hover-row.markdown-hover');
123
121
  const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));
124
- const renderedContents = this._renderDisposeables.add(this._markdownRenderer.render(msg.value));
122
+ const renderedContents = this._renderDisposeables.add(this._markdownRendererService.render(msg.value, { editor: this._editor }));
125
123
  hoverContentsElement.appendChild(renderedContents.element);
126
124
  fragment.appendChild(markdownHoverElement);
127
125
  }
@@ -158,8 +156,7 @@ let GlyphHoverWidget = class GlyphHoverWidget extends Disposable {
158
156
  }
159
157
  };
160
158
  GlyphHoverWidget = GlyphHoverWidget_1 = __decorate([
161
- __param(1, ILanguageService),
162
- __param(2, IOpenerService)
159
+ __param(1, IMarkdownRendererService)
163
160
  ], GlyphHoverWidget);
164
161
  export { GlyphHoverWidget };
165
162
  //# sourceMappingURL=glyphHoverWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/hover/browser/glyphHoverWidget.ts","vs/editor/contrib/hover/browser/glyphHoverWidget.ts"],"names":[],"mappings":"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","file":"glyphHoverWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","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 *--------------------------------------------------------------------------------------------*/\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 { ICodeEditor, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { HoverOperation, HoverResult, HoverStartMode } from './hoverOperation.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { IHoverWidget } from './hoverTypes.js';\nimport { IHoverMessage, LaneOrLineNumber, GlyphHoverComputer, GlyphHoverComputerOptions } from './glyphHoverComputer.js';\nimport { isMousePositionWithinElement } from './hoverUtils.js';\n\nconst $ = dom.$;\n\nexport class GlyphHoverWidget extends Disposable implements IOverlayWidget, IHoverWidget {\n\n\tpublic static readonly ID = 'editor.contrib.modesGlyphHoverWidget';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _hover: HoverWidget;\n\n\tprivate _isVisible: boolean;\n\tprivate _messages: IHoverMessage[];\n\n\tprivate readonly _markdownRenderer: MarkdownRenderer;\n\tprivate readonly _hoverOperation: HoverOperation<GlyphHoverComputerOptions, IHoverMessage>;\n\tprivate readonly _renderDisposeables = this._register(new DisposableStore());\n\n\tprivate _hoverComputerOptions: GlyphHoverComputerOptions | undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ILanguageService languageService: ILanguageService,\n\t\t@IOpenerService openerService: IOpenerService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\n\t\tthis._isVisible = false;\n\t\tthis._messages = [];\n\n\t\tthis._hover = this._register(new HoverWidget(true));\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\n\t\tthis._markdownRenderer = new MarkdownRenderer({ editor: this._editor }, languageService, openerService);\n\t\tthis._hoverOperation = this._register(new HoverOperation(this._editor, new GlyphHoverComputer(this._editor)));\n\t\tthis._register(this._hoverOperation.onResult((result) => this._withResult(result)));\n\n\t\tthis._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\t\tthis._register(dom.addStandardDisposableListener(this._hover.containerDomNode, 'mouseleave', (e) => {\n\t\t\tthis._onMouseLeave(e);\n\t\t}));\n\t\tthis._editor.addOverlayWidget(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\tpublic getId(): string {\n\t\treturn GlyphHoverWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._hover.containerDomNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition | null {\n\t\treturn null;\n\t}\n\n\tprivate _updateFont(): void {\n\t\tconst codeClasses: HTMLElement[] = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n\t\tcodeClasses.forEach(node => this._editor.applyFontInfo(node));\n\t}\n\n\tprivate _onModelDecorationsChanged(): void {\n\t\tif (this._isVisible && this._hoverComputerOptions) {\n\t\t\t// The decorations have changed and the hover is visible,\n\t\t\t// we need to recompute the displayed text\n\t\t\tthis._hoverOperation.cancel();\n\t\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t\t}\n\t}\n\n\tpublic showsOrWillShow(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst target = mouseEvent.target;\n\t\tif (target.type === MouseTargetType.GUTTER_GLYPH_MARGIN && target.detail.glyphMarginLane) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, target.detail.glyphMarginLane);\n\t\t\treturn true;\n\t\t}\n\t\tif (target.type === MouseTargetType.GUTTER_LINE_NUMBERS) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, 'lineNo');\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate _startShowingAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (this._hoverComputerOptions\n\t\t\t&& this._hoverComputerOptions.lineNumber === lineNumber\n\t\t\t&& this._hoverComputerOptions.laneOrLine === laneOrLine) {\n\t\t\t// We have to show the widget at the exact same line number as before, so no work is needed\n\t\t\treturn;\n\t\t}\n\t\tthis._hoverOperation.cancel();\n\t\tthis.hide();\n\t\tthis._hoverComputerOptions = { lineNumber, laneOrLine };\n\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._hoverOperation.cancel();\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t}\n\n\tprivate _withResult(result: HoverResult<GlyphHoverComputerOptions, IHoverMessage>): void {\n\t\tthis._messages = result.value;\n\n\t\tif (this._messages.length > 0) {\n\t\t\tthis._renderMessages(result.options.lineNumber, result.options.laneOrLine, this._messages);\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tprivate _renderMessages(lineNumber: number, laneOrLine: LaneOrLineNumber, messages: IHoverMessage[]): void {\n\t\tthis._renderDisposeables.clear();\n\n\t\tconst fragment = document.createDocumentFragment();\n\n\t\tfor (const msg of messages) {\n\t\t\tconst markdownHoverElement = $('div.hover-row.markdown-hover');\n\t\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\t\t\tconst renderedContents = this._renderDisposeables.add(this._markdownRenderer.render(msg.value));\n\t\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\t\tfragment.appendChild(markdownHoverElement);\n\t\t}\n\n\t\tthis._updateContents(fragment);\n\t\tthis._showAt(lineNumber, laneOrLine);\n\t}\n\n\tprivate _updateContents(node: Node): void {\n\t\tthis._hover.contentsDomNode.textContent = '';\n\t\tthis._hover.contentsDomNode.appendChild(node);\n\t\tthis._updateFont();\n\t}\n\n\tprivate _showAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (!this._isVisible) {\n\t\t\tthis._isVisible = true;\n\t\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t\t}\n\n\t\tconst editorLayout = this._editor.getLayoutInfo();\n\t\tconst topForLineNumber = this._editor.getTopForLineNumber(lineNumber);\n\t\tconst editorScrollTop = this._editor.getScrollTop();\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst nodeHeight = this._hover.containerDomNode.clientHeight;\n\t\tconst top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\n\t\tconst left = editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth + (laneOrLine === 'lineNo' ? editorLayout.lineNumbersWidth : 0);\n\t\tthis._hover.containerDomNode.style.left = `${left}px`;\n\t\tthis._hover.containerDomNode.style.top = `${Math.max(Math.round(top), 0)}px`;\n\t\tthis._hover.containerDomNode.style.zIndex = '11'; // 1 more than the zone widget at 10 (#233819)\n\t}\n\n\tprivate _onMouseLeave(e: MouseEvent): void {\n\t\tconst editorDomNode = this._editor.getDomNode();\n\t\tconst isMousePositionOutsideOfEditor = !editorDomNode || !isMousePositionWithinElement(editorDomNode, e.x, e.y);\n\t\tif (isMousePositionOutsideOfEditor) {\n\t\t\tthis.hide();\n\t\t}\n\t}\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\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 { ICodeEditor, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { HoverOperation, HoverResult, HoverStartMode } from './hoverOperation.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { IHoverWidget } from './hoverTypes.js';\nimport { IHoverMessage, LaneOrLineNumber, GlyphHoverComputer, GlyphHoverComputerOptions } from './glyphHoverComputer.js';\nimport { isMousePositionWithinElement } from './hoverUtils.js';\n\nconst $ = dom.$;\n\nexport class GlyphHoverWidget extends Disposable implements IOverlayWidget, IHoverWidget {\n\n\tpublic static readonly ID = 'editor.contrib.modesGlyphHoverWidget';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _hover: HoverWidget;\n\n\tprivate _isVisible: boolean;\n\tprivate _messages: IHoverMessage[];\n\n\tprivate readonly _markdownRenderer: MarkdownRenderer;\n\tprivate readonly _hoverOperation: HoverOperation<GlyphHoverComputerOptions, IHoverMessage>;\n\tprivate readonly _renderDisposeables = this._register(new DisposableStore());\n\n\tprivate _hoverComputerOptions: GlyphHoverComputerOptions | undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ILanguageService languageService: ILanguageService,\n\t\t@IOpenerService openerService: IOpenerService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\n\t\tthis._isVisible = false;\n\t\tthis._messages = [];\n\n\t\tthis._hover = this._register(new HoverWidget(true));\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\n\t\tthis._markdownRenderer = new MarkdownRenderer({ editor: this._editor }, languageService, openerService);\n\t\tthis._hoverOperation = this._register(new HoverOperation(this._editor, new GlyphHoverComputer(this._editor)));\n\t\tthis._register(this._hoverOperation.onResult((result) => this._withResult(result)));\n\n\t\tthis._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\t\tthis._register(dom.addStandardDisposableListener(this._hover.containerDomNode, 'mouseleave', (e) => {\n\t\t\tthis._onMouseLeave(e);\n\t\t}));\n\t\tthis._editor.addOverlayWidget(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\tpublic getId(): string {\n\t\treturn GlyphHoverWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._hover.containerDomNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition | null {\n\t\treturn null;\n\t}\n\n\tprivate _updateFont(): void {\n\t\tconst codeClasses: HTMLElement[] = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n\t\tcodeClasses.forEach(node => this._editor.applyFontInfo(node));\n\t}\n\n\tprivate _onModelDecorationsChanged(): void {\n\t\tif (this._isVisible && this._hoverComputerOptions) {\n\t\t\t// The decorations have changed and the hover is visible,\n\t\t\t// we need to recompute the displayed text\n\t\t\tthis._hoverOperation.cancel();\n\t\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t\t}\n\t}\n\n\tpublic showsOrWillShow(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst target = mouseEvent.target;\n\t\tif (target.type === MouseTargetType.GUTTER_GLYPH_MARGIN && target.detail.glyphMarginLane) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, target.detail.glyphMarginLane);\n\t\t\treturn true;\n\t\t}\n\t\tif (target.type === MouseTargetType.GUTTER_LINE_NUMBERS) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, 'lineNo');\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate _startShowingAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (this._hoverComputerOptions\n\t\t\t&& this._hoverComputerOptions.lineNumber === lineNumber\n\t\t\t&& this._hoverComputerOptions.laneOrLine === laneOrLine) {\n\t\t\t// We have to show the widget at the exact same line number as before, so no work is needed\n\t\t\treturn;\n\t\t}\n\t\tthis._hoverOperation.cancel();\n\t\tthis.hide();\n\t\tthis._hoverComputerOptions = { lineNumber, laneOrLine };\n\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._hoverOperation.cancel();\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t}\n\n\tprivate _withResult(result: HoverResult<GlyphHoverComputerOptions, IHoverMessage>): void {\n\t\tthis._messages = result.value;\n\n\t\tif (this._messages.length > 0) {\n\t\t\tthis._renderMessages(result.options.lineNumber, result.options.laneOrLine, this._messages);\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tprivate _renderMessages(lineNumber: number, laneOrLine: LaneOrLineNumber, messages: IHoverMessage[]): void {\n\t\tthis._renderDisposeables.clear();\n\n\t\tconst fragment = document.createDocumentFragment();\n\n\t\tfor (const msg of messages) {\n\t\t\tconst markdownHoverElement = $('div.hover-row.markdown-hover');\n\t\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\t\t\tconst renderedContents = this._renderDisposeables.add(this._markdownRenderer.render(msg.value));\n\t\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\t\tfragment.appendChild(markdownHoverElement);\n\t\t}\n\n\t\tthis._updateContents(fragment);\n\t\tthis._showAt(lineNumber, laneOrLine);\n\t}\n\n\tprivate _updateContents(node: Node): void {\n\t\tthis._hover.contentsDomNode.textContent = '';\n\t\tthis._hover.contentsDomNode.appendChild(node);\n\t\tthis._updateFont();\n\t}\n\n\tprivate _showAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (!this._isVisible) {\n\t\t\tthis._isVisible = true;\n\t\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t\t}\n\n\t\tconst editorLayout = this._editor.getLayoutInfo();\n\t\tconst topForLineNumber = this._editor.getTopForLineNumber(lineNumber);\n\t\tconst editorScrollTop = this._editor.getScrollTop();\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst nodeHeight = this._hover.containerDomNode.clientHeight;\n\t\tconst top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\n\t\tconst left = editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth + (laneOrLine === 'lineNo' ? editorLayout.lineNumbersWidth : 0);\n\t\tthis._hover.containerDomNode.style.left = `${left}px`;\n\t\tthis._hover.containerDomNode.style.top = `${Math.max(Math.round(top), 0)}px`;\n\t\tthis._hover.containerDomNode.style.zIndex = '11'; // 1 more than the zone widget at 10 (#233819)\n\t}\n\n\tprivate _onMouseLeave(e: MouseEvent): void {\n\t\tconst editorDomNode = this._editor.getDomNode();\n\t\tconst isMousePositionOutsideOfEditor = !editorDomNode || !isMousePositionWithinElement(editorDomNode, e.x, e.y);\n\t\tif (isMousePositionOutsideOfEditor) {\n\t\t\tthis.hide();\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/hover/browser/glyphHoverWidget.ts","vs/editor/contrib/hover/browser/glyphHoverWidget.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;;;;;;;;;;;AAEhG,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sEAAsE,CAAC;AAGhH,OAAO,EAAE,cAAc,EAA+B,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AAE/E,OAAO,EAAmC,kBAAkB,EAA6B,MAAM,yBAAyB,CAAC;AACzH,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAET,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;;aAExB,OAAE,GAAG,sCAAH,AAAyC,CAAC;IAanE,YACC,MAAmB,EACO,wBAAmE;QAE7F,KAAK,EAAE,CAAC;QAFmC,6BAAwB,GAAxB,wBAAwB,CAA0B;QAN7E,wBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;QAS5E,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9G,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEpF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAA4B,EAAE,EAAE;YACrF,IAAI,CAAC,CAAC,UAAU,gCAAuB,EAAE,CAAC;gBACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;YAClG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEe,OAAO;QACtB,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,KAAK;QACX,OAAO,kBAAgB,CAAC,EAAE,CAAC;IAC5B,CAAC;IAEM,UAAU;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;IACrC,CAAC;IAEM,WAAW;QACjB,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,WAAW;QAClB,MAAM,WAAW,GAAkB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1H,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,0BAA0B;QACjC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACnD,yDAAyD;YACzD,0CAA0C;YAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,CAAC,KAAK,iCAAyB,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChF,CAAC;IACF,CAAC;IAEM,eAAe,CAAC,UAA6B;QACnD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,IAAI,MAAM,CAAC,IAAI,gDAAwC,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC1F,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAChF,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,gDAAwC,EAAE,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,UAAkB,EAAE,UAA4B;QACvE,IAAI,IAAI,CAAC,qBAAqB;eAC1B,IAAI,CAAC,qBAAqB,CAAC,UAAU,KAAK,UAAU;eACpD,IAAI,CAAC,qBAAqB,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC1D,2FAA2F;YAC3F,OAAO;QACR,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,qBAAqB,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,KAAK,iCAAyB,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAChF,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3E,CAAC;IAEO,WAAW,CAAC,MAA6D;QAChF,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;QAE9B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;IACF,CAAC;IAEO,eAAe,CAAC,UAAkB,EAAE,UAA4B,EAAE,QAAyB;QAClG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QAEnD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,oBAAoB,GAAG,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAC/D,MAAM,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACvF,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACjI,oBAAoB,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC3D,QAAQ,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAEO,eAAe,CAAC,IAAU;QACjC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAEO,OAAO,CAAC,UAAkB,EAAE,UAA4B;QAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACtE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,kCAAyB,CAAC;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC;QAC7D,MAAM,GAAG,GAAG,gBAAgB,GAAG,eAAe,GAAG,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,YAAY,CAAC,eAAe,GAAG,YAAY,CAAC,gBAAgB,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1I,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,8CAA8C;IACjG,CAAC;IAEO,aAAa,CAAC,CAAa;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,8BAA8B,GAAG,CAAC,aAAa,IAAI,CAAC,4BAA4B,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChH,IAAI,8BAA8B,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;IACF,CAAC;;AAxKW,gBAAgB;IAiB1B,WAAA,wBAAwB,CAAA;GAjBd,gBAAgB,CAyK5B","file":"glyphHoverWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","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 *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { ICodeEditor, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { HoverOperation, HoverResult, HoverStartMode } from './hoverOperation.js';\nimport { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { IHoverWidget } from './hoverTypes.js';\nimport { IHoverMessage, LaneOrLineNumber, GlyphHoverComputer, GlyphHoverComputerOptions } from './glyphHoverComputer.js';\nimport { isMousePositionWithinElement } from './hoverUtils.js';\n\nconst $ = dom.$;\n\nexport class GlyphHoverWidget extends Disposable implements IOverlayWidget, IHoverWidget {\n\n\tpublic static readonly ID = 'editor.contrib.modesGlyphHoverWidget';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _hover: HoverWidget;\n\n\tprivate _isVisible: boolean;\n\tprivate _messages: IHoverMessage[];\n\n\tprivate readonly _hoverOperation: HoverOperation<GlyphHoverComputerOptions, IHoverMessage>;\n\tprivate readonly _renderDisposeables = this._register(new DisposableStore());\n\n\tprivate _hoverComputerOptions: GlyphHoverComputerOptions | undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\n\t\tthis._isVisible = false;\n\t\tthis._messages = [];\n\n\t\tthis._hover = this._register(new HoverWidget(true));\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\n\t\tthis._hoverOperation = this._register(new HoverOperation(this._editor, new GlyphHoverComputer(this._editor)));\n\t\tthis._register(this._hoverOperation.onResult((result) => this._withResult(result)));\n\n\t\tthis._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\t\tthis._register(dom.addStandardDisposableListener(this._hover.containerDomNode, 'mouseleave', (e) => {\n\t\t\tthis._onMouseLeave(e);\n\t\t}));\n\t\tthis._editor.addOverlayWidget(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\tpublic getId(): string {\n\t\treturn GlyphHoverWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._hover.containerDomNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition | null {\n\t\treturn null;\n\t}\n\n\tprivate _updateFont(): void {\n\t\tconst codeClasses: HTMLElement[] = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n\t\tcodeClasses.forEach(node => this._editor.applyFontInfo(node));\n\t}\n\n\tprivate _onModelDecorationsChanged(): void {\n\t\tif (this._isVisible && this._hoverComputerOptions) {\n\t\t\t// The decorations have changed and the hover is visible,\n\t\t\t// we need to recompute the displayed text\n\t\t\tthis._hoverOperation.cancel();\n\t\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t\t}\n\t}\n\n\tpublic showsOrWillShow(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst target = mouseEvent.target;\n\t\tif (target.type === MouseTargetType.GUTTER_GLYPH_MARGIN && target.detail.glyphMarginLane) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, target.detail.glyphMarginLane);\n\t\t\treturn true;\n\t\t}\n\t\tif (target.type === MouseTargetType.GUTTER_LINE_NUMBERS) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, 'lineNo');\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate _startShowingAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (this._hoverComputerOptions\n\t\t\t&& this._hoverComputerOptions.lineNumber === lineNumber\n\t\t\t&& this._hoverComputerOptions.laneOrLine === laneOrLine) {\n\t\t\t// We have to show the widget at the exact same line number as before, so no work is needed\n\t\t\treturn;\n\t\t}\n\t\tthis._hoverOperation.cancel();\n\t\tthis.hide();\n\t\tthis._hoverComputerOptions = { lineNumber, laneOrLine };\n\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._hoverOperation.cancel();\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t}\n\n\tprivate _withResult(result: HoverResult<GlyphHoverComputerOptions, IHoverMessage>): void {\n\t\tthis._messages = result.value;\n\n\t\tif (this._messages.length > 0) {\n\t\t\tthis._renderMessages(result.options.lineNumber, result.options.laneOrLine, this._messages);\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tprivate _renderMessages(lineNumber: number, laneOrLine: LaneOrLineNumber, messages: IHoverMessage[]): void {\n\t\tthis._renderDisposeables.clear();\n\n\t\tconst fragment = document.createDocumentFragment();\n\n\t\tfor (const msg of messages) {\n\t\t\tconst markdownHoverElement = $('div.hover-row.markdown-hover');\n\t\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\t\t\tconst renderedContents = this._renderDisposeables.add(this._markdownRendererService.render(msg.value, { editor: this._editor }));\n\t\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\t\tfragment.appendChild(markdownHoverElement);\n\t\t}\n\n\t\tthis._updateContents(fragment);\n\t\tthis._showAt(lineNumber, laneOrLine);\n\t}\n\n\tprivate _updateContents(node: Node): void {\n\t\tthis._hover.contentsDomNode.textContent = '';\n\t\tthis._hover.contentsDomNode.appendChild(node);\n\t\tthis._updateFont();\n\t}\n\n\tprivate _showAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (!this._isVisible) {\n\t\t\tthis._isVisible = true;\n\t\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t\t}\n\n\t\tconst editorLayout = this._editor.getLayoutInfo();\n\t\tconst topForLineNumber = this._editor.getTopForLineNumber(lineNumber);\n\t\tconst editorScrollTop = this._editor.getScrollTop();\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst nodeHeight = this._hover.containerDomNode.clientHeight;\n\t\tconst top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\n\t\tconst left = editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth + (laneOrLine === 'lineNo' ? editorLayout.lineNumbersWidth : 0);\n\t\tthis._hover.containerDomNode.style.left = `${left}px`;\n\t\tthis._hover.containerDomNode.style.top = `${Math.max(Math.round(top), 0)}px`;\n\t\tthis._hover.containerDomNode.style.zIndex = '11'; // 1 more than the zone widget at 10 (#233819)\n\t}\n\n\tprivate _onMouseLeave(e: MouseEvent): void {\n\t\tconst editorDomNode = this._editor.getDomNode();\n\t\tconst isMousePositionOutsideOfEditor = !editorDomNode || !isMousePositionWithinElement(editorDomNode, e.x, e.y);\n\t\tif (isMousePositionOutsideOfEditor) {\n\t\t\tthis.hide();\n\t\t}\n\t}\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\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { ICodeEditor, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { HoverOperation, HoverResult, HoverStartMode } from './hoverOperation.js';\nimport { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { IHoverWidget } from './hoverTypes.js';\nimport { IHoverMessage, LaneOrLineNumber, GlyphHoverComputer, GlyphHoverComputerOptions } from './glyphHoverComputer.js';\nimport { isMousePositionWithinElement } from './hoverUtils.js';\n\nconst $ = dom.$;\n\nexport class GlyphHoverWidget extends Disposable implements IOverlayWidget, IHoverWidget {\n\n\tpublic static readonly ID = 'editor.contrib.modesGlyphHoverWidget';\n\n\tprivate readonly _editor: ICodeEditor;\n\tprivate readonly _hover: HoverWidget;\n\n\tprivate _isVisible: boolean;\n\tprivate _messages: IHoverMessage[];\n\n\tprivate readonly _hoverOperation: HoverOperation<GlyphHoverComputerOptions, IHoverMessage>;\n\tprivate readonly _renderDisposeables = this._register(new DisposableStore());\n\n\tprivate _hoverComputerOptions: GlyphHoverComputerOptions | undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t) {\n\t\tsuper();\n\t\tthis._editor = editor;\n\n\t\tthis._isVisible = false;\n\t\tthis._messages = [];\n\n\t\tthis._hover = this._register(new HoverWidget(true));\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\n\t\tthis._hoverOperation = this._register(new HoverOperation(this._editor, new GlyphHoverComputer(this._editor)));\n\t\tthis._register(this._hoverOperation.onResult((result) => this._withResult(result)));\n\n\t\tthis._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\n\t\tthis._register(this._editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\t\tthis._register(dom.addStandardDisposableListener(this._hover.containerDomNode, 'mouseleave', (e) => {\n\t\t\tthis._onMouseLeave(e);\n\t\t}));\n\t\tthis._editor.addOverlayWidget(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._editor.removeOverlayWidget(this);\n\t\tsuper.dispose();\n\t}\n\n\tpublic getId(): string {\n\t\treturn GlyphHoverWidget.ID;\n\t}\n\n\tpublic getDomNode(): HTMLElement {\n\t\treturn this._hover.containerDomNode;\n\t}\n\n\tpublic getPosition(): IOverlayWidgetPosition | null {\n\t\treturn null;\n\t}\n\n\tprivate _updateFont(): void {\n\t\tconst codeClasses: HTMLElement[] = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n\t\tcodeClasses.forEach(node => this._editor.applyFontInfo(node));\n\t}\n\n\tprivate _onModelDecorationsChanged(): void {\n\t\tif (this._isVisible && this._hoverComputerOptions) {\n\t\t\t// The decorations have changed and the hover is visible,\n\t\t\t// we need to recompute the displayed text\n\t\t\tthis._hoverOperation.cancel();\n\t\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t\t}\n\t}\n\n\tpublic showsOrWillShow(mouseEvent: IEditorMouseEvent): boolean {\n\t\tconst target = mouseEvent.target;\n\t\tif (target.type === MouseTargetType.GUTTER_GLYPH_MARGIN && target.detail.glyphMarginLane) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, target.detail.glyphMarginLane);\n\t\t\treturn true;\n\t\t}\n\t\tif (target.type === MouseTargetType.GUTTER_LINE_NUMBERS) {\n\t\t\tthis._startShowingAt(target.position.lineNumber, 'lineNo');\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprivate _startShowingAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (this._hoverComputerOptions\n\t\t\t&& this._hoverComputerOptions.lineNumber === lineNumber\n\t\t\t&& this._hoverComputerOptions.laneOrLine === laneOrLine) {\n\t\t\t// We have to show the widget at the exact same line number as before, so no work is needed\n\t\t\treturn;\n\t\t}\n\t\tthis._hoverOperation.cancel();\n\t\tthis.hide();\n\t\tthis._hoverComputerOptions = { lineNumber, laneOrLine };\n\t\tthis._hoverOperation.start(HoverStartMode.Delayed, this._hoverComputerOptions);\n\t}\n\n\tpublic hide(): void {\n\t\tthis._hoverComputerOptions = undefined;\n\t\tthis._hoverOperation.cancel();\n\t\tif (!this._isVisible) {\n\t\t\treturn;\n\t\t}\n\t\tthis._isVisible = false;\n\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t}\n\n\tprivate _withResult(result: HoverResult<GlyphHoverComputerOptions, IHoverMessage>): void {\n\t\tthis._messages = result.value;\n\n\t\tif (this._messages.length > 0) {\n\t\t\tthis._renderMessages(result.options.lineNumber, result.options.laneOrLine, this._messages);\n\t\t} else {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tprivate _renderMessages(lineNumber: number, laneOrLine: LaneOrLineNumber, messages: IHoverMessage[]): void {\n\t\tthis._renderDisposeables.clear();\n\n\t\tconst fragment = document.createDocumentFragment();\n\n\t\tfor (const msg of messages) {\n\t\t\tconst markdownHoverElement = $('div.hover-row.markdown-hover');\n\t\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\t\t\tconst renderedContents = this._renderDisposeables.add(this._markdownRendererService.render(msg.value, { editor: this._editor }));\n\t\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\t\tfragment.appendChild(markdownHoverElement);\n\t\t}\n\n\t\tthis._updateContents(fragment);\n\t\tthis._showAt(lineNumber, laneOrLine);\n\t}\n\n\tprivate _updateContents(node: Node): void {\n\t\tthis._hover.contentsDomNode.textContent = '';\n\t\tthis._hover.contentsDomNode.appendChild(node);\n\t\tthis._updateFont();\n\t}\n\n\tprivate _showAt(lineNumber: number, laneOrLine: LaneOrLineNumber): void {\n\t\tif (!this._isVisible) {\n\t\t\tthis._isVisible = true;\n\t\t\tthis._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n\t\t}\n\n\t\tconst editorLayout = this._editor.getLayoutInfo();\n\t\tconst topForLineNumber = this._editor.getTopForLineNumber(lineNumber);\n\t\tconst editorScrollTop = this._editor.getScrollTop();\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst nodeHeight = this._hover.containerDomNode.clientHeight;\n\t\tconst top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\n\t\tconst left = editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth + (laneOrLine === 'lineNo' ? editorLayout.lineNumbersWidth : 0);\n\t\tthis._hover.containerDomNode.style.left = `${left}px`;\n\t\tthis._hover.containerDomNode.style.top = `${Math.max(Math.round(top), 0)}px`;\n\t\tthis._hover.containerDomNode.style.zIndex = '11'; // 1 more than the zone widget at 10 (#233819)\n\t}\n\n\tprivate _onMouseLeave(e: MouseEvent): void {\n\t\tconst editorDomNode = this._editor.getDomNode();\n\t\tconst isMousePositionOutsideOfEditor = !editorDomNode || !isMousePositionWithinElement(editorDomNode, e.x, e.y);\n\t\tif (isMousePositionOutsideOfEditor) {\n\t\t\tthis.hide();\n\t\t}\n\t}\n}\n"]}