monaco-editor-core 0.55.0-dev-20251008 → 0.55.0-dev-20251009
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +3 -1
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +4 -1
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +9 -1
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +5 -8
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js +36 -31
- package/esm/vs/editor/browser/widget/markdownRenderer/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/editor/common/core/text/abstractText.js +5 -1
- package/esm/vs/editor/common/core/text/abstractText.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/treeSitter/tokenStore.js +2 -1
- package/esm/vs/editor/common/model/tokens/treeSitter/tokenStore.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +54 -61
- package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +5 -8
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +18 -23
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +10 -12
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +9 -13
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +8 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +10 -12
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +5 -5
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js.map +1 -1
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +18 -24
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +15 -18
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +7 -6
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js.map +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -32
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
- package/esm/vs/platform/actions/browser/toolbar.js +2 -2
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/markers/common/markerService.js +2 -2
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
- package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
- package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/package.json +2 -2
- package/version.txt +1 -1
|
@@ -39,7 +39,7 @@ let AbstractGotoSymbolQuickAccessProvider = class AbstractGotoSymbolQuickAccessP
|
|
|
39
39
|
this.options.canAcceptInBackground = true;
|
|
40
40
|
}
|
|
41
41
|
provideWithoutTextEditor(picker) {
|
|
42
|
-
this.provideLabelPick(picker, localize(
|
|
42
|
+
this.provideLabelPick(picker, localize(1331, "To go to a symbol, first open a text editor with symbol information."));
|
|
43
43
|
return Disposable.None;
|
|
44
44
|
}
|
|
45
45
|
provideWithTextEditor(context, picker, token, runOptions) {
|
|
@@ -60,7 +60,7 @@ let AbstractGotoSymbolQuickAccessProvider = class AbstractGotoSymbolQuickAccessP
|
|
|
60
60
|
doProvideWithoutEditorSymbols(context, model, picker, token) {
|
|
61
61
|
const disposables = new DisposableStore();
|
|
62
62
|
// Generic pick for not having any symbol information
|
|
63
|
-
this.provideLabelPick(picker, localize(
|
|
63
|
+
this.provideLabelPick(picker, localize(1332, "The active text editor does not provide symbol information."));
|
|
64
64
|
// Wait for changes to the registry and see if eventually
|
|
65
65
|
// we do get symbols. This can happen if the picker is opened
|
|
66
66
|
// very early after the model has loaded but before the
|
|
@@ -146,10 +146,10 @@ let AbstractGotoSymbolQuickAccessProvider = class AbstractGotoSymbolQuickAccessP
|
|
|
146
146
|
}
|
|
147
147
|
else {
|
|
148
148
|
if (query.original.length > 0) {
|
|
149
|
-
this.provideLabelPick(picker, localize(
|
|
149
|
+
this.provideLabelPick(picker, localize(1333, "No matching editor symbols"));
|
|
150
150
|
}
|
|
151
151
|
else {
|
|
152
|
-
this.provideLabelPick(picker, localize(
|
|
152
|
+
this.provideLabelPick(picker, localize(1334, "No editor symbols"));
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
}
|
|
@@ -196,7 +196,7 @@ let AbstractGotoSymbolQuickAccessProvider = class AbstractGotoSymbolQuickAccessP
|
|
|
196
196
|
if (openSideBySideDirection) {
|
|
197
197
|
buttons = [{
|
|
198
198
|
iconClass: openSideBySideDirection === 'right' ? ThemeIcon.asClassName(Codicon.splitHorizontal) : ThemeIcon.asClassName(Codicon.splitVertical),
|
|
199
|
-
tooltip: openSideBySideDirection === 'right' ? localize(
|
|
199
|
+
tooltip: openSideBySideDirection === 'right' ? localize(1335, "Open to the Side") : localize(1336, "Open to the Bottom")
|
|
200
200
|
}];
|
|
201
201
|
}
|
|
202
202
|
const filteredSymbolPicks = [];
|
|
@@ -312,7 +312,7 @@ let AbstractGotoSymbolQuickAccessProvider = class AbstractGotoSymbolQuickAccessP
|
|
|
312
312
|
}
|
|
313
313
|
else if (sortedFilteredSymbolPicks.length > 0) {
|
|
314
314
|
symbolPicks = [
|
|
315
|
-
{ label: localize(
|
|
315
|
+
{ label: localize(1337, "symbols ({0})", filteredSymbolPicks.length), type: 'separator' },
|
|
316
316
|
...sortedFilteredSymbolPicks
|
|
317
317
|
];
|
|
318
318
|
}
|
|
@@ -362,33 +362,33 @@ AbstractGotoSymbolQuickAccessProvider = AbstractGotoSymbolQuickAccessProvider_1
|
|
|
362
362
|
], AbstractGotoSymbolQuickAccessProvider);
|
|
363
363
|
export { AbstractGotoSymbolQuickAccessProvider };
|
|
364
364
|
// #region NLS Helpers
|
|
365
|
-
const FALLBACK_NLS_SYMBOL_KIND = localize(
|
|
365
|
+
const FALLBACK_NLS_SYMBOL_KIND = localize(1338, "properties ({0})");
|
|
366
366
|
const NLS_SYMBOL_KIND_CACHE = {
|
|
367
|
-
[5 /* SymbolKind.Method */]: localize(
|
|
368
|
-
[11 /* SymbolKind.Function */]: localize(
|
|
369
|
-
[8 /* SymbolKind.Constructor */]: localize(
|
|
370
|
-
[12 /* SymbolKind.Variable */]: localize(
|
|
371
|
-
[4 /* SymbolKind.Class */]: localize(
|
|
372
|
-
[22 /* SymbolKind.Struct */]: localize(
|
|
373
|
-
[23 /* SymbolKind.Event */]: localize(
|
|
374
|
-
[24 /* SymbolKind.Operator */]: localize(
|
|
375
|
-
[10 /* SymbolKind.Interface */]: localize(
|
|
376
|
-
[2 /* SymbolKind.Namespace */]: localize(
|
|
377
|
-
[3 /* SymbolKind.Package */]: localize(
|
|
378
|
-
[25 /* SymbolKind.TypeParameter */]: localize(
|
|
379
|
-
[1 /* SymbolKind.Module */]: localize(
|
|
380
|
-
[6 /* SymbolKind.Property */]: localize(
|
|
381
|
-
[9 /* SymbolKind.Enum */]: localize(
|
|
382
|
-
[21 /* SymbolKind.EnumMember */]: localize(
|
|
383
|
-
[14 /* SymbolKind.String */]: localize(
|
|
384
|
-
[0 /* SymbolKind.File */]: localize(
|
|
385
|
-
[17 /* SymbolKind.Array */]: localize(
|
|
386
|
-
[15 /* SymbolKind.Number */]: localize(
|
|
387
|
-
[16 /* SymbolKind.Boolean */]: localize(
|
|
388
|
-
[18 /* SymbolKind.Object */]: localize(
|
|
389
|
-
[19 /* SymbolKind.Key */]: localize(
|
|
390
|
-
[7 /* SymbolKind.Field */]: localize(
|
|
391
|
-
[13 /* SymbolKind.Constant */]: localize(
|
|
367
|
+
[5 /* SymbolKind.Method */]: localize(1339, "methods ({0})"),
|
|
368
|
+
[11 /* SymbolKind.Function */]: localize(1340, "functions ({0})"),
|
|
369
|
+
[8 /* SymbolKind.Constructor */]: localize(1341, "constructors ({0})"),
|
|
370
|
+
[12 /* SymbolKind.Variable */]: localize(1342, "variables ({0})"),
|
|
371
|
+
[4 /* SymbolKind.Class */]: localize(1343, "classes ({0})"),
|
|
372
|
+
[22 /* SymbolKind.Struct */]: localize(1344, "structs ({0})"),
|
|
373
|
+
[23 /* SymbolKind.Event */]: localize(1345, "events ({0})"),
|
|
374
|
+
[24 /* SymbolKind.Operator */]: localize(1346, "operators ({0})"),
|
|
375
|
+
[10 /* SymbolKind.Interface */]: localize(1347, "interfaces ({0})"),
|
|
376
|
+
[2 /* SymbolKind.Namespace */]: localize(1348, "namespaces ({0})"),
|
|
377
|
+
[3 /* SymbolKind.Package */]: localize(1349, "packages ({0})"),
|
|
378
|
+
[25 /* SymbolKind.TypeParameter */]: localize(1350, "type parameters ({0})"),
|
|
379
|
+
[1 /* SymbolKind.Module */]: localize(1351, "modules ({0})"),
|
|
380
|
+
[6 /* SymbolKind.Property */]: localize(1352, "properties ({0})"),
|
|
381
|
+
[9 /* SymbolKind.Enum */]: localize(1353, "enumerations ({0})"),
|
|
382
|
+
[21 /* SymbolKind.EnumMember */]: localize(1354, "enumeration members ({0})"),
|
|
383
|
+
[14 /* SymbolKind.String */]: localize(1355, "strings ({0})"),
|
|
384
|
+
[0 /* SymbolKind.File */]: localize(1356, "files ({0})"),
|
|
385
|
+
[17 /* SymbolKind.Array */]: localize(1357, "arrays ({0})"),
|
|
386
|
+
[15 /* SymbolKind.Number */]: localize(1358, "numbers ({0})"),
|
|
387
|
+
[16 /* SymbolKind.Boolean */]: localize(1359, "booleans ({0})"),
|
|
388
|
+
[18 /* SymbolKind.Object */]: localize(1360, "objects ({0})"),
|
|
389
|
+
[19 /* SymbolKind.Key */]: localize(1361, "keys ({0})"),
|
|
390
|
+
[7 /* SymbolKind.Field */]: localize(1362, "fields ({0})"),
|
|
391
|
+
[13 /* SymbolKind.Constant */]: localize(1363, "constants ({0})")
|
|
392
392
|
};
|
|
393
393
|
//#endregion
|
|
394
394
|
//# sourceMappingURL=gotoSymbolQuickAccess.js.map
|
|
@@ -20,10 +20,10 @@ export class ReadOnlyMessageController extends Disposable {
|
|
|
20
20
|
let message = this.editor.getOptions().get(105 /* EditorOption.readOnlyMessage */);
|
|
21
21
|
if (!message) {
|
|
22
22
|
if (this.editor.isSimpleWidget) {
|
|
23
|
-
message = new MarkdownString(nls.localize(
|
|
23
|
+
message = new MarkdownString(nls.localize(1364, "Cannot edit in read-only input"));
|
|
24
24
|
}
|
|
25
25
|
else {
|
|
26
|
-
message = new MarkdownString(nls.localize(
|
|
26
|
+
message = new MarkdownString(nls.localize(1365, "Cannot edit in read-only editor"));
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
messageController.showMessage(message, this.editor.getPosition());
|
|
@@ -99,7 +99,7 @@ class RenameSkeleton {
|
|
|
99
99
|
}
|
|
100
100
|
const result = await provider.provideRenameEdits(this.model, this.position, newName, token);
|
|
101
101
|
if (!result) {
|
|
102
|
-
return this._provideRenameEdits(newName, i + 1, rejects.concat(nls.localize(
|
|
102
|
+
return this._provideRenameEdits(newName, i + 1, rejects.concat(nls.localize(1366, "No result.")), token);
|
|
103
103
|
}
|
|
104
104
|
else if (result.rejectReason) {
|
|
105
105
|
return this._provideRenameEdits(newName, i + 1, rejects.concat(result.rejectReason), token);
|
|
@@ -172,7 +172,7 @@ let RenameController = class RenameController {
|
|
|
172
172
|
else {
|
|
173
173
|
trace('resolve rename location failed', e instanceof Error ? e : JSON.stringify(e, null, '\t'));
|
|
174
174
|
if (typeof e === 'string' || isMarkdownString(e)) {
|
|
175
|
-
MessageController.get(this.editor)?.showMessage(e || nls.localize(
|
|
175
|
+
MessageController.get(this.editor)?.showMessage(e || nls.localize(1367, "An unknown error occurred while resolving rename location"), position);
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
return undefined;
|
|
@@ -240,24 +240,24 @@ let RenameController = class RenameController {
|
|
|
240
240
|
this._bulkEditService.apply(renameResult, {
|
|
241
241
|
editor: this.editor,
|
|
242
242
|
showPreview: inputFieldResult.wantsPreview,
|
|
243
|
-
label: nls.localize(
|
|
243
|
+
label: nls.localize(1368, "Renaming '{0}' to '{1}'", loc?.text, inputFieldResult.newName),
|
|
244
244
|
code: 'undoredo.rename',
|
|
245
|
-
quotableLabel: nls.localize(
|
|
245
|
+
quotableLabel: nls.localize(1369, "Renaming {0} to {1}", loc?.text, inputFieldResult.newName),
|
|
246
246
|
respectAutoSaveConfig: true,
|
|
247
247
|
reason: EditSources.rename(),
|
|
248
248
|
}).then(result => {
|
|
249
249
|
trace('edits applied');
|
|
250
250
|
if (result.ariaSummary) {
|
|
251
|
-
alert(nls.localize(
|
|
251
|
+
alert(nls.localize(1370, "Successfully renamed '{0}' to '{1}'. Summary: {2}", loc.text, inputFieldResult.newName, result.ariaSummary));
|
|
252
252
|
}
|
|
253
253
|
}).catch(err => {
|
|
254
254
|
trace(`error when applying edits ${JSON.stringify(err, null, '\t')}`);
|
|
255
|
-
this._notificationService.error(nls.localize(
|
|
255
|
+
this._notificationService.error(nls.localize(1371, "Rename failed to apply edits"));
|
|
256
256
|
this._logService.error(err);
|
|
257
257
|
});
|
|
258
258
|
}, err => {
|
|
259
259
|
trace('error when providing rename edits', JSON.stringify(err, null, '\t'));
|
|
260
|
-
this._notificationService.error(nls.localize(
|
|
260
|
+
this._notificationService.error(nls.localize(1372, "Rename failed to compute edits"));
|
|
261
261
|
this._logService.error(err);
|
|
262
262
|
}).finally(() => {
|
|
263
263
|
cts2.dispose();
|
|
@@ -293,7 +293,7 @@ export class RenameAction extends EditorAction {
|
|
|
293
293
|
constructor() {
|
|
294
294
|
super({
|
|
295
295
|
id: 'editor.action.rename',
|
|
296
|
-
label: nls.localize2(
|
|
296
|
+
label: nls.localize2(1374, "Rename Symbol"),
|
|
297
297
|
precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasRenameProvider),
|
|
298
298
|
kbOpts: {
|
|
299
299
|
kbExpr: EditorContextKeys.editorTextFocus,
|
|
@@ -373,7 +373,7 @@ registerAction2(class FocusNextRenameSuggestion extends Action2 {
|
|
|
373
373
|
super({
|
|
374
374
|
id: 'focusNextRenameSuggestion',
|
|
375
375
|
title: {
|
|
376
|
-
...nls.localize2(
|
|
376
|
+
...nls.localize2(1375, "Focus Next Rename Suggestion"),
|
|
377
377
|
},
|
|
378
378
|
precondition: CONTEXT_RENAME_INPUT_VISIBLE,
|
|
379
379
|
keybinding: [
|
|
@@ -401,7 +401,7 @@ registerAction2(class FocusPreviousRenameSuggestion extends Action2 {
|
|
|
401
401
|
super({
|
|
402
402
|
id: 'focusPreviousRenameSuggestion',
|
|
403
403
|
title: {
|
|
404
|
-
...nls.localize2(
|
|
404
|
+
...nls.localize2(1376, "Focus Previous Rename Suggestion"),
|
|
405
405
|
},
|
|
406
406
|
precondition: CONTEXT_RENAME_INPUT_VISIBLE,
|
|
407
407
|
keybinding: [
|
|
@@ -446,7 +446,7 @@ Registry.as(Extensions.Configuration).registerConfiguration({
|
|
|
446
446
|
properties: {
|
|
447
447
|
'editor.rename.enablePreview': {
|
|
448
448
|
scope: 6 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,
|
|
449
|
-
description: nls.localize(
|
|
449
|
+
description: nls.localize(1373, "Enable/disable the ability to preview changes before renaming"),
|
|
450
450
|
default: true,
|
|
451
451
|
type: 'boolean'
|
|
452
452
|
}
|
|
@@ -39,8 +39,8 @@ import { editorWidgetBackground, inputBackground, inputBorder, inputForeground,
|
|
|
39
39
|
import { IThemeService } from '../../../../platform/theme/common/themeService.js';
|
|
40
40
|
/** for debugging */
|
|
41
41
|
const _sticky = false;
|
|
42
|
-
export const CONTEXT_RENAME_INPUT_VISIBLE = new RawContextKey('renameInputVisible', false, nls.localize(
|
|
43
|
-
export const CONTEXT_RENAME_INPUT_FOCUSED = new RawContextKey('renameInputFocused', false, nls.localize(
|
|
42
|
+
export const CONTEXT_RENAME_INPUT_VISIBLE = new RawContextKey('renameInputVisible', false, nls.localize(1377, "Whether the rename input widget is visible"));
|
|
43
|
+
export const CONTEXT_RENAME_INPUT_FOCUSED = new RawContextKey('renameInputFocused', false, nls.localize(1378, "Whether the rename input widget is focused"));
|
|
44
44
|
let RenameWidget = class RenameWidget {
|
|
45
45
|
constructor(_editor, _acceptKeybindings, _themeService, _keybindingService, contextKeyService, _logService) {
|
|
46
46
|
this._editor = _editor;
|
|
@@ -163,7 +163,7 @@ let RenameWidget = class RenameWidget {
|
|
|
163
163
|
}
|
|
164
164
|
beforeRender() {
|
|
165
165
|
const [accept, preview] = this._acceptKeybindings;
|
|
166
|
-
this._label.innerText = nls.localize(
|
|
166
|
+
this._label.innerText = nls.localize(1379, "{0} to Rename, {1} to Preview", this._keybindingService.lookupKeybinding(accept)?.getLabel(), this._keybindingService.lookupKeybinding(preview)?.getLabel());
|
|
167
167
|
this._domNode.style.minWidth = `200px`; // to prevent from widening when candidates come in
|
|
168
168
|
return null;
|
|
169
169
|
}
|
|
@@ -477,7 +477,7 @@ class RenameCandidateListView {
|
|
|
477
477
|
// adjust list container layout
|
|
478
478
|
this._listContainer.style.height = `${height}px`;
|
|
479
479
|
this._listContainer.style.width = `${width}px`;
|
|
480
|
-
aria.status(nls.localize(
|
|
480
|
+
aria.status(nls.localize(1380, "Received {0} rename suggestions", candidates.length));
|
|
481
481
|
}
|
|
482
482
|
clearCandidates() {
|
|
483
483
|
this._listContainer.style.height = '0px';
|
|
@@ -619,13 +619,13 @@ class InputWithButton {
|
|
|
619
619
|
this._inputNode.className = 'rename-input';
|
|
620
620
|
this._inputNode.type = 'text';
|
|
621
621
|
this._inputNode.style.border = 'none';
|
|
622
|
-
this._inputNode.setAttribute('aria-label', nls.localize(
|
|
622
|
+
this._inputNode.setAttribute('aria-label', nls.localize(1381, "Rename input. Type new name and press Enter to commit."));
|
|
623
623
|
this._domNode.appendChild(this._inputNode);
|
|
624
624
|
this._buttonNode = document.createElement('div');
|
|
625
625
|
this._buttonNode.className = 'rename-suggestions-button';
|
|
626
626
|
this._buttonNode.setAttribute('tabindex', '0');
|
|
627
|
-
this._buttonGenHoverText = nls.localize(
|
|
628
|
-
this._buttonCancelHoverText = nls.localize(
|
|
627
|
+
this._buttonGenHoverText = nls.localize(1382, "Generate New Name Suggestions");
|
|
628
|
+
this._buttonCancelHoverText = nls.localize(1383, "Cancel");
|
|
629
629
|
this._buttonHoverContent = this._buttonGenHoverText;
|
|
630
630
|
this._disposables.add(getBaseLayerHoverDelegate().setupDelayedHover(this._buttonNode, () => ({
|
|
631
631
|
content: this._buttonHoverContent,
|
|
@@ -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';\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"]}
|