monaco-editor-core 0.55.0-dev-20251020 → 0.55.0-dev-20251022
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.cs.js +2 -2
- 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.pl.js +2 -2
- package/esm/nls.messages.pt-br.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.tr.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 +17 -5
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/iconLabel/iconlabel.css +2 -3
- package/esm/vs/base/common/actions.js +5 -0
- package/esm/vs/base/common/actions.js.map +1 -1
- package/esm/vs/base/common/async.js +5 -5
- package/esm/vs/base/common/async.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +1 -0
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/policy.js +40 -1
- package/esm/vs/base/common/policy.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +20 -12
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +1 -1
- package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js +4 -4
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +1 -1
- package/esm/vs/editor/browser/coreCommands.js +3 -3
- package/esm/vs/editor/browser/editorExtensions.js +9 -9
- package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js +1 -3
- package/esm/vs/editor/browser/services/hoverService/hoverWidget.js.map +1 -1
- package/esm/vs/editor/browser/services/hoverService/updatableHoverWidget.js +1 -1
- package/esm/vs/editor/browser/services/inlineCompletionsService.js +4 -4
- package/esm/vs/editor/browser/services/inlineCompletionsService.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
- package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +14 -14
- package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/copySelection.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +7 -7
- package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +5 -5
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js +6 -0
- package/esm/vs/editor/browser/widget/diffEditor/diffEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +7 -7
- package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
- package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +1 -0
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +2 -2
- package/esm/vs/editor/common/config/editorConfigurationSchema.js +54 -54
- package/esm/vs/editor/common/config/editorOptions.js +406 -406
- package/esm/vs/editor/common/core/editorColorRegistry.js +68 -68
- package/esm/vs/editor/common/editorContextKeys.js +46 -46
- package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
- package/esm/vs/editor/common/languages.js +56 -56
- package/esm/vs/editor/common/model/editStack.js +1 -1
- package/esm/vs/editor/common/standaloneStrings.js +10 -10
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
- package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
- package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
- package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
- package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
- package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
- package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
- package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
- package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js.map +1 -1
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +22 -2
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +18 -51
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +0 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
- 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 +4 -4
- 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 +35 -28
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
- 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 +8 -11
- 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 +17 -17
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
- 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 +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
- 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
|
@@ -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":"AAAA;;;gGAGgG;;;;;;;;;;AAEhG,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,IAAI,MAAM,0CAA0C,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AAEjF,OAAO,EAAE,IAAI,EAAE,MAAM,gDAAgD,CAAC;AACtE,OAAO,KAAK,MAAM,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAqB,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAe,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,oBAAoB,CAAC;AAC5B,OAAO,KAAK,WAAW,MAAM,wCAAwC,CAAC;AAKtE,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAU,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAiB,gBAAgB,EAAE,wBAAwB,EAAkB,MAAM,8BAA8B,CAAC;AACzH,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAe,kBAAkB,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AACtH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACpF,OAAO,EACN,sBAAsB,EACtB,eAAe,EACf,WAAW,EACX,eAAe,EACf,6BAA6B,EAC7B,6BAA6B,EAC7B,YAAY,EACZ,YAAY,EAAE,MAAM,oDAAoD,CAAC;AAC1E,OAAO,EAAe,aAAa,EAAE,MAAM,mDAAmD,CAAC;AAG/F,oBAAoB;AACpB,MAAM,OAAO,GAAG,KAAK,CAEnB;AAGF,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,aAAa,CAAU,oBAAoB,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAoB,EAAE,4CAA4C,CAAC,CAAC,CAAC;AACtL,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,aAAa,CAAU,oBAAoB,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAoB,EAAE,4CAA4C,CAAC,CAAC,CAAC;AAoC/K,IAAM,YAAY,GAAlB,MAAM,YAAY;IA6CxB,YACkB,OAAoB,EACpB,kBAAoC,EACtC,aAA6C,EACxC,kBAAuD,EACvD,iBAAqC,EAC5C,WAAyC;QALrC,YAAO,GAAP,OAAO,CAAa;QACpB,uBAAkB,GAAlB,kBAAkB,CAAkB;QACrB,kBAAa,GAAb,aAAa,CAAe;QACvB,uBAAkB,GAAlB,kBAAkB,CAAoB;QAE7C,gBAAW,GAAX,WAAW,CAAa;QAjDvD,2BAA2B;QAClB,wBAAmB,GAAY,IAAI,CAAC;QAwC5B,iBAAY,GAAG,IAAI,eAAe,EAAE,CAAC;QAUrD,IAAI,CAAC,kBAAkB,GAAG,4BAA4B,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEjF,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QAEvC,IAAI,CAAC,8BAA8B,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,wCAAwC,GAAG,KAAK,CAAC;QAEtD,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC,4BAA4B,GAAG,IAAI,SAAS,EAAE,CAAC;QAEpD,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;YAC/D,IAAI,CAAC,CAAC,UAAU,gCAAuB,EAAE,CAAC;gBACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,OAAO;QACN,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,KAAK;QACJ,OAAO,qBAAqB,CAAC;IAC9B,CAAC;IAED,UAAU;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,0BAA0B,CAAC;YAErD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAEzD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CACpD,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC1C,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,gCAAuB;gBACvD,aAAa,EAAE,CAAC,aAAqB,EAAE,EAAE;oBACxC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC;oBAClD,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,CAAC,oBAAoB;gBAC7D,CAAC;gBACD,iBAAiB,EAAE,GAAG,EAAE;oBACvB,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,CAAC,sDAAsD;oBAC9F,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,kDAAkD;gBAC5E,CAAC;aACD,CAAC,CACF,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,GAAG,CACpB,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,EAAE;gBAC3C,IAAI,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,KAAK,SAAS,EAAE,CAAC;oBACnE,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;gBACvC,CAAC;gBACD,IAAI,CAAC,8BAA8B,KAAK,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,CAAC;gBACpF,IAAI,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC,uBAAuB,KAAK,KAAK,EAAE,CAAC;oBAChF,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,CAAC;gBAC5C,CAAC;gBACD,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,CAAC;YAC7C,CAAC,CAAC,CACF,CAAC;YAEF,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEvC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAEO,aAAa,CAAC,KAAkB;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,aAAa,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE3C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QACpG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACzE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5E,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC;IAChF,CAAC;IAEO,WAAW;QAClB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO;QACR,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,kFAAkF,CAAC,CAAC;QAE1H,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,gCAAuB,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;IACnF,CAAC;IAEO,qBAAqB,CAAC,cAAsB;QACnD,OAAO,cAAc,GAAG,GAAG,CAAC;IAC7B,CAAC;IAED,WAAW;QACV,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,+BAA+B;YAC9D,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,uFAAuF;UACjH,CAAC;YACF,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAExE,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE/C,IAAI,CAAC,kBAAkB,GAAG,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC;QACvD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAEnE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,kCAAyB,CAAC;QACnE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAE/F,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,GAAG,CAAC,CAAC,0FAA0F;YACtK,CAAC,CAAC,8FAA8E;YAChF,CAAC,CAAC,8FAA8E,CAAC;QAElF,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,SAAU;YACzB,UAAU,EAAE,kBAAkB;SAC9B,CAAC;IACH,CAAC;IAED,YAAY;QACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAClD,IAAI,CAAC,MAAO,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAkG,CAA/F,CAAiG,CAA/F,OAAO,EAAE,OAAO,EAAE,CAAC,WAA2G,EAAE,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAxF,AAAgG,CAA/F,CAAiG,EAAE,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE1S,IAAI,CAAC,QAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,mDAAmD;QAE5F,OAAO,IAAI,CAAC;IACb,CAAC;IAED,WAAW,CAAC,QAAgD;QAC3D,0JAA0J;QAC1J,mFAAmF;QACnF,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACvB,yDAAyD;YACzD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,wCAAwC,CAAC,CAAC;YACjE,OAAO;QACR,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,mBAAmB;YAClD,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,2EAA2E;UACrG,CAAC;YACF,OAAO;QACR,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1C,UAAU,CAAC,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC;QAClD,UAAU,CAAC,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEzE,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;QAErD,IAAI,oBAA4B,CAAC;QACjC,IAAI,QAAQ,kDAA0C,EAAE,CAAC;YACxD,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAChD,CAAC;aAAM,CAAC;YACP,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,wBAAyB,CAAC,MAAM,CAAC;YACrC,MAAM,EAAE,oBAAoB,GAAG,WAAW,GAAG,cAAc;YAC3D,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;SACvD,CAAC,CAAC;IACJ,CAAC;IAOD,WAAW,CAAC,YAAqB;QAChC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACpC,IAAI,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,CAAC;IAC1C,CAAC;IAED,WAAW,CAAC,WAAoB,EAAE,MAAc;QAC/C,4IAA4I;QAC5I,IAAI,CAAC,mBAAmB,EAAE,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,yBAAyB;QACxB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,SAAS,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAa,CAAC;QACxD,CAAC;IACF,CAAC;IAED,6BAA6B;QAC5B,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,aAAa,EAAE,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAa,CAAC;QACxD,CAAC;IACF,CAAC;IAED;;OAEG;IACH,QAAQ,CACP,KAAa,EACb,WAAmB,EACnB,cAAuB,EACvB,uBAA2I,EAC3I,GAA4B;QAG5B,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAE5F,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QAEtB,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;QAE5C,IAAI,CAAC,8BAA8B,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,wCAAwC,GAAG,KAAK,CAAC;QAEtD,IAAI,uBAAuB,KAAK,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACrD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAEpD,IAAI,CAAC,4BAA4B,GAAG,uBAAuB,CAAC;YAE5D,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAElD,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAC1C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAC5B,OAAO,EACP,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,IAAI,CAAC,CACtD,CAAC,CAAC;YACH,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAC1C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAC5B,GAAG,CAAC,SAAS,CAAC,QAAQ,EACtB,CAAC,CAAC,EAAE,EAAE;gBACL,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAE9C,IAAI,QAAQ,CAAC,MAAM,uBAAe,IAAI,QAAQ,CAAC,MAAM,wBAAe,EAAE,CAAC;oBACtE,QAAQ,CAAC,eAAe,EAAE,CAAC;oBAC3B,QAAQ,CAAC,cAAc,EAAE,CAAC;oBAC1B,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBAClD,CAAC;YACF,CAAC,CACD,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QAEvC,IAAI,CAAC,QAAS,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAE3D,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAEhC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC;QAChD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB;QAEjH,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,CAAC;QAG1C,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC,CAAC,CAAC,0IAA0I;QAC/I,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE;YACnC,IAAI,IAAI,CAAC,4BAA4B,KAAK,SAAS,EAAE,CAAC;gBACrD,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChD,IAAI,CAAC,4BAA4B,GAAG,SAAS,CAAC;YAC/C,CAAC;QACF,CAAC,CAAC,CAAC,CAAC;QAEJ,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG,IAAI,eAAe,EAAgC,CAAC;QAExE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YAC1B,aAAa,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,GAAG,CAAC,WAAW,EAAE,EAAE;YAC1C,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAC5C,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACrC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACrC,wBAAwB;YACxB,IAAI,CAAC,wBAAwB,EAAE,eAAe,EAAE,CAAC;YACjD,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACb,CAAC,CAAC;QAEF,IAAI,CAAC,mBAAmB,GAAG,CAAC,YAAY,EAAE,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC,wBAAwB,KAAK,SAAS,CAAC,CAAC;YAExD,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC;YAErE,IAAI,OAAe,CAAC;YACpB,IAAI,MAAqB,CAAC;YAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC;YACxE,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;gBACpD,OAAO,GAAG,gBAAgB,CAAC;gBAC3B,MAAM,GAAG,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;gBAC9C,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC5C,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;YACrG,CAAC;YAED,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,wBAAwB,EAAE,CAAC;gBACrF,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,gFAAgF,CAAC,CAAC;gBACzG,OAAO;YACR,CAAC;YAED,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACrC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACrC,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE,CAAC;YAChD,wBAAwB;YAExB,WAAW,CAAC,QAAQ,CAAC;gBACpB,OAAO;gBACP,YAAY,EAAE,cAAc,IAAI,YAAY;gBAC5C,KAAK,EAAE;oBACN,MAAM;oBACN,kBAAkB;oBAClB,6BAA6B,EAAE,IAAI,CAAC,8BAA8B;oBAClE,6BAA6B,EAAE,IAAI,CAAC,8BAA8B;oBAClE,uCAAuC,EAAE,IAAI,CAAC,wCAAwC;iBACtF;aACD,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,mCAAmC,CAAC,CAAC,CAAC,CAAC;QACxH,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,8BAA8B,CAAC,CAAC,CAAC,CAAC;QACzJ,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,OAAO,WAAW,CAAC,CAAC,CAAC;IACtB,CAAC;IAEO,wBAAwB,CAAC,WAAmB,EAAE,mBAA4B;QACjF,IAAI,IAAI,CAAC,4BAA4B,KAAK,SAAS,EAAE,CAAC;YACrD,OAAO;QACR,CAAC;QACD,IAAI,IAAI,CAAC,4BAA4B,KAAK,SAAS,EAAE,CAAC;YACrD,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAElD,IAAI,CAAC,4BAA4B,GAAG,IAAI,uBAAuB,EAAE,CAAC;YAElE,MAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,SAAS,CAAC;YAC/G,MAAM,UAAU,GAAG,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;YAE3G,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;gBACzC,OAAO;YACR,CAAC;YAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC1B,IAAI,CAAC,wCAAwC,GAAG,IAAI,CAAC;YACtD,CAAC;YAED,IAAI,CAAC,8BAA8B,IAAI,CAAC,CAAC;YAEzC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;YAEtC,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9E,CAAC;IACF,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAAa,EAAE,WAAmB;QACvD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;QAE7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YAChH,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;YAC/D,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;QAC1E,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACvB,CAAC;IAEO,KAAK;QACZ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,mCAAmC,CAAC,IAAI,CAAC,SAAU,CAAC,UAAU,4BAAoB,CAAC;QAChG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEvC,6DAA6D;QAC7D,UAAU,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,iBAAiB,CAC5C,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAE,CAAC,EACrE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAE,CAAC,CACnE,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACT,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,UAA6C,EAAE,WAAmB,EAAE,KAAwB;QACjI,MAAM,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,GAAG,IAAI,CAAC,CAAC;QAEtF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;QAEvF,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;QAEzC,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACpC,KAAK,CAAC,uEAAuE,CAAC,CAAC;YAC/E,OAAO;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAC3D,eAAe,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC;YACzE,CAAC,CAAC,eAAe,CAAC,KAAK;YACvB,CAAC,CAAC,EAAE,CACL,CAAC;QACF,KAAK,CAAC,gEAAgE,QAAQ,CAAC,MAAM,cAAc,CAAC,CAAC;QAErG,+CAA+C;QAE/C,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACtE,KAAK,CAAC,yBAAyB,aAAa,CAAC,MAAM,cAAc,CAAC,CAAC;QAEnE,MAAM,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,IAAI,aAAa,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACxO,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,cAAc,CAAC,CAAC;QAEpE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAEvE,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACxD,OAAO;QACR,CAAC;QAED,sBAAsB;QACtB,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5B,IAAI,CAAC,wBAAyB,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAEjE,6GAA6G;QAC7G,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEO,KAAK;QACZ,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEO,kBAAkB;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACtD,IAAI,mBAA2B,CAAC;QAChC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,mBAAmB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;QACxD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;YAC1G,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,+CAA+C;QACnH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAU,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IAC7H,CAAC;IAEO,MAAM,CAAC,GAAG,IAAe;QAChC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;CACD,CAAA;AA3iBY,YAAY;IAgDtB,WAAA,aAAa,CAAA;IACb,WAAA,kBAAkB,CAAA;IAClB,WAAA,kBAAkB,CAAA;IAClB,WAAA,WAAW,CAAA;GAnDD,YAAY,CA2iBxB;;AAED,MAAM,uBAAuB;IAa5B,gDAAgD;IAChD,YAAY,MAAmB,EAAE,IAA2G;QAE3I,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;QAE1C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAEvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAEpF,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,4CAA4C,CAAC;QAC7E,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAExC,IAAI,CAAC,WAAW,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5H,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CACtD,CAAC,CAAC,EAAE;YACH,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACjD,CAAC;QACF,CAAC,EACD,IAAI,CAAC,YAAY,CACjB,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAC1D,CAAC,CAAC,EAAE;YACH,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1B,CAAC;QACF,CAAC,EACD,IAAI,CAAC,YAAY,CACjB,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,GAAG,CACpB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC;YACpC,2BAA2B,EAAE,6BAA6B;YAC1D,2BAA2B,EAAE,6BAA6B;SAC1D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACN,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,gDAAgD;IACzC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAqC;QACjE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEM,aAAa,CAAC,UAA2B;QAE/C,qCAAqC;QACrC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAE1C,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEvC,+BAA+B;QAC/B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC;QAE/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAA+B,EAAE,iCAAiC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAClH,CAAC;IAEM,eAAe;QACrB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,IAAW,WAAW;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAW,gBAAgB;QAC1B,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO;QACR,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,eAAe,CAAC,aAAa,CAAC;QACtC,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,cAAc,CAAC,aAAa,CAAC;QACrC,CAAC;QACD,OAAO;IACR,CAAC;IAEM,SAAS;QACf,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACb,CAAC;aAAM,CAAC;YACP,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,wEAAwE;gBACpG,OAAO,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACI,aAAa;QACnB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACb,CAAC;aAAM,CAAC;YACP,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;IACF,CAAC;IAEM,UAAU;QAChB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,IAAY,oBAAoB;QAC/B,MAAM,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5F,OAAO,WAAW,CAAC;IACpB,CAAC;IAEO,eAAe,CAAC,WAAmB;QAC1C,MAAM,wBAAwB,GAAG,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;QACzE,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAE,0DAA0D;QACvF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAC;QACvH,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,cAAc,CAAC,UAA2B;QACjD,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACzI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACrB,IAAI,CAAC,aAAa,EAClB,CAAC,CAAC,aAAa,GAAG,EAAE,CAAC,kBAAkB,GAAG,CAAC,CAAC,iBAAiB,GAAG,qBAAqB,GAAG,EAAE,CAAC,wCAAwC,CAAC,mDAAmD;SACvL,CAAC;QACF,OAAO,KAAK,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,SAAsB,EAAE,mBAA2B,EAAE,QAAkB;QACvG,MAAM,eAAe,GAAG,IAAI;YAC3B,aAAa,CAAC,OAAsB;gBACnC,OAAO,WAAW,CAAC;YACpB,CAAC;YAED,SAAS,CAAC,OAAsB;gBAC/B,OAAO,mBAAmB,CAAC;YAC5B,CAAC;SACD,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI;YAAA;gBACX,eAAU,GAAG,WAAW,CAAC;YAanC,CAAC;YAXA,cAAc,CAAC,SAAsB;gBACpC,OAAO,IAAI,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;YAED,aAAa,CAAC,SAAwB,EAAE,KAAa,EAAE,YAAiC;gBACvF,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;YAED,eAAe,CAAC,YAAiC;gBAChD,YAAY,CAAC,OAAO,EAAE,CAAC;YACxB,CAAC;SACD,CAAC;QAEF,OAAO,IAAI,IAAI,CACd,yBAAyB,EACzB,SAAS,EACT,eAAe,EACf,CAAC,QAAQ,CAAC,EACV;YACC,eAAe,EAAE,KAAK,EAAE,8GAA8G;YACtI,YAAY,EAAE,IAAI;YAClB,wBAAwB,EAAE,KAAK;SAC/B,CACD,CAAC;IACH,CAAC;CACD;AAED,MAAM,eAAe;IAArB;QAOS,wBAAmB,GAAW,EAAE,CAAC;QAMxB,sBAAiB,GAAG,IAAI,OAAO,EAAQ,CAAC;QACzC,qBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAE/C,iBAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IAgGvD,CAAC;IA9FA,IAAI,OAAO;QACV,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,0BAA0B,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YAE1C,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,cAAc,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAiB,EAAE,wDAAwD,CAAC,CAAC,CAAC;YAEtI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE3C,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,2BAA2B,CAAC;YACzD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAE/C,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAiC,EAAE,+BAA+B,CAAC,CAAC;YAC5G,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC,QAAQ,CAAC,IAA+B,EAAE,QAAQ,CAAC,CAAC;YACtF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5F,OAAO,EAAE,IAAI,CAAC,mBAAmB;gBACjC,KAAK,4BAAoB;aACzB,CAAC,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE5C,+EAA+E;YAE/E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACvH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gBACzF,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,QAAQ,CAAC,OAAO,+BAAsB,IAAI,QAAQ,CAAC,OAAO,gCAAuB,EAAE,CAAC;oBACvF,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBAC/B,CAAC;YACF,CAAC,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEvH,gDAAgD;YAEhD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE;gBACrF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,2BAA2B,CAAC;YAC/D,CAAC,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE;gBACpF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACrC,CAAC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACR,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,IAAI,MAAM;QACT,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,gBAAgB;QACf,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAC;QAC1E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAoB,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,wCAAwC,CAAC,CAAC;QACjF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAuB,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,OAAO;QACN,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACD;AAED,MAAM,mBAAmB;aAET,aAAQ,GAAW,CAAC,CAAC;IAMpC,YAAY,MAAmB,EAAE,QAAkB;QAElD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,6BAA6B,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,IAAI,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,mBAAmB,CAAC,QAAQ,IAAI,CAAC;QAElE,kFAAkF;QAClF,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpD,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACrC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC1C,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,GAAG,GAAG,IAAI,CAAC;QAC1F,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAClC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAEM,QAAQ,CAAC,KAAoB;QACnC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAEO,WAAW,CAAC,KAAoB;QACvC,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,CAAC;IAEO,YAAY,CAAC,KAAoB;QACxC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,EAAE,UAAU,EAA0B;QACjE,MAAM,WAAW,GAAG,UAAU,GAAG,mBAAmB,CAAC,QAAQ,GAAG,CAAC,CAAC,0BAA0B,CAAC;QAC7F,OAAO,EAAE,WAAW,EAAE,CAAC;IACxB,CAAC;IAEM,OAAO;IACd,CAAC","file":"renameWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { StandardKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { getBaseLayerHoverDelegate } from '../../../../base/browser/ui/hover/hoverDelegate2.js';\nimport { renderIcon } from '../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { IListRenderer, IListVirtualDelegate } from '../../../../base/browser/ui/list/list.js';\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { DeferredPromise, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore, IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType, isDefined } from '../../../../base/common/types.js';\nimport './renameWidget.css';\nimport * as domFontInfo from '../../../browser/config/domFontInfo.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { FontInfo } from '../../../common/config/fontInfo.js';\nimport { IDimension } from '../../../common/core/2d/dimension.js';\nimport { Position } from '../../../common/core/position.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { ScrollType } from '../../../common/editorCommon.js';\nimport { NewSymbolName, NewSymbolNameTag, NewSymbolNameTriggerKind, ProviderResult } from '../../../common/languages.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { getListStyles } from '../../../../platform/theme/browser/defaultStyles.js';\nimport {\n\teditorWidgetBackground,\n\tinputBackground,\n\tinputBorder,\n\tinputForeground,\n\tquickInputListFocusBackground,\n\tquickInputListFocusForeground,\n\twidgetBorder,\n\twidgetShadow } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IColorTheme, IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { HoverStyle } from '../../../../base/browser/ui/hover/hover.js';\n\n/** for debugging */\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\n\nexport const CONTEXT_RENAME_INPUT_VISIBLE = new RawContextKey<boolean>('renameInputVisible', false, nls.localize('renameInputVisible', \"Whether the rename input widget is visible\"));\nexport const CONTEXT_RENAME_INPUT_FOCUSED = new RawContextKey<boolean>('renameInputFocused', false, nls.localize('renameInputFocused', \"Whether the rename input widget is focused\"));\n\n/**\n * \"Source\" of the new name:\n * - 'inputField' - user entered the new name\n * - 'renameSuggestion' - user picked from rename suggestions\n * - 'userEditedRenameSuggestion' - user _likely_ edited a rename suggestion (\"likely\" because when input started being edited, a rename suggestion had focus)\n */\nexport type NewNameSource =\n\t| { k: 'inputField' }\n\t| { k: 'renameSuggestion' }\n\t| { k: 'userEditedRenameSuggestion' };\n\n/**\n * Various statistics regarding rename input field\n */\nexport type RenameWidgetStats = {\n\tnRenameSuggestions: number;\n\tsource: NewNameSource;\n\ttimeBeforeFirstInputFieldEdit: number | undefined;\n\tnRenameSuggestionsInvocations: number;\n\thadAutomaticRenameSuggestionsInvocation: boolean;\n};\n\nexport type RenameWidgetResult = {\n\t/**\n\t * The new name to be used\n\t */\n\tnewName: string;\n\twantsPreview?: boolean;\n\tstats: RenameWidgetStats;\n};\n\ninterface IRenameWidget {\n}\n\nexport class RenameWidget implements IRenameWidget, IContentWidget, IDisposable {\n\n\t// implement IContentWidget\n\treadonly allowEditorOverflow: boolean = true;\n\n\t// UI state\n\n\tprivate _domNode?: HTMLElement;\n\tprivate _inputWithButton: InputWithButton;\n\tprivate _renameCandidateListView?: RenameCandidateListView;\n\tprivate _label?: HTMLDivElement;\n\n\tprivate _nPxAvailableAbove?: number;\n\tprivate _nPxAvailableBelow?: number;\n\n\t// Model state\n\n\tprivate _position?: Position;\n\tprivate _currentName?: string;\n\t/** Is true if input field got changes when a rename candidate was focused; otherwise, false */\n\tprivate _isEditingRenameCandidate: boolean;\n\n\tprivate readonly _candidates: Set<string>;\n\n\tprivate _visible?: boolean;\n\n\t/** must be reset at session start */\n\tprivate _beforeFirstInputFieldEditSW: StopWatch;\n\n\t/**\n\t * Milliseconds before user edits the input field for the first time\n\t * @remarks must be set once per session\n\t */\n\tprivate _timeBeforeFirstInputFieldEdit: number | undefined;\n\n\tprivate _nRenameSuggestionsInvocations: number;\n\n\tprivate _hadAutomaticRenameSuggestionsInvocation: boolean;\n\n\tprivate _renameCandidateProvidersCts: CancellationTokenSource | undefined;\n\tprivate _renameCts: CancellationTokenSource | undefined;\n\n\tprivate readonly _visibleContextKey: IContextKey<boolean>;\n\tprivate readonly _disposables = new DisposableStore();\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _acceptKeybindings: [string, string],\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t) {\n\t\tthis._visibleContextKey = CONTEXT_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\n\n\t\tthis._isEditingRenameCandidate = false;\n\n\t\tthis._nRenameSuggestionsInvocations = 0;\n\n\t\tthis._hadAutomaticRenameSuggestionsInvocation = false;\n\n\t\tthis._candidates = new Set();\n\n\t\tthis._beforeFirstInputFieldEditSW = new StopWatch();\n\n\t\tthis._inputWithButton = new InputWithButton();\n\t\tthis._disposables.add(this._inputWithButton);\n\n\t\tthis._editor.addContentWidget(this);\n\n\t\tthis._disposables.add(this._editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(EditorOption.fontInfo)) {\n\t\t\t\tthis._updateFont();\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposables.add(_themeService.onDidColorThemeChange(this._updateStyles, this));\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t\tthis._editor.removeContentWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn '__renameInputWidget';\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\tif (!this._domNode) {\n\t\t\tthis._domNode = document.createElement('div');\n\t\t\tthis._domNode.className = 'monaco-editor rename-box';\n\n\t\t\tthis._domNode.appendChild(this._inputWithButton.domNode);\n\n\t\t\tthis._renameCandidateListView = this._disposables.add(\n\t\t\t\tnew RenameCandidateListView(this._domNode, {\n\t\t\t\t\tfontInfo: this._editor.getOption(EditorOption.fontInfo),\n\t\t\t\t\tonFocusChange: (newSymbolName: string) => {\n\t\t\t\t\t\tthis._inputWithButton.input.value = newSymbolName;\n\t\t\t\t\t\tthis._isEditingRenameCandidate = false; // @ulugbekna: reset\n\t\t\t\t\t},\n\t\t\t\t\tonSelectionChange: () => {\n\t\t\t\t\t\tthis._isEditingRenameCandidate = false; // @ulugbekna: because user picked a rename suggestion\n\t\t\t\t\t\tthis.acceptInput(false); // we don't allow preview with mouse click for now\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._disposables.add(\n\t\t\t\tthis._inputWithButton.onDidInputChange(() => {\n\t\t\t\t\tif (this._renameCandidateListView?.focusedCandidate !== undefined) {\n\t\t\t\t\t\tthis._isEditingRenameCandidate = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis._timeBeforeFirstInputFieldEdit ??= this._beforeFirstInputFieldEditSW.elapsed();\n\t\t\t\t\tif (this._renameCandidateProvidersCts?.token.isCancellationRequested === false) {\n\t\t\t\t\t\tthis._renameCandidateProvidersCts.cancel();\n\t\t\t\t\t}\n\t\t\t\t\tthis._renameCandidateListView?.clearFocus();\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tthis._label = document.createElement('div');\n\t\t\tthis._label.className = 'rename-label';\n\t\t\tthis._domNode.appendChild(this._label);\n\n\t\t\tthis._updateFont();\n\t\t\tthis._updateStyles(this._themeService.getColorTheme());\n\t\t}\n\t\treturn this._domNode;\n\t}\n\n\tprivate _updateStyles(theme: IColorTheme): void {\n\t\tif (!this._domNode) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst widgetShadowColor = theme.getColor(widgetShadow);\n\t\tconst widgetBorderColor = theme.getColor(widgetBorder);\n\t\tthis._domNode.style.backgroundColor = String(theme.getColor(editorWidgetBackground) ?? '');\n\t\tthis._domNode.style.boxShadow = widgetShadowColor ? ` 0 0 8px 2px ${widgetShadowColor}` : '';\n\t\tthis._domNode.style.border = widgetBorderColor ? `1px solid ${widgetBorderColor}` : '';\n\t\tthis._domNode.style.color = String(theme.getColor(inputForeground) ?? '');\n\n\t\tconst border = theme.getColor(inputBorder);\n\n\t\tthis._inputWithButton.domNode.style.backgroundColor = String(theme.getColor(inputBackground) ?? '');\n\t\tthis._inputWithButton.input.style.backgroundColor = String(theme.getColor(inputBackground) ?? '');\n\t\tthis._inputWithButton.domNode.style.borderWidth = border ? '1px' : '0px';\n\t\tthis._inputWithButton.domNode.style.borderStyle = border ? 'solid' : 'none';\n\t\tthis._inputWithButton.domNode.style.borderColor = border?.toString() ?? 'none';\n\t}\n\n\tprivate _updateFont(): void {\n\t\tif (this._domNode === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tassertType(this._label !== undefined, 'RenameWidget#_updateFont: _label must not be undefined given _domNode is defined');\n\n\t\tthis._editor.applyFontInfo(this._inputWithButton.input);\n\n\t\tconst fontInfo = this._editor.getOption(EditorOption.fontInfo);\n\t\tthis._label.style.fontSize = `${this._computeLabelFontSize(fontInfo.fontSize)}px`;\n\t}\n\n\tprivate _computeLabelFontSize(editorFontSize: number) {\n\t\treturn editorFontSize * 0.8;\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\tif (!this._visible) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this._editor.hasModel() || // @ulugbekna: shouldn't happen\n\t\t\t!this._editor.getDomNode() // @ulugbekna: can happen during tests based on suggestWidget's similar predicate check\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst bodyBox = dom.getClientArea(this.getDomNode().ownerDocument.body);\n\t\tconst editorBox = dom.getDomNodePagePosition(this._editor.getDomNode());\n\n\t\tconst cursorBoxTop = this._getTopForPosition();\n\n\t\tthis._nPxAvailableAbove = cursorBoxTop + editorBox.top;\n\t\tthis._nPxAvailableBelow = bodyBox.height - this._nPxAvailableAbove;\n\n\t\tconst lineHeight = this._editor.getOption(EditorOption.lineHeight);\n\t\tconst { totalHeight: candidateViewHeight } = RenameCandidateView.getLayoutInfo({ lineHeight });\n\n\t\tconst positionPreference = this._nPxAvailableBelow > candidateViewHeight * 6 /* approximate # of candidates to fit in (inclusive of rename input box & rename label) */\n\t\t\t? [ContentWidgetPositionPreference.BELOW, ContentWidgetPositionPreference.ABOVE]\n\t\t\t: [ContentWidgetPositionPreference.ABOVE, ContentWidgetPositionPreference.BELOW];\n\n\t\treturn {\n\t\t\tposition: this._position!,\n\t\t\tpreference: positionPreference,\n\t\t};\n\t}\n\n\tbeforeRender(): IDimension | null {\n\t\tconst [accept, preview] = this._acceptKeybindings;\n\t\tthis._label!.innerText = nls.localize({ key: 'label', comment: ['placeholders are keybindings, e.g \"F2 to Rename, Shift+F2 to Preview\"'] }, \"{0} to Rename, {1} to Preview\", this._keybindingService.lookupKeybinding(accept)?.getLabel(), this._keybindingService.lookupKeybinding(preview)?.getLabel());\n\n\t\tthis._domNode!.style.minWidth = `200px`; // to prevent from widening when candidates come in\n\n\t\treturn null;\n\t}\n\n\tafterRender(position: ContentWidgetPositionPreference | null): void {\n\t\t// FIXME@ulugbekna: commenting trace log out until we start unmounting the widget from editor properly - https://github.com/microsoft/vscode/issues/226975\n\t\t// this._trace('invoking afterRender, position: ', position ? 'not null' : 'null');\n\t\tif (position === null) {\n\t\t\t// cancel rename when input widget isn't rendered anymore\n\t\t\tthis.cancelInput(true, 'afterRender (because position is null)');\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._editor.hasModel() || // shouldn't happen\n\t\t\t!this._editor.getDomNode() // can happen during tests based on suggestWidget's similar predicate check\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tassertType(this._renameCandidateListView);\n\t\tassertType(this._nPxAvailableAbove !== undefined);\n\t\tassertType(this._nPxAvailableBelow !== undefined);\n\n\t\tconst inputBoxHeight = dom.getTotalHeight(this._inputWithButton.domNode);\n\n\t\tconst labelHeight = dom.getTotalHeight(this._label!);\n\n\t\tlet totalHeightAvailable: number;\n\t\tif (position === ContentWidgetPositionPreference.BELOW) {\n\t\t\ttotalHeightAvailable = this._nPxAvailableBelow;\n\t\t} else {\n\t\t\ttotalHeightAvailable = this._nPxAvailableAbove;\n\t\t}\n\n\t\tthis._renameCandidateListView!.layout({\n\t\t\theight: totalHeightAvailable - labelHeight - inputBoxHeight,\n\t\t\twidth: dom.getTotalWidth(this._inputWithButton.domNode),\n\t\t});\n\t}\n\n\n\tprivate _currentAcceptInput?: (wantsPreview: boolean) => void;\n\tprivate _currentCancelInput?: (focusEditor: boolean) => void;\n\tprivate _requestRenameCandidatesOnce?: (triggerKind: NewSymbolNameTriggerKind, cts: CancellationToken) => ProviderResult<NewSymbolName[]>[];\n\n\tacceptInput(wantsPreview: boolean): void {\n\t\tthis._trace(`invoking acceptInput`);\n\t\tthis._currentAcceptInput?.(wantsPreview);\n\t}\n\n\tcancelInput(focusEditor: boolean, caller: string): void {\n\t\t// this._trace(`invoking cancelInput, caller: ${caller}, _currentCancelInput: ${this._currentAcceptInput ? 'not undefined' : 'undefined'}`);\n\t\tthis._currentCancelInput?.(focusEditor);\n\t}\n\n\tfocusNextRenameSuggestion() {\n\t\tif (!this._renameCandidateListView?.focusNext()) {\n\t\t\tthis._inputWithButton.input.value = this._currentName!;\n\t\t}\n\t}\n\n\tfocusPreviousRenameSuggestion() { // TODO@ulugbekna: this and focusNext should set the original name if no candidate is focused\n\t\tif (!this._renameCandidateListView?.focusPrevious()) {\n\t\t\tthis._inputWithButton.input.value = this._currentName!;\n\t\t}\n\t}\n\n\t/**\n\t * @param requestRenameCandidates is `undefined` when there are no rename suggestion providers\n\t */\n\tgetInput(\n\t\twhere: IRange,\n\t\tcurrentName: string,\n\t\tsupportPreview: boolean,\n\t\trequestRenameCandidates: undefined | ((triggerKind: NewSymbolNameTriggerKind, cts: CancellationToken) => ProviderResult<NewSymbolName[]>[]),\n\t\tcts: CancellationTokenSource\n\t): Promise<RenameWidgetResult | boolean> {\n\n\t\tconst { start: selectionStart, end: selectionEnd } = this._getSelection(where, currentName);\n\n\t\tthis._renameCts = cts;\n\n\t\tconst disposeOnDone = new DisposableStore();\n\n\t\tthis._nRenameSuggestionsInvocations = 0;\n\n\t\tthis._hadAutomaticRenameSuggestionsInvocation = false;\n\n\t\tif (requestRenameCandidates === undefined) {\n\t\t\tthis._inputWithButton.button.style.display = 'none';\n\t\t} else {\n\t\t\tthis._inputWithButton.button.style.display = 'flex';\n\n\t\t\tthis._requestRenameCandidatesOnce = requestRenameCandidates;\n\n\t\t\tthis._requestRenameCandidates(currentName, false);\n\n\t\t\tdisposeOnDone.add(dom.addDisposableListener(\n\t\t\t\tthis._inputWithButton.button,\n\t\t\t\t'click',\n\t\t\t\t() => this._requestRenameCandidates(currentName, true)\n\t\t\t));\n\t\t\tdisposeOnDone.add(dom.addDisposableListener(\n\t\t\t\tthis._inputWithButton.button,\n\t\t\t\tdom.EventType.KEY_DOWN,\n\t\t\t\t(e) => {\n\t\t\t\t\tconst keyEvent = new StandardKeyboardEvent(e);\n\n\t\t\t\t\tif (keyEvent.equals(KeyCode.Enter) || keyEvent.equals(KeyCode.Space)) {\n\t\t\t\t\t\tkeyEvent.stopPropagation();\n\t\t\t\t\t\tkeyEvent.preventDefault();\n\t\t\t\t\t\tthis._requestRenameCandidates(currentName, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\n\t\tthis._isEditingRenameCandidate = false;\n\n\t\tthis._domNode!.classList.toggle('preview', supportPreview);\n\n\t\tthis._position = new Position(where.startLineNumber, where.startColumn);\n\t\tthis._currentName = currentName;\n\n\t\tthis._inputWithButton.input.value = currentName;\n\t\tthis._inputWithButton.input.setAttribute('selectionStart', selectionStart.toString());\n\t\tthis._inputWithButton.input.setAttribute('selectionEnd', selectionEnd.toString());\n\t\tthis._inputWithButton.input.size = Math.max((where.endColumn - where.startColumn) * 1.1, 20); // determines width\n\n\t\tthis._beforeFirstInputFieldEditSW.reset();\n\n\n\t\tdisposeOnDone.add(toDisposable(() => {\n\t\t\tthis._renameCts = undefined;\n\t\t\tcts.dispose(true);\n\t\t})); // @ulugbekna: this may result in `this.cancelInput` being called twice, but it should be safe since we set it to undefined after 1st call\n\t\tdisposeOnDone.add(toDisposable(() => {\n\t\t\tif (this._renameCandidateProvidersCts !== undefined) {\n\t\t\t\tthis._renameCandidateProvidersCts.dispose(true);\n\t\t\t\tthis._renameCandidateProvidersCts = undefined;\n\t\t\t}\n\t\t}));\n\n\t\tdisposeOnDone.add(toDisposable(() => this._candidates.clear()));\n\n\t\tconst inputResult = new DeferredPromise<RenameWidgetResult | boolean>();\n\n\t\tinputResult.p.finally(() => {\n\t\t\tdisposeOnDone.dispose();\n\t\t\tthis._hide();\n\t\t});\n\n\t\tthis._currentCancelInput = (focusEditor) => {\n\t\t\tthis._trace('invoking _currentCancelInput');\n\t\t\tthis._currentAcceptInput = undefined;\n\t\t\tthis._currentCancelInput = undefined;\n\t\t\t// fixme session cleanup\n\t\t\tthis._renameCandidateListView?.clearCandidates();\n\t\t\tinputResult.complete(focusEditor);\n\t\t\treturn true;\n\t\t};\n\n\t\tthis._currentAcceptInput = (wantsPreview) => {\n\t\t\tthis._trace('invoking _currentAcceptInput');\n\t\t\tassertType(this._renameCandidateListView !== undefined);\n\n\t\t\tconst nRenameSuggestions = this._renameCandidateListView.nCandidates;\n\n\t\t\tlet newName: string;\n\t\t\tlet source: NewNameSource;\n\t\t\tconst focusedCandidate = this._renameCandidateListView.focusedCandidate;\n\t\t\tif (focusedCandidate !== undefined) {\n\t\t\t\tthis._trace('using new name from renameSuggestion');\n\t\t\t\tnewName = focusedCandidate;\n\t\t\t\tsource = { k: 'renameSuggestion' };\n\t\t\t} else {\n\t\t\t\tthis._trace('using new name from inputField');\n\t\t\t\tnewName = this._inputWithButton.input.value;\n\t\t\t\tsource = this._isEditingRenameCandidate ? { k: 'userEditedRenameSuggestion' } : { k: 'inputField' };\n\t\t\t}\n\n\t\t\tif (newName === currentName || newName.trim().length === 0 /* is just whitespace */) {\n\t\t\t\tthis.cancelInput(true, '_currentAcceptInput (because newName === value || newName.trim().length === 0)');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._currentAcceptInput = undefined;\n\t\t\tthis._currentCancelInput = undefined;\n\t\t\tthis._renameCandidateListView.clearCandidates();\n\t\t\t// fixme session cleanup\n\n\t\t\tinputResult.complete({\n\t\t\t\tnewName,\n\t\t\t\twantsPreview: supportPreview && wantsPreview,\n\t\t\t\tstats: {\n\t\t\t\t\tsource,\n\t\t\t\t\tnRenameSuggestions,\n\t\t\t\t\ttimeBeforeFirstInputFieldEdit: this._timeBeforeFirstInputFieldEdit,\n\t\t\t\t\tnRenameSuggestionsInvocations: this._nRenameSuggestionsInvocations,\n\t\t\t\t\thadAutomaticRenameSuggestionsInvocation: this._hadAutomaticRenameSuggestionsInvocation,\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tdisposeOnDone.add(cts.token.onCancellationRequested(() => this.cancelInput(true, 'cts.token.onCancellationRequested')));\n\t\tif (!_sticky) {\n\t\t\tdisposeOnDone.add(this._editor.onDidBlurEditorWidget(() => this.cancelInput(!this._domNode?.ownerDocument.hasFocus(), 'editor.onDidBlurEditorWidget')));\n\t\t}\n\n\t\tthis._show();\n\n\t\treturn inputResult.p;\n\t}\n\n\tprivate _requestRenameCandidates(currentName: string, isManuallyTriggered: boolean) {\n\t\tif (this._requestRenameCandidatesOnce === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._renameCandidateProvidersCts !== undefined) {\n\t\t\tthis._renameCandidateProvidersCts.dispose(true);\n\t\t}\n\n\t\tassertType(this._renameCts);\n\n\t\tif (this._inputWithButton.buttonState !== 'stop') {\n\n\t\t\tthis._renameCandidateProvidersCts = new CancellationTokenSource();\n\n\t\t\tconst triggerKind = isManuallyTriggered ? NewSymbolNameTriggerKind.Invoke : NewSymbolNameTriggerKind.Automatic;\n\t\t\tconst candidates = this._requestRenameCandidatesOnce(triggerKind, this._renameCandidateProvidersCts.token);\n\n\t\t\tif (candidates.length === 0) {\n\t\t\t\tthis._inputWithButton.setSparkleButton();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isManuallyTriggered) {\n\t\t\t\tthis._hadAutomaticRenameSuggestionsInvocation = true;\n\t\t\t}\n\n\t\t\tthis._nRenameSuggestionsInvocations += 1;\n\n\t\t\tthis._inputWithButton.setStopButton();\n\n\t\t\tthis._updateRenameCandidates(candidates, currentName, this._renameCts.token);\n\t\t}\n\t}\n\n\t/**\n\t * This allows selecting only part of the symbol name in the input field based on the selection in the editor\n\t */\n\tprivate _getSelection(where: IRange, currentName: string): { start: number; end: number } {\n\t\tassertType(this._editor.hasModel());\n\n\t\tconst selection = this._editor.getSelection();\n\t\tlet start = 0;\n\t\tlet end = currentName.length;\n\n\t\tif (!Range.isEmpty(selection) && !Range.spansMultipleLines(selection) && Range.containsRange(where, selection)) {\n\t\t\tstart = Math.max(0, selection.startColumn - where.startColumn);\n\t\t\tend = Math.min(where.endColumn, selection.endColumn) - where.startColumn;\n\t\t}\n\n\t\treturn { start, end };\n\t}\n\n\tprivate _show(): void {\n\t\tthis._trace('invoking _show');\n\t\tthis._editor.revealLineInCenterIfOutsideViewport(this._position!.lineNumber, ScrollType.Smooth);\n\t\tthis._visible = true;\n\t\tthis._visibleContextKey.set(true);\n\t\tthis._editor.layoutContentWidget(this);\n\n\t\t// TODO@ulugbekna: could this be simply run in `afterRender`?\n\t\tsetTimeout(() => {\n\t\t\tthis._inputWithButton.input.focus();\n\t\t\tthis._inputWithButton.input.setSelectionRange(\n\t\t\t\tparseInt(this._inputWithButton.input.getAttribute('selectionStart')!),\n\t\t\t\tparseInt(this._inputWithButton.input.getAttribute('selectionEnd')!)\n\t\t\t);\n\t\t}, 100);\n\t}\n\n\tprivate async _updateRenameCandidates(candidates: ProviderResult<NewSymbolName[]>[], currentName: string, token: CancellationToken) {\n\t\tconst trace = (...args: unknown[]) => this._trace('_updateRenameCandidates', ...args);\n\n\t\ttrace('start');\n\t\tconst namesListResults = await raceCancellation(Promise.allSettled(candidates), token);\n\n\t\tthis._inputWithButton.setSparkleButton();\n\n\t\tif (namesListResults === undefined) {\n\t\t\ttrace('returning early - received updateRenameCandidates results - undefined');\n\t\t\treturn;\n\t\t}\n\n\t\tconst newNames = namesListResults.flatMap(namesListResult =>\n\t\t\tnamesListResult.status === 'fulfilled' && isDefined(namesListResult.value)\n\t\t\t\t? namesListResult.value\n\t\t\t\t: []\n\t\t);\n\t\ttrace(`received updateRenameCandidates results - total (unfiltered) ${newNames.length} candidates.`);\n\n\t\t// deduplicate and filter out the current value\n\n\t\tconst distinctNames = arrays.distinct(newNames, v => v.newSymbolName);\n\t\ttrace(`distinct candidates - ${distinctNames.length} candidates.`);\n\n\t\tconst validDistinctNames = distinctNames.filter(({ newSymbolName }) => newSymbolName.trim().length > 0 && newSymbolName !== this._inputWithButton.input.value && newSymbolName !== currentName && !this._candidates.has(newSymbolName));\n\t\ttrace(`valid distinct candidates - ${newNames.length} candidates.`);\n\n\t\tvalidDistinctNames.forEach(n => this._candidates.add(n.newSymbolName));\n\n\t\tif (validDistinctNames.length < 1) {\n\t\t\ttrace('returning early - no valid distinct candidates');\n\t\t\treturn;\n\t\t}\n\n\t\t// show the candidates\n\t\ttrace('setting candidates');\n\t\tthis._renameCandidateListView!.setCandidates(validDistinctNames);\n\n\t\t// ask editor to re-layout given that the widget is now of a different size after rendering rename candidates\n\t\ttrace('asking editor to re-layout');\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tprivate _hide(): void {\n\t\tthis._trace('invoked _hide');\n\t\tthis._visible = false;\n\t\tthis._visibleContextKey.reset();\n\t\tthis._editor.layoutContentWidget(this);\n\t}\n\n\tprivate _getTopForPosition(): number {\n\t\tconst visibleRanges = this._editor.getVisibleRanges();\n\t\tlet firstLineInViewport: number;\n\t\tif (visibleRanges.length > 0) {\n\t\t\tfirstLineInViewport = visibleRanges[0].startLineNumber;\n\t\t} else {\n\t\t\tthis._logService.warn('RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty');\n\t\t\tfirstLineInViewport = Math.max(1, this._position!.lineNumber - 5); // @ulugbekna: fallback to current line minus 5\n\t\t}\n\t\treturn this._editor.getTopForLineNumber(this._position!.lineNumber) - this._editor.getTopForLineNumber(firstLineInViewport);\n\t}\n\n\tprivate _trace(...args: unknown[]) {\n\t\tthis._logService.trace('RenameWidget', ...args);\n\t}\n}\n\nclass RenameCandidateListView {\n\n\t/** Parent node of the list widget; needed to control # of list elements visible */\n\tprivate readonly _listContainer: HTMLDivElement;\n\tprivate readonly _listWidget: List<NewSymbolName>;\n\n\tprivate _lineHeight: number;\n\tprivate _availableHeight: number;\n\tprivate _minimumWidth: number;\n\tprivate _typicalHalfwidthCharacterWidth: number;\n\n\tprivate readonly _disposables: DisposableStore;\n\n\t// FIXME@ulugbekna: rewrite using event emitters\n\tconstructor(parent: HTMLElement, opts: { fontInfo: FontInfo; onFocusChange: (newSymbolName: string) => void; onSelectionChange: () => void }) {\n\n\t\tthis._disposables = new DisposableStore();\n\n\t\tthis._availableHeight = 0;\n\t\tthis._minimumWidth = 0;\n\n\t\tthis._lineHeight = opts.fontInfo.lineHeight;\n\t\tthis._typicalHalfwidthCharacterWidth = opts.fontInfo.typicalHalfwidthCharacterWidth;\n\n\t\tthis._listContainer = document.createElement('div');\n\t\tthis._listContainer.className = 'rename-box rename-candidate-list-container';\n\t\tparent.appendChild(this._listContainer);\n\n\t\tthis._listWidget = RenameCandidateListView._createListWidget(this._listContainer, this._candidateViewHeight, opts.fontInfo);\n\n\t\tthis._disposables.add(this._listWidget.onDidChangeFocus(\n\t\t\te => {\n\t\t\t\tif (e.elements.length === 1) {\n\t\t\t\t\topts.onFocusChange(e.elements[0].newSymbolName);\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._disposables\n\t\t));\n\n\t\tthis._disposables.add(this._listWidget.onDidChangeSelection(\n\t\t\te => {\n\t\t\t\tif (e.elements.length === 1) {\n\t\t\t\t\topts.onSelectionChange();\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._disposables\n\t\t));\n\n\t\tthis._disposables.add(\n\t\t\tthis._listWidget.onDidBlur(e => { // @ulugbekna: because list widget otherwise remembers last focused element and returns it as focused element\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t})\n\t\t);\n\n\t\tthis._listWidget.style(getListStyles({\n\t\t\tlistInactiveFocusForeground: quickInputListFocusForeground,\n\t\t\tlistInactiveFocusBackground: quickInputListFocusBackground,\n\t\t}));\n\t}\n\n\tdispose() {\n\t\tthis._listWidget.dispose();\n\t\tthis._disposables.dispose();\n\t}\n\n\t// height - max height allowed by parent element\n\tpublic layout({ height, width }: { height: number; width: number }): void {\n\t\tthis._availableHeight = height;\n\t\tthis._minimumWidth = width;\n\t}\n\n\tpublic setCandidates(candidates: NewSymbolName[]): void {\n\n\t\t// insert candidates into list widget\n\t\tthis._listWidget.splice(0, 0, candidates);\n\n\t\t// adjust list widget layout\n\t\tconst height = this._pickListHeight(this._listWidget.length);\n\t\tconst width = this._pickListWidth(candidates);\n\n\t\tthis._listWidget.layout(height, width);\n\n\t\t// adjust list container layout\n\t\tthis._listContainer.style.height = `${height}px`;\n\t\tthis._listContainer.style.width = `${width}px`;\n\n\t\taria.status(nls.localize('renameSuggestionsReceivedAria', \"Received {0} rename suggestions\", candidates.length));\n\t}\n\n\tpublic clearCandidates(): void {\n\t\tthis._listContainer.style.height = '0px';\n\t\tthis._listContainer.style.width = '0px';\n\t\tthis._listWidget.splice(0, this._listWidget.length, []);\n\t}\n\n\tpublic get nCandidates() {\n\t\treturn this._listWidget.length;\n\t}\n\n\tpublic get focusedCandidate(): string | undefined {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst selectedElement = this._listWidget.getSelectedElements()[0];\n\t\tif (selectedElement !== undefined) {\n\t\t\treturn selectedElement.newSymbolName;\n\t\t}\n\t\tconst focusedElement = this._listWidget.getFocusedElements()[0];\n\t\tif (focusedElement !== undefined) {\n\t\t\treturn focusedElement.newSymbolName;\n\t\t}\n\t\treturn;\n\t}\n\n\tpublic focusNext(): boolean {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusedIxs = this._listWidget.getFocus();\n\t\tif (focusedIxs.length === 0) {\n\t\t\tthis._listWidget.focusFirst();\n\t\t\tthis._listWidget.reveal(0);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (focusedIxs[0] === this._listWidget.length - 1) {\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t\tthis._listWidget.reveal(0); // @ulugbekna: without this, it seems like focused element is obstructed\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis._listWidget.focusNext();\n\t\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\t\tthis._listWidget.reveal(focused);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @returns true if focus is moved to previous element\n\t */\n\tpublic focusPrevious(): boolean {\n\t\tif (this._listWidget.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tconst focusedIxs = this._listWidget.getFocus();\n\t\tif (focusedIxs.length === 0) {\n\t\t\tthis._listWidget.focusLast();\n\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\tthis._listWidget.reveal(focused);\n\t\t\treturn true;\n\t\t} else {\n\t\t\tif (focusedIxs[0] === 0) {\n\t\t\t\tthis._listWidget.setFocus([]);\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tthis._listWidget.focusPrevious();\n\t\t\t\tconst focused = this._listWidget.getFocus()[0];\n\t\t\t\tthis._listWidget.reveal(focused);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic clearFocus(): void {\n\t\tthis._listWidget.setFocus([]);\n\t}\n\n\tprivate get _candidateViewHeight(): number {\n\t\tconst { totalHeight } = RenameCandidateView.getLayoutInfo({ lineHeight: this._lineHeight });\n\t\treturn totalHeight;\n\t}\n\n\tprivate _pickListHeight(nCandidates: number) {\n\t\tconst heightToFitAllCandidates = this._candidateViewHeight * nCandidates;\n\t\tconst MAX_N_CANDIDATES = 7; // @ulugbekna: max # of candidates we want to show at once\n\t\tconst height = Math.min(heightToFitAllCandidates, this._availableHeight, this._candidateViewHeight * MAX_N_CANDIDATES);\n\t\treturn height;\n\t}\n\n\tprivate _pickListWidth(candidates: NewSymbolName[]): number {\n\t\tconst longestCandidateWidth = Math.ceil(Math.max(...candidates.map(c => c.newSymbolName.length)) * this._typicalHalfwidthCharacterWidth);\n\t\tconst width = Math.max(\n\t\t\tthis._minimumWidth,\n\t\t\t4 /* padding */ + 16 /* sparkle icon */ + 5 /* margin-left */ + longestCandidateWidth + 10 /* (possibly visible) scrollbar width */ // TODO@ulugbekna: approximate calc - clean this up\n\t\t);\n\t\treturn width;\n\t}\n\n\tprivate static _createListWidget(container: HTMLElement, candidateViewHeight: number, fontInfo: FontInfo) {\n\t\tconst virtualDelegate = new class implements IListVirtualDelegate<NewSymbolName> {\n\t\t\tgetTemplateId(element: NewSymbolName): string {\n\t\t\t\treturn 'candidate';\n\t\t\t}\n\n\t\t\tgetHeight(element: NewSymbolName): number {\n\t\t\t\treturn candidateViewHeight;\n\t\t\t}\n\t\t};\n\n\t\tconst renderer = new class implements IListRenderer<NewSymbolName, RenameCandidateView> {\n\t\t\treadonly templateId = 'candidate';\n\n\t\t\trenderTemplate(container: HTMLElement): RenameCandidateView {\n\t\t\t\treturn new RenameCandidateView(container, fontInfo);\n\t\t\t}\n\n\t\t\trenderElement(candidate: NewSymbolName, index: number, templateData: RenameCandidateView): void {\n\t\t\t\ttemplateData.populate(candidate);\n\t\t\t}\n\n\t\t\tdisposeTemplate(templateData: RenameCandidateView): void {\n\t\t\t\ttemplateData.dispose();\n\t\t\t}\n\t\t};\n\n\t\treturn new List(\n\t\t\t'NewSymbolNameCandidates',\n\t\t\tcontainer,\n\t\t\tvirtualDelegate,\n\t\t\t[renderer],\n\t\t\t{\n\t\t\t\tkeyboardSupport: false, // @ulugbekna: because we handle keyboard events through proper commands & keybinding service, see `rename.ts`\n\t\t\t\tmouseSupport: true,\n\t\t\t\tmultipleSelectionSupport: false,\n\t\t\t}\n\t\t);\n\t}\n}\n\nclass InputWithButton implements IDisposable {\n\n\tprivate _buttonState: 'sparkle' | 'stop' | undefined;\n\n\tprivate _domNode: HTMLDivElement | undefined;\n\tprivate _inputNode: HTMLInputElement | undefined;\n\tprivate _buttonNode: HTMLElement | undefined;\n\tprivate _buttonHoverContent: string = '';\n\tprivate _buttonGenHoverText: string | undefined;\n\tprivate _buttonCancelHoverText: string | undefined;\n\tprivate _sparkleIcon: HTMLElement | undefined;\n\tprivate _stopIcon: HTMLElement | undefined;\n\n\tprivate readonly _onDidInputChange = new Emitter<void>();\n\tpublic readonly onDidInputChange = this._onDidInputChange.event;\n\n\tprivate readonly _disposables = new DisposableStore();\n\n\tget domNode() {\n\t\tif (!this._domNode) {\n\n\t\t\tthis._domNode = document.createElement('div');\n\t\t\tthis._domNode.className = 'rename-input-with-button';\n\t\t\tthis._domNode.style.display = 'flex';\n\t\t\tthis._domNode.style.flexDirection = 'row';\n\t\t\tthis._domNode.style.alignItems = 'center';\n\n\t\t\tthis._inputNode = document.createElement('input');\n\t\t\tthis._inputNode.className = 'rename-input';\n\t\t\tthis._inputNode.type = 'text';\n\t\t\tthis._inputNode.style.border = 'none';\n\t\t\tthis._inputNode.setAttribute('aria-label', nls.localize('renameAriaLabel', \"Rename input. Type new name and press Enter to commit.\"));\n\n\t\t\tthis._domNode.appendChild(this._inputNode);\n\n\t\t\tthis._buttonNode = document.createElement('div');\n\t\t\tthis._buttonNode.className = 'rename-suggestions-button';\n\t\t\tthis._buttonNode.setAttribute('tabindex', '0');\n\n\t\t\tthis._buttonGenHoverText = nls.localize('generateRenameSuggestionsButton', \"Generate New Name Suggestions\");\n\t\t\tthis._buttonCancelHoverText = nls.localize('cancelRenameSuggestionsButton', \"Cancel\");\n\t\t\tthis._buttonHoverContent = this._buttonGenHoverText;\n\t\t\tthis._disposables.add(getBaseLayerHoverDelegate().setupDelayedHover(this._buttonNode, () => ({\n\t\t\t\tcontent: this._buttonHoverContent,\n\t\t\t\tstyle: HoverStyle.Pointer,\n\t\t\t})));\n\n\t\t\tthis._domNode.appendChild(this._buttonNode);\n\n\t\t\t// notify if selection changes to cancel request to rename-suggestion providers\n\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.INPUT, () => this._onDidInputChange.fire()));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.KEY_DOWN, (e) => {\n\t\t\t\tconst keyEvent = new StandardKeyboardEvent(e);\n\t\t\t\tif (keyEvent.keyCode === KeyCode.LeftArrow || keyEvent.keyCode === KeyCode.RightArrow) {\n\t\t\t\t\tthis._onDidInputChange.fire();\n\t\t\t\t}\n\t\t\t}));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.CLICK, () => this._onDidInputChange.fire()));\n\n\t\t\t// focus \"container\" border instead of input box\n\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.FOCUS, () => {\n\t\t\t\tthis.domNode.style.outlineWidth = '1px';\n\t\t\t\tthis.domNode.style.outlineStyle = 'solid';\n\t\t\t\tthis.domNode.style.outlineOffset = '-1px';\n\t\t\t\tthis.domNode.style.outlineColor = 'var(--vscode-focusBorder)';\n\t\t\t}));\n\t\t\tthis._disposables.add(dom.addDisposableListener(this.input, dom.EventType.BLUR, () => {\n\t\t\t\tthis.domNode.style.outline = 'none';\n\t\t\t}));\n\t\t}\n\t\treturn this._domNode;\n\t}\n\n\tget input() {\n\t\tassertType(this._inputNode);\n\t\treturn this._inputNode;\n\t}\n\n\tget button() {\n\t\tassertType(this._buttonNode);\n\t\treturn this._buttonNode;\n\t}\n\n\tget buttonState() {\n\t\treturn this._buttonState;\n\t}\n\n\tsetSparkleButton() {\n\t\tthis._buttonState = 'sparkle';\n\t\tthis._sparkleIcon ??= renderIcon(Codicon.sparkle);\n\t\tdom.clearNode(this.button);\n\t\tthis.button.appendChild(this._sparkleIcon);\n\t\tthis.button.setAttribute('aria-label', 'Generating new name suggestions');\n\t\tthis._buttonHoverContent = this._buttonGenHoverText!;\n\t\tthis.input.focus();\n\t}\n\n\tsetStopButton() {\n\t\tthis._buttonState = 'stop';\n\t\tthis._stopIcon ??= renderIcon(Codicon.stopCircle);\n\t\tdom.clearNode(this.button);\n\t\tthis.button.appendChild(this._stopIcon);\n\t\tthis.button.setAttribute('aria-label', 'Cancel generating new name suggestions');\n\t\tthis._buttonHoverContent = this._buttonCancelHoverText!;\n\t\tthis.input.focus();\n\t}\n\n\tdispose(): void {\n\t\tthis._disposables.dispose();\n\t}\n}\n\nclass RenameCandidateView {\n\n\tprivate static _PADDING: number = 2;\n\n\tprivate readonly _domNode: HTMLElement;\n\tprivate readonly _icon: HTMLElement;\n\tprivate readonly _label: HTMLElement;\n\n\tconstructor(parent: HTMLElement, fontInfo: FontInfo) {\n\n\t\tthis._domNode = document.createElement('div');\n\t\tthis._domNode.className = 'rename-box rename-candidate';\n\t\tthis._domNode.style.display = `flex`;\n\t\tthis._domNode.style.columnGap = `5px`;\n\t\tthis._domNode.style.alignItems = `center`;\n\t\tthis._domNode.style.height = `${fontInfo.lineHeight}px`;\n\t\tthis._domNode.style.padding = `${RenameCandidateView._PADDING}px`;\n\n\t\t// @ulugbekna: needed to keep space when the `icon.style.display` is set to `none`\n\t\tconst iconContainer = document.createElement('div');\n\t\ticonContainer.style.display = `flex`;\n\t\ticonContainer.style.alignItems = `center`;\n\t\ticonContainer.style.width = iconContainer.style.height = `${fontInfo.lineHeight * 0.8}px`;\n\t\tthis._domNode.appendChild(iconContainer);\n\n\t\tthis._icon = renderIcon(Codicon.sparkle);\n\t\tthis._icon.style.display = `none`;\n\t\ticonContainer.appendChild(this._icon);\n\n\t\tthis._label = document.createElement('div');\n\t\tdomFontInfo.applyFontInfo(this._label, fontInfo);\n\t\tthis._domNode.appendChild(this._label);\n\n\t\tparent.appendChild(this._domNode);\n\t}\n\n\tpublic populate(value: NewSymbolName) {\n\t\tthis._updateIcon(value);\n\t\tthis._updateLabel(value);\n\t}\n\n\tprivate _updateIcon(value: NewSymbolName) {\n\t\tconst isAIGenerated = !!value.tags?.includes(NewSymbolNameTag.AIGenerated);\n\t\tthis._icon.style.display = isAIGenerated ? 'inherit' : 'none';\n\t}\n\n\tprivate _updateLabel(value: NewSymbolName) {\n\t\tthis._label.innerText = value.newSymbolName;\n\t}\n\n\tpublic static getLayoutInfo({ lineHeight }: { lineHeight: number }): { totalHeight: number } {\n\t\tconst totalHeight = lineHeight + RenameCandidateView._PADDING * 2 /* top & bottom padding */;\n\t\treturn { totalHeight };\n\t}\n\n\tpublic dispose() {\n\t}\n}\n"]}
|
|
@@ -131,7 +131,7 @@ class GrowSelectionAction extends AbstractSmartSelect {
|
|
|
131
131
|
constructor() {
|
|
132
132
|
super(true, {
|
|
133
133
|
id: 'editor.action.smartSelect.expand',
|
|
134
|
-
label: nls.localize2(
|
|
134
|
+
label: nls.localize2(1393, "Expand Selection"),
|
|
135
135
|
precondition: undefined,
|
|
136
136
|
kbOpts: {
|
|
137
137
|
kbExpr: EditorContextKeys.editorTextFocus,
|
|
@@ -145,7 +145,7 @@ class GrowSelectionAction extends AbstractSmartSelect {
|
|
|
145
145
|
menuOpts: {
|
|
146
146
|
menuId: MenuId.MenubarSelectionMenu,
|
|
147
147
|
group: '1_basic',
|
|
148
|
-
title: nls.localize(
|
|
148
|
+
title: nls.localize(1391, "&&Expand Selection"),
|
|
149
149
|
order: 2
|
|
150
150
|
}
|
|
151
151
|
});
|
|
@@ -157,7 +157,7 @@ class ShrinkSelectionAction extends AbstractSmartSelect {
|
|
|
157
157
|
constructor() {
|
|
158
158
|
super(false, {
|
|
159
159
|
id: 'editor.action.smartSelect.shrink',
|
|
160
|
-
label: nls.localize2(
|
|
160
|
+
label: nls.localize2(1394, "Shrink Selection"),
|
|
161
161
|
precondition: undefined,
|
|
162
162
|
kbOpts: {
|
|
163
163
|
kbExpr: EditorContextKeys.editorTextFocus,
|
|
@@ -171,7 +171,7 @@ class ShrinkSelectionAction extends AbstractSmartSelect {
|
|
|
171
171
|
menuOpts: {
|
|
172
172
|
menuId: MenuId.MenubarSelectionMenu,
|
|
173
173
|
group: '1_basic',
|
|
174
|
-
title: nls.localize(
|
|
174
|
+
title: nls.localize(1392, "&&Shrink Selection"),
|
|
175
175
|
order: 3
|
|
176
176
|
}
|
|
177
177
|
});
|
|
@@ -40,9 +40,9 @@ let SnippetController2 = class SnippetController2 {
|
|
|
40
40
|
static get(editor) {
|
|
41
41
|
return editor.getContribution(SnippetController2_1.ID);
|
|
42
42
|
}
|
|
43
|
-
static { this.InSnippetMode = new RawContextKey('inSnippetMode', false, localize(
|
|
44
|
-
static { this.HasNextTabstop = new RawContextKey('hasNextTabstop', false, localize(
|
|
45
|
-
static { this.HasPrevTabstop = new RawContextKey('hasPrevTabstop', false, localize(
|
|
43
|
+
static { this.InSnippetMode = new RawContextKey('inSnippetMode', false, localize(1395, "Whether the editor in current in snippet mode")); }
|
|
44
|
+
static { this.HasNextTabstop = new RawContextKey('hasNextTabstop', false, localize(1396, "Whether there is a next tab stop when in snippet mode")); }
|
|
45
|
+
static { this.HasPrevTabstop = new RawContextKey('hasPrevTabstop', false, localize(1397, "Whether there is a previous tab stop when in snippet mode")); }
|
|
46
46
|
constructor(_editor, _logService, _languageFeaturesService, contextKeyService, _languageConfigurationService) {
|
|
47
47
|
this._editor = _editor;
|
|
48
48
|
this._logService = _logService;
|
|
@@ -128,7 +128,7 @@ let SnippetController2 = class SnippetController2 {
|
|
|
128
128
|
sortText: 'a'.repeat(i + 1),
|
|
129
129
|
range: activeChoice.range,
|
|
130
130
|
filterText: isAnyOfOptions ? `${word}_${option.value}` : undefined,
|
|
131
|
-
command: { id: 'jumpToNextSnippetPlaceholder', title: localize(
|
|
131
|
+
command: { id: 'jumpToNextSnippetPlaceholder', title: localize(1398, 'Go to next placeholder...') }
|
|
132
132
|
});
|
|
133
133
|
}
|
|
134
134
|
return { suggestions };
|
|
@@ -245,10 +245,10 @@ export class TimeBasedVariableResolver {
|
|
|
245
245
|
constructor() {
|
|
246
246
|
this._date = new Date();
|
|
247
247
|
}
|
|
248
|
-
static { this.dayNames = [nls.localize(
|
|
249
|
-
static { this.dayNamesShort = [nls.localize(
|
|
250
|
-
static { this.monthNames = [nls.localize(
|
|
251
|
-
static { this.monthNamesShort = [nls.localize(
|
|
248
|
+
static { this.dayNames = [nls.localize(1399, "Sunday"), nls.localize(1400, "Monday"), nls.localize(1401, "Tuesday"), nls.localize(1402, "Wednesday"), nls.localize(1403, "Thursday"), nls.localize(1404, "Friday"), nls.localize(1405, "Saturday")]; }
|
|
249
|
+
static { this.dayNamesShort = [nls.localize(1406, "Sun"), nls.localize(1407, "Mon"), nls.localize(1408, "Tue"), nls.localize(1409, "Wed"), nls.localize(1410, "Thu"), nls.localize(1411, "Fri"), nls.localize(1412, "Sat")]; }
|
|
250
|
+
static { this.monthNames = [nls.localize(1413, "January"), nls.localize(1414, "February"), nls.localize(1415, "March"), nls.localize(1416, "April"), nls.localize(1417, "May"), nls.localize(1418, "June"), nls.localize(1419, "July"), nls.localize(1420, "August"), nls.localize(1421, "September"), nls.localize(1422, "October"), nls.localize(1423, "November"), nls.localize(1424, "December")]; }
|
|
251
|
+
static { this.monthNamesShort = [nls.localize(1425, "Jan"), nls.localize(1426, "Feb"), nls.localize(1427, "Mar"), nls.localize(1428, "Apr"), nls.localize(1429, "May"), nls.localize(1430, "Jun"), nls.localize(1431, "Jul"), nls.localize(1432, "Aug"), nls.localize(1433, "Sep"), nls.localize(1434, "Oct"), nls.localize(1435, "Nov"), nls.localize(1436, "Dec")]; }
|
|
252
252
|
resolve(variable) {
|
|
253
253
|
const { name } = variable;
|
|
254
254
|
if (name === 'CURRENT_YEAR') {
|
|
@@ -15,17 +15,17 @@ export class ToggleStickyScroll extends EditorAction2 {
|
|
|
15
15
|
super({
|
|
16
16
|
id: 'editor.action.toggleStickyScroll',
|
|
17
17
|
title: {
|
|
18
|
-
...localize2(
|
|
19
|
-
mnemonicTitle: localize(
|
|
18
|
+
...localize2(1441, "Toggle Editor Sticky Scroll"),
|
|
19
|
+
mnemonicTitle: localize(1437, "&&Toggle Editor Sticky Scroll"),
|
|
20
20
|
},
|
|
21
21
|
metadata: {
|
|
22
|
-
description: localize2(
|
|
22
|
+
description: localize2(1442, "Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport"),
|
|
23
23
|
},
|
|
24
24
|
category: Categories.View,
|
|
25
25
|
toggled: {
|
|
26
26
|
condition: ContextKeyExpr.equals('config.editor.stickyScroll.enabled', true),
|
|
27
|
-
title: localize(
|
|
28
|
-
mnemonicTitle: localize(
|
|
27
|
+
title: localize(1438, "Sticky Scroll"),
|
|
28
|
+
mnemonicTitle: localize(1439, "&&Sticky Scroll"),
|
|
29
29
|
},
|
|
30
30
|
menu: [
|
|
31
31
|
{ id: MenuId.CommandPalette },
|
|
@@ -50,8 +50,8 @@ export class FocusStickyScroll extends EditorAction2 {
|
|
|
50
50
|
super({
|
|
51
51
|
id: 'editor.action.focusStickyScroll',
|
|
52
52
|
title: {
|
|
53
|
-
...localize2(
|
|
54
|
-
mnemonicTitle: localize(
|
|
53
|
+
...localize2(1443, "Focus Editor Sticky Scroll"),
|
|
54
|
+
mnemonicTitle: localize(1440, "&&Focus Editor Sticky Scroll"),
|
|
55
55
|
},
|
|
56
56
|
precondition: ContextKeyExpr.and(ContextKeyExpr.has('config.editor.stickyScroll.enabled'), EditorContextKeys.stickyScrollVisible),
|
|
57
57
|
menu: [
|
|
@@ -67,7 +67,7 @@ export class SelectNextStickyScrollLine extends EditorAction2 {
|
|
|
67
67
|
constructor() {
|
|
68
68
|
super({
|
|
69
69
|
id: 'editor.action.selectNextStickyScrollLine',
|
|
70
|
-
title: localize2(
|
|
70
|
+
title: localize2(1444, "Select the next editor sticky scroll line"),
|
|
71
71
|
precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),
|
|
72
72
|
keybinding: {
|
|
73
73
|
weight,
|
|
@@ -83,7 +83,7 @@ export class SelectPreviousStickyScrollLine extends EditorAction2 {
|
|
|
83
83
|
constructor() {
|
|
84
84
|
super({
|
|
85
85
|
id: 'editor.action.selectPreviousStickyScrollLine',
|
|
86
|
-
title: localize2(
|
|
86
|
+
title: localize2(1445, "Select the previous sticky scroll line"),
|
|
87
87
|
precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),
|
|
88
88
|
keybinding: {
|
|
89
89
|
weight,
|
|
@@ -99,7 +99,7 @@ export class GoToStickyScrollLine extends EditorAction2 {
|
|
|
99
99
|
constructor() {
|
|
100
100
|
super({
|
|
101
101
|
id: 'editor.action.goToFocusedStickyScrollLine',
|
|
102
|
-
title: localize2(
|
|
102
|
+
title: localize2(1446, "Go to the focused sticky scroll line"),
|
|
103
103
|
precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),
|
|
104
104
|
keybinding: {
|
|
105
105
|
weight,
|
|
@@ -115,7 +115,7 @@ export class SelectEditor extends EditorAction2 {
|
|
|
115
115
|
constructor() {
|
|
116
116
|
super({
|
|
117
117
|
id: 'editor.action.selectEditor',
|
|
118
|
-
title: localize2(
|
|
118
|
+
title: localize2(1447, "Select Editor"),
|
|
119
119
|
precondition: EditorContextKeys.stickyScrollFocused.isEqualTo(true),
|
|
120
120
|
keybinding: {
|
|
121
121
|
weight,
|
|
@@ -21,14 +21,14 @@ import { ILanguageFeaturesService } from '../../../common/services/languageFeatu
|
|
|
21
21
|
import { historyNavigationVisible } from '../../../../platform/history/browser/contextScopedHistoryWidget.js';
|
|
22
22
|
export const Context = {
|
|
23
23
|
Visible: historyNavigationVisible,
|
|
24
|
-
HasFocusedSuggestion: new RawContextKey('suggestWidgetHasFocusedSuggestion', false, localize(
|
|
25
|
-
DetailsVisible: new RawContextKey('suggestWidgetDetailsVisible', false, localize(
|
|
26
|
-
MultipleSuggestions: new RawContextKey('suggestWidgetMultipleSuggestions', false, localize(
|
|
27
|
-
MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true, localize(
|
|
28
|
-
AcceptSuggestionsOnEnter: new RawContextKey('acceptSuggestionOnEnter', true, localize(
|
|
29
|
-
HasInsertAndReplaceRange: new RawContextKey('suggestionHasInsertAndReplaceRange', false, localize(
|
|
30
|
-
InsertMode: new RawContextKey('suggestionInsertMode', undefined, { type: 'string', description: localize(
|
|
31
|
-
CanResolve: new RawContextKey('suggestionCanResolve', false, localize(
|
|
24
|
+
HasFocusedSuggestion: new RawContextKey('suggestWidgetHasFocusedSuggestion', false, localize(1448, "Whether any suggestion is focused")),
|
|
25
|
+
DetailsVisible: new RawContextKey('suggestWidgetDetailsVisible', false, localize(1449, "Whether suggestion details are visible")),
|
|
26
|
+
MultipleSuggestions: new RawContextKey('suggestWidgetMultipleSuggestions', false, localize(1450, "Whether there are multiple suggestions to pick from")),
|
|
27
|
+
MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true, localize(1451, "Whether inserting the current suggestion yields in a change or has everything already been typed")),
|
|
28
|
+
AcceptSuggestionsOnEnter: new RawContextKey('acceptSuggestionOnEnter', true, localize(1452, "Whether suggestions are inserted when pressing Enter")),
|
|
29
|
+
HasInsertAndReplaceRange: new RawContextKey('suggestionHasInsertAndReplaceRange', false, localize(1453, "Whether the current suggestion has insert and replace behaviour")),
|
|
30
|
+
InsertMode: new RawContextKey('suggestionInsertMode', undefined, { type: 'string', description: localize(1454, "Whether the default behaviour is to insert or replace") }),
|
|
31
|
+
CanResolve: new RawContextKey('suggestionCanResolve', false, localize(1455, "Whether the current suggestion supports to resolve further details")),
|
|
32
32
|
};
|
|
33
33
|
export const suggestWidgetStatusbarMenu = new MenuId('suggestWidgetStatusBar');
|
|
34
34
|
export class CompletionItem {
|
|
@@ -482,7 +482,7 @@ let SuggestController = class SuggestController {
|
|
|
482
482
|
}
|
|
483
483
|
_alertCompletionItem(item) {
|
|
484
484
|
if (isNonEmptyArray(item.completion.additionalTextEdits)) {
|
|
485
|
-
const msg = nls.localize(
|
|
485
|
+
const msg = nls.localize(1456, "Accepting '{0}' made {1} additional edits", item.textLabel, item.completion.additionalTextEdits.length);
|
|
486
486
|
alert(msg);
|
|
487
487
|
}
|
|
488
488
|
}
|
|
@@ -669,7 +669,7 @@ export class TriggerSuggestAction extends EditorAction {
|
|
|
669
669
|
constructor() {
|
|
670
670
|
super({
|
|
671
671
|
id: TriggerSuggestAction.id,
|
|
672
|
-
label: nls.localize2(
|
|
672
|
+
label: nls.localize2(1464, "Trigger Suggest"),
|
|
673
673
|
precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCompletionItemProvider, SuggestContext.Visible.toNegated()),
|
|
674
674
|
kbOpts: {
|
|
675
675
|
kbExpr: EditorContextKeys.textInputFocus,
|
|
@@ -717,19 +717,19 @@ registerEditorCommand(new SuggestCommand({
|
|
|
717
717
|
}],
|
|
718
718
|
menuOpts: [{
|
|
719
719
|
menuId: suggestWidgetStatusbarMenu,
|
|
720
|
-
title: nls.localize(
|
|
720
|
+
title: nls.localize(1457, "Insert"),
|
|
721
721
|
group: 'left',
|
|
722
722
|
order: 1,
|
|
723
723
|
when: SuggestContext.HasInsertAndReplaceRange.toNegated()
|
|
724
724
|
}, {
|
|
725
725
|
menuId: suggestWidgetStatusbarMenu,
|
|
726
|
-
title: nls.localize(
|
|
726
|
+
title: nls.localize(1458, "Insert"),
|
|
727
727
|
group: 'left',
|
|
728
728
|
order: 1,
|
|
729
729
|
when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert'))
|
|
730
730
|
}, {
|
|
731
731
|
menuId: suggestWidgetStatusbarMenu,
|
|
732
|
-
title: nls.localize(
|
|
732
|
+
title: nls.localize(1459, "Replace"),
|
|
733
733
|
group: 'left',
|
|
734
734
|
order: 1,
|
|
735
735
|
when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace'))
|
|
@@ -752,13 +752,13 @@ registerEditorCommand(new SuggestCommand({
|
|
|
752
752
|
group: 'left',
|
|
753
753
|
order: 2,
|
|
754
754
|
when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')),
|
|
755
|
-
title: nls.localize(
|
|
755
|
+
title: nls.localize(1460, "Replace")
|
|
756
756
|
}, {
|
|
757
757
|
menuId: suggestWidgetStatusbarMenu,
|
|
758
758
|
group: 'left',
|
|
759
759
|
order: 2,
|
|
760
760
|
when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')),
|
|
761
|
-
title: nls.localize(
|
|
761
|
+
title: nls.localize(1461, "Insert")
|
|
762
762
|
}]
|
|
763
763
|
}));
|
|
764
764
|
// continue to support the old command
|
|
@@ -866,13 +866,13 @@ registerEditorCommand(new SuggestCommand({
|
|
|
866
866
|
group: 'right',
|
|
867
867
|
order: 1,
|
|
868
868
|
when: ContextKeyExpr.and(SuggestContext.DetailsVisible, SuggestContext.CanResolve),
|
|
869
|
-
title: nls.localize(
|
|
869
|
+
title: nls.localize(1462, "Show Less")
|
|
870
870
|
}, {
|
|
871
871
|
menuId: suggestWidgetStatusbarMenu,
|
|
872
872
|
group: 'right',
|
|
873
873
|
order: 1,
|
|
874
874
|
when: ContextKeyExpr.and(SuggestContext.DetailsVisible.toNegated(), SuggestContext.CanResolve),
|
|
875
|
-
title: nls.localize(
|
|
875
|
+
title: nls.localize(1463, "Show More")
|
|
876
876
|
}]
|
|
877
877
|
}));
|
|
878
878
|
registerEditorCommand(new SuggestCommand({
|
|
@@ -931,7 +931,7 @@ registerEditorAction(class extends EditorAction {
|
|
|
931
931
|
constructor() {
|
|
932
932
|
super({
|
|
933
933
|
id: 'editor.action.resetSuggestSize',
|
|
934
|
-
label: nls.localize2(
|
|
934
|
+
label: nls.localize2(1465, "Reset Suggest Widget Size"),
|
|
935
935
|
precondition: undefined
|
|
936
936
|
});
|
|
937
937
|
}
|