monaco-editor-core 0.55.0-dev-20251020 → 0.55.0-dev-20251022

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 (210) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +17 -5
  18. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  19. package/esm/vs/base/browser/ui/iconLabel/iconlabel.css +2 -3
  20. package/esm/vs/base/common/actions.js +5 -0
  21. package/esm/vs/base/common/actions.js.map +1 -1
  22. package/esm/vs/base/common/async.js +5 -5
  23. package/esm/vs/base/common/async.js.map +1 -1
  24. package/esm/vs/base/common/codiconsLibrary.js +1 -0
  25. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  26. package/esm/vs/base/common/policy.js +40 -1
  27. package/esm/vs/base/common/policy.js.map +1 -1
  28. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +20 -12
  29. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  30. package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +1 -1
  31. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js +4 -4
  32. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +1 -1
  33. package/esm/vs/editor/browser/coreCommands.js +3 -3
  34. package/esm/vs/editor/browser/editorExtensions.js +9 -9
  35. package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
  36. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +1 -3
  37. package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
  38. package/esm/vs/editor/browser/services/hoverService/updatableHoverWidget.js +1 -1
  39. package/esm/vs/editor/browser/services/inlineCompletionsService.js +4 -4
  40. package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
  41. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +2 -2
  42. package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
  43. package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +14 -14
  44. package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js.map +1 -1
  45. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
  46. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/copySelection.js +1 -1
  47. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +7 -7
  48. package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +5 -5
  49. package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js +6 -0
  50. package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js.map +1 -1
  51. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +7 -7
  52. package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
  53. package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
  54. package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
  55. package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
  56. package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +1 -0
  57. package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js.map +1 -1
  58. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +2 -2
  59. package/esm/vs/editor/common/config/editorConfigurationSchema.js +54 -54
  60. package/esm/vs/editor/common/config/editorOptions.js +406 -406
  61. package/esm/vs/editor/common/core/editorColorRegistry.js +68 -68
  62. package/esm/vs/editor/common/editorContextKeys.js +46 -46
  63. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  64. package/esm/vs/editor/common/languages.js +56 -56
  65. package/esm/vs/editor/common/model/editStack.js +1 -1
  66. package/esm/vs/editor/common/standaloneStrings.js +10 -10
  67. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  68. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  69. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  70. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  71. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  72. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  73. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  74. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  75. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  76. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  77. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  78. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  79. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  80. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  81. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  82. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  83. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  84. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  85. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  86. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  87. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  88. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  89. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  90. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  91. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  92. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  93. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  94. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  95. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  96. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  97. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
  98. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  99. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  100. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  101. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  102. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  103. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  104. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  105. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  106. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  107. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  108. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  109. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  110. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +22 -2
  111. package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
  112. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  113. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  114. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  115. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  116. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  117. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  118. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  119. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +18 -51
  120. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
  121. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
  122. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
  123. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +1 -1
  124. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  125. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -4
  126. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
  127. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +0 -1
  128. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  129. package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
  130. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
  131. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
  132. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  133. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  134. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  135. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  136. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  137. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  138. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  139. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  140. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  141. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  142. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  143. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  144. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +35 -28
  145. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
  146. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  147. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  148. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  149. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +8 -11
  150. package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
  151. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  152. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  153. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  154. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  155. package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
  156. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  157. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  158. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  159. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  160. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  161. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  162. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  163. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  164. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  165. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  166. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  167. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  168. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  169. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
  170. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  171. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  172. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  173. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  174. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  175. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  176. package/esm/vs/platform/actions/common/menuService.js +2 -2
  177. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  178. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  179. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  180. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  181. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  182. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  183. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  184. package/esm/vs/platform/list/browser/listService.js +27 -27
  185. package/esm/vs/platform/markers/common/markerService.js +2 -2
  186. package/esm/vs/platform/markers/common/markers.js +6 -6
  187. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
  188. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  189. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  190. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  191. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  192. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  193. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  194. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  195. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  196. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  197. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  198. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  199. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  200. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  201. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  202. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  203. package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
  204. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  205. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  206. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  207. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  208. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  209. package/package.json +2 -2
  210. package/version.txt +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/rename/browser/renameWidget.ts"],"names":[],"mappings":"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","file":"renameWidget.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 { StandardKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { getBaseLayerHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate2.js';\nimport { renderIcon } from '../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { IListRenderer, IListVirtualDelegate } from '../../../../base/browser/ui/list/list.js';\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { DeferredPromise, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore, IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType, isDefined } from '../../../../base/common/types.js';\nimport './renameWidget.css';\nimport * as domFontInfo from '../../../browser/config/domFontInfo.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { FontInfo } from '../../../common/config/fontInfo.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { Position } from '../../../common/core/position.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { ScrollType } from '../../../common/editorCommon.js';\nimport { NewSymbolName, NewSymbolNameTag, NewSymbolNameTriggerKind, ProviderResult } from '../../../common/languages.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { getListStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport {\n\teditorWidgetBackground,\n\tinputBackground,\n\tinputBorder,\n\tinputForeground,\n\tquickInputListFocusBackground,\n\tquickInputListFocusForeground,\n\twidgetBorder,\n\twidgetShadow } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IColorTheme, IThemeService } from '../../../../platform/theme/common/themeService.js';\n\n/** for debugging */\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\n\nexport const CONTEXT_RENAME_INPUT_VISIBLE = new RawContextKey<boolean>('renameInputVisible', false, nls.localize('renameInputVisible', \"Whether the rename input widget is visible\"));\nexport const CONTEXT_RENAME_INPUT_FOCUSED = new RawContextKey<boolean>('renameInputFocused', false, nls.localize('renameInputFocused', \"Whether the rename input widget is focused\"));\n\n/**\n * \"Source\" of the new name:\n * - 'inputField' - user entered the new name\n * - 'renameSuggestion' - user picked from rename suggestions\n * - 'userEditedRenameSuggestion' - user _likely_ edited a rename suggestion (\"likely\" because when input started being edited, a rename suggestion had focus)\n */\nexport type NewNameSource =\n\t| { k: 'inputField' }\n\t| { k: 'renameSuggestion' }\n\t| { k: 'userEditedRenameSuggestion' };\n\n/**\n * Various statistics regarding rename input field\n */\nexport type RenameWidgetStats = {\n\tnRenameSuggestions: number;\n\tsource: NewNameSource;\n\ttimeBeforeFirstInputFieldEdit: number | undefined;\n\tnRenameSuggestionsInvocations: number;\n\thadAutomaticRenameSuggestionsInvocation: boolean;\n};\n\nexport type RenameWidgetResult = {\n\t/**\n\t * The new name to be used\n\t */\n\tnewName: string;\n\twantsPreview?: boolean;\n\tstats: RenameWidgetStats;\n};\n\ninterface IRenameWidget {\n}\n\nexport class RenameWidget implements IRenameWidget, IContentWidget, IDisposable {\n\n\t// implement IContentWidget\n\treadonly allowEditorOverflow: boolean = true;\n\n\t// UI state\n\n\tprivate _domNode?: HTMLElement;\n\tprivate _inputWithButton: InputWithButton;\n\tprivate _renameCandidateListView?: RenameCandidateListView;\n\tprivate _label?: HTMLDivElement;\n\n\tprivate _nPxAvailableAbove?: number;\n\tprivate _nPxAvailableBelow?: number;\n\n\t// Model state\n\n\tprivate _position?: Position;\n\tprivate _currentName?: string;\n\t/** Is true if input field got changes when a rename candidate was focused; otherwise, false */\n\tprivate _isEditingRenameCandidate: boolean;\n\n\tprivate readonly _candidates: Set<string>;\n\n\tprivate _visible?: boolean;\n\n\t/** must be reset at session start */\n\tprivate _beforeFirstInputFieldEditSW: StopWatch;\n\n\t/**\n\t * Milliseconds before user edits the input field for the first time\n\t * @remarks must be set once per session\n\t */\n\tprivate _timeBeforeFirstInputFieldEdit: number | undefined;\n\n\tprivate _nRenameSuggestionsInvocations: number;\n\n\tprivate _hadAutomaticRenameSuggestionsInvocation: boolean;\n\n\tprivate _renameCandidateProvidersCts: CancellationTokenSource | undefined;\n\tprivate _renameCts: CancellationTokenSource | undefined;\n\n\tprivate readonly _visibleContextKey: IContextKey<boolean>;\n\tprivate readonly _disposables = new DisposableStore();\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _acceptKeybindings: [string, string],\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t) {\n\t\tthis._visibleContextKey = CONTEXT_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\n\n\t\tthis._isEditingRenameCandidate = false;\n\n\t\tthis._nRenameSuggestionsInvocations = 0;\n\n\t\tthis._hadAutomaticRenameSuggestionsInvocation = false;\n\n\t\tthis._candidates = new Set();\n\n\t\tthis._beforeFirstInputFieldEditSW = new StopWatch();\n\n\t\tthis._inputWithButton = new InputWithButton();\n\t\tthis._disposables.add(this._inputWithButton);\n\n\t\tthis._editor.addContentWidget(this);\n\n\t\tthis._disposables.add(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.add(_themeService.onDidColorThemeChange(this._updateStyles, this));\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t\tthis._editor.removeContentWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn '__renameInputWidget';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\tif (!this._domNode) {\n\t\t\tthis._domNode = document.createElement('div');\n\t\t\tthis._domNode.className = 'monaco-editor rename-box';\n\n\t\t\tthis._domNode.appendChild(this._inputWithButton.domNode);\n\n\t\t\tthis._renameCandidateListView = this._disposables.add(\n\t\t\t\tnew RenameCandidateListView(this._domNode, {\n\t\t\t\t\tfontInfo: this._editor.getOption(EditorOption.fontInfo),\n\t\t\t\t\tonFocusChange: (newSymbolName: string) => {\n\t\t\t\t\t\tthis._inputWithButton.input.value = newSymbolName;\n\t\t\t\t\t\tthis._isEditingRenameCandidate = false; // @ulugbekna: reset\n\t\t\t\t\t},\n\t\t\t\t\tonSelectionChange: () => {\n\t\t\t\t\t\tthis._isEditingRenameCandidate = false; // @ulugbekna: because user picked a rename suggestion\n\t\t\t\t\t\tthis.acceptInput(false); // we don't allow preview with mouse click for now\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._disposables.add(\n\t\t\t\tthis._inputWithButton.onDidInputChange(() => {\n\t\t\t\t\tif (this._renameCandidateListView?.focusedCandidate !== undefined) {\n\t\t\t\t\t\tthis._isEditingRenameCandidate = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis._timeBeforeFirstInputFieldEdit ??= this._beforeFirstInputFieldEditSW.elapsed();\n\t\t\t\t\tif (this._renameCandidateProvidersCts?.token.isCancellationRequested === false) {\n\t\t\t\t\t\tthis._renameCandidateProvidersCts.cancel();\n\t\t\t\t\t}\n\t\t\t\t\tthis._renameCandidateListView?.clearFocus();\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._label = document.createElement('div');\n\t\t\tthis._label.className = 'rename-label';\n\t\t\tthis._domNode.appendChild(this._label);\n\n\t\t\tthis._updateFont();\n\t\t\tthis._updateStyles(this._themeService.getColorTheme());\n\t\t}\n\t\treturn this._domNode;\n\t}\n\n\tprivate _updateStyles(theme: IColorTheme): void {\n\t\tif (!this._domNode) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst widgetShadowColor = theme.getColor(widgetShadow);\n\t\tconst widgetBorderColor = theme.getColor(widgetBorder);\n\t\tthis._domNode.style.backgroundColor = String(theme.getColor(editorWidgetBackground) ?? '');\n\t\tthis._domNode.style.boxShadow = widgetShadowColor ? ` 0 0 8px 2px ${widgetShadowColor}` : '';\n\t\tthis._domNode.style.border = widgetBorderColor ? `1px solid ${widgetBorderColor}` : '';\n\t\tthis._domNode.style.color = String(theme.getColor(inputForeground) ?? '');\n\n\t\tconst border = theme.getColor(inputBorder);\n\n\t\tthis._inputWithButton.domNode.style.backgroundColor = String(theme.getColor(inputBackground) ?? '');\n\t\tthis._inputWithButton.input.style.backgroundColor = String(theme.getColor(inputBackground) ?? '');\n\t\tthis._inputWithButton.domNode.style.borderWidth = border ? '1px' : '0px';\n\t\tthis._inputWithButton.domNode.style.borderStyle = border ? 'solid' : 'none';\n\t\tthis._inputWithButton.domNode.style.borderColor = border?.toString() ?? 'none';\n\t}\n\n\tprivate _updateFont(): void {\n\t\tif (this._domNode === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tassertType(this._label !== undefined, 'RenameWidget#_updateFont: _label must not be undefined given _domNode is defined');\n\n\t\tthis._editor.applyFontInfo(this._inputWithButton.input);\n\n\t\tconst fontInfo = this._editor.getOption(EditorOption.fontInfo);\n\t\tthis._label.style.fontSize = `${this._computeLabelFontSize(fontInfo.fontSize)}px`;\n\t}\n\n\tprivate _computeLabelFontSize(editorFontSize: number) {\n\t\treturn editorFontSize * 0.8;\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\tif (!this._visible) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this._editor.hasModel() || // @ulugbekna: shouldn't happen\n\t\t\t!this._editor.getDomNode() // @ulugbekna: can happen during tests based on suggestWidget's similar predicate check\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst bodyBox = dom.getClientArea(this.getDomNode().ownerDocument.body);\n\t\tconst editorBox = dom.getDomNodePagePosition(this._editor.getDomNode());\n\n\t\tconst cursorBoxTop = this._getTopForPosition();\n\n\t\tthis._nPxAvailableAbove = cursorBoxTop + editorBox.top;\n\t\tthis._nPxAvailableBelow = bodyBox.height - this._nPxAvailableAbove;\n\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst { totalHeight: candidateViewHeight } = RenameCandidateView.getLayoutInfo({ lineHeight });\n\n\t\tconst positionPreference = this._nPxAvailableBelow > candidateViewHeight * 6 /* approximate # of candidates to fit in (inclusive of rename input box & rename label) */\n\t\t\t? [ContentWidgetPositionPreference.BELOW, ContentWidgetPositionPreference.ABOVE]\n\t\t\t: [ContentWidgetPositionPreference.ABOVE, ContentWidgetPositionPreference.BELOW];\n\n\t\treturn {\n\t\t\tposition: this._position!,\n\t\t\tpreference: positionPreference,\n\t\t};\n\t}\n\n\tbeforeRender(): IDimension | null {\n\t\tconst [accept, preview] = this._acceptKeybindings;\n\t\tthis._label!.innerText = nls.localize({ key: 'label', comment: ['placeholders are keybindings, e.g \"F2 to Rename, Shift+F2 to Preview\"'] }, \"{0} to Rename, {1} to Preview\", this._keybindingService.lookupKeybinding(accept)?.getLabel(), this._keybindingService.lookupKeybinding(preview)?.getLabel());\n\n\t\tthis._domNode!.style.minWidth = `200px`; // to prevent from widening when candidates come in\n\n\t\treturn null;\n\t}\n\n\tafterRender(position: ContentWidgetPositionPreference | null): void {\n\t\t// FIXME@ulugbekna: commenting trace log out until we start unmounting the widget from editor properly - https://github.com/microsoft/vscode/issues/226975\n\t\t// this._trace('invoking afterRender, position: ', position ? 'not null' : 'null');\n\t\tif (position === null) {\n\t\t\t// cancel rename when input widget isn't rendered anymore\n\t\t\tthis.cancelInput(true, 'afterRender (because position is null)');\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._editor.hasModel() || // shouldn't happen\n\t\t\t!this._editor.getDomNode() // can happen during tests based on suggestWidget's similar predicate check\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tassertType(this._renameCandidateListView);\n\t\tassertType(this._nPxAvailableAbove !== undefined);\n\t\tassertType(this._nPxAvailableBelow !== undefined);\n\n\t\tconst inputBoxHeight = dom.getTotalHeight(this._inputWithButton.domNode);\n\n\t\tconst labelHeight = dom.getTotalHeight(this._label!);\n\n\t\tlet totalHeightAvailable: number;\n\t\tif (position === ContentWidgetPositionPreference.BELOW) {\n\t\t\ttotalHeightAvailable = this._nPxAvailableBelow;\n\t\t} else {\n\t\t\ttotalHeightAvailable = this._nPxAvailableAbove;\n\t\t}\n\n\t\tthis._renameCandidateListView!.layout({\n\t\t\theight: totalHeightAvailable - labelHeight - inputBoxHeight,\n\t\t\twidth: dom.getTotalWidth(this._inputWithButton.domNode),\n\t\t});\n\t}\n\n\n\tprivate _currentAcceptInput?: (wantsPreview: boolean) => void;\n\tprivate _currentCancelInput?: (focusEditor: boolean) => void;\n\tprivate _requestRenameCandidatesOnce?: (triggerKind: NewSymbolNameTriggerKind, cts: CancellationToken) => ProviderResult<NewSymbolName[]>[];\n\n\tacceptInput(wantsPreview: boolean): void {\n\t\tthis._trace(`invoking acceptInput`);\n\t\tthis._currentAcceptInput?.(wantsPreview);\n\t}\n\n\tcancelInput(focusEditor: boolean, caller: string): void {\n\t\t// this._trace(`invoking cancelInput, caller: ${caller}, _currentCancelInput: ${this._currentAcceptInput ? 'not undefined' : 'undefined'}`);\n\t\tthis._currentCancelInput?.(focusEditor);\n\t}\n\n\tfocusNextRenameSuggestion() {\n\t\tif (!this._renameCandidateListView?.focusNext()) {\n\t\t\tthis._inputWithButton.input.value = this._currentName!;\n\t\t}\n\t}\n\n\tfocusPreviousRenameSuggestion() { // TODO@ulugbekna: this and focusNext should set the original name if no candidate is focused\n\t\tif (!this._renameCandidateListView?.focusPrevious()) {\n\t\t\tthis._inputWithButton.input.value = this._currentName!;\n\t\t}\n\t}\n\n\t/**\n\t * @param requestRenameCandidates is `undefined` when there are no rename suggestion providers\n\t */\n\tgetInput(\n\t\twhere: IRange,\n\t\tcurrentName: string,\n\t\tsupportPreview: boolean,\n\t\trequestRenameCandidates: undefined | ((triggerKind: NewSymbolNameTriggerKind, cts: CancellationToken) => ProviderResult<NewSymbolName[]>[]),\n\t\tcts: CancellationTokenSource\n\t): Promise<RenameWidgetResult | boolean> {\n\n\t\tconst { start: selectionStart, end: selectionEnd } = this._getSelection(where, currentName);\n\n\t\tthis._renameCts = cts;\n\n\t\tconst disposeOnDone = new DisposableStore();\n\n\t\tthis._nRenameSuggestionsInvocations = 0;\n\n\t\tthis._hadAutomaticRenameSuggestionsInvocation = false;\n\n\t\tif (requestRenameCandidates === undefined) {\n\t\t\tthis._inputWithButton.button.style.display = 'none';\n\t\t} else {\n\t\t\tthis._inputWithButton.button.style.display = 'flex';\n\n\t\t\tthis._requestRenameCandidatesOnce = requestRenameCandidates;\n\n\t\t\tthis._requestRenameCandidates(currentName, false);\n\n\t\t\tdisposeOnDone.add(dom.addDisposableListener(\n\t\t\t\tthis._inputWithButton.button,\n\t\t\t\t'click',\n\t\t\t\t() => this._requestRenameCandidates(currentName, true)\n\t\t\t));\n\t\t\tdisposeOnDone.add(dom.addDisposableListener(\n\t\t\t\tthis._inputWithButton.button,\n\t\t\t\tdom.EventType.KEY_DOWN,\n\t\t\t\t(e) => {\n\t\t\t\t\tconst keyEvent = new StandardKeyboardEvent(e);\n\n\t\t\t\t\tif (keyEvent.equals(KeyCode.Enter) || keyEvent.equals(KeyCode.Space)) {\n\t\t\t\t\t\tkeyEvent.stopPropagation();\n\t\t\t\t\t\tkeyEvent.preventDefault();\n\t\t\t\t\t\tthis._requestRenameCandidates(currentName, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\n\t\tthis._isEditingRenameCandidate = false;\n\n\t\tthis._domNode!.classList.toggle('preview', supportPreview);\n\n\t\tthis._position = new Position(where.startLineNumber, where.startColumn);\n\t\tthis._currentName = currentName;\n\n\t\tthis._inputWithButton.input.value = currentName;\n\t\tthis._inputWithButton.input.setAttribute('selectionStart', selectionStart.toString());\n\t\tthis._inputWithButton.input.setAttribute('selectionEnd', selectionEnd.toString());\n\t\tthis._inputWithButton.input.size = Math.max((where.endColumn - where.startColumn) * 1.1, 20); // determines width\n\n\t\tthis._beforeFirstInputFieldEditSW.reset();\n\n\n\t\tdisposeOnDone.add(toDisposable(() => {\n\t\t\tthis._renameCts = undefined;\n\t\t\tcts.dispose(true);\n\t\t})); // @ulugbekna: this may result in `this.cancelInput` being called twice, but it should be safe since we set it to undefined after 1st call\n\t\tdisposeOnDone.add(toDisposable(() => {\n\t\t\tif (this._renameCandidateProvidersCts !== undefined) {\n\t\t\t\tthis._renameCandidateProvidersCts.dispose(true);\n\t\t\t\tthis._renameCandidateProvidersCts = undefined;\n\t\t\t}\n\t\t}));\n\n\t\tdisposeOnDone.add(toDisposable(() => this._candidates.clear()));\n\n\t\tconst inputResult = new DeferredPromise<RenameWidgetResult | boolean>();\n\n\t\tinputResult.p.finally(() => {\n\t\t\tdisposeOnDone.dispose();\n\t\t\tthis._hide();\n\t\t});\n\n\t\tthis._currentCancelInput = (focusEditor) => {\n\t\t\tthis._trace('invoking _currentCancelInput');\n\t\t\tthis._currentAcceptInput = undefined;\n\t\t\tthis._currentCancelInput = undefined;\n\t\t\t// fixme session cleanup\n\t\t\tthis._renameCandidateListView?.clearCandidates();\n\t\t\tinputResult.complete(focusEditor);\n\t\t\treturn true;\n\t\t};\n\n\t\tthis._currentAcceptInput = (wantsPreview) => {\n\t\t\tthis._trace('invoking _currentAcceptInput');\n\t\t\tassertType(this._renameCandidateListView !== undefined);\n\n\t\t\tconst nRenameSuggestions = this._renameCandidateListView.nCandidates;\n\n\t\t\tlet newName: string;\n\t\t\tlet source: NewNameSource;\n\t\t\tconst focusedCandidate = this._renameCandidateListView.focusedCandidate;\n\t\t\tif (focusedCandidate !== undefined) {\n\t\t\t\tthis._trace('using new name from renameSuggestion');\n\t\t\t\tnewName = focusedCandidate;\n\t\t\t\tsource = { k: 'renameSuggestion' };\n\t\t\t} else {\n\t\t\t\tthis._trace('using new name from inputField');\n\t\t\t\tnewName = this._inputWithButton.input.value;\n\t\t\t\tsource = this._isEditingRenameCandidate ? { k: 'userEditedRenameSuggestion' } : { k: 'inputField' };\n\t\t\t}\n\n\t\t\tif (newName === currentName || newName.trim().length === 0 /* is just whitespace */) {\n\t\t\t\tthis.cancelInput(true, '_currentAcceptInput (because newName === value || newName.trim().length === 0)');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._currentAcceptInput = undefined;\n\t\t\tthis._currentCancelInput = undefined;\n\t\t\tthis._renameCandidateListView.clearCandidates();\n\t\t\t// fixme session cleanup\n\n\t\t\tinputResult.complete({\n\t\t\t\tnewName,\n\t\t\t\twantsPreview: supportPreview && wantsPreview,\n\t\t\t\tstats: {\n\t\t\t\t\tsource,\n\t\t\t\t\tnRenameSuggestions,\n\t\t\t\t\ttimeBeforeFirstInputFieldEdit: this._timeBeforeFirstInputFieldEdit,\n\t\t\t\t\tnRenameSuggestionsInvocations: this._nRenameSuggestionsInvocations,\n\t\t\t\t\thadAutomaticRenameSuggestionsInvocation: this._hadAutomaticRenameSuggestionsInvocation,\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tdisposeOnDone.add(cts.token.onCancellationRequested(() => this.cancelInput(true, 'cts.token.onCancellationRequested')));\n\t\tif (!_sticky) {\n\t\t\tdisposeOnDone.add(this._editor.onDidBlurEditorWidget(() => this.cancelInput(!this._domNode?.ownerDocument.hasFocus(), 'editor.onDidBlurEditorWidget')));\n\t\t}\n\n\t\tthis._show();\n\n\t\treturn inputResult.p;\n\t}\n\n\tprivate _requestRenameCandidates(currentName: string, isManuallyTriggered: boolean) {\n\t\tif (this._requestRenameCandidatesOnce === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._renameCandidateProvidersCts !== undefined) {\n\t\t\tthis._renameCandidateProvidersCts.dispose(true);\n\t\t}\n\n\t\tassertType(this._renameCts);\n\n\t\tif (this._inputWithButton.buttonState !== 'stop') {\n\n\t\t\tthis._renameCandidateProvidersCts = new CancellationTokenSource();\n\n\t\t\tconst triggerKind = isManuallyTriggered ? NewSymbolNameTriggerKind.Invoke : NewSymbolNameTriggerKind.Automatic;\n\t\t\tconst candidates = this._requestRenameCandidatesOnce(triggerKind, this._renameCandidateProvidersCts.token);\n\n\t\t\tif (candidates.length === 0) {\n\t\t\t\tthis._inputWithButton.setSparkleButton();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isManuallyTriggered) {\n\t\t\t\tthis._hadAutomaticRenameSuggestionsInvocation = true;\n\t\t\t}\n\n\t\t\tthis._nRenameSuggestionsInvocations += 1;\n\n\t\t\tthis._inputWithButton.setStopButton();\n\n\t\t\tthis._updateRenameCandidates(candidates, currentName, this._renameCts.token);\n\t\t}\n\t}\n\n\t/**\n\t * This allows selecting only part of the symbol name in the input field based on the selection in the editor\n\t */\n\tprivate _getSelection(where: IRange, currentName: string): { start: number; end: number } {\n\t\tassertType(this._editor.hasModel());\n\n\t\tconst selection = this._editor.getSelection();\n\t\tlet start = 0;\n\t\tlet end = currentName.length;\n\n\t\tif (!Range.isEmpty(selection) && !Range.spansMultipleLines(selection) && Range.containsRange(where, selection)) {\n\t\t\tstart = Math.max(0, selection.startColumn - where.startColumn);\n\t\t\tend = Math.min(where.endColumn, selection.endColumn) - where.startColumn;\n\t\t}\n\n\t\treturn { start, end };\n\t}\n\n\tprivate _show(): void {\n\t\tthis._trace('invoking _show');\n\t\tthis._editor.revealLineInCenterIfOutsideViewport(this._position!.lineNumber, ScrollType.Smooth);\n\t\tthis._visible = true;\n\t\tthis._visibleContextKey.set(true);\n\t\tthis._editor.layoutContentWidget(this);\n\n\t\t// TODO@ulugbekna: could this be simply run in `afterRender`?\n\t\tsetTimeout(() => {\n\t\t\tthis._inputWithButton.input.focus();\n\t\t\tthis._inputWithButton.input.setSelectionRange(\n\t\t\t\tparseInt(this._inputWithButton.input.getAttribute('selectionStart')!),\n\t\t\t\tparseInt(this._inputWithButton.input.getAttribute('selectionEnd')!)\n\t\t\t);\n\t\t}, 100);\n\t}\n\n\tprivate async _updateRenameCandidates(candidates: ProviderResult<NewSymbolName[]>[], currentName: string, token: CancellationToken) {\n\t\tconst trace = (...args: unknown[]) => this._trace('_updateRenameCandidates', ...args);\n\n\t\ttrace('start');\n\t\tconst namesListResults = await raceCancellation(Promise.allSettled(candidates), token);\n\n\t\tthis._inputWithButton.setSparkleButton();\n\n\t\tif (namesListResults === undefined) {\n\t\t\ttrace('returning early - received updateRenameCandidates results - undefined');\n\t\t\treturn;\n\t\t}\n\n\t\tconst newNames = namesListResults.flatMap(namesListResult =>\n\t\t\tnamesListResult.status === 'fulfilled' && isDefined(namesListResult.value)\n\t\t\t\t? namesListResult.value\n\t\t\t\t: []\n\t\t);\n\t\ttrace(`received updateRenameCandidates results - total (unfiltered) ${newNames.length} candidates.`);\n\n\t\t// deduplicate and filter out the current value\n\n\t\tconst distinctNames = arrays.distinct(newNames, v => v.newSymbolName);\n\t\ttrace(`distinct candidates - ${distinctNames.length} candidates.`);\n\n\t\tconst validDistinctNames = distinctNames.filter(({ newSymbolName }) => newSymbolName.trim().length > 0 && newSymbolName !== this._inputWithButton.input.value && newSymbolName !== currentName && !this._candidates.has(newSymbolName));\n\t\ttrace(`valid distinct candidates - ${newNames.length} candidates.`);\n\n\t\tvalidDistinctNames.forEach(n => this._candidates.add(n.newSymbolName));\n\n\t\tif (validDistinctNames.length < 1) {\n\t\t\ttrace('returning early - no valid distinct candidates');\n\t\t\treturn;\n\t\t}\n\n\t\t// show the candidates\n\t\ttrace('setting candidates');\n\t\tthis._renameCandidateListView!.setCandidates(validDistinctNames);\n\n\t\t// ask editor to re-layout given that the widget is now of a different size after rendering rename candidates\n\t\ttrace('asking editor to re-layout');\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tprivate _hide(): void {\n\t\tthis._trace('invoked _hide');\n\t\tthis._visible = false;\n\t\tthis._visibleContextKey.reset();\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tprivate _getTopForPosition(): number {\n\t\tconst visibleRanges = this._editor.getVisibleRanges();\n\t\tlet firstLineInViewport: number;\n\t\tif (visibleRanges.length > 0) {\n\t\t\tfirstLineInViewport = visibleRanges[0].startLineNumber;\n\t\t} else {\n\t\t\tthis._logService.warn('RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty');\n\t\t\tfirstLineInViewport = Math.max(1, this._position!.lineNumber - 5); // @ulugbekna: fallback to current line minus 5\n\t\t}\n\t\treturn this._editor.getTopForLineNumber(this._position!.lineNumber) - this._editor.getTopForLineNumber(firstLineInViewport);\n\t}\n\n\tprivate _trace(...args: unknown[]) {\n\t\tthis._logService.trace('RenameWidget', ...args);\n\t}\n}\n\nclass RenameCandidateListView {\n\n\t/** Parent node of the list widget; needed to control # of list elements visible */\n\tprivate readonly _listContainer: HTMLDivElement;\n\tprivate readonly _listWidget: List<NewSymbolName>;\n\n\tprivate _lineHeight: number;\n\tprivate _availableHeight: number;\n\tprivate _minimumWidth: number;\n\tprivate _typicalHalfwidthCharacterWidth: number;\n\n\tprivate readonly _disposables: DisposableStore;\n\n\t// FIXME@ulugbekna: rewrite using event emitters\n\tconstructor(parent: HTMLElement, opts: { fontInfo: FontInfo; onFocusChange: (newSymbolName: string) => void; onSelectionChange: () => void }) {\n\n\t\tthis._disposables = new DisposableStore();\n\n\t\tthis._availableHeight = 0;\n\t\tthis._minimumWidth = 0;\n\n\t\tthis._lineHeight = opts.fontInfo.lineHeight;\n\t\tthis._typicalHalfwidthCharacterWidth = opts.fontInfo.typicalHalfwidthCharacterWidth;\n\n\t\tthis._listContainer = document.createElement('div');\n\t\tthis._listContainer.className = 'rename-box rename-candidate-list-container';\n\t\tparent.appendChild(this._listContainer);\n\n\t\tthis._listWidget = RenameCandidateListView._createListWidget(this._listContainer, this._candidateViewHeight, opts.fontInfo);\n\n\t\tthis._disposables.add(this._listWidget.onDidChangeFocus(\n\t\t\te => {\n\t\t\t\tif (e.elements.length === 1) {\n\t\t\t\t\topts.onFocusChange(e.elements[0].newSymbolName);\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._disposables\n\t\t));\n\n\t\tthis._disposables.add(this._listWidget.onDidChangeSelection(\n\t\t\te => {\n\t\t\t\tif (e.elements.length === 1) {\n\t\t\t\t\topts.onSelectionChange();\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._disposables\n\t\t));\n\n\t\tthis._disposables.add(\n\t\t\tthis._listWidget.onDidBlur(e => { // @ulugbekna: because list widget otherwise remembers last focused element and returns it as focused element\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t})\n\t\t);\n\n\t\tthis._listWidget.style(getListStyles({\n\t\t\tlistInactiveFocusForeground: quickInputListFocusForeground,\n\t\t\tlistInactiveFocusBackground: quickInputListFocusBackground,\n\t\t}));\n\t}\n\n\tdispose() {\n\t\tthis._listWidget.dispose();\n\t\tthis._disposables.dispose();\n\t}\n\n\t// height - max height allowed by parent element\n\tpublic layout({ height, width }: { height: number; width: number }): void {\n\t\tthis._availableHeight = height;\n\t\tthis._minimumWidth = width;\n\t}\n\n\tpublic setCandidates(candidates: NewSymbolName[]): void {\n\n\t\t// insert candidates into list widget\n\t\tthis._listWidget.splice(0, 0, candidates);\n\n\t\t// adjust list widget layout\n\t\tconst height = this._pickListHeight(this._listWidget.length);\n\t\tconst width = this._pickListWidth(candidates);\n\n\t\tthis._listWidget.layout(height, width);\n\n\t\t// adjust list container layout\n\t\tthis._listContainer.style.height = `${height}px`;\n\t\tthis._listContainer.style.width = `${width}px`;\n\n\t\taria.status(nls.localize('renameSuggestionsReceivedAria', \"Received {0} rename suggestions\", candidates.length));\n\t}\n\n\tpublic clearCandidates(): void {\n\t\tthis._listContainer.style.height = '0px';\n\t\tthis._listContainer.style.width = '0px';\n\t\tthis._listWidget.splice(0, this._listWidget.length, []);\n\t}\n\n\tpublic get nCandidates() {\n\t\treturn this._listWidget.length;\n\t}\n\n\tpublic get focusedCandidate(): string | undefined {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst selectedElement = this._listWidget.getSelectedElements()[0];\n\t\tif (selectedElement !== undefined) {\n\t\t\treturn selectedElement.newSymbolName;\n\t\t}\n\t\tconst focusedElement = this._listWidget.getFocusedElements()[0];\n\t\tif (focusedElement !== undefined) {\n\t\t\treturn focusedElement.newSymbolName;\n\t\t}\n\t\treturn;\n\t}\n\n\tpublic focusNext(): boolean {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusedIxs = this._listWidget.getFocus();\n\t\tif (focusedIxs.length === 0) {\n\t\t\tthis._listWidget.focusFirst();\n\t\t\tthis._listWidget.reveal(0);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (focusedIxs[0] === this._listWidget.length - 1) {\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t\tthis._listWidget.reveal(0); // @ulugbekna: without this, it seems like focused element is obstructed\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis._listWidget.focusNext();\n\t\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\t\tthis._listWidget.reveal(focused);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns true if focus is moved to previous element\n\t */\n\tpublic focusPrevious(): boolean {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusedIxs = this._listWidget.getFocus();\n\t\tif (focusedIxs.length === 0) {\n\t\t\tthis._listWidget.focusLast();\n\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\tthis._listWidget.reveal(focused);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (focusedIxs[0] === 0) {\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis._listWidget.focusPrevious();\n\t\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\t\tthis._listWidget.reveal(focused);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic clearFocus(): void {\n\t\tthis._listWidget.setFocus([]);\n\t}\n\n\tprivate get _candidateViewHeight(): number {\n\t\tconst { totalHeight } = RenameCandidateView.getLayoutInfo({ lineHeight: this._lineHeight });\n\t\treturn totalHeight;\n\t}\n\n\tprivate _pickListHeight(nCandidates: number) {\n\t\tconst heightToFitAllCandidates = this._candidateViewHeight * nCandidates;\n\t\tconst MAX_N_CANDIDATES = 7; // @ulugbekna: max # of candidates we want to show at once\n\t\tconst height = Math.min(heightToFitAllCandidates, this._availableHeight, this._candidateViewHeight * MAX_N_CANDIDATES);\n\t\treturn height;\n\t}\n\n\tprivate _pickListWidth(candidates: NewSymbolName[]): number {\n\t\tconst longestCandidateWidth = Math.ceil(Math.max(...candidates.map(c => c.newSymbolName.length)) * this._typicalHalfwidthCharacterWidth);\n\t\tconst width = Math.max(\n\t\t\tthis._minimumWidth,\n\t\t\t4 /* padding */ + 16 /* sparkle icon */ + 5 /* margin-left */ + longestCandidateWidth + 10 /* (possibly visible) scrollbar width */ // TODO@ulugbekna: approximate calc - clean this up\n\t\t);\n\t\treturn width;\n\t}\n\n\tprivate static _createListWidget(container: HTMLElement, candidateViewHeight: number, fontInfo: FontInfo) {\n\t\tconst virtualDelegate = new class implements IListVirtualDelegate<NewSymbolName> {\n\t\t\tgetTemplateId(element: NewSymbolName): string {\n\t\t\t\treturn 'candidate';\n\t\t\t}\n\n\t\t\tgetHeight(element: NewSymbolName): number {\n\t\t\t\treturn candidateViewHeight;\n\t\t\t}\n\t\t};\n\n\t\tconst renderer = new class implements IListRenderer<NewSymbolName, RenameCandidateView> {\n\t\t\treadonly templateId = 'candidate';\n\n\t\t\trenderTemplate(container: HTMLElement): RenameCandidateView {\n\t\t\t\treturn new RenameCandidateView(container, fontInfo);\n\t\t\t}\n\n\t\t\trenderElement(candidate: NewSymbolName, index: number, templateData: RenameCandidateView): void {\n\t\t\t\ttemplateData.populate(candidate);\n\t\t\t}\n\n\t\t\tdisposeTemplate(templateData: RenameCandidateView): void {\n\t\t\t\ttemplateData.dispose();\n\t\t\t}\n\t\t};\n\n\t\treturn new List(\n\t\t\t'NewSymbolNameCandidates',\n\t\t\tcontainer,\n\t\t\tvirtualDelegate,\n\t\t\t[renderer],\n\t\t\t{\n\t\t\t\tkeyboardSupport: false, // @ulugbekna: because we handle keyboard events through proper commands & keybinding service, see `rename.ts`\n\t\t\t\tmouseSupport: true,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t}\n\t\t);\n\t}\n}\n\nclass InputWithButton implements IDisposable {\n\n\tprivate _buttonState: 'sparkle' | 'stop' | undefined;\n\n\tprivate _domNode: HTMLDivElement | undefined;\n\tprivate _inputNode: HTMLInputElement | undefined;\n\tprivate _buttonNode: HTMLElement | undefined;\n\tprivate _buttonHoverContent: string = '';\n\tprivate _buttonGenHoverText: string | undefined;\n\tprivate _buttonCancelHoverText: string | undefined;\n\tprivate _sparkleIcon: HTMLElement | undefined;\n\tprivate _stopIcon: HTMLElement | undefined;\n\n\tprivate readonly _onDidInputChange = new Emitter<void>();\n\tpublic readonly onDidInputChange = this._onDidInputChange.event;\n\n\tprivate readonly _disposables = new DisposableStore();\n\n\tget domNode() {\n\t\tif (!this._domNode) {\n\n\t\t\tthis._domNode = document.createElement('div');\n\t\t\tthis._domNode.className = 'rename-input-with-button';\n\t\t\tthis._domNode.style.display = 'flex';\n\t\t\tthis._domNode.style.flexDirection = 'row';\n\t\t\tthis._domNode.style.alignItems = 'center';\n\n\t\t\tthis._inputNode = document.createElement('input');\n\t\t\tthis._inputNode.className = 'rename-input';\n\t\t\tthis._inputNode.type = 'text';\n\t\t\tthis._inputNode.style.border = 'none';\n\t\t\tthis._inputNode.setAttribute('aria-label', nls.localize('renameAriaLabel', \"Rename input. Type new name and press Enter to commit.\"));\n\n\t\t\tthis._domNode.appendChild(this._inputNode);\n\n\t\t\tthis._buttonNode = document.createElement('div');\n\t\t\tthis._buttonNode.className = 'rename-suggestions-button';\n\t\t\tthis._buttonNode.setAttribute('tabindex', '0');\n\n\t\t\tthis._buttonGenHoverText = nls.localize('generateRenameSuggestionsButton', \"Generate New Name Suggestions\");\n\t\t\tthis._buttonCancelHoverText = nls.localize('cancelRenameSuggestionsButton', \"Cancel\");\n\t\t\tthis._buttonHoverContent = this._buttonGenHoverText;\n\t\t\tthis._disposables.add(getBaseLayerHoverDelegate().setupDelayedHover(this._buttonNode, () => ({\n\t\t\t\tcontent: this._buttonHoverContent,\n\t\t\t\tappearance: {\n\t\t\t\t\tshowPointer: true,\n\t\t\t\t\tcompact: true,\n\t\t\t\t}\n\t\t\t})));\n\n\t\t\tthis._domNode.appendChild(this._buttonNode);\n\n\t\t\t// notify if selection changes to cancel request to rename-suggestion providers\n\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.INPUT, () => this._onDidInputChange.fire()));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.KEY_DOWN, (e) => {\n\t\t\t\tconst keyEvent = new StandardKeyboardEvent(e);\n\t\t\t\tif (keyEvent.keyCode === KeyCode.LeftArrow || keyEvent.keyCode === KeyCode.RightArrow) {\n\t\t\t\t\tthis._onDidInputChange.fire();\n\t\t\t\t}\n\t\t\t}));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.CLICK, () => this._onDidInputChange.fire()));\n\n\t\t\t// focus \"container\" border instead of input box\n\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.FOCUS, () => {\n\t\t\t\tthis.domNode.style.outlineWidth = '1px';\n\t\t\t\tthis.domNode.style.outlineStyle = 'solid';\n\t\t\t\tthis.domNode.style.outlineOffset = '-1px';\n\t\t\t\tthis.domNode.style.outlineColor = 'var(--vscode-focusBorder)';\n\t\t\t}));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.BLUR, () => {\n\t\t\t\tthis.domNode.style.outline = 'none';\n\t\t\t}));\n\t\t}\n\t\treturn this._domNode;\n\t}\n\n\tget input() {\n\t\tassertType(this._inputNode);\n\t\treturn this._inputNode;\n\t}\n\n\tget button() {\n\t\tassertType(this._buttonNode);\n\t\treturn this._buttonNode;\n\t}\n\n\tget buttonState() {\n\t\treturn this._buttonState;\n\t}\n\n\tsetSparkleButton() {\n\t\tthis._buttonState = 'sparkle';\n\t\tthis._sparkleIcon ??= renderIcon(Codicon.sparkle);\n\t\tdom.clearNode(this.button);\n\t\tthis.button.appendChild(this._sparkleIcon);\n\t\tthis.button.setAttribute('aria-label', 'Generating new name suggestions');\n\t\tthis._buttonHoverContent = this._buttonGenHoverText!;\n\t\tthis.input.focus();\n\t}\n\n\tsetStopButton() {\n\t\tthis._buttonState = 'stop';\n\t\tthis._stopIcon ??= renderIcon(Codicon.stopCircle);\n\t\tdom.clearNode(this.button);\n\t\tthis.button.appendChild(this._stopIcon);\n\t\tthis.button.setAttribute('aria-label', 'Cancel generating new name suggestions');\n\t\tthis._buttonHoverContent = this._buttonCancelHoverText!;\n\t\tthis.input.focus();\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t}\n}\n\nclass RenameCandidateView {\n\n\tprivate static _PADDING: number = 2;\n\n\tprivate readonly _domNode: HTMLElement;\n\tprivate readonly _icon: HTMLElement;\n\tprivate readonly _label: HTMLElement;\n\n\tconstructor(parent: HTMLElement, fontInfo: FontInfo) {\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.className = 'rename-box rename-candidate';\n\t\tthis._domNode.style.display = `flex`;\n\t\tthis._domNode.style.columnGap = `5px`;\n\t\tthis._domNode.style.alignItems = `center`;\n\t\tthis._domNode.style.height = `${fontInfo.lineHeight}px`;\n\t\tthis._domNode.style.padding = `${RenameCandidateView._PADDING}px`;\n\n\t\t// @ulugbekna: needed to keep space when the `icon.style.display` is set to `none`\n\t\tconst iconContainer = document.createElement('div');\n\t\ticonContainer.style.display = `flex`;\n\t\ticonContainer.style.alignItems = `center`;\n\t\ticonContainer.style.width = iconContainer.style.height = `${fontInfo.lineHeight * 0.8}px`;\n\t\tthis._domNode.appendChild(iconContainer);\n\n\t\tthis._icon = renderIcon(Codicon.sparkle);\n\t\tthis._icon.style.display = `none`;\n\t\ticonContainer.appendChild(this._icon);\n\n\t\tthis._label = document.createElement('div');\n\t\tdomFontInfo.applyFontInfo(this._label, fontInfo);\n\t\tthis._domNode.appendChild(this._label);\n\n\t\tparent.appendChild(this._domNode);\n\t}\n\n\tpublic populate(value: NewSymbolName) {\n\t\tthis._updateIcon(value);\n\t\tthis._updateLabel(value);\n\t}\n\n\tprivate _updateIcon(value: NewSymbolName) {\n\t\tconst isAIGenerated = !!value.tags?.includes(NewSymbolNameTag.AIGenerated);\n\t\tthis._icon.style.display = isAIGenerated ? 'inherit' : 'none';\n\t}\n\n\tprivate _updateLabel(value: NewSymbolName) {\n\t\tthis._label.innerText = value.newSymbolName;\n\t}\n\n\tpublic static getLayoutInfo({ lineHeight }: { lineHeight: number }): { totalHeight: number } {\n\t\tconst totalHeight = lineHeight + RenameCandidateView._PADDING * 2 /* top & bottom padding */;\n\t\treturn { totalHeight };\n\t}\n\n\tpublic dispose() {\n\t}\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/rename/browser/renameWidget.ts"],"names":[],"mappings":"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","file":"renameWidget.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 { StandardKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { getBaseLayerHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate2.js';\nimport { renderIcon } from '../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { IListRenderer, IListVirtualDelegate } from '../../../../base/browser/ui/list/list.js';\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { DeferredPromise, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore, IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType, isDefined } from '../../../../base/common/types.js';\nimport './renameWidget.css';\nimport * as domFontInfo from '../../../browser/config/domFontInfo.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { FontInfo } from '../../../common/config/fontInfo.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { Position } from '../../../common/core/position.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { ScrollType } from '../../../common/editorCommon.js';\nimport { NewSymbolName, NewSymbolNameTag, NewSymbolNameTriggerKind, ProviderResult } from '../../../common/languages.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { getListStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport {\n\teditorWidgetBackground,\n\tinputBackground,\n\tinputBorder,\n\tinputForeground,\n\tquickInputListFocusBackground,\n\tquickInputListFocusForeground,\n\twidgetBorder,\n\twidgetShadow } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IColorTheme, IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { HoverStyle } from '../../../../base/browser/ui/hover/hover.js';\n\n/** for debugging */\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\n\nexport const CONTEXT_RENAME_INPUT_VISIBLE = new RawContextKey<boolean>('renameInputVisible', false, nls.localize('renameInputVisible', \"Whether the rename input widget is visible\"));\nexport const CONTEXT_RENAME_INPUT_FOCUSED = new RawContextKey<boolean>('renameInputFocused', false, nls.localize('renameInputFocused', \"Whether the rename input widget is focused\"));\n\n/**\n * \"Source\" of the new name:\n * - 'inputField' - user entered the new name\n * - 'renameSuggestion' - user picked from rename suggestions\n * - 'userEditedRenameSuggestion' - user _likely_ edited a rename suggestion (\"likely\" because when input started being edited, a rename suggestion had focus)\n */\nexport type NewNameSource =\n\t| { k: 'inputField' }\n\t| { k: 'renameSuggestion' }\n\t| { k: 'userEditedRenameSuggestion' };\n\n/**\n * Various statistics regarding rename input field\n */\nexport type RenameWidgetStats = {\n\tnRenameSuggestions: number;\n\tsource: NewNameSource;\n\ttimeBeforeFirstInputFieldEdit: number | undefined;\n\tnRenameSuggestionsInvocations: number;\n\thadAutomaticRenameSuggestionsInvocation: boolean;\n};\n\nexport type RenameWidgetResult = {\n\t/**\n\t * The new name to be used\n\t */\n\tnewName: string;\n\twantsPreview?: boolean;\n\tstats: RenameWidgetStats;\n};\n\ninterface IRenameWidget {\n}\n\nexport class RenameWidget implements IRenameWidget, IContentWidget, IDisposable {\n\n\t// implement IContentWidget\n\treadonly allowEditorOverflow: boolean = true;\n\n\t// UI state\n\n\tprivate _domNode?: HTMLElement;\n\tprivate _inputWithButton: InputWithButton;\n\tprivate _renameCandidateListView?: RenameCandidateListView;\n\tprivate _label?: HTMLDivElement;\n\n\tprivate _nPxAvailableAbove?: number;\n\tprivate _nPxAvailableBelow?: number;\n\n\t// Model state\n\n\tprivate _position?: Position;\n\tprivate _currentName?: string;\n\t/** Is true if input field got changes when a rename candidate was focused; otherwise, false */\n\tprivate _isEditingRenameCandidate: boolean;\n\n\tprivate readonly _candidates: Set<string>;\n\n\tprivate _visible?: boolean;\n\n\t/** must be reset at session start */\n\tprivate _beforeFirstInputFieldEditSW: StopWatch;\n\n\t/**\n\t * Milliseconds before user edits the input field for the first time\n\t * @remarks must be set once per session\n\t */\n\tprivate _timeBeforeFirstInputFieldEdit: number | undefined;\n\n\tprivate _nRenameSuggestionsInvocations: number;\n\n\tprivate _hadAutomaticRenameSuggestionsInvocation: boolean;\n\n\tprivate _renameCandidateProvidersCts: CancellationTokenSource | undefined;\n\tprivate _renameCts: CancellationTokenSource | undefined;\n\n\tprivate readonly _visibleContextKey: IContextKey<boolean>;\n\tprivate readonly _disposables = new DisposableStore();\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _acceptKeybindings: [string, string],\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t) {\n\t\tthis._visibleContextKey = CONTEXT_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\n\n\t\tthis._isEditingRenameCandidate = false;\n\n\t\tthis._nRenameSuggestionsInvocations = 0;\n\n\t\tthis._hadAutomaticRenameSuggestionsInvocation = false;\n\n\t\tthis._candidates = new Set();\n\n\t\tthis._beforeFirstInputFieldEditSW = new StopWatch();\n\n\t\tthis._inputWithButton = new InputWithButton();\n\t\tthis._disposables.add(this._inputWithButton);\n\n\t\tthis._editor.addContentWidget(this);\n\n\t\tthis._disposables.add(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.add(_themeService.onDidColorThemeChange(this._updateStyles, this));\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t\tthis._editor.removeContentWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn '__renameInputWidget';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\tif (!this._domNode) {\n\t\t\tthis._domNode = document.createElement('div');\n\t\t\tthis._domNode.className = 'monaco-editor rename-box';\n\n\t\t\tthis._domNode.appendChild(this._inputWithButton.domNode);\n\n\t\t\tthis._renameCandidateListView = this._disposables.add(\n\t\t\t\tnew RenameCandidateListView(this._domNode, {\n\t\t\t\t\tfontInfo: this._editor.getOption(EditorOption.fontInfo),\n\t\t\t\t\tonFocusChange: (newSymbolName: string) => {\n\t\t\t\t\t\tthis._inputWithButton.input.value = newSymbolName;\n\t\t\t\t\t\tthis._isEditingRenameCandidate = false; // @ulugbekna: reset\n\t\t\t\t\t},\n\t\t\t\t\tonSelectionChange: () => {\n\t\t\t\t\t\tthis._isEditingRenameCandidate = false; // @ulugbekna: because user picked a rename suggestion\n\t\t\t\t\t\tthis.acceptInput(false); // we don't allow preview with mouse click for now\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._disposables.add(\n\t\t\t\tthis._inputWithButton.onDidInputChange(() => {\n\t\t\t\t\tif (this._renameCandidateListView?.focusedCandidate !== undefined) {\n\t\t\t\t\t\tthis._isEditingRenameCandidate = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis._timeBeforeFirstInputFieldEdit ??= this._beforeFirstInputFieldEditSW.elapsed();\n\t\t\t\t\tif (this._renameCandidateProvidersCts?.token.isCancellationRequested === false) {\n\t\t\t\t\t\tthis._renameCandidateProvidersCts.cancel();\n\t\t\t\t\t}\n\t\t\t\t\tthis._renameCandidateListView?.clearFocus();\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._label = document.createElement('div');\n\t\t\tthis._label.className = 'rename-label';\n\t\t\tthis._domNode.appendChild(this._label);\n\n\t\t\tthis._updateFont();\n\t\t\tthis._updateStyles(this._themeService.getColorTheme());\n\t\t}\n\t\treturn this._domNode;\n\t}\n\n\tprivate _updateStyles(theme: IColorTheme): void {\n\t\tif (!this._domNode) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst widgetShadowColor = theme.getColor(widgetShadow);\n\t\tconst widgetBorderColor = theme.getColor(widgetBorder);\n\t\tthis._domNode.style.backgroundColor = String(theme.getColor(editorWidgetBackground) ?? '');\n\t\tthis._domNode.style.boxShadow = widgetShadowColor ? ` 0 0 8px 2px ${widgetShadowColor}` : '';\n\t\tthis._domNode.style.border = widgetBorderColor ? `1px solid ${widgetBorderColor}` : '';\n\t\tthis._domNode.style.color = String(theme.getColor(inputForeground) ?? '');\n\n\t\tconst border = theme.getColor(inputBorder);\n\n\t\tthis._inputWithButton.domNode.style.backgroundColor = String(theme.getColor(inputBackground) ?? '');\n\t\tthis._inputWithButton.input.style.backgroundColor = String(theme.getColor(inputBackground) ?? '');\n\t\tthis._inputWithButton.domNode.style.borderWidth = border ? '1px' : '0px';\n\t\tthis._inputWithButton.domNode.style.borderStyle = border ? 'solid' : 'none';\n\t\tthis._inputWithButton.domNode.style.borderColor = border?.toString() ?? 'none';\n\t}\n\n\tprivate _updateFont(): void {\n\t\tif (this._domNode === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tassertType(this._label !== undefined, 'RenameWidget#_updateFont: _label must not be undefined given _domNode is defined');\n\n\t\tthis._editor.applyFontInfo(this._inputWithButton.input);\n\n\t\tconst fontInfo = this._editor.getOption(EditorOption.fontInfo);\n\t\tthis._label.style.fontSize = `${this._computeLabelFontSize(fontInfo.fontSize)}px`;\n\t}\n\n\tprivate _computeLabelFontSize(editorFontSize: number) {\n\t\treturn editorFontSize * 0.8;\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\tif (!this._visible) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this._editor.hasModel() || // @ulugbekna: shouldn't happen\n\t\t\t!this._editor.getDomNode() // @ulugbekna: can happen during tests based on suggestWidget's similar predicate check\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst bodyBox = dom.getClientArea(this.getDomNode().ownerDocument.body);\n\t\tconst editorBox = dom.getDomNodePagePosition(this._editor.getDomNode());\n\n\t\tconst cursorBoxTop = this._getTopForPosition();\n\n\t\tthis._nPxAvailableAbove = cursorBoxTop + editorBox.top;\n\t\tthis._nPxAvailableBelow = bodyBox.height - this._nPxAvailableAbove;\n\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst { totalHeight: candidateViewHeight } = RenameCandidateView.getLayoutInfo({ lineHeight });\n\n\t\tconst positionPreference = this._nPxAvailableBelow > candidateViewHeight * 6 /* approximate # of candidates to fit in (inclusive of rename input box & rename label) */\n\t\t\t? [ContentWidgetPositionPreference.BELOW, ContentWidgetPositionPreference.ABOVE]\n\t\t\t: [ContentWidgetPositionPreference.ABOVE, ContentWidgetPositionPreference.BELOW];\n\n\t\treturn {\n\t\t\tposition: this._position!,\n\t\t\tpreference: positionPreference,\n\t\t};\n\t}\n\n\tbeforeRender(): IDimension | null {\n\t\tconst [accept, preview] = this._acceptKeybindings;\n\t\tthis._label!.innerText = nls.localize({ key: 'label', comment: ['placeholders are keybindings, e.g \"F2 to Rename, Shift+F2 to Preview\"'] }, \"{0} to Rename, {1} to Preview\", this._keybindingService.lookupKeybinding(accept)?.getLabel(), this._keybindingService.lookupKeybinding(preview)?.getLabel());\n\n\t\tthis._domNode!.style.minWidth = `200px`; // to prevent from widening when candidates come in\n\n\t\treturn null;\n\t}\n\n\tafterRender(position: ContentWidgetPositionPreference | null): void {\n\t\t// FIXME@ulugbekna: commenting trace log out until we start unmounting the widget from editor properly - https://github.com/microsoft/vscode/issues/226975\n\t\t// this._trace('invoking afterRender, position: ', position ? 'not null' : 'null');\n\t\tif (position === null) {\n\t\t\t// cancel rename when input widget isn't rendered anymore\n\t\t\tthis.cancelInput(true, 'afterRender (because position is null)');\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._editor.hasModel() || // shouldn't happen\n\t\t\t!this._editor.getDomNode() // can happen during tests based on suggestWidget's similar predicate check\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tassertType(this._renameCandidateListView);\n\t\tassertType(this._nPxAvailableAbove !== undefined);\n\t\tassertType(this._nPxAvailableBelow !== undefined);\n\n\t\tconst inputBoxHeight = dom.getTotalHeight(this._inputWithButton.domNode);\n\n\t\tconst labelHeight = dom.getTotalHeight(this._label!);\n\n\t\tlet totalHeightAvailable: number;\n\t\tif (position === ContentWidgetPositionPreference.BELOW) {\n\t\t\ttotalHeightAvailable = this._nPxAvailableBelow;\n\t\t} else {\n\t\t\ttotalHeightAvailable = this._nPxAvailableAbove;\n\t\t}\n\n\t\tthis._renameCandidateListView!.layout({\n\t\t\theight: totalHeightAvailable - labelHeight - inputBoxHeight,\n\t\t\twidth: dom.getTotalWidth(this._inputWithButton.domNode),\n\t\t});\n\t}\n\n\n\tprivate _currentAcceptInput?: (wantsPreview: boolean) => void;\n\tprivate _currentCancelInput?: (focusEditor: boolean) => void;\n\tprivate _requestRenameCandidatesOnce?: (triggerKind: NewSymbolNameTriggerKind, cts: CancellationToken) => ProviderResult<NewSymbolName[]>[];\n\n\tacceptInput(wantsPreview: boolean): void {\n\t\tthis._trace(`invoking acceptInput`);\n\t\tthis._currentAcceptInput?.(wantsPreview);\n\t}\n\n\tcancelInput(focusEditor: boolean, caller: string): void {\n\t\t// this._trace(`invoking cancelInput, caller: ${caller}, _currentCancelInput: ${this._currentAcceptInput ? 'not undefined' : 'undefined'}`);\n\t\tthis._currentCancelInput?.(focusEditor);\n\t}\n\n\tfocusNextRenameSuggestion() {\n\t\tif (!this._renameCandidateListView?.focusNext()) {\n\t\t\tthis._inputWithButton.input.value = this._currentName!;\n\t\t}\n\t}\n\n\tfocusPreviousRenameSuggestion() { // TODO@ulugbekna: this and focusNext should set the original name if no candidate is focused\n\t\tif (!this._renameCandidateListView?.focusPrevious()) {\n\t\t\tthis._inputWithButton.input.value = this._currentName!;\n\t\t}\n\t}\n\n\t/**\n\t * @param requestRenameCandidates is `undefined` when there are no rename suggestion providers\n\t */\n\tgetInput(\n\t\twhere: IRange,\n\t\tcurrentName: string,\n\t\tsupportPreview: boolean,\n\t\trequestRenameCandidates: undefined | ((triggerKind: NewSymbolNameTriggerKind, cts: CancellationToken) => ProviderResult<NewSymbolName[]>[]),\n\t\tcts: CancellationTokenSource\n\t): Promise<RenameWidgetResult | boolean> {\n\n\t\tconst { start: selectionStart, end: selectionEnd } = this._getSelection(where, currentName);\n\n\t\tthis._renameCts = cts;\n\n\t\tconst disposeOnDone = new DisposableStore();\n\n\t\tthis._nRenameSuggestionsInvocations = 0;\n\n\t\tthis._hadAutomaticRenameSuggestionsInvocation = false;\n\n\t\tif (requestRenameCandidates === undefined) {\n\t\t\tthis._inputWithButton.button.style.display = 'none';\n\t\t} else {\n\t\t\tthis._inputWithButton.button.style.display = 'flex';\n\n\t\t\tthis._requestRenameCandidatesOnce = requestRenameCandidates;\n\n\t\t\tthis._requestRenameCandidates(currentName, false);\n\n\t\t\tdisposeOnDone.add(dom.addDisposableListener(\n\t\t\t\tthis._inputWithButton.button,\n\t\t\t\t'click',\n\t\t\t\t() => this._requestRenameCandidates(currentName, true)\n\t\t\t));\n\t\t\tdisposeOnDone.add(dom.addDisposableListener(\n\t\t\t\tthis._inputWithButton.button,\n\t\t\t\tdom.EventType.KEY_DOWN,\n\t\t\t\t(e) => {\n\t\t\t\t\tconst keyEvent = new StandardKeyboardEvent(e);\n\n\t\t\t\t\tif (keyEvent.equals(KeyCode.Enter) || keyEvent.equals(KeyCode.Space)) {\n\t\t\t\t\t\tkeyEvent.stopPropagation();\n\t\t\t\t\t\tkeyEvent.preventDefault();\n\t\t\t\t\t\tthis._requestRenameCandidates(currentName, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\n\t\tthis._isEditingRenameCandidate = false;\n\n\t\tthis._domNode!.classList.toggle('preview', supportPreview);\n\n\t\tthis._position = new Position(where.startLineNumber, where.startColumn);\n\t\tthis._currentName = currentName;\n\n\t\tthis._inputWithButton.input.value = currentName;\n\t\tthis._inputWithButton.input.setAttribute('selectionStart', selectionStart.toString());\n\t\tthis._inputWithButton.input.setAttribute('selectionEnd', selectionEnd.toString());\n\t\tthis._inputWithButton.input.size = Math.max((where.endColumn - where.startColumn) * 1.1, 20); // determines width\n\n\t\tthis._beforeFirstInputFieldEditSW.reset();\n\n\n\t\tdisposeOnDone.add(toDisposable(() => {\n\t\t\tthis._renameCts = undefined;\n\t\t\tcts.dispose(true);\n\t\t})); // @ulugbekna: this may result in `this.cancelInput` being called twice, but it should be safe since we set it to undefined after 1st call\n\t\tdisposeOnDone.add(toDisposable(() => {\n\t\t\tif (this._renameCandidateProvidersCts !== undefined) {\n\t\t\t\tthis._renameCandidateProvidersCts.dispose(true);\n\t\t\t\tthis._renameCandidateProvidersCts = undefined;\n\t\t\t}\n\t\t}));\n\n\t\tdisposeOnDone.add(toDisposable(() => this._candidates.clear()));\n\n\t\tconst inputResult = new DeferredPromise<RenameWidgetResult | boolean>();\n\n\t\tinputResult.p.finally(() => {\n\t\t\tdisposeOnDone.dispose();\n\t\t\tthis._hide();\n\t\t});\n\n\t\tthis._currentCancelInput = (focusEditor) => {\n\t\t\tthis._trace('invoking _currentCancelInput');\n\t\t\tthis._currentAcceptInput = undefined;\n\t\t\tthis._currentCancelInput = undefined;\n\t\t\t// fixme session cleanup\n\t\t\tthis._renameCandidateListView?.clearCandidates();\n\t\t\tinputResult.complete(focusEditor);\n\t\t\treturn true;\n\t\t};\n\n\t\tthis._currentAcceptInput = (wantsPreview) => {\n\t\t\tthis._trace('invoking _currentAcceptInput');\n\t\t\tassertType(this._renameCandidateListView !== undefined);\n\n\t\t\tconst nRenameSuggestions = this._renameCandidateListView.nCandidates;\n\n\t\t\tlet newName: string;\n\t\t\tlet source: NewNameSource;\n\t\t\tconst focusedCandidate = this._renameCandidateListView.focusedCandidate;\n\t\t\tif (focusedCandidate !== undefined) {\n\t\t\t\tthis._trace('using new name from renameSuggestion');\n\t\t\t\tnewName = focusedCandidate;\n\t\t\t\tsource = { k: 'renameSuggestion' };\n\t\t\t} else {\n\t\t\t\tthis._trace('using new name from inputField');\n\t\t\t\tnewName = this._inputWithButton.input.value;\n\t\t\t\tsource = this._isEditingRenameCandidate ? { k: 'userEditedRenameSuggestion' } : { k: 'inputField' };\n\t\t\t}\n\n\t\t\tif (newName === currentName || newName.trim().length === 0 /* is just whitespace */) {\n\t\t\t\tthis.cancelInput(true, '_currentAcceptInput (because newName === value || newName.trim().length === 0)');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._currentAcceptInput = undefined;\n\t\t\tthis._currentCancelInput = undefined;\n\t\t\tthis._renameCandidateListView.clearCandidates();\n\t\t\t// fixme session cleanup\n\n\t\t\tinputResult.complete({\n\t\t\t\tnewName,\n\t\t\t\twantsPreview: supportPreview && wantsPreview,\n\t\t\t\tstats: {\n\t\t\t\t\tsource,\n\t\t\t\t\tnRenameSuggestions,\n\t\t\t\t\ttimeBeforeFirstInputFieldEdit: this._timeBeforeFirstInputFieldEdit,\n\t\t\t\t\tnRenameSuggestionsInvocations: this._nRenameSuggestionsInvocations,\n\t\t\t\t\thadAutomaticRenameSuggestionsInvocation: this._hadAutomaticRenameSuggestionsInvocation,\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tdisposeOnDone.add(cts.token.onCancellationRequested(() => this.cancelInput(true, 'cts.token.onCancellationRequested')));\n\t\tif (!_sticky) {\n\t\t\tdisposeOnDone.add(this._editor.onDidBlurEditorWidget(() => this.cancelInput(!this._domNode?.ownerDocument.hasFocus(), 'editor.onDidBlurEditorWidget')));\n\t\t}\n\n\t\tthis._show();\n\n\t\treturn inputResult.p;\n\t}\n\n\tprivate _requestRenameCandidates(currentName: string, isManuallyTriggered: boolean) {\n\t\tif (this._requestRenameCandidatesOnce === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._renameCandidateProvidersCts !== undefined) {\n\t\t\tthis._renameCandidateProvidersCts.dispose(true);\n\t\t}\n\n\t\tassertType(this._renameCts);\n\n\t\tif (this._inputWithButton.buttonState !== 'stop') {\n\n\t\t\tthis._renameCandidateProvidersCts = new CancellationTokenSource();\n\n\t\t\tconst triggerKind = isManuallyTriggered ? NewSymbolNameTriggerKind.Invoke : NewSymbolNameTriggerKind.Automatic;\n\t\t\tconst candidates = this._requestRenameCandidatesOnce(triggerKind, this._renameCandidateProvidersCts.token);\n\n\t\t\tif (candidates.length === 0) {\n\t\t\t\tthis._inputWithButton.setSparkleButton();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isManuallyTriggered) {\n\t\t\t\tthis._hadAutomaticRenameSuggestionsInvocation = true;\n\t\t\t}\n\n\t\t\tthis._nRenameSuggestionsInvocations += 1;\n\n\t\t\tthis._inputWithButton.setStopButton();\n\n\t\t\tthis._updateRenameCandidates(candidates, currentName, this._renameCts.token);\n\t\t}\n\t}\n\n\t/**\n\t * This allows selecting only part of the symbol name in the input field based on the selection in the editor\n\t */\n\tprivate _getSelection(where: IRange, currentName: string): { start: number; end: number } {\n\t\tassertType(this._editor.hasModel());\n\n\t\tconst selection = this._editor.getSelection();\n\t\tlet start = 0;\n\t\tlet end = currentName.length;\n\n\t\tif (!Range.isEmpty(selection) && !Range.spansMultipleLines(selection) && Range.containsRange(where, selection)) {\n\t\t\tstart = Math.max(0, selection.startColumn - where.startColumn);\n\t\t\tend = Math.min(where.endColumn, selection.endColumn) - where.startColumn;\n\t\t}\n\n\t\treturn { start, end };\n\t}\n\n\tprivate _show(): void {\n\t\tthis._trace('invoking _show');\n\t\tthis._editor.revealLineInCenterIfOutsideViewport(this._position!.lineNumber, ScrollType.Smooth);\n\t\tthis._visible = true;\n\t\tthis._visibleContextKey.set(true);\n\t\tthis._editor.layoutContentWidget(this);\n\n\t\t// TODO@ulugbekna: could this be simply run in `afterRender`?\n\t\tsetTimeout(() => {\n\t\t\tthis._inputWithButton.input.focus();\n\t\t\tthis._inputWithButton.input.setSelectionRange(\n\t\t\t\tparseInt(this._inputWithButton.input.getAttribute('selectionStart')!),\n\t\t\t\tparseInt(this._inputWithButton.input.getAttribute('selectionEnd')!)\n\t\t\t);\n\t\t}, 100);\n\t}\n\n\tprivate async _updateRenameCandidates(candidates: ProviderResult<NewSymbolName[]>[], currentName: string, token: CancellationToken) {\n\t\tconst trace = (...args: unknown[]) => this._trace('_updateRenameCandidates', ...args);\n\n\t\ttrace('start');\n\t\tconst namesListResults = await raceCancellation(Promise.allSettled(candidates), token);\n\n\t\tthis._inputWithButton.setSparkleButton();\n\n\t\tif (namesListResults === undefined) {\n\t\t\ttrace('returning early - received updateRenameCandidates results - undefined');\n\t\t\treturn;\n\t\t}\n\n\t\tconst newNames = namesListResults.flatMap(namesListResult =>\n\t\t\tnamesListResult.status === 'fulfilled' && isDefined(namesListResult.value)\n\t\t\t\t? namesListResult.value\n\t\t\t\t: []\n\t\t);\n\t\ttrace(`received updateRenameCandidates results - total (unfiltered) ${newNames.length} candidates.`);\n\n\t\t// deduplicate and filter out the current value\n\n\t\tconst distinctNames = arrays.distinct(newNames, v => v.newSymbolName);\n\t\ttrace(`distinct candidates - ${distinctNames.length} candidates.`);\n\n\t\tconst validDistinctNames = distinctNames.filter(({ newSymbolName }) => newSymbolName.trim().length > 0 && newSymbolName !== this._inputWithButton.input.value && newSymbolName !== currentName && !this._candidates.has(newSymbolName));\n\t\ttrace(`valid distinct candidates - ${newNames.length} candidates.`);\n\n\t\tvalidDistinctNames.forEach(n => this._candidates.add(n.newSymbolName));\n\n\t\tif (validDistinctNames.length < 1) {\n\t\t\ttrace('returning early - no valid distinct candidates');\n\t\t\treturn;\n\t\t}\n\n\t\t// show the candidates\n\t\ttrace('setting candidates');\n\t\tthis._renameCandidateListView!.setCandidates(validDistinctNames);\n\n\t\t// ask editor to re-layout given that the widget is now of a different size after rendering rename candidates\n\t\ttrace('asking editor to re-layout');\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tprivate _hide(): void {\n\t\tthis._trace('invoked _hide');\n\t\tthis._visible = false;\n\t\tthis._visibleContextKey.reset();\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tprivate _getTopForPosition(): number {\n\t\tconst visibleRanges = this._editor.getVisibleRanges();\n\t\tlet firstLineInViewport: number;\n\t\tif (visibleRanges.length > 0) {\n\t\t\tfirstLineInViewport = visibleRanges[0].startLineNumber;\n\t\t} else {\n\t\t\tthis._logService.warn('RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty');\n\t\t\tfirstLineInViewport = Math.max(1, this._position!.lineNumber - 5); // @ulugbekna: fallback to current line minus 5\n\t\t}\n\t\treturn this._editor.getTopForLineNumber(this._position!.lineNumber) - this._editor.getTopForLineNumber(firstLineInViewport);\n\t}\n\n\tprivate _trace(...args: unknown[]) {\n\t\tthis._logService.trace('RenameWidget', ...args);\n\t}\n}\n\nclass RenameCandidateListView {\n\n\t/** Parent node of the list widget; needed to control # of list elements visible */\n\tprivate readonly _listContainer: HTMLDivElement;\n\tprivate readonly _listWidget: List<NewSymbolName>;\n\n\tprivate _lineHeight: number;\n\tprivate _availableHeight: number;\n\tprivate _minimumWidth: number;\n\tprivate _typicalHalfwidthCharacterWidth: number;\n\n\tprivate readonly _disposables: DisposableStore;\n\n\t// FIXME@ulugbekna: rewrite using event emitters\n\tconstructor(parent: HTMLElement, opts: { fontInfo: FontInfo; onFocusChange: (newSymbolName: string) => void; onSelectionChange: () => void }) {\n\n\t\tthis._disposables = new DisposableStore();\n\n\t\tthis._availableHeight = 0;\n\t\tthis._minimumWidth = 0;\n\n\t\tthis._lineHeight = opts.fontInfo.lineHeight;\n\t\tthis._typicalHalfwidthCharacterWidth = opts.fontInfo.typicalHalfwidthCharacterWidth;\n\n\t\tthis._listContainer = document.createElement('div');\n\t\tthis._listContainer.className = 'rename-box rename-candidate-list-container';\n\t\tparent.appendChild(this._listContainer);\n\n\t\tthis._listWidget = RenameCandidateListView._createListWidget(this._listContainer, this._candidateViewHeight, opts.fontInfo);\n\n\t\tthis._disposables.add(this._listWidget.onDidChangeFocus(\n\t\t\te => {\n\t\t\t\tif (e.elements.length === 1) {\n\t\t\t\t\topts.onFocusChange(e.elements[0].newSymbolName);\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._disposables\n\t\t));\n\n\t\tthis._disposables.add(this._listWidget.onDidChangeSelection(\n\t\t\te => {\n\t\t\t\tif (e.elements.length === 1) {\n\t\t\t\t\topts.onSelectionChange();\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._disposables\n\t\t));\n\n\t\tthis._disposables.add(\n\t\t\tthis._listWidget.onDidBlur(e => { // @ulugbekna: because list widget otherwise remembers last focused element and returns it as focused element\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t})\n\t\t);\n\n\t\tthis._listWidget.style(getListStyles({\n\t\t\tlistInactiveFocusForeground: quickInputListFocusForeground,\n\t\t\tlistInactiveFocusBackground: quickInputListFocusBackground,\n\t\t}));\n\t}\n\n\tdispose() {\n\t\tthis._listWidget.dispose();\n\t\tthis._disposables.dispose();\n\t}\n\n\t// height - max height allowed by parent element\n\tpublic layout({ height, width }: { height: number; width: number }): void {\n\t\tthis._availableHeight = height;\n\t\tthis._minimumWidth = width;\n\t}\n\n\tpublic setCandidates(candidates: NewSymbolName[]): void {\n\n\t\t// insert candidates into list widget\n\t\tthis._listWidget.splice(0, 0, candidates);\n\n\t\t// adjust list widget layout\n\t\tconst height = this._pickListHeight(this._listWidget.length);\n\t\tconst width = this._pickListWidth(candidates);\n\n\t\tthis._listWidget.layout(height, width);\n\n\t\t// adjust list container layout\n\t\tthis._listContainer.style.height = `${height}px`;\n\t\tthis._listContainer.style.width = `${width}px`;\n\n\t\taria.status(nls.localize('renameSuggestionsReceivedAria', \"Received {0} rename suggestions\", candidates.length));\n\t}\n\n\tpublic clearCandidates(): void {\n\t\tthis._listContainer.style.height = '0px';\n\t\tthis._listContainer.style.width = '0px';\n\t\tthis._listWidget.splice(0, this._listWidget.length, []);\n\t}\n\n\tpublic get nCandidates() {\n\t\treturn this._listWidget.length;\n\t}\n\n\tpublic get focusedCandidate(): string | undefined {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst selectedElement = this._listWidget.getSelectedElements()[0];\n\t\tif (selectedElement !== undefined) {\n\t\t\treturn selectedElement.newSymbolName;\n\t\t}\n\t\tconst focusedElement = this._listWidget.getFocusedElements()[0];\n\t\tif (focusedElement !== undefined) {\n\t\t\treturn focusedElement.newSymbolName;\n\t\t}\n\t\treturn;\n\t}\n\n\tpublic focusNext(): boolean {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusedIxs = this._listWidget.getFocus();\n\t\tif (focusedIxs.length === 0) {\n\t\t\tthis._listWidget.focusFirst();\n\t\t\tthis._listWidget.reveal(0);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (focusedIxs[0] === this._listWidget.length - 1) {\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t\tthis._listWidget.reveal(0); // @ulugbekna: without this, it seems like focused element is obstructed\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis._listWidget.focusNext();\n\t\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\t\tthis._listWidget.reveal(focused);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns true if focus is moved to previous element\n\t */\n\tpublic focusPrevious(): boolean {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusedIxs = this._listWidget.getFocus();\n\t\tif (focusedIxs.length === 0) {\n\t\t\tthis._listWidget.focusLast();\n\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\tthis._listWidget.reveal(focused);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (focusedIxs[0] === 0) {\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis._listWidget.focusPrevious();\n\t\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\t\tthis._listWidget.reveal(focused);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic clearFocus(): void {\n\t\tthis._listWidget.setFocus([]);\n\t}\n\n\tprivate get _candidateViewHeight(): number {\n\t\tconst { totalHeight } = RenameCandidateView.getLayoutInfo({ lineHeight: this._lineHeight });\n\t\treturn totalHeight;\n\t}\n\n\tprivate _pickListHeight(nCandidates: number) {\n\t\tconst heightToFitAllCandidates = this._candidateViewHeight * nCandidates;\n\t\tconst MAX_N_CANDIDATES = 7; // @ulugbekna: max # of candidates we want to show at once\n\t\tconst height = Math.min(heightToFitAllCandidates, this._availableHeight, this._candidateViewHeight * MAX_N_CANDIDATES);\n\t\treturn height;\n\t}\n\n\tprivate _pickListWidth(candidates: NewSymbolName[]): number {\n\t\tconst longestCandidateWidth = Math.ceil(Math.max(...candidates.map(c => c.newSymbolName.length)) * this._typicalHalfwidthCharacterWidth);\n\t\tconst width = Math.max(\n\t\t\tthis._minimumWidth,\n\t\t\t4 /* padding */ + 16 /* sparkle icon */ + 5 /* margin-left */ + longestCandidateWidth + 10 /* (possibly visible) scrollbar width */ // TODO@ulugbekna: approximate calc - clean this up\n\t\t);\n\t\treturn width;\n\t}\n\n\tprivate static _createListWidget(container: HTMLElement, candidateViewHeight: number, fontInfo: FontInfo) {\n\t\tconst virtualDelegate = new class implements IListVirtualDelegate<NewSymbolName> {\n\t\t\tgetTemplateId(element: NewSymbolName): string {\n\t\t\t\treturn 'candidate';\n\t\t\t}\n\n\t\t\tgetHeight(element: NewSymbolName): number {\n\t\t\t\treturn candidateViewHeight;\n\t\t\t}\n\t\t};\n\n\t\tconst renderer = new class implements IListRenderer<NewSymbolName, RenameCandidateView> {\n\t\t\treadonly templateId = 'candidate';\n\n\t\t\trenderTemplate(container: HTMLElement): RenameCandidateView {\n\t\t\t\treturn new RenameCandidateView(container, fontInfo);\n\t\t\t}\n\n\t\t\trenderElement(candidate: NewSymbolName, index: number, templateData: RenameCandidateView): void {\n\t\t\t\ttemplateData.populate(candidate);\n\t\t\t}\n\n\t\t\tdisposeTemplate(templateData: RenameCandidateView): void {\n\t\t\t\ttemplateData.dispose();\n\t\t\t}\n\t\t};\n\n\t\treturn new List(\n\t\t\t'NewSymbolNameCandidates',\n\t\t\tcontainer,\n\t\t\tvirtualDelegate,\n\t\t\t[renderer],\n\t\t\t{\n\t\t\t\tkeyboardSupport: false, // @ulugbekna: because we handle keyboard events through proper commands & keybinding service, see `rename.ts`\n\t\t\t\tmouseSupport: true,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t}\n\t\t);\n\t}\n}\n\nclass InputWithButton implements IDisposable {\n\n\tprivate _buttonState: 'sparkle' | 'stop' | undefined;\n\n\tprivate _domNode: HTMLDivElement | undefined;\n\tprivate _inputNode: HTMLInputElement | undefined;\n\tprivate _buttonNode: HTMLElement | undefined;\n\tprivate _buttonHoverContent: string = '';\n\tprivate _buttonGenHoverText: string | undefined;\n\tprivate _buttonCancelHoverText: string | undefined;\n\tprivate _sparkleIcon: HTMLElement | undefined;\n\tprivate _stopIcon: HTMLElement | undefined;\n\n\tprivate readonly _onDidInputChange = new Emitter<void>();\n\tpublic readonly onDidInputChange = this._onDidInputChange.event;\n\n\tprivate readonly _disposables = new DisposableStore();\n\n\tget domNode() {\n\t\tif (!this._domNode) {\n\n\t\t\tthis._domNode = document.createElement('div');\n\t\t\tthis._domNode.className = 'rename-input-with-button';\n\t\t\tthis._domNode.style.display = 'flex';\n\t\t\tthis._domNode.style.flexDirection = 'row';\n\t\t\tthis._domNode.style.alignItems = 'center';\n\n\t\t\tthis._inputNode = document.createElement('input');\n\t\t\tthis._inputNode.className = 'rename-input';\n\t\t\tthis._inputNode.type = 'text';\n\t\t\tthis._inputNode.style.border = 'none';\n\t\t\tthis._inputNode.setAttribute('aria-label', nls.localize('renameAriaLabel', \"Rename input. Type new name and press Enter to commit.\"));\n\n\t\t\tthis._domNode.appendChild(this._inputNode);\n\n\t\t\tthis._buttonNode = document.createElement('div');\n\t\t\tthis._buttonNode.className = 'rename-suggestions-button';\n\t\t\tthis._buttonNode.setAttribute('tabindex', '0');\n\n\t\t\tthis._buttonGenHoverText = nls.localize('generateRenameSuggestionsButton', \"Generate New Name Suggestions\");\n\t\t\tthis._buttonCancelHoverText = nls.localize('cancelRenameSuggestionsButton', \"Cancel\");\n\t\t\tthis._buttonHoverContent = this._buttonGenHoverText;\n\t\t\tthis._disposables.add(getBaseLayerHoverDelegate().setupDelayedHover(this._buttonNode, () => ({\n\t\t\t\tcontent: this._buttonHoverContent,\n\t\t\t\tstyle: HoverStyle.Pointer,\n\t\t\t})));\n\n\t\t\tthis._domNode.appendChild(this._buttonNode);\n\n\t\t\t// notify if selection changes to cancel request to rename-suggestion providers\n\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.INPUT, () => this._onDidInputChange.fire()));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.KEY_DOWN, (e) => {\n\t\t\t\tconst keyEvent = new StandardKeyboardEvent(e);\n\t\t\t\tif (keyEvent.keyCode === KeyCode.LeftArrow || keyEvent.keyCode === KeyCode.RightArrow) {\n\t\t\t\t\tthis._onDidInputChange.fire();\n\t\t\t\t}\n\t\t\t}));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.CLICK, () => this._onDidInputChange.fire()));\n\n\t\t\t// focus \"container\" border instead of input box\n\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.FOCUS, () => {\n\t\t\t\tthis.domNode.style.outlineWidth = '1px';\n\t\t\t\tthis.domNode.style.outlineStyle = 'solid';\n\t\t\t\tthis.domNode.style.outlineOffset = '-1px';\n\t\t\t\tthis.domNode.style.outlineColor = 'var(--vscode-focusBorder)';\n\t\t\t}));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.BLUR, () => {\n\t\t\t\tthis.domNode.style.outline = 'none';\n\t\t\t}));\n\t\t}\n\t\treturn this._domNode;\n\t}\n\n\tget input() {\n\t\tassertType(this._inputNode);\n\t\treturn this._inputNode;\n\t}\n\n\tget button() {\n\t\tassertType(this._buttonNode);\n\t\treturn this._buttonNode;\n\t}\n\n\tget buttonState() {\n\t\treturn this._buttonState;\n\t}\n\n\tsetSparkleButton() {\n\t\tthis._buttonState = 'sparkle';\n\t\tthis._sparkleIcon ??= renderIcon(Codicon.sparkle);\n\t\tdom.clearNode(this.button);\n\t\tthis.button.appendChild(this._sparkleIcon);\n\t\tthis.button.setAttribute('aria-label', 'Generating new name suggestions');\n\t\tthis._buttonHoverContent = this._buttonGenHoverText!;\n\t\tthis.input.focus();\n\t}\n\n\tsetStopButton() {\n\t\tthis._buttonState = 'stop';\n\t\tthis._stopIcon ??= renderIcon(Codicon.stopCircle);\n\t\tdom.clearNode(this.button);\n\t\tthis.button.appendChild(this._stopIcon);\n\t\tthis.button.setAttribute('aria-label', 'Cancel generating new name suggestions');\n\t\tthis._buttonHoverContent = this._buttonCancelHoverText!;\n\t\tthis.input.focus();\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t}\n}\n\nclass RenameCandidateView {\n\n\tprivate static _PADDING: number = 2;\n\n\tprivate readonly _domNode: HTMLElement;\n\tprivate readonly _icon: HTMLElement;\n\tprivate readonly _label: HTMLElement;\n\n\tconstructor(parent: HTMLElement, fontInfo: FontInfo) {\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.className = 'rename-box rename-candidate';\n\t\tthis._domNode.style.display = `flex`;\n\t\tthis._domNode.style.columnGap = `5px`;\n\t\tthis._domNode.style.alignItems = `center`;\n\t\tthis._domNode.style.height = `${fontInfo.lineHeight}px`;\n\t\tthis._domNode.style.padding = `${RenameCandidateView._PADDING}px`;\n\n\t\t// @ulugbekna: needed to keep space when the `icon.style.display` is set to `none`\n\t\tconst iconContainer = document.createElement('div');\n\t\ticonContainer.style.display = `flex`;\n\t\ticonContainer.style.alignItems = `center`;\n\t\ticonContainer.style.width = iconContainer.style.height = `${fontInfo.lineHeight * 0.8}px`;\n\t\tthis._domNode.appendChild(iconContainer);\n\n\t\tthis._icon = renderIcon(Codicon.sparkle);\n\t\tthis._icon.style.display = `none`;\n\t\ticonContainer.appendChild(this._icon);\n\n\t\tthis._label = document.createElement('div');\n\t\tdomFontInfo.applyFontInfo(this._label, fontInfo);\n\t\tthis._domNode.appendChild(this._label);\n\n\t\tparent.appendChild(this._domNode);\n\t}\n\n\tpublic populate(value: NewSymbolName) {\n\t\tthis._updateIcon(value);\n\t\tthis._updateLabel(value);\n\t}\n\n\tprivate _updateIcon(value: NewSymbolName) {\n\t\tconst isAIGenerated = !!value.tags?.includes(NewSymbolNameTag.AIGenerated);\n\t\tthis._icon.style.display = isAIGenerated ? 'inherit' : 'none';\n\t}\n\n\tprivate _updateLabel(value: NewSymbolName) {\n\t\tthis._label.innerText = value.newSymbolName;\n\t}\n\n\tpublic static getLayoutInfo({ lineHeight }: { lineHeight: number }): { totalHeight: number } {\n\t\tconst totalHeight = lineHeight + RenameCandidateView._PADDING * 2 /* top & bottom padding */;\n\t\treturn { totalHeight };\n\t}\n\n\tpublic dispose() {\n\t}\n}\n"]}
@@ -131,7 +131,7 @@ class GrowSelectionAction extends AbstractSmartSelect {
131
131
  constructor() {
132
132
  super(true, {
133
133
  id: 'editor.action.smartSelect.expand',
134
- label: nls.localize2(1389, "Expand Selection"),
134
+ label: nls.localize2(1393, "Expand Selection"),
135
135
  precondition: undefined,
136
136
  kbOpts: {
137
137
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -145,7 +145,7 @@ class GrowSelectionAction extends AbstractSmartSelect {
145
145
  menuOpts: {
146
146
  menuId: MenuId.MenubarSelectionMenu,
147
147
  group: '1_basic',
148
- title: nls.localize(1387, "&&Expand Selection"),
148
+ title: nls.localize(1391, "&&Expand Selection"),
149
149
  order: 2
150
150
  }
151
151
  });
@@ -157,7 +157,7 @@ class ShrinkSelectionAction extends AbstractSmartSelect {
157
157
  constructor() {
158
158
  super(false, {
159
159
  id: 'editor.action.smartSelect.shrink',
160
- label: nls.localize2(1390, "Shrink Selection"),
160
+ label: nls.localize2(1394, "Shrink Selection"),
161
161
  precondition: undefined,
162
162
  kbOpts: {
163
163
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -171,7 +171,7 @@ class ShrinkSelectionAction extends AbstractSmartSelect {
171
171
  menuOpts: {
172
172
  menuId: MenuId.MenubarSelectionMenu,
173
173
  group: '1_basic',
174
- title: nls.localize(1388, "&&Shrink Selection"),
174
+ title: nls.localize(1392, "&&Shrink Selection"),
175
175
  order: 3
176
176
  }
177
177
  });
@@ -40,9 +40,9 @@ let SnippetController2 = class SnippetController2 {
40
40
  static get(editor) {
41
41
  return editor.getContribution(SnippetController2_1.ID);
42
42
  }
43
- static { this.InSnippetMode = new RawContextKey('inSnippetMode', false, localize(1391, "Whether the editor in current in snippet mode")); }
44
- static { this.HasNextTabstop = new RawContextKey('hasNextTabstop', false, localize(1392, "Whether there is a next tab stop when in snippet mode")); }
45
- static { this.HasPrevTabstop = new RawContextKey('hasPrevTabstop', false, localize(1393, "Whether there is a previous tab stop when in snippet mode")); }
43
+ static { this.InSnippetMode = new RawContextKey('inSnippetMode', false, localize(1395, "Whether the editor in current in snippet mode")); }
44
+ static { this.HasNextTabstop = new RawContextKey('hasNextTabstop', false, localize(1396, "Whether there is a next tab stop when in snippet mode")); }
45
+ static { this.HasPrevTabstop = new RawContextKey('hasPrevTabstop', false, localize(1397, "Whether there is a previous tab stop when in snippet mode")); }
46
46
  constructor(_editor, _logService, _languageFeaturesService, contextKeyService, _languageConfigurationService) {
47
47
  this._editor = _editor;
48
48
  this._logService = _logService;
@@ -128,7 +128,7 @@ let SnippetController2 = class SnippetController2 {
128
128
  sortText: 'a'.repeat(i + 1),
129
129
  range: activeChoice.range,
130
130
  filterText: isAnyOfOptions ? `${word}_${option.value}` : undefined,
131
- command: { id: 'jumpToNextSnippetPlaceholder', title: localize(1394, 'Go to next placeholder...') }
131
+ command: { id: 'jumpToNextSnippetPlaceholder', title: localize(1398, 'Go to next placeholder...') }
132
132
  });
133
133
  }
134
134
  return { suggestions };
@@ -245,10 +245,10 @@ export class TimeBasedVariableResolver {
245
245
  constructor() {
246
246
  this._date = new Date();
247
247
  }
248
- static { this.dayNames = [nls.localize(1395, "Sunday"), nls.localize(1396, "Monday"), nls.localize(1397, "Tuesday"), nls.localize(1398, "Wednesday"), nls.localize(1399, "Thursday"), nls.localize(1400, "Friday"), nls.localize(1401, "Saturday")]; }
249
- static { this.dayNamesShort = [nls.localize(1402, "Sun"), nls.localize(1403, "Mon"), nls.localize(1404, "Tue"), nls.localize(1405, "Wed"), nls.localize(1406, "Thu"), nls.localize(1407, "Fri"), nls.localize(1408, "Sat")]; }
250
- static { this.monthNames = [nls.localize(1409, "January"), nls.localize(1410, "February"), nls.localize(1411, "March"), nls.localize(1412, "April"), nls.localize(1413, "May"), nls.localize(1414, "June"), nls.localize(1415, "July"), nls.localize(1416, "August"), nls.localize(1417, "September"), nls.localize(1418, "October"), nls.localize(1419, "November"), nls.localize(1420, "December")]; }
251
- static { this.monthNamesShort = [nls.localize(1421, "Jan"), nls.localize(1422, "Feb"), nls.localize(1423, "Mar"), nls.localize(1424, "Apr"), nls.localize(1425, "May"), nls.localize(1426, "Jun"), nls.localize(1427, "Jul"), nls.localize(1428, "Aug"), nls.localize(1429, "Sep"), nls.localize(1430, "Oct"), nls.localize(1431, "Nov"), nls.localize(1432, "Dec")]; }
248
+ static { this.dayNames = [nls.localize(1399, "Sunday"), nls.localize(1400, "Monday"), nls.localize(1401, "Tuesday"), nls.localize(1402, "Wednesday"), nls.localize(1403, "Thursday"), nls.localize(1404, "Friday"), nls.localize(1405, "Saturday")]; }
249
+ static { this.dayNamesShort = [nls.localize(1406, "Sun"), nls.localize(1407, "Mon"), nls.localize(1408, "Tue"), nls.localize(1409, "Wed"), nls.localize(1410, "Thu"), nls.localize(1411, "Fri"), nls.localize(1412, "Sat")]; }
250
+ static { this.monthNames = [nls.localize(1413, "January"), nls.localize(1414, "February"), nls.localize(1415, "March"), nls.localize(1416, "April"), nls.localize(1417, "May"), nls.localize(1418, "June"), nls.localize(1419, "July"), nls.localize(1420, "August"), nls.localize(1421, "September"), nls.localize(1422, "October"), nls.localize(1423, "November"), nls.localize(1424, "December")]; }
251
+ static { this.monthNamesShort = [nls.localize(1425, "Jan"), nls.localize(1426, "Feb"), nls.localize(1427, "Mar"), nls.localize(1428, "Apr"), nls.localize(1429, "May"), nls.localize(1430, "Jun"), nls.localize(1431, "Jul"), nls.localize(1432, "Aug"), nls.localize(1433, "Sep"), nls.localize(1434, "Oct"), nls.localize(1435, "Nov"), nls.localize(1436, "Dec")]; }
252
252
  resolve(variable) {
253
253
  const { name } = variable;
254
254
  if (name === 'CURRENT_YEAR') {
@@ -15,17 +15,17 @@ export class ToggleStickyScroll extends EditorAction2 {
15
15
  super({
16
16
  id: 'editor.action.toggleStickyScroll',
17
17
  title: {
18
- ...localize2(1437, "Toggle Editor Sticky Scroll"),
19
- mnemonicTitle: localize(1433, "&&Toggle Editor Sticky Scroll"),
18
+ ...localize2(1441, "Toggle Editor Sticky Scroll"),
19
+ mnemonicTitle: localize(1437, "&&Toggle Editor Sticky Scroll"),
20
20
  },
21
21
  metadata: {
22
- description: localize2(1438, "Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport"),
22
+ description: localize2(1442, "Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport"),
23
23
  },
24
24
  category: Categories.View,
25
25
  toggled: {
26
26
  condition: ContextKeyExpr.equals('config.editor.stickyScroll.enabled', true),
27
- title: localize(1434, "Sticky Scroll"),
28
- mnemonicTitle: localize(1435, "&&Sticky Scroll"),
27
+ title: localize(1438, "Sticky Scroll"),
28
+ mnemonicTitle: localize(1439, "&&Sticky Scroll"),
29
29
  },
30
30
  menu: [
31
31
  { id: MenuId.CommandPalette },
@@ -50,8 +50,8 @@ export class FocusStickyScroll extends EditorAction2 {
50
50
  super({
51
51
  id: 'editor.action.focusStickyScroll',
52
52
  title: {
53
- ...localize2(1439, "Focus Editor Sticky Scroll"),
54
- mnemonicTitle: localize(1436, "&&Focus Editor Sticky Scroll"),
53
+ ...localize2(1443, "Focus Editor Sticky Scroll"),
54
+ mnemonicTitle: localize(1440, "&&Focus Editor Sticky Scroll"),
55
55
  },
56
56
  precondition: ContextKeyExpr.and(ContextKeyExpr.has('config.editor.stickyScroll.enabled'), EditorContextKeys.stickyScrollVisible),
57
57
  menu: [
@@ -67,7 +67,7 @@ export class SelectNextStickyScrollLine extends EditorAction2 {
67
67
  constructor() {
68
68
  super({
69
69
  id: 'editor.action.selectNextStickyScrollLine',
70
- title: localize2(1440, "Select the next editor sticky scroll line"),
70
+ title: localize2(1444, "Select the next editor sticky scroll line"),
71
71
  precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),
72
72
  keybinding: {
73
73
  weight,
@@ -83,7 +83,7 @@ export class SelectPreviousStickyScrollLine extends EditorAction2 {
83
83
  constructor() {
84
84
  super({
85
85
  id: 'editor.action.selectPreviousStickyScrollLine',
86
- title: localize2(1441, "Select the previous sticky scroll line"),
86
+ title: localize2(1445, "Select the previous sticky scroll line"),
87
87
  precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),
88
88
  keybinding: {
89
89
  weight,
@@ -99,7 +99,7 @@ export class GoToStickyScrollLine extends EditorAction2 {
99
99
  constructor() {
100
100
  super({
101
101
  id: 'editor.action.goToFocusedStickyScrollLine',
102
- title: localize2(1442, "Go to the focused sticky scroll line"),
102
+ title: localize2(1446, "Go to the focused sticky scroll line"),
103
103
  precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),
104
104
  keybinding: {
105
105
  weight,
@@ -115,7 +115,7 @@ export class SelectEditor extends EditorAction2 {
115
115
  constructor() {
116
116
  super({
117
117
  id: 'editor.action.selectEditor',
118
- title: localize2(1443, "Select Editor"),
118
+ title: localize2(1447, "Select Editor"),
119
119
  precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),
120
120
  keybinding: {
121
121
  weight,
@@ -21,14 +21,14 @@ import { ILanguageFeaturesService } from '../../../common/services/languageFeatu
21
21
  import { historyNavigationVisible } from '../../../../platform/history/browser/contextScopedHistoryWidget.js';
22
22
  export const Context = {
23
23
  Visible: historyNavigationVisible,
24
- HasFocusedSuggestion: new RawContextKey('suggestWidgetHasFocusedSuggestion', false, localize(1444, "Whether any suggestion is focused")),
25
- DetailsVisible: new RawContextKey('suggestWidgetDetailsVisible', false, localize(1445, "Whether suggestion details are visible")),
26
- MultipleSuggestions: new RawContextKey('suggestWidgetMultipleSuggestions', false, localize(1446, "Whether there are multiple suggestions to pick from")),
27
- MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true, localize(1447, "Whether inserting the current suggestion yields in a change or has everything already been typed")),
28
- AcceptSuggestionsOnEnter: new RawContextKey('acceptSuggestionOnEnter', true, localize(1448, "Whether suggestions are inserted when pressing Enter")),
29
- HasInsertAndReplaceRange: new RawContextKey('suggestionHasInsertAndReplaceRange', false, localize(1449, "Whether the current suggestion has insert and replace behaviour")),
30
- InsertMode: new RawContextKey('suggestionInsertMode', undefined, { type: 'string', description: localize(1450, "Whether the default behaviour is to insert or replace") }),
31
- CanResolve: new RawContextKey('suggestionCanResolve', false, localize(1451, "Whether the current suggestion supports to resolve further details")),
24
+ HasFocusedSuggestion: new RawContextKey('suggestWidgetHasFocusedSuggestion', false, localize(1448, "Whether any suggestion is focused")),
25
+ DetailsVisible: new RawContextKey('suggestWidgetDetailsVisible', false, localize(1449, "Whether suggestion details are visible")),
26
+ MultipleSuggestions: new RawContextKey('suggestWidgetMultipleSuggestions', false, localize(1450, "Whether there are multiple suggestions to pick from")),
27
+ MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true, localize(1451, "Whether inserting the current suggestion yields in a change or has everything already been typed")),
28
+ AcceptSuggestionsOnEnter: new RawContextKey('acceptSuggestionOnEnter', true, localize(1452, "Whether suggestions are inserted when pressing Enter")),
29
+ HasInsertAndReplaceRange: new RawContextKey('suggestionHasInsertAndReplaceRange', false, localize(1453, "Whether the current suggestion has insert and replace behaviour")),
30
+ InsertMode: new RawContextKey('suggestionInsertMode', undefined, { type: 'string', description: localize(1454, "Whether the default behaviour is to insert or replace") }),
31
+ CanResolve: new RawContextKey('suggestionCanResolve', false, localize(1455, "Whether the current suggestion supports to resolve further details")),
32
32
  };
33
33
  export const suggestWidgetStatusbarMenu = new MenuId('suggestWidgetStatusBar');
34
34
  export class CompletionItem {
@@ -482,7 +482,7 @@ let SuggestController = class SuggestController {
482
482
  }
483
483
  _alertCompletionItem(item) {
484
484
  if (isNonEmptyArray(item.completion.additionalTextEdits)) {
485
- const msg = nls.localize(1452, "Accepting '{0}' made {1} additional edits", item.textLabel, item.completion.additionalTextEdits.length);
485
+ const msg = nls.localize(1456, "Accepting '{0}' made {1} additional edits", item.textLabel, item.completion.additionalTextEdits.length);
486
486
  alert(msg);
487
487
  }
488
488
  }
@@ -669,7 +669,7 @@ export class TriggerSuggestAction extends EditorAction {
669
669
  constructor() {
670
670
  super({
671
671
  id: TriggerSuggestAction.id,
672
- label: nls.localize2(1460, "Trigger Suggest"),
672
+ label: nls.localize2(1464, "Trigger Suggest"),
673
673
  precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCompletionItemProvider, SuggestContext.Visible.toNegated()),
674
674
  kbOpts: {
675
675
  kbExpr: EditorContextKeys.textInputFocus,
@@ -717,19 +717,19 @@ registerEditorCommand(new SuggestCommand({
717
717
  }],
718
718
  menuOpts: [{
719
719
  menuId: suggestWidgetStatusbarMenu,
720
- title: nls.localize(1453, "Insert"),
720
+ title: nls.localize(1457, "Insert"),
721
721
  group: 'left',
722
722
  order: 1,
723
723
  when: SuggestContext.HasInsertAndReplaceRange.toNegated()
724
724
  }, {
725
725
  menuId: suggestWidgetStatusbarMenu,
726
- title: nls.localize(1454, "Insert"),
726
+ title: nls.localize(1458, "Insert"),
727
727
  group: 'left',
728
728
  order: 1,
729
729
  when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert'))
730
730
  }, {
731
731
  menuId: suggestWidgetStatusbarMenu,
732
- title: nls.localize(1455, "Replace"),
732
+ title: nls.localize(1459, "Replace"),
733
733
  group: 'left',
734
734
  order: 1,
735
735
  when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace'))
@@ -752,13 +752,13 @@ registerEditorCommand(new SuggestCommand({
752
752
  group: 'left',
753
753
  order: 2,
754
754
  when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')),
755
- title: nls.localize(1456, "Replace")
755
+ title: nls.localize(1460, "Replace")
756
756
  }, {
757
757
  menuId: suggestWidgetStatusbarMenu,
758
758
  group: 'left',
759
759
  order: 2,
760
760
  when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')),
761
- title: nls.localize(1457, "Insert")
761
+ title: nls.localize(1461, "Insert")
762
762
  }]
763
763
  }));
764
764
  // continue to support the old command
@@ -866,13 +866,13 @@ registerEditorCommand(new SuggestCommand({
866
866
  group: 'right',
867
867
  order: 1,
868
868
  when: ContextKeyExpr.and(SuggestContext.DetailsVisible, SuggestContext.CanResolve),
869
- title: nls.localize(1458, "Show Less")
869
+ title: nls.localize(1462, "Show Less")
870
870
  }, {
871
871
  menuId: suggestWidgetStatusbarMenu,
872
872
  group: 'right',
873
873
  order: 1,
874
874
  when: ContextKeyExpr.and(SuggestContext.DetailsVisible.toNegated(), SuggestContext.CanResolve),
875
- title: nls.localize(1459, "Show More")
875
+ title: nls.localize(1463, "Show More")
876
876
  }]
877
877
  }));
878
878
  registerEditorCommand(new SuggestCommand({
@@ -931,7 +931,7 @@ registerEditorAction(class extends EditorAction {
931
931
  constructor() {
932
932
  super({
933
933
  id: 'editor.action.resetSuggestSize',
934
- label: nls.localize2(1461, "Reset Suggest Widget Size"),
934
+ label: nls.localize2(1465, "Reset Suggest Widget Size"),
935
935
  precondition: undefined
936
936
  });
937
937
  }