monaco-editor-core 0.56.0-dev-20251219 → 0.56.0-dev-20251220
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 +0 -2
- package/esm/vs/editor/common/core/editorColorRegistry.js +33 -34
- package/esm/vs/editor/common/core/editorColorRegistry.js.map +1 -1
- package/esm/vs/editor/common/editorContextKeys.js +47 -47
- 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 +11 -11
- 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 +9 -18
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js.map +1 -1
- 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/hoverColorPicker/hoverColorPickerParticipant.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/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/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
- 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 +21 -21
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +7 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +13 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +5 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +6 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +6 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +9 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +14 -9
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +12 -10
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +5 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +40 -21
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
- 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 +11 -11
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/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 +9 -9
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +11 -11
- 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 +3 -3
- 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/hover/browser/hoverWidget.js +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.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 +8 -8
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +13 -47
- package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +7 -6
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- 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/quickinput/common/quickInput.js.map +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +18 -18
- 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 +16 -16
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;;;;;;;;;;AAEhG,OAAO,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAA2B,MAAM,0CAA0C,CAAC;AAC7G,OAAO,EAAE,UAAU,EAAE,MAAM,8DAA8D,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,8BAA8B,EAAE,MAAM,yEAAyE,CAAC;AAE1I,OAAO,EAAE,OAAO,EAAE,MAAM,2CAA2C,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,OAAO,EAAe,mBAAmB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACpK,OAAO,EAAE,EAAE,EAAE,MAAM,8CAA8C,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+DAA+D,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AACtH,OAAO,EAAE,cAAc,EAAE,MAAM,iEAAiE,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,0DAA0D,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAE3F,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2FAA2F,CAAC;AAEnJ,OAAO,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,qDAAqD,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,sCAAsC,EAAE,MAAM,mCAAmC,CAAC;AAE3F,OAAO,EAAoB,oBAAoB,EAAuB,MAAM,gCAAgC,CAAC;AAC7G,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,oCAAoC,EAAE,gCAAgC,EAAE,oCAAoC,EAAE,+BAA+B,EAAE,YAAY,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AACvS,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,OAAO,wBAAwB;IACpC,YACiB,IAAqB,EACrB,iBAA6D;QAD7D,SAAI,GAAJ,IAAI,CAAiB;QACrB,sBAAiB,GAAjB,iBAAiB,CAA4C;IAC1E,CAAC;IAEL,MAAM,CAAC,KAA+B;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,CAAC,iBAAiB,CAAC;IAC3F,CAAC;CACD;AAED,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,cAAc,GAAG,+BAA+B,CAAC;AACvD,MAAM,aAAa,GAAG,8BAA8B,CAAC;AACrD,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAC/D,MAAM,aAAa,GAAG,8BAA8B,CAAC;AAE9C,IAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,UAAU;aAE/C,eAAU,GAAG,GAAH,AAAM,CAAC;IAiB/B,YACkB,OAA6B,EAC7B,SAAmC,EACjC,UAA4C,EAC7C,gBAAmD,EACtD,aAA6C,EACxC,kBAAuD,EAC5D,aAA6C;QAE5D,KAAK,EAAE,CAAC;QARS,YAAO,GAAP,OAAO,CAAsB;QAC7B,cAAS,GAAT,SAAS,CAA0B;QACjC,eAAU,GAAV,UAAU,CAAkC;QAC5B,qBAAgB,GAAhB,gBAAgB,CAAkB;QACrC,kBAAa,GAAb,aAAa,CAAe;QACvB,uBAAkB,GAAlB,kBAAkB,CAAoB;QAC3C,kBAAa,GAAb,aAAa,CAAe;QAtB5C,gBAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAwB,CAAC,CAAC;QAC1E,eAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAwB5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnH,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAiC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnF,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAiC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;QAC3G,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YAChD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAG,CAAC;YACrC,MAAM,QAAQ,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAE9E,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtK,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5G,IAAI,MAAkB,CAAC;YACvB,IAAI,CAAC,EAAE,CAAC;gBACP,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;YACxJ,CAAC;iBAAM,CAAC;gBACP,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;YAClG,CAAC;YACD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACnH,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAK,IAAI,IAAI,OAAO,CAAY,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3J,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvJ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACrC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEzC,8EAA8E;YAC9E,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC9F,OAAO,SAAS,CAAC;YAClB,CAAC;YAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,gCAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC;YAEpG,MAAM,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,iBAAiB,GAAG,CAAC,CAAC;YAC5B,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;YAExE,IAAI,iBAAiB,GAAG,SAAS,CAAC;YAClC,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,gBAAgB,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;oBAC3D,QAAQ,CAAC,IAAgB,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;oBACvD,QAAQ,CAAC,IAAiB,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,CAAC;oBAChE,CAAC,CAAC,KAAK,CAAC;gBACT,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAsB,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;gBAC9F,iBAAiB,GAAG;oBACnB,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;oBACxE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,KAAK,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS;oBACnF,IAAI,EAAE,SAAS,EAAE,yEAAyE;oBAC1F,KAAK;oBACL,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,sCAAsC,CAAC;oBAC5F,MAAM,EAAE,iBAAiB;iBACzB,CAAC;YACH,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC;YAC5G,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3J,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpI,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAEjE,oGAAoG;YAEpG,OAAO;gBACN,iBAAiB;gBACjB,YAAY;gBACZ,QAAQ;gBACR,YAAY;gBACZ,eAAe;gBACf,UAAU;aACV,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACnD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,OAAO,CAAC,CAAC;YACV,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACpG,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;YAClB,KAAK,EAAE,kBAAkB;SACzB,EAAE;YACF,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;gBACtB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACb,OAAO,EAAE,CAAC;gBACX,CAAC;gBAED,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5G,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5G,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,IAAI,CAAC;gBAEhG,MAAM,uBAAuB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA,sEAAsE;gBAC7H,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;gBAC/D,MAAM,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAE1J,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,GAAG,EAAE;oBACzF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;oBACjD,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;gBAC5D,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChB,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAE5G,MAAM,mBAAmB,GAAG;oBAC3B,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,mBAAmB;oBAC3E,eAAe,EAAE,aAAa,CAAC,+BAA+B,CAAC;oBAC/D,KAAK,EAAE,EAAE;oBACT,OAAO,EAAE,GAAG;iBACZ,CAAC;gBAEF,MAAM,qBAAqB,GAAG;oBAC7B,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,gCAAgC,CAAC;oBACvG,eAAe,EAAE,aAAa,CAAC,oCAAoC,CAAC;oBACpE,KAAK,EAAE,aAAa,CAAC,oCAAoC,CAAC;oBAC1D,OAAO,EAAE,GAAG;iBACZ,CAAC;gBAEF,MAAM,aAAa,GAAG;oBACrB,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;oBACpK,eAAe,EAAE,aAAa,CAAC,gBAAgB,CAAC;oBAChD,KAAK,EAAE,EAAE;oBACT,OAAO,EAAE,KAAK;iBACd,CAAC;gBAEF,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;gBAC5H,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;gBAC1H,sEAAsE;gBACtE,OAAO;oBACN,CAAC,CAAC,GAAG,CAAC;wBACL,EAAE,EAAE,cAAc;wBAClB,KAAK,EAAE;4BACN,QAAQ,EAAE,UAAU;4BACpB,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BACtE,QAAQ,EAAE,QAAQ;4BAClB,aAAa,EAAE,MAAM;yBACrB;qBACD,EAAE;wBACF,CAAC,CAAC,GAAG,CAAC;4BACL,KAAK,EAAE;gCACN,QAAQ,EAAE,UAAU;gCACpB,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,GAAG,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;gCACzH,UAAU,EAAE,aAAa,CAAC,gBAAgB,CAAC;gCAC3C,MAAM,EAAE,SAAS;gCACjB,aAAa,EAAE,MAAM;6BACrB;4BACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;yBACtC,CAAC;wBACF,CAAC,CAAC,GAAG,CAAC;4BACL,EAAE,EAAE,aAAa;4BACjB,KAAK,EAAE;gCACN,QAAQ,EAAE,UAAU;gCACpB,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC;gCACrG,KAAK,EAAE,SAAS;gCAChB,aAAa,EAAE,MAAM;gCACrB,SAAS,EAAE,YAAY;gCACvB,YAAY,EAAE,GAAG,0BAA0B,IAAI;gCAE/C,UAAU,EAAE,aAAa,CAAC,gBAAgB,CAAC;gCAC3C,OAAO,EAAE,MAAM;gCACf,cAAc,EAAE,MAAM;gCAEtB,OAAO,EAAE,aAAa,aAAa,CAAC,gBAAgB,CAAC,EAAE;6BACvD;4BACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;yBACtC,EAAE;4BACF,CAAC,CAAC,GAAG,CAAC;gCACL,EAAE,EAAE,kBAAkB;gCACtB,KAAK,EAAE;oCACN,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,kCAAyB;oCAC3D,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,gCAAuB;oCACvD,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,kCAAyB;oCAC3D,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK;oCAC3G,YAAY,EAAE,GAAG,0BAA0B,IAAI;oCAC/C,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;oCAChF,SAAS,EAAE,YAAY;oCACvB,OAAO,EAAE,GAAG,YAAY,IAAI;oCAC5B,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;oCAChD,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;oCAC3D,OAAO,EAAE,MAAM;oCACf,cAAc,EAAE,MAAM;oCACtB,UAAU,EAAE,QAAQ;oCACpB,aAAa,EAAE,MAAM;oCACrB,MAAM,EAAE,SAAS;iCACjB;gCACD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oCAChB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gCAC3C,CAAC;6BACD,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAChB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;gCACtB,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gCACjD,IAAI,CAAC,SAAS,EAAE,CAAC;oCAChB,OAAO,SAAS,CAAC;gCAClB,CAAC;gCACD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gCACjD,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,GAAG,8BAA8B,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gCACzI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gCAE1C,OAAO,CAAC,CAAC,GAAG,CAAC;oCACZ,EAAE,EAAE,aAAa;oCACjB,KAAK,EAAE;wCACN,QAAQ,EAAE,UAAU;wCACpB,YAAY,EAAE,GAAG,0BAA0B,IAAI;wCAC/C,SAAS,EAAE,GAAG,YAAY,UAAU;wCACpC,WAAW,EAAE,GAAG,YAAY,UAAU;wCACtC,YAAY,EAAE,GAAG,YAAY,UAAU;wCACvC,UAAU,EAAE,GAAG,YAAY,UAAU;wCACrC,WAAW,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;wCAC1D,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;wCAClD,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;wCAC9C,OAAO,EAAE,MAAM;wCACf,cAAc,EAAE,QAAQ;wCACxB,UAAU,EAAE,QAAQ;wCACpB,OAAO,EAAE,aAAa;wCACtB,UAAU,EAAE,KAAK;wCACjB,UAAU,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;wCAC7D,MAAM,EAAE,SAAS;wCACjB,QAAQ,EAAE,QAAQ;qCAClB;oCACD,KAAK,EAAE,sCAAsC;oCAC7C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;wCAChB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oCAC7C,CAAC;oCACD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;wCACb,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;4CACvB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;wCACpI,CAAC;oCACF,CAAC;iCACD,EAAE;oCACF,UAAU;oCACV,CAAC,CAAC,oDAAoD,CAAC;oCACvD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oCACvD,SAAS,CAAC,KAAK;iCACf,CAAC,CAAC;4BACJ,CAAC,CAAC;yBACF,CAAC;wBACF,CAAC,CAAC,GAAG,CAAC;4BACL,KAAK,EAAE;gCACN,QAAQ,EAAE,UAAU;gCACpB,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gCACnF,SAAS,EAAE,YAAY;gCACvB,YAAY,EAAE,GAAG,0BAA0B,IAAI;gCAC/C,MAAM,EAAE,GAAG,YAAY,YAAY,mBAAmB,EAAE;gCACxD,UAAU,EAAE,aAAa,CAAC,+BAA+B,CAAC;gCAC1D,aAAa,EAAE,MAAM;6BACrB;yBACD,EAAE,EAAE,CAAC;wBAEN,CAAC,CAAC,GAAG,CAAC;4BACL,KAAK,EAAE,EAAE;4BACT,MAAM,EAAE,EAAE;4BACV,OAAO,EAAE,WAAW;4BACpB,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE;gCACN,QAAQ,EAAE,UAAU;gCACpB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC;gCAC/C,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gCAClF,aAAa,EAAE,MAAM;6BACrB;4BACD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;yBACtC,EAAE;4BACF,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;gCACjB,CAAC,EAAE,uEAAuE;gCAC1E,MAAM,EAAE,aAAa,CAAC,qBAAqB,CAAC;6BAC5C,CAAC;4BACF,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;gCACjB,CAAC,EAAE,gCAAgC;gCACnC,MAAM,EAAE,aAAa,CAAC,qBAAqB,CAAC;6BAC5C,CAAC;yBACF,CAAC;qBAEF,CAAC;iBACF,CAAC;YACH,CAAC,CAAC;SACF,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAC/C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC3B,mBAAmB,EAAE,eAAe,CAAC,CAAC,CAAC;YACvC,QAAQ,EAAE,eAAe,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9D,mBAAmB,EAAE,KAAK;SAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAQO,UAAU,CAAC,CAAa;QAC/B,MAAM,SAAS,GAAG,sBAAsB,CAAC,CAAC,CAAC,MAAqB,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;QAC/I,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO;QACR,CAAC;QACD,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,4CAA4C;QAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC;IACpF,CAAC;;AA3UW,8BAA8B;IAuBxC,WAAA,gBAAgB,CAAA;IAChB,WAAA,aAAa,CAAA;IACb,WAAA,kBAAkB,CAAA;IAClB,WAAA,aAAa,CAAA;GA1BH,8BAA8B,CA4U1C;;AAED,SAAS,sBAAsB,CAAC,OAAoB,EAAE,GAAgB;IACrE,IAAI,OAAO,GAAuB,OAAO,CAAC;IAC1C,OAAO,OAAO,EAAE,CAAC;QAChB,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,EAAE,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC","file":"inlineEditsWordReplacementView.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 { $, ModifierKeyEmitter, n, ObserverNodeWithElement } from '../../../../../../../base/browser/dom.js';\nimport { renderIcon } from '../../../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { KeybindingLabel, unthemedKeybindingLabelOptions } from '../../../../../../../base/browser/ui/keybindingLabel/keybindingLabel.js';\nimport { IEquatable } from '../../../../../../../base/common/equals.js';\nimport { Emitter } from '../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../base/common/lifecycle.js';\nimport { constObservable, derived, IObservable, observableFromEvent, observableFromPromise, observableValue } from '../../../../../../../base/common/observable.js';\nimport { OS } from '../../../../../../../base/common/platform.js';\nimport { localize } from '../../../../../../../nls.js';\nimport { IHoverService } from '../../../../../../../platform/hover/browser/hover.js';\nimport { IKeybindingService } from '../../../../../../../platform/keybinding/common/keybinding.js';\nimport { editorBackground, editorHoverForeground } from '../../../../../../../platform/theme/common/colorRegistry.js';\nimport { contrastBorder } from '../../../../../../../platform/theme/common/colors/baseColors.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { IThemeService } from '../../../../../../../platform/theme/common/themeService.js';\nimport { ObservableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { LineSource, renderLines, RenderOptions } from '../../../../../../browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js';\nimport { EditorOption } from '../../../../../../common/config/editorOptions.js';\nimport { Point } from '../../../../../../common/core/2d/point.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { StringReplacement } from '../../../../../../common/core/edits/stringEdit.js';\nimport { TextReplacement } from '../../../../../../common/core/edits/textEdit.js';\nimport { OffsetRange } from '../../../../../../common/core/ranges/offsetRange.js';\nimport { ILanguageService } from '../../../../../../common/languages/language.js';\nimport { LineTokens, TokenArray } from '../../../../../../common/tokens/lineTokens.js';\nimport { inlineSuggestCommitAlternativeActionId } from '../../../controller/commandIds.js';\nimport { InlineSuggestAlternativeAction } from '../../../model/InlineSuggestAlternativeAction.js';\nimport { IInlineEditsView, InlineEditClickEvent, InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { getModifiedBorderColor, getOriginalBorderColor, INLINE_EDITS_BORDER_RADIUS, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorPrimaryBorder, inlineEditIndicatorPrimaryForeground, modifiedChangedTextOverlayColor, observeColor, originalChangedTextOverlayColor } from '../theme.js';\nimport { getEditorValidOverlayRect, mapOutFalsy, rectToProps } from '../utils/utils.js';\n\nexport class WordReplacementsViewData implements IEquatable<WordReplacementsViewData> {\n\tconstructor(\n\t\tpublic readonly edit: TextReplacement,\n\t\tpublic readonly alternativeAction: InlineSuggestAlternativeAction | undefined,\n\t) { }\n\n\tequals(other: WordReplacementsViewData): boolean {\n\t\treturn this.edit.equals(other.edit) && this.alternativeAction === other.alternativeAction;\n\t}\n}\n\nconst BORDER_WIDTH = 1;\nconst DOM_ID_OVERLAY = 'word-replacement-view-overlay';\nconst DOM_ID_WIDGET = 'word-replacement-view-widget';\nconst DOM_ID_REPLACEMENT = 'word-replacement-view-replacement';\nconst DOM_ID_RENAME = 'word-replacement-view-rename';\n\nexport class InlineEditsWordReplacementView extends Disposable implements IInlineEditsView {\n\n\tpublic static MAX_LENGTH = 100;\n\n\tprivate readonly _onDidClick = this._register(new Emitter<InlineEditClickEvent>());\n\treadonly onDidClick = this._onDidClick.event;\n\n\tprivate readonly _start;\n\tprivate readonly _end;\n\n\tprivate readonly _line;\n\n\tprivate readonly _primaryElement;\n\tprivate readonly _secondaryElement;\n\n\treadonly isHovered;\n\n\treadonly minEditorScrollHeight;\n\n\tconstructor(\n\t\tprivate readonly _editor: ObservableCodeEditor,\n\t\tprivate readonly _viewData: WordReplacementsViewData,\n\t\tprotected readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IHoverService private readonly _hoverService: IHoverService,\n\t) {\n\t\tsuper();\n\t\tthis._start = this._editor.observePosition(constObservable(this._viewData.edit.range.getStartPosition()), this._store);\n\t\tthis._end = this._editor.observePosition(constObservable(this._viewData.edit.range.getEndPosition()), this._store);\n\t\tthis._line = document.createElement('div');\n\t\tthis._primaryElement = observableValue<ObserverNodeWithElement | null>(this, null);\n\t\tthis._secondaryElement = observableValue<ObserverNodeWithElement | null>(this, null);\n\t\tthis.isHovered = this._primaryElement.map((e, reader) => e?.didMouseMoveDuringHover.read(reader) ?? false);\n\t\tthis._renderTextEffect = derived(this, _reader => {\n\t\t\tconst tm = this._editor.model.get()!;\n\t\t\tconst origLine = tm.getLineContent(this._viewData.edit.range.startLineNumber);\n\n\t\t\tconst edit = StringReplacement.replace(new OffsetRange(this._viewData.edit.range.startColumn - 1, this._viewData.edit.range.endColumn - 1), this._viewData.edit.text);\n\t\t\tconst lineToTokenize = edit.replace(origLine);\n\t\t\tconst t = tm.tokenization.tokenizeLinesAt(this._viewData.edit.range.startLineNumber, [lineToTokenize])?.[0];\n\t\t\tlet tokens: LineTokens;\n\t\t\tif (t) {\n\t\t\t\ttokens = TokenArray.fromLineTokens(t).slice(edit.getRangeAfterReplace()).toLineTokens(this._viewData.edit.text, this._languageService.languageIdCodec);\n\t\t\t} else {\n\t\t\t\ttokens = LineTokens.createEmpty(this._viewData.edit.text, this._languageService.languageIdCodec);\n\t\t\t}\n\t\t\tconst res = renderLines(new LineSource([tokens]), RenderOptions.fromEditor(this._editor.editor).withSetWidth(false).withScrollBeyondLastColumn(0), [], this._line, true);\n\t\t\tthis._line.style.width = `${res.minWidthInPx}px`;\n\t\t});\n\t\tconst modifiedLineHeight = this._editor.observeLineHeightForPosition(this._viewData.edit.range.getStartPosition());\n\t\tconst altCount = observableFromPromise(this._viewData.alternativeAction?.count ?? new Promise<undefined>(resolve => resolve(undefined))).map(c => c.value);\n\t\tconst altModifierActive = observableFromEvent(this, ModifierKeyEmitter.getInstance().event, () => ModifierKeyEmitter.getInstance().keyStatus.shiftKey);\n\t\tthis._layout = derived(this, reader => {\n\t\t\tthis._renderTextEffect.read(reader);\n\t\t\tconst widgetStart = this._start.read(reader);\n\t\t\tconst widgetEnd = this._end.read(reader);\n\n\t\t\t// TODO@hediet better about widgetStart and widgetEnd in a single transaction!\n\t\t\tif (!widgetStart || !widgetEnd || widgetStart.x > widgetEnd.x || widgetStart.y > widgetEnd.y) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst lineHeight = modifiedLineHeight.read(reader);\n\t\t\tconst scrollLeft = this._editor.scrollLeft.read(reader);\n\t\t\tconst w = this._editor.getOption(EditorOption.fontInfo).read(reader).typicalHalfwidthCharacterWidth;\n\n\t\t\tconst modifiedLeftOffset = 3 * w;\n\t\t\tconst modifiedTopOffset = 4;\n\t\t\tconst modifiedOffset = new Point(modifiedLeftOffset, modifiedTopOffset);\n\n\t\t\tlet alternativeAction = undefined;\n\t\t\tif (this._viewData.alternativeAction) {\n\t\t\t\tconst label = this._viewData.alternativeAction.label;\n\t\t\t\tconst count = altCount.read(reader);\n\t\t\t\tconst active = altModifierActive.read(reader);\n\t\t\t\tconst occurrencesLabel = count !== undefined ? count === 1 ?\n\t\t\t\t\tlocalize('labelOccurence', \"{0} 1 occurrence\", label) :\n\t\t\t\t\tlocalize('labelOccurences', \"{0} {1} occurrences\", label, count)\n\t\t\t\t\t: label;\n\t\t\t\tconst keybindingTooltip = localize('shiftToSeeOccurences', \"{0} show occurrences\", '[shift]');\n\t\t\t\talternativeAction = {\n\t\t\t\t\tlabel: count !== undefined ? (active ? occurrencesLabel : label) : label,\n\t\t\t\t\ttooltip: occurrencesLabel ? `${occurrencesLabel}\\n${keybindingTooltip}` : undefined,\n\t\t\t\t\ticon: undefined, //this._viewData.alternativeAction.icon, Do not render icon fo the moment\n\t\t\t\t\tcount,\n\t\t\t\t\tkeybinding: this._keybindingService.lookupKeybinding(inlineSuggestCommitAlternativeActionId),\n\t\t\t\t\tactive: altModifierActive,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst originalLine = Rect.fromPoints(widgetStart, widgetEnd).withHeight(lineHeight).translateX(-scrollLeft);\n\t\t\tconst codeLine = Rect.fromPointSize(originalLine.getLeftBottom().add(modifiedOffset), new Point(this._viewData.edit.text.length * w, originalLine.height));\n\t\t\tconst modifiedLine = codeLine.withWidth(codeLine.width + (alternativeAction ? alternativeAction.label.length * w + 8 + 4 + 12 : 0));\n\t\t\tconst lowerBackground = modifiedLine.withLeft(originalLine.left);\n\n\t\t\t// debugView(debugLogRects({ lowerBackground }, this._editor.editor.getContainerDomNode()), reader);\n\n\t\t\treturn {\n\t\t\t\talternativeAction,\n\t\t\t\toriginalLine,\n\t\t\t\tcodeLine,\n\t\t\t\tmodifiedLine,\n\t\t\t\tlowerBackground,\n\t\t\t\tlineHeight,\n\t\t\t};\n\t\t});\n\t\tthis.minEditorScrollHeight = derived(this, reader => {\n\t\t\tconst layout = mapOutFalsy(this._layout).read(reader);\n\t\t\tif (!layout) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn layout.read(reader).modifiedLine.bottom + BORDER_WIDTH + this._editor.editor.getScrollTop();\n\t\t});\n\t\tthis._root = n.div({\n\t\t\tclass: 'word-replacement',\n\t\t}, [\n\t\t\tderived(this, reader => {\n\t\t\t\tconst layout = mapOutFalsy(this._layout).read(reader);\n\t\t\t\tif (!layout) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tconst originalBorderColor = getOriginalBorderColor(this._tabAction).map(c => asCssVariable(c)).read(reader);\n\t\t\t\tconst modifiedBorderColor = getModifiedBorderColor(this._tabAction).map(c => asCssVariable(c)).read(reader);\n\t\t\t\tthis._line.style.lineHeight = `${layout.read(reader).modifiedLine.height + 2 * BORDER_WIDTH}px`;\n\n\t\t\t\tconst secondaryElementHovered = constObservable(false);//this._secondaryElement.map((e, r) => e?.isHovered.read(r) ?? false);\n\t\t\t\tconst alternativeAction = layout.map(l => l.alternativeAction);\n\t\t\t\tconst alternativeActionActive = derived(reader => (alternativeAction.read(reader)?.active.read(reader) ?? false) || secondaryElementHovered.read(reader));\n\n\t\t\t\tconst isHighContrast = observableFromEvent(this._themeService.onDidColorThemeChange, () => {\n\t\t\t\t\tconst theme = this._themeService.getColorTheme();\n\t\t\t\t\treturn theme.type === 'hcDark' || theme.type === 'hcLight';\n\t\t\t\t}).read(reader);\n\t\t\t\tconst hcBorderColor = isHighContrast ? observeColor(contrastBorder, this._themeService).read(reader) : null;\n\n\t\t\t\tconst primaryActiveStyles = {\n\t\t\t\t\tborderColor: hcBorderColor ? hcBorderColor.toString() : modifiedBorderColor,\n\t\t\t\t\tbackgroundColor: asCssVariable(modifiedChangedTextOverlayColor),\n\t\t\t\t\tcolor: '',\n\t\t\t\t\topacity: '1',\n\t\t\t\t};\n\n\t\t\t\tconst secondaryActiveStyles = {\n\t\t\t\t\tborderColor: hcBorderColor ? hcBorderColor.toString() : asCssVariable(inlineEditIndicatorPrimaryBorder),\n\t\t\t\t\tbackgroundColor: asCssVariable(inlineEditIndicatorPrimaryBackground),\n\t\t\t\t\tcolor: asCssVariable(inlineEditIndicatorPrimaryForeground),\n\t\t\t\t\topacity: '1',\n\t\t\t\t};\n\n\t\t\t\tconst passiveStyles = {\n\t\t\t\t\tborderColor: hcBorderColor ? hcBorderColor.toString() : observeColor(editorHoverForeground, this._themeService).map(c => c.transparent(0.2).toString()).read(reader),\n\t\t\t\t\tbackgroundColor: asCssVariable(editorBackground),\n\t\t\t\t\tcolor: '',\n\t\t\t\t\topacity: '0.7',\n\t\t\t\t};\n\n\t\t\t\tconst primaryActionStyles = derived(this, r => alternativeActionActive.read(r) ? primaryActiveStyles : primaryActiveStyles);\n\t\t\t\tconst secondaryActionStyles = derived(this, r => alternativeActionActive.read(r) ? secondaryActiveStyles : passiveStyles);\n\t\t\t\t// TODO@benibenj clicking the arrow does not accept suggestion anymore\n\t\t\t\treturn [\n\t\t\t\t\tn.div({\n\t\t\t\t\t\tid: DOM_ID_OVERLAY,\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t...rectToProps((r) => getEditorValidOverlayRect(this._editor).read(r)),\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t}\n\t\t\t\t\t}, [\n\t\t\t\t\t\tn.div({\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t...rectToProps(reader => layout.read(reader).lowerBackground.withMargin(BORDER_WIDTH, 2 * BORDER_WIDTH, BORDER_WIDTH, 0)),\n\t\t\t\t\t\t\t\tbackground: asCssVariable(editorBackground),\n\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\tpointerEvents: 'auto',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonmousedown: (e) => this._mouseDown(e),\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tn.div({\n\t\t\t\t\t\t\tid: DOM_ID_WIDGET,\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t...rectToProps(reader => layout.read(reader).modifiedLine.withMargin(BORDER_WIDTH, 2 * BORDER_WIDTH)),\n\t\t\t\t\t\t\t\twidth: undefined,\n\t\t\t\t\t\t\t\tpointerEvents: 'auto',\n\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\n\t\t\t\t\t\t\t\tbackground: asCssVariable(editorBackground),\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tjustifyContent: 'left',\n\n\t\t\t\t\t\t\t\toutline: `2px solid ${asCssVariable(editorBackground)}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonmousedown: (e) => this._mouseDown(e),\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\tn.div({\n\t\t\t\t\t\t\t\tid: DOM_ID_REPLACEMENT,\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\tfontFamily: this._editor.getOption(EditorOption.fontFamily),\n\t\t\t\t\t\t\t\t\tfontSize: this._editor.getOption(EditorOption.fontSize),\n\t\t\t\t\t\t\t\t\tfontWeight: this._editor.getOption(EditorOption.fontWeight),\n\t\t\t\t\t\t\t\t\twidth: rectToProps(reader => layout.read(reader).codeLine.withMargin(BORDER_WIDTH, 2 * BORDER_WIDTH)).width,\n\t\t\t\t\t\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\t\t\t\t\t\t\t\t\tborder: primaryActionStyles.map(s => `${BORDER_WIDTH}px solid ${s.borderColor}`),\n\t\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\t\tpadding: `${BORDER_WIDTH}px`,\n\t\t\t\t\t\t\t\t\topacity: primaryActionStyles.map(s => s.opacity),\n\t\t\t\t\t\t\t\t\tbackground: primaryActionStyles.map(s => s.backgroundColor),\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\tjustifyContent: 'left',\n\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\tpointerEvents: 'auto',\n\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tobsRef: (elem) => {\n\t\t\t\t\t\t\t\t\tthis._primaryElement.set(elem, undefined);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, [this._line]),\n\t\t\t\t\t\t\tderived(this, reader => {\n\t\t\t\t\t\t\t\tconst altAction = alternativeAction.read(reader);\n\t\t\t\t\t\t\t\tif (!altAction) {\n\t\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst keybinding = document.createElement('div');\n\t\t\t\t\t\t\t\tconst keybindingLabel = reader.store.add(new KeybindingLabel(keybinding, OS, { ...unthemedKeybindingLabelOptions, disableTitle: true }));\n\t\t\t\t\t\t\t\tkeybindingLabel.set(altAction.keybinding);\n\n\t\t\t\t\t\t\t\treturn n.div({\n\t\t\t\t\t\t\t\t\tid: DOM_ID_RENAME,\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\t\t\t\t\t\t\t\t\t\tborderTop: `${BORDER_WIDTH}px solid`,\n\t\t\t\t\t\t\t\t\t\tborderRight: `${BORDER_WIDTH}px solid`,\n\t\t\t\t\t\t\t\t\t\tborderBottom: `${BORDER_WIDTH}px solid`,\n\t\t\t\t\t\t\t\t\t\tborderLeft: `${BORDER_WIDTH}px solid`,\n\t\t\t\t\t\t\t\t\t\tborderColor: secondaryActionStyles.map(s => s.borderColor),\n\t\t\t\t\t\t\t\t\t\topacity: secondaryActionStyles.map(s => s.opacity),\n\t\t\t\t\t\t\t\t\t\tcolor: secondaryActionStyles.map(s => s.color),\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\tpadding: '0 4px 0 1px',\n\t\t\t\t\t\t\t\t\t\tmarginLeft: '4px',\n\t\t\t\t\t\t\t\t\t\tbackground: secondaryActionStyles.map(s => s.backgroundColor),\n\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t\ttextWrap: 'nowrap',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tclass: 'inline-edit-alternative-action-label',\n\t\t\t\t\t\t\t\t\tobsRef: (elem) => {\n\t\t\t\t\t\t\t\t\t\tthis._secondaryElement.set(elem, undefined);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tref: (elem) => {\n\t\t\t\t\t\t\t\t\t\tif (altAction.tooltip) {\n\t\t\t\t\t\t\t\t\t\t\treader.store.add(this._hoverService.setupDelayedHoverAtMouse(elem, { content: altAction.tooltip, appearance: { compact: true } }));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\t\tkeybinding,\n\t\t\t\t\t\t\t\t\t$('div.inline-edit-alternative-action-label-separator'),\n\t\t\t\t\t\t\t\t\taltAction.icon ? renderIcon(altAction.icon) : undefined,\n\t\t\t\t\t\t\t\t\taltAction.label,\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tn.div({\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t...rectToProps(reader => layout.read(reader).originalLine.withMargin(BORDER_WIDTH)),\n\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\t\t\t\t\t\t\t\tborder: `${BORDER_WIDTH}px solid ${originalBorderColor}`,\n\t\t\t\t\t\t\t\tbackground: asCssVariable(originalChangedTextOverlayColor),\n\t\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, []),\n\n\t\t\t\t\t\tn.svg({\n\t\t\t\t\t\t\twidth: 11,\n\t\t\t\t\t\t\theight: 14,\n\t\t\t\t\t\t\tviewBox: '0 0 11 14',\n\t\t\t\t\t\t\tfill: 'none',\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\tleft: layout.map(l => l.modifiedLine.left - 16),\n\t\t\t\t\t\t\t\ttop: layout.map(l => l.modifiedLine.top + Math.round((l.lineHeight - 14 - 5) / 2)),\n\t\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonmousedown: (e) => this._mouseDown(e),\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\tn.svgElem('path', {\n\t\t\t\t\t\t\t\td: 'M1 0C1 2.98966 1 5.92087 1 8.49952C1 9.60409 1.89543 10.5 3 10.5H10.5',\n\t\t\t\t\t\t\t\tstroke: asCssVariable(editorHoverForeground),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tn.svgElem('path', {\n\t\t\t\t\t\t\t\td: 'M6 7.5L9.99999 10.49998L6 13.5',\n\t\t\t\t\t\t\t\tstroke: asCssVariable(editorHoverForeground),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t]),\n\n\t\t\t\t\t])\n\t\t\t\t];\n\t\t\t})\n\t\t]).keepUpdated(this._store);\n\n\t\tthis._register(this._editor.createOverlayWidget({\n\t\t\tdomNode: this._root.element,\n\t\t\tminContentWidthInPx: constObservable(0),\n\t\t\tposition: constObservable({ preference: { top: 0, left: 0 } }),\n\t\t\tallowEditorOverflow: false,\n\t\t}));\n\t}\n\n\tprivate readonly _renderTextEffect;\n\n\tprivate readonly _layout;\n\n\tprivate readonly _root;\n\n\tprivate _mouseDown(e: MouseEvent): void {\n\t\tconst target_id = traverseParentsUntilId(e.target as HTMLElement, new Set([DOM_ID_WIDGET, DOM_ID_REPLACEMENT, DOM_ID_RENAME, DOM_ID_OVERLAY]));\n\t\tif (!target_id) {\n\t\t\treturn;\n\t\t}\n\t\te.preventDefault(); // This prevents that the editor loses focus\n\t\tthis._onDidClick.fire(InlineEditClickEvent.create(e, target_id === DOM_ID_RENAME));\n\t}\n}\n\nfunction traverseParentsUntilId(element: HTMLElement, ids: Set<string>): string | null {\n\tlet current: HTMLElement | null = element;\n\twhile (current) {\n\t\tif (ids.has(current.id)) {\n\t\t\treturn current.id;\n\t\t}\n\t\tcurrent = current.parentElement;\n\t}\n\treturn null;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.ts"],"names":[],"mappings":"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","file":"inlineEditsWordReplacementView.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 { $, ModifierKeyEmitter, n, ObserverNodeWithElement } from '../../../../../../../base/browser/dom.js';\nimport { renderIcon } from '../../../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { KeybindingLabel, unthemedKeybindingLabelOptions } from '../../../../../../../base/browser/ui/keybindingLabel/keybindingLabel.js';\nimport { IEquatable } from '../../../../../../../base/common/equals.js';\nimport { Emitter } from '../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../base/common/lifecycle.js';\nimport { constObservable, derived, IObservable, observableFromEvent, observableFromPromise, observableValue } from '../../../../../../../base/common/observable.js';\nimport { OS } from '../../../../../../../base/common/platform.js';\nimport { localize } from '../../../../../../../nls.js';\nimport { IHoverService } from '../../../../../../../platform/hover/browser/hover.js';\nimport { IKeybindingService } from '../../../../../../../platform/keybinding/common/keybinding.js';\nimport { editorHoverForeground } from '../../../../../../../platform/theme/common/colorRegistry.js';\nimport { contrastBorder } from '../../../../../../../platform/theme/common/colors/baseColors.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { IThemeService } from '../../../../../../../platform/theme/common/themeService.js';\nimport { ObservableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { LineSource, renderLines, RenderOptions } from '../../../../../../browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js';\nimport { EditorOption } from '../../../../../../common/config/editorOptions.js';\nimport { Point } from '../../../../../../common/core/2d/point.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { StringReplacement } from '../../../../../../common/core/edits/stringEdit.js';\nimport { TextReplacement } from '../../../../../../common/core/edits/textEdit.js';\nimport { OffsetRange } from '../../../../../../common/core/ranges/offsetRange.js';\nimport { ILanguageService } from '../../../../../../common/languages/language.js';\nimport { LineTokens, TokenArray } from '../../../../../../common/tokens/lineTokens.js';\nimport { inlineSuggestCommitAlternativeActionId } from '../../../controller/commandIds.js';\nimport { InlineSuggestAlternativeAction } from '../../../model/InlineSuggestAlternativeAction.js';\nimport { InlineCompletionEditorType } from '../../../model/provideInlineCompletions.js';\nimport { IInlineEditsView, InlineEditClickEvent, InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { getEditorBackgroundColor, getModifiedBorderColor, getOriginalBorderColor, INLINE_EDITS_BORDER_RADIUS, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorPrimaryBorder, inlineEditIndicatorPrimaryForeground, modifiedChangedTextOverlayColor, observeColor, originalChangedTextOverlayColor } from '../theme.js';\nimport { getEditorValidOverlayRect, mapOutFalsy, rectToProps } from '../utils/utils.js';\n\nexport class WordReplacementsViewData implements IEquatable<WordReplacementsViewData> {\n\tconstructor(\n\t\tpublic readonly edit: TextReplacement,\n\t\tpublic readonly editorType: InlineCompletionEditorType,\n\t\tpublic readonly alternativeAction: InlineSuggestAlternativeAction | undefined,\n\t) { }\n\n\tequals(other: WordReplacementsViewData): boolean {\n\t\treturn this.edit.equals(other.edit) && this.alternativeAction === other.alternativeAction;\n\t}\n}\n\nconst BORDER_WIDTH = 1;\nconst DOM_ID_OVERLAY = 'word-replacement-view-overlay';\nconst DOM_ID_WIDGET = 'word-replacement-view-widget';\nconst DOM_ID_REPLACEMENT = 'word-replacement-view-replacement';\nconst DOM_ID_RENAME = 'word-replacement-view-rename';\n\nexport class InlineEditsWordReplacementView extends Disposable implements IInlineEditsView {\n\n\tpublic static MAX_LENGTH = 100;\n\n\tprivate readonly _onDidClick = this._register(new Emitter<InlineEditClickEvent>());\n\treadonly onDidClick = this._onDidClick.event;\n\n\tprivate readonly _start;\n\tprivate readonly _end;\n\n\tprivate readonly _line;\n\n\tprivate readonly _primaryElement;\n\tprivate readonly _secondaryElement;\n\n\treadonly isHovered;\n\n\treadonly minEditorScrollHeight;\n\n\tconstructor(\n\t\tprivate readonly _editor: ObservableCodeEditor,\n\t\tprivate readonly _viewData: WordReplacementsViewData,\n\t\tprotected readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IHoverService private readonly _hoverService: IHoverService,\n\t) {\n\t\tsuper();\n\t\tthis._start = this._editor.observePosition(constObservable(this._viewData.edit.range.getStartPosition()), this._store);\n\t\tthis._end = this._editor.observePosition(constObservable(this._viewData.edit.range.getEndPosition()), this._store);\n\t\tthis._line = document.createElement('div');\n\t\tthis._primaryElement = observableValue<ObserverNodeWithElement | null>(this, null);\n\t\tthis._secondaryElement = observableValue<ObserverNodeWithElement | null>(this, null);\n\t\tthis.isHovered = this._primaryElement.map((e, reader) => e?.didMouseMoveDuringHover.read(reader) ?? false);\n\t\tthis._renderTextEffect = derived(this, _reader => {\n\t\t\tconst tm = this._editor.model.get()!;\n\t\t\tconst origLine = tm.getLineContent(this._viewData.edit.range.startLineNumber);\n\n\t\t\tconst edit = StringReplacement.replace(new OffsetRange(this._viewData.edit.range.startColumn - 1, this._viewData.edit.range.endColumn - 1), this._viewData.edit.text);\n\t\t\tconst lineToTokenize = edit.replace(origLine);\n\t\t\tconst t = tm.tokenization.tokenizeLinesAt(this._viewData.edit.range.startLineNumber, [lineToTokenize])?.[0];\n\t\t\tlet tokens: LineTokens;\n\t\t\tif (t) {\n\t\t\t\ttokens = TokenArray.fromLineTokens(t).slice(edit.getRangeAfterReplace()).toLineTokens(this._viewData.edit.text, this._languageService.languageIdCodec);\n\t\t\t} else {\n\t\t\t\ttokens = LineTokens.createEmpty(this._viewData.edit.text, this._languageService.languageIdCodec);\n\t\t\t}\n\t\t\tconst res = renderLines(new LineSource([tokens]), RenderOptions.fromEditor(this._editor.editor).withSetWidth(false).withScrollBeyondLastColumn(0), [], this._line, true);\n\t\t\tthis._line.style.width = `${res.minWidthInPx}px`;\n\t\t});\n\t\tconst modifiedLineHeight = this._editor.observeLineHeightForPosition(this._viewData.edit.range.getStartPosition());\n\t\tconst altCount = observableFromPromise(this._viewData.alternativeAction?.count ?? new Promise<undefined>(resolve => resolve(undefined))).map(c => c.value);\n\t\tconst altModifierActive = observableFromEvent(this, ModifierKeyEmitter.getInstance().event, () => ModifierKeyEmitter.getInstance().keyStatus.shiftKey);\n\t\tthis._layout = derived(this, reader => {\n\t\t\tthis._renderTextEffect.read(reader);\n\t\t\tconst widgetStart = this._start.read(reader);\n\t\t\tconst widgetEnd = this._end.read(reader);\n\n\t\t\t// TODO@hediet better about widgetStart and widgetEnd in a single transaction!\n\t\t\tif (!widgetStart || !widgetEnd || widgetStart.x > widgetEnd.x || widgetStart.y > widgetEnd.y) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst lineHeight = modifiedLineHeight.read(reader);\n\t\t\tconst scrollLeft = this._editor.scrollLeft.read(reader);\n\t\t\tconst w = this._editor.getOption(EditorOption.fontInfo).read(reader).typicalHalfwidthCharacterWidth;\n\n\t\t\tconst modifiedLeftOffset = 3 * w;\n\t\t\tconst modifiedTopOffset = 4;\n\t\t\tconst modifiedOffset = new Point(modifiedLeftOffset, modifiedTopOffset);\n\n\t\t\tlet alternativeAction = undefined;\n\t\t\tif (this._viewData.alternativeAction) {\n\t\t\t\tconst label = this._viewData.alternativeAction.label;\n\t\t\t\tconst count = altCount.read(reader);\n\t\t\t\tconst active = altModifierActive.read(reader);\n\t\t\t\tconst occurrencesLabel = count !== undefined ? count === 1 ?\n\t\t\t\t\tlocalize('labelOccurence', \"{0} 1 occurrence\", label) :\n\t\t\t\t\tlocalize('labelOccurences', \"{0} {1} occurrences\", label, count)\n\t\t\t\t\t: label;\n\t\t\t\tconst keybindingTooltip = localize('shiftToSeeOccurences', \"{0} show occurrences\", '[shift]');\n\t\t\t\talternativeAction = {\n\t\t\t\t\tlabel: count !== undefined ? (active ? occurrencesLabel : label) : label,\n\t\t\t\t\ttooltip: occurrencesLabel ? `${occurrencesLabel}\\n${keybindingTooltip}` : undefined,\n\t\t\t\t\ticon: undefined, //this._viewData.alternativeAction.icon, Do not render icon fo the moment\n\t\t\t\t\tcount,\n\t\t\t\t\tkeybinding: this._keybindingService.lookupKeybinding(inlineSuggestCommitAlternativeActionId),\n\t\t\t\t\tactive: altModifierActive,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst originalLine = Rect.fromPoints(widgetStart, widgetEnd).withHeight(lineHeight).translateX(-scrollLeft);\n\t\t\tconst codeLine = Rect.fromPointSize(originalLine.getLeftBottom().add(modifiedOffset), new Point(this._viewData.edit.text.length * w, originalLine.height));\n\t\t\tconst modifiedLine = codeLine.withWidth(codeLine.width + (alternativeAction ? alternativeAction.label.length * w + 8 + 4 + 12 : 0));\n\t\t\tconst lowerBackground = modifiedLine.withLeft(originalLine.left);\n\n\t\t\t// debugView(debugLogRects({ lowerBackground }, this._editor.editor.getContainerDomNode()), reader);\n\n\t\t\treturn {\n\t\t\t\talternativeAction,\n\t\t\t\toriginalLine,\n\t\t\t\tcodeLine,\n\t\t\t\tmodifiedLine,\n\t\t\t\tlowerBackground,\n\t\t\t\tlineHeight,\n\t\t\t};\n\t\t});\n\t\tthis.minEditorScrollHeight = derived(this, reader => {\n\t\t\tconst layout = mapOutFalsy(this._layout).read(reader);\n\t\t\tif (!layout) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn layout.read(reader).modifiedLine.bottom + BORDER_WIDTH + this._editor.editor.getScrollTop();\n\t\t});\n\t\tthis._root = n.div({\n\t\t\tclass: 'word-replacement',\n\t\t}, [\n\t\t\tderived(this, reader => {\n\t\t\t\tconst layout = mapOutFalsy(this._layout).read(reader);\n\t\t\t\tif (!layout) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tconst originalBorderColor = getOriginalBorderColor(this._tabAction).map(c => asCssVariable(c)).read(reader);\n\t\t\t\tconst modifiedBorderColor = getModifiedBorderColor(this._tabAction).map(c => asCssVariable(c)).read(reader);\n\t\t\t\tthis._line.style.lineHeight = `${layout.read(reader).modifiedLine.height + 2 * BORDER_WIDTH}px`;\n\n\t\t\t\tconst secondaryElementHovered = constObservable(false);//this._secondaryElement.map((e, r) => e?.isHovered.read(r) ?? false);\n\t\t\t\tconst alternativeAction = layout.map(l => l.alternativeAction);\n\t\t\t\tconst alternativeActionActive = derived(reader => (alternativeAction.read(reader)?.active.read(reader) ?? false) || secondaryElementHovered.read(reader));\n\n\t\t\t\tconst isHighContrast = observableFromEvent(this._themeService.onDidColorThemeChange, () => {\n\t\t\t\t\tconst theme = this._themeService.getColorTheme();\n\t\t\t\t\treturn theme.type === 'hcDark' || theme.type === 'hcLight';\n\t\t\t\t}).read(reader);\n\t\t\t\tconst hcBorderColor = isHighContrast ? observeColor(contrastBorder, this._themeService).read(reader) : null;\n\n\t\t\t\tconst primaryActiveStyles = {\n\t\t\t\t\tborderColor: hcBorderColor ? hcBorderColor.toString() : modifiedBorderColor,\n\t\t\t\t\tbackgroundColor: asCssVariable(modifiedChangedTextOverlayColor),\n\t\t\t\t\tcolor: '',\n\t\t\t\t\topacity: '1',\n\t\t\t\t};\n\n\t\t\t\tconst secondaryActiveStyles = {\n\t\t\t\t\tborderColor: hcBorderColor ? hcBorderColor.toString() : asCssVariable(inlineEditIndicatorPrimaryBorder),\n\t\t\t\t\tbackgroundColor: asCssVariable(inlineEditIndicatorPrimaryBackground),\n\t\t\t\t\tcolor: asCssVariable(inlineEditIndicatorPrimaryForeground),\n\t\t\t\t\topacity: '1',\n\t\t\t\t};\n\n\t\t\t\tconst passiveStyles = {\n\t\t\t\t\tborderColor: hcBorderColor ? hcBorderColor.toString() : observeColor(editorHoverForeground, this._themeService).map(c => c.transparent(0.2).toString()).read(reader),\n\t\t\t\t\tbackgroundColor: getEditorBackgroundColor(this._viewData.editorType),\n\t\t\t\t\tcolor: '',\n\t\t\t\t\topacity: '0.7',\n\t\t\t\t};\n\n\t\t\t\tconst editorBackground = getEditorBackgroundColor(this._viewData.editorType);\n\t\t\t\tconst primaryActionStyles = derived(this, r => alternativeActionActive.read(r) ? primaryActiveStyles : primaryActiveStyles);\n\t\t\t\tconst secondaryActionStyles = derived(this, r => alternativeActionActive.read(r) ? secondaryActiveStyles : passiveStyles);\n\t\t\t\t// TODO@benibenj clicking the arrow does not accept suggestion anymore\n\t\t\t\treturn [\n\t\t\t\t\tn.div({\n\t\t\t\t\t\tid: DOM_ID_OVERLAY,\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t...rectToProps((r) => getEditorValidOverlayRect(this._editor).read(r)),\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t}\n\t\t\t\t\t}, [\n\t\t\t\t\t\tn.div({\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t...rectToProps(reader => layout.read(reader).lowerBackground.withMargin(BORDER_WIDTH, 2 * BORDER_WIDTH, BORDER_WIDTH, 0)),\n\t\t\t\t\t\t\t\tbackground: editorBackground,\n\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\tpointerEvents: 'auto',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonmousedown: (e) => this._mouseDown(e),\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tn.div({\n\t\t\t\t\t\t\tid: DOM_ID_WIDGET,\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t...rectToProps(reader => layout.read(reader).modifiedLine.withMargin(BORDER_WIDTH, 2 * BORDER_WIDTH)),\n\t\t\t\t\t\t\t\twidth: undefined,\n\t\t\t\t\t\t\t\tpointerEvents: 'auto',\n\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\n\t\t\t\t\t\t\t\tbackground: editorBackground,\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tjustifyContent: 'left',\n\n\t\t\t\t\t\t\t\toutline: `2px solid ${editorBackground}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonmousedown: (e) => this._mouseDown(e),\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\tn.div({\n\t\t\t\t\t\t\t\tid: DOM_ID_REPLACEMENT,\n\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\tfontFamily: this._editor.getOption(EditorOption.fontFamily),\n\t\t\t\t\t\t\t\t\tfontSize: this._editor.getOption(EditorOption.fontSize),\n\t\t\t\t\t\t\t\t\tfontWeight: this._editor.getOption(EditorOption.fontWeight),\n\t\t\t\t\t\t\t\t\twidth: rectToProps(reader => layout.read(reader).codeLine.withMargin(BORDER_WIDTH, 2 * BORDER_WIDTH)).width,\n\t\t\t\t\t\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\t\t\t\t\t\t\t\t\tborder: primaryActionStyles.map(s => `${BORDER_WIDTH}px solid ${s.borderColor}`),\n\t\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\t\tpadding: `${BORDER_WIDTH}px`,\n\t\t\t\t\t\t\t\t\topacity: primaryActionStyles.map(s => s.opacity),\n\t\t\t\t\t\t\t\t\tbackground: primaryActionStyles.map(s => s.backgroundColor),\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\tjustifyContent: 'left',\n\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\tpointerEvents: 'auto',\n\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tobsRef: (elem) => {\n\t\t\t\t\t\t\t\t\tthis._primaryElement.set(elem, undefined);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, [this._line]),\n\t\t\t\t\t\t\tderived(this, reader => {\n\t\t\t\t\t\t\t\tconst altAction = alternativeAction.read(reader);\n\t\t\t\t\t\t\t\tif (!altAction) {\n\t\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst keybinding = document.createElement('div');\n\t\t\t\t\t\t\t\tconst keybindingLabel = reader.store.add(new KeybindingLabel(keybinding, OS, { ...unthemedKeybindingLabelOptions, disableTitle: true }));\n\t\t\t\t\t\t\t\tkeybindingLabel.set(altAction.keybinding);\n\n\t\t\t\t\t\t\t\treturn n.div({\n\t\t\t\t\t\t\t\t\tid: DOM_ID_RENAME,\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\t\t\t\t\t\t\t\t\t\tborderTop: `${BORDER_WIDTH}px solid`,\n\t\t\t\t\t\t\t\t\t\tborderRight: `${BORDER_WIDTH}px solid`,\n\t\t\t\t\t\t\t\t\t\tborderBottom: `${BORDER_WIDTH}px solid`,\n\t\t\t\t\t\t\t\t\t\tborderLeft: `${BORDER_WIDTH}px solid`,\n\t\t\t\t\t\t\t\t\t\tborderColor: secondaryActionStyles.map(s => s.borderColor),\n\t\t\t\t\t\t\t\t\t\topacity: secondaryActionStyles.map(s => s.opacity),\n\t\t\t\t\t\t\t\t\t\tcolor: secondaryActionStyles.map(s => s.color),\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\tpadding: '0 4px 0 1px',\n\t\t\t\t\t\t\t\t\t\tmarginLeft: '4px',\n\t\t\t\t\t\t\t\t\t\tbackground: secondaryActionStyles.map(s => s.backgroundColor),\n\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t\ttextWrap: 'nowrap',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tclass: 'inline-edit-alternative-action-label',\n\t\t\t\t\t\t\t\t\tobsRef: (elem) => {\n\t\t\t\t\t\t\t\t\t\tthis._secondaryElement.set(elem, undefined);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tref: (elem) => {\n\t\t\t\t\t\t\t\t\t\tif (altAction.tooltip) {\n\t\t\t\t\t\t\t\t\t\t\treader.store.add(this._hoverService.setupDelayedHoverAtMouse(elem, { content: altAction.tooltip, appearance: { compact: true } }));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\t\tkeybinding,\n\t\t\t\t\t\t\t\t\t$('div.inline-edit-alternative-action-label-separator'),\n\t\t\t\t\t\t\t\t\taltAction.icon ? renderIcon(altAction.icon) : undefined,\n\t\t\t\t\t\t\t\t\taltAction.label,\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tn.div({\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t...rectToProps(reader => layout.read(reader).originalLine.withMargin(BORDER_WIDTH)),\n\t\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t\t\tborderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,\n\t\t\t\t\t\t\t\tborder: `${BORDER_WIDTH}px solid ${originalBorderColor}`,\n\t\t\t\t\t\t\t\tbackground: asCssVariable(originalChangedTextOverlayColor),\n\t\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, []),\n\n\t\t\t\t\t\tn.svg({\n\t\t\t\t\t\t\twidth: 11,\n\t\t\t\t\t\t\theight: 14,\n\t\t\t\t\t\t\tviewBox: '0 0 11 14',\n\t\t\t\t\t\t\tfill: 'none',\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\tleft: layout.map(l => l.modifiedLine.left - 16),\n\t\t\t\t\t\t\t\ttop: layout.map(l => l.modifiedLine.top + Math.round((l.lineHeight - 14 - 5) / 2)),\n\t\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonmousedown: (e) => this._mouseDown(e),\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\tn.svgElem('path', {\n\t\t\t\t\t\t\t\td: 'M1 0C1 2.98966 1 5.92087 1 8.49952C1 9.60409 1.89543 10.5 3 10.5H10.5',\n\t\t\t\t\t\t\t\tstroke: asCssVariable(editorHoverForeground),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tn.svgElem('path', {\n\t\t\t\t\t\t\t\td: 'M6 7.5L9.99999 10.49998L6 13.5',\n\t\t\t\t\t\t\t\tstroke: asCssVariable(editorHoverForeground),\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t]),\n\n\t\t\t\t\t])\n\t\t\t\t];\n\t\t\t})\n\t\t]).keepUpdated(this._store);\n\n\t\tthis._register(this._editor.createOverlayWidget({\n\t\t\tdomNode: this._root.element,\n\t\t\tminContentWidthInPx: constObservable(0),\n\t\t\tposition: constObservable({ preference: { top: 0, left: 0 } }),\n\t\t\tallowEditorOverflow: false,\n\t\t}));\n\t}\n\n\tprivate readonly _renderTextEffect;\n\n\tprivate readonly _layout;\n\n\tprivate readonly _root;\n\n\tprivate _mouseDown(e: MouseEvent): void {\n\t\tconst target_id = traverseParentsUntilId(e.target as HTMLElement, new Set([DOM_ID_WIDGET, DOM_ID_REPLACEMENT, DOM_ID_RENAME, DOM_ID_OVERLAY]));\n\t\tif (!target_id) {\n\t\t\treturn;\n\t\t}\n\t\te.preventDefault(); // This prevents that the editor loses focus\n\t\tthis._onDidClick.fire(InlineEditClickEvent.create(e, target_id === DOM_ID_RENAME));\n\t}\n}\n\nfunction traverseParentsUntilId(element: HTMLElement, ids: Set<string>): string | null {\n\tlet current: HTMLElement | null = element;\n\twhile (current) {\n\t\tif (ids.has(current.id)) {\n\t\t\treturn current.id;\n\t\t}\n\t\tcurrent = current.parentElement;\n\t}\n\treturn null;\n}\n"]}
|
|
@@ -32,12 +32,13 @@ import { distributeFlexBoxLayout } from '../../utils/flexBoxLayout.js';
|
|
|
32
32
|
import { Point } from '../../../../../../../common/core/2d/point.js';
|
|
33
33
|
import { IThemeService } from '../../../../../../../../platform/theme/common/themeService.js';
|
|
34
34
|
import { IKeybindingService } from '../../../../../../../../platform/keybinding/common/keybinding.js';
|
|
35
|
-
import { getEditorBlendedColor, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorSecondaryBackground, inlineEditIndicatorSuccessfulBackground, observeColor } from '../../theme.js';
|
|
36
|
-
import { asCssVariable, descriptionForeground,
|
|
35
|
+
import { getEditorBackgroundColor, getEditorBlendedColor, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorSecondaryBackground, inlineEditIndicatorSuccessfulBackground, observeColor } from '../../theme.js';
|
|
36
|
+
import { asCssVariable, descriptionForeground, editorWidgetBackground } from '../../../../../../../../platform/theme/common/colorRegistry.js';
|
|
37
37
|
import { editorWidgetBorder } from '../../../../../../../../platform/theme/common/colors/editorColors.js';
|
|
38
38
|
import { LongDistancePreviewEditor } from './longDistancePreviewEditor.js';
|
|
39
39
|
import { jumpToNextInlineEditId } from '../../../../controller/commandIds.js';
|
|
40
40
|
import { splitIntoContinuousLineRanges, WidgetPlacementContext } from './longDistnaceWidgetPlacement.js';
|
|
41
|
+
import { InlineCompletionEditorType } from '../../../../model/provideInlineCompletions.js';
|
|
41
42
|
const BORDER_RADIUS = 6;
|
|
42
43
|
const MAX_WIDGET_WIDTH = { EMPTY_SPACE: 425, OVERLAY: 375 };
|
|
43
44
|
const MIN_WIDGET_WIDTH = 250;
|
|
@@ -229,7 +230,7 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
|
|
|
229
230
|
style: {
|
|
230
231
|
overflow: 'hidden',
|
|
231
232
|
padding: this._previewEditorLayoutInfo.map(i => i?.previewEditorMargin),
|
|
232
|
-
background:
|
|
233
|
+
background: this._styles.map(s => s.background),
|
|
233
234
|
pointerEvents: 'none',
|
|
234
235
|
},
|
|
235
236
|
}, [
|
|
@@ -330,7 +331,7 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
|
|
|
330
331
|
}
|
|
331
332
|
return {
|
|
332
333
|
border: borderColor.toString(),
|
|
333
|
-
background:
|
|
334
|
+
background: getEditorBackgroundColor(this._viewState.map(s => s?.editorType ?? InlineCompletionEditorType.TextEditor).read(reader)),
|
|
334
335
|
};
|
|
335
336
|
});
|
|
336
337
|
this._editorObs = observableCodeEditor(this._editor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.ts","vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;gGAGgG;AAChG,OAAO,EAAa,CAAC,EAAyC,MAAM,6CAA6C,CAAC;AAClH,OAAO,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,kDAAkD,CAAC;AAC9E,OAAO,EAAe,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACjL,OAAO,EAAE,qBAAqB,EAAE,MAAM,wEAAwE,CAAC;AAE/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,IAAI,EAAE,MAAM,6CAA6C,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,8CAA8C,CAAC;AAExE,OAAO,EAAoB,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE1F,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,sDAAsD,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,wFAAwF,CAAC;AACrI,OAAO,EAAE,OAAO,EAAE,MAAM,iDAAiD,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,iEAAiE,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,+DAA+D,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,kEAAkE,CAAC;AACtG,OAAO,EAAE,qBAAqB,EAAE,oCAAoC,EAAE,sCAAsC,EAAE,uCAAuC,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5L,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AAChK,OAAO,EAAE,kBAAkB,EAAE,MAAM,sEAAsE,CAAC;AAC1G,OAAO,EAA6B,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAEtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAwC,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE/I,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,gBAAgB,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAC5D,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,+BAA+B,GAA0B;IAC9D,mBAAmB,EAAE,CAAC;IACtB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,EAAE;IAClB,cAAc,EAAE,gBAAgB;CAChC,CAAC;AAEK,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,UAAU;IAQ1D,YACkB,OAAoB,EACpB,UAA2D,EAC3D,iBAA6B,EAC7B,UAA4C,EACtC,qBAA6D,EACrE,aAA6C,EACxC,kBAAuD;QAE3E,KAAK,EAAE,CAAC;QARS,YAAO,GAAP,OAAO,CAAa;QACpB,eAAU,GAAV,UAAU,CAAiD;QAC3D,sBAAiB,GAAjB,iBAAiB,CAAY;QAC7B,eAAU,GAAV,UAAU,CAAkC;QACrB,0BAAqB,GAArB,qBAAqB,CAAuB;QACpD,kBAAa,GAAb,aAAa,CAAe;QACvB,uBAAkB,GAAlB,kBAAkB,CAAoB;QAZnE,eAAU,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,qBAAgB,GAAwD,SAAS,CAAC;QA6FzE,sBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5F,CAAC,CAAC,CAAC;QAEc,iCAA4B,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YACxE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,CAAC;YACX,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;YACX,CAAC;YACD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAEzH,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;YACX,CAAC;YAED,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAExF,OAAO,6BAA6B,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEc,sBAAiB,GAAG,oBAAoB,CACxD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EACrE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC3E,CAAC;QAEe,6BAAwB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YACpE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxD,OAAO,SAAS,CAAC;YAClB,CAAC;YAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3E,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtC,OAAO,SAAS,CAAC;YAClB,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE7D,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5E,MAAM,0BAA0B,GAAG,IAAI,CAAC,cAAc,CAAC,2CAA2C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhH,IAAI,CAAC,oBAAoB,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC1D,OAAO,SAAS,CAAC;YAClB,CAAC;YAED,sHAAsH;YAEtH,MAAM,sBAAsB,GAAG,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,sBAAsB,CAAC;YAC/F,MAAM,sBAAsB,GAAG,YAAY,CAAC,WAAW,GAAG,sBAAsB,CAAC;YAEjF,0CAA0C;YAE1C,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,CAAC,EAAE,CAAC;gBACR,OAAO,SAAS,CAAC;YAClB,CAAC;YAED,MAAM,eAAe,GAAG,+BAA+B,CAAC;YACxD,MAAM,iCAAiC,GAAG,CAAC,CAAC;YAC5C,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,iCAAiC,CAAC;YAErF,wDAAwD;YACxD,IAAI,qBAAgD,CAAC;YACrD,IAAI,oBAAwD,CAAC;YAE7D,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEpG,KAAK,MAAM,kBAAkB,IAAI,mBAAmB,EAAE,CAAC;gBACtD,MAAM,gBAAgB,GAAG,IAAI,sBAAsB,CAClD,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,CAChB,CAAC;gBACF,oBAAoB,GAAG,gBAAgB,CAAC;gBAExC,MAAM,SAAS,GAAG,KAAK,CAAC;gBACxB,IAAI,SAAS,EAAE,CAAC;oBACf,MAAM,MAAM,GAAG,cAAc,CAC5B,IAAI,KAAK,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,GAAG,GAAG,eAAe,CAAC,EAC3E,gBAAgB,CAAC,mBAA+B,EAChD,OAAO,CACP,CAAC;oBACF,SAAS,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAG,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC7E,CAAC;gBAED,qBAAqB,GAAG,gBAAgB,CAAC,oBAAoB,CAC5D,SAAS,CAAC,IAAI,CAAC,UAAU,EACzB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,CACf,CAAC;gBAEF,IAAI,qBAAqB,EAAE,CAAC;oBAC3B,MAAM;gBACP,CAAC;YACF,CAAC;YAED,2DAA2D;YAC3D,IAAI,QAAQ,GAA8B,aAAa,CAAC;YACxD,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC5B,QAAQ,GAAG,SAAS,CAAC;gBACrB,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAE5G,8EAA8E;gBAC9E,MAAM,wBAAwB,GAAG,oBAAoB,IAAI,IAAI,sBAAsB,CAClF,mBAAmB,CAAC,CAAC,CAAC,EACtB,sBAAsB,EACtB,gBAAgB,CAChB,CAAC;gBAEF,qBAAqB,GAAG;oBACvB,qBAAqB,EAAE,WAAW,CAAC,gBAAgB,CAAC,sBAAsB,GAAG,iBAAiB,EAAE,iBAAiB,CAAC;oBAClH,mBAAmB,EAAE,wBAAwB,CAAC,wBAAwB,CACrE,SAAS,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,EAC7B,mBAAmB,EACnB,eAAe,CACf,CAAC,KAAK,CAAC,EAAE,CAAC;iBACX,CAAC;YACH,CAAC;YAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC5B,OAAO,SAAS,CAAC;YAClB,CAAC;YAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CACzC,qBAAqB,CAAC,qBAAqB,EAC3C,qBAAqB,CAAC,mBAAmB,CACzC,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC;YAE7D,MAAM,kBAAkB,GAAG,KAAK,CAAC;YACjC,IAAI,kBAAkB,EAAE,CAAC;gBACxB,SAAS,CAAC,aAAa,CAAC,EAAE,kBAAkB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YACtF,CAAC;YAED,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC;YAC7F,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,0BAA0B,CAAC,cAAc,GAAG,mBAAmB,GAAG,aAAa,CAAC,CAAC;YAEnM,MAAM,MAAM,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,KAAK,EAAE;gBAChE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;gBAC7C,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;gBAC9F,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;aACvB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACb,CAAC;YAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACvH,MAAM,eAAe,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM,UAAU,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,MAAM,cAAc,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzE,MAAM,UAAU,GAAG,KAAK,CAAC;YACzB,IAAI,UAAU,EAAE,CAAC;gBAChB,SAAS,CAAC,aAAa,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC/G,CAAC;YAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,aAAa,GAAG,YAAY,GAAG,mBAAmB,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAE1I,MAAM,cAAc,GAAG,KAAK,CAAC;YAC7B,IAAI,cAAc,EAAE,CAAC;gBACpB,SAAS,CAAC,aAAa,CAAC,EAAE,iBAAiB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YACrF,CAAC;YAED,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,KAAK,GAAG,0BAA0B,CAAC,eAAe,CAAC;YACvG,MAAM,uBAAuB,GAAG,yBAAyB,GAAG,GAAG,CAAC;YAChE,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,sBAAsB,CAAC,SAAS,CAAC,WAAW,CAAC,gBAAgB,CACtH,0BAA0B,CAAC,sBAAsB,CAAC,KAAK,EACvD,uBAAuB,CACvB,CAAC,IAAI,0BAA0B,CAAC,sBAAsB,CAAC;YACxD,MAAM,8BAA8B,GAAG,cAAc,CAAC,0BAA0B,CAAC,cAAc,EAAE,yBAAyB,EAAE,sBAAsB,CAAC,CAAC;YAEpJ,OAAO;gBACN,cAAc,EAAE,iBAAiB,CAAC,OAAO,EAAE;gBAC3C,cAAc,EAAE,gBAAgB;gBAChC,WAAW,EAAE,YAAY,CAAC,WAAW;gBAErC,UAAU;gBAEV,mBAAmB;gBACnB,aAAa;gBACb,YAAY;gBAEZ,cAAc;gBAEd,8BAA8B,EAAE,8BAA8B,CAAC,iBAAiB;aAChF,CAAC;QACH,CAAC,CAAC,CAAC;QAEc,UAAK,GAAG,CAAC,CAAC,GAAG,CAAC;YAC9B,KAAK,EAAE,mBAAmB;YAC1B,KAAK,EAAE;gBACN,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,SAAS;gBACnB,GAAG,EAAE,KAAK;gBACV,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;aACjG;SACD,EAAE;YACF,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC/C,CAAC,CAAC;QAEc,mBAAc,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,2EAA2E;SACpI,CAAC,CAAC,GAAG,CAAC;YACL,KAAK,EAAE,wCAAwC;YAC/C,KAAK,EAAE;gBACN,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,aAAa,CAAC,sBAAsB,CAAC;gBACjD,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC;gBACjE,SAAS,EAAE,YAAY;gBACvB,YAAY,EAAE,aAAa;gBAC3B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;gBACpI,OAAO,EAAE,MAAM;gBACf,aAAa,EAAE,QAAQ;gBACvB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACpF,UAAU,EAAE,2BAA2B;gBACvC,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;aAChF;YACD,WAAW,EAAE,CAAC,CAAC,EAAE;gBAChB,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,4CAA4C;YACjE,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/C,CAAC;SACD,EAAE;YACF,CAAC,CAAC,GAAG,CAAC;gBACL,KAAK,EAAE,CAAC,iBAAiB,CAAC;gBAC1B,KAAK,EAAE;oBACN,QAAQ,EAAE,QAAQ;oBAClB,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,mBAAmB,CAAC;oBACvE,UAAU,EAAE,aAAa,CAAC,gBAAgB,CAAC;oBAC3C,aAAa,EAAE,MAAM;iBACrB;aACD,EAAE;gBACF,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK;aACtD,CAAC;YACF,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,qBAAqB,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAClQ,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;oBACtB,MAAM,QAAQ,GAAmD,EAAE,CAAC;oBACpE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;wBAChB,OAAO,QAAQ,CAAC;oBACjB,CAAC;oBAED,kBAAkB;oBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACxD,MAAM,wBAAwB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7E,MAAM,YAAY,GAAG,MAAM,EAAE,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBACvF,MAAM,eAAe,GAAgB,EAAE,CAAC;oBACxC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;4BAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAC3C,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gCAC1B,KAAK,EAAE,iBAAiB;gCACxB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE;6BACtI,EAAE;gCACF,UAAU,CAAC,IAAI,CAAC;gCAChB,QAAQ;gCACR,IAAI,CAAC,IAAI;gCACT,GAAG,CAAC,CAAC,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC;oCAChC,CAAC,CAAC,EAAE;oCACJ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CACpC;6BACD,CAAC,CAAC,CAAC;wBACL,CAAC;oBACF,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;oBAEpJ,sBAAsB;oBACtB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,GAAG,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC7G,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;oBACpF,IAAI,KAAK,GAAG,kBAAkB,CAAC;oBAC/B,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE,CAAC;wBACnD,KAAK,GAAG,aAAa,CAAC;oBACvB,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;wBACnB,KAAK,EAAE,aAAa;wBACpB,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE;qBAC5G,EAAE;wBACF,KAAK;wBACL,QAAQ;wBACR,UAAU,CAAC,SAAS,CAAC;qBACrB,CAAC,CAAC,CAAC;oBAEJ,OAAO,QAAQ,CAAC;gBACjB,CAAC,CAAC;aACF,CAAC;SACF,CAAC,CACF,CAAC;QAEF,qCAAqC;QACpB,8BAAyB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YACrE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,OAAO,CAAC,CAAC,CAAC;YACX,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9C,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAClD,CAAC;YAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEc,2BAAsB,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5E,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,2BAA2B,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnF,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAhZF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEvC,iFAAiF;YACjF,MAAM,iBAAiB,GAAG,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5F,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBACzF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;gBACjD,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;YAC5D,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhB,IAAI,WAAW,CAAC;YAChB,IAAI,cAAc,EAAE,CAAC;gBACpB,qEAAqE;gBACrE,WAAW,GAAG,iBAAiB,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACP,IAAI,MAAM,CAAC;gBACX,QAAQ,CAAC,EAAE,CAAC;oBACX,KAAK,mBAAmB,CAAC,QAAQ;wBAAE,MAAM,GAAG,sCAAsC,CAAC;wBAAC,MAAM;oBAC1F,KAAK,mBAAmB,CAAC,IAAI;wBAAE,MAAM,GAAG,oCAAoC,CAAC;wBAAC,MAAM;oBACpF,KAAK,mBAAmB,CAAC,MAAM;wBAAE,MAAM,GAAG,uCAAuC,CAAC;wBAAC,MAAM;gBAC1F,CAAC;gBACD,WAAW,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9E,CAAC;YAED,OAAO;gBACN,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE;gBAC9B,UAAU,EAAE,aAAa,CAAC,gBAAgB,CAAC;aAC3C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CACnC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CACxC,yBAAyB,EACzB,IAAI,CAAC,iBAAiB,EACtB,OAAO,CAAC,MAAM,CAAC,EAAE;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,OAAO;gBACN,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;gBAC9C,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;aACZ,CAAC;QACvC,CAAC,CAAC,EACF,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CACf,CACD,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;YACtC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC;YAC/B,mBAAmB,EAAE,KAAK;YAC1B,mBAAmB,EAAE,eAAe,CAAC,CAAC,CAAC;SACvC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,OAAO;YACR,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,8BAA8B,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IAID,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;CAqUpF,CAAA;AApaY,2BAA2B;IAarC,WAAA,qBAAqB,CAAA;IACrB,WAAA,aAAa,CAAA;IACb,WAAA,kBAAkB,CAAA;GAfR,2BAA2B,CAoavC;;AAkBD,SAAS,qBAAqB,CAAC,OAAiB,EAAE,aAAa,GAAG,CAAC;IAClE,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,MAAM,GAAG,aAAa,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,EAAS,EAAE,KAAe,EAAE,YAA8B,MAAM;IACvF,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACT,IAAI,CAAC,sBAAsB,CAC1B,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAC5C,EAAE,CAAC,CAAC,GAAG,MAAM,EACb,CAAC,CAAC,KAAK,EACP,CAAC,CAAC,MAAM,CACR,CACD,CAAC;QACF,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAGD;;EAEE;AACF,MAAM,UAAU,cAAc,CAAC,qBAA6B,EAAE,WAAmB,EAAE,oBAAiC;IACnH,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,WAAW,CAAC,CAAC;IACjG,IAAI,YAAY,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,oBAAoB,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;QAC/C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,oBAAoB,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;QACnE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,YAAY,GAAG,WAAW,EAAE,CAAC;IAC/E,CAAC;IACD,IAAI,oBAAoB,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QACrD,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;AACrD,CAAC","file":"inlineEditsLongDistanceHint.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 *--------------------------------------------------------------------------------------------*/\nimport { ChildNode, n, ObserverNode, ObserverNodeWithElement } from '../../../../../../../../base/browser/dom.js';\nimport { Event } from '../../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../../base/common/lifecycle.js';\nimport { IObservable, autorun, constObservable, debouncedObservable2, derived, derivedDisposable, observableFromEvent } from '../../../../../../../../base/common/observable.js';\nimport { IInstantiationService } from '../../../../../../../../platform/instantiation/common/instantiation.js';\nimport { ICodeEditor } from '../../../../../../../browser/editorBrowser.js';\nimport { observableCodeEditor } from '../../../../../../../browser/observableCodeEditor.js';\nimport { Rect } from '../../../../../../../common/core/2d/rect.js';\nimport { Position } from '../../../../../../../common/core/position.js';\nimport { ITextModel } from '../../../../../../../common/model.js';\nimport { IInlineEditsView, InlineEditTabAction } from '../../inlineEditsViewInterface.js';\nimport { InlineEditWithChanges } from '../../inlineEditWithChanges.js';\nimport { getContentSizeOfLines, rectToProps } from '../../utils/utils.js';\nimport { DetailedLineRangeMapping } from '../../../../../../../common/diff/rangeMapping.js';\nimport { OffsetRange } from '../../../../../../../common/core/ranges/offsetRange.js';\nimport { LineRange } from '../../../../../../../common/core/ranges/lineRange.js';\nimport { HideUnchangedRegionsFeature } from '../../../../../../../browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js';\nimport { Codicon } from '../../../../../../../../base/common/codicons.js';\nimport { renderIcon } from '../../../../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { SymbolKinds } from '../../../../../../../common/languages.js';\nimport { debugLogRects, debugView } from '../debugVisualization.js';\nimport { distributeFlexBoxLayout } from '../../utils/flexBoxLayout.js';\nimport { Point } from '../../../../../../../common/core/2d/point.js';\nimport { Size2D } from '../../../../../../../common/core/2d/size.js';\nimport { IThemeService } from '../../../../../../../../platform/theme/common/themeService.js';\nimport { IKeybindingService } from '../../../../../../../../platform/keybinding/common/keybinding.js';\nimport { getEditorBlendedColor, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorSecondaryBackground, inlineEditIndicatorSuccessfulBackground, observeColor } from '../../theme.js';\nimport { asCssVariable, descriptionForeground, editorBackground, editorWidgetBackground } from '../../../../../../../../platform/theme/common/colorRegistry.js';\nimport { editorWidgetBorder } from '../../../../../../../../platform/theme/common/colors/editorColors.js';\nimport { ILongDistancePreviewProps, LongDistancePreviewEditor } from './longDistancePreviewEditor.js';\nimport { InlineSuggestionGutterMenuData, SimpleInlineSuggestModel } from '../../components/gutterIndicatorView.js';\nimport { jumpToNextInlineEditId } from '../../../../controller/commandIds.js';\nimport { splitIntoContinuousLineRanges, WidgetLayoutConstants, WidgetOutline, WidgetPlacementContext } from './longDistnaceWidgetPlacement.js';\n\nconst BORDER_RADIUS = 6;\nconst MAX_WIDGET_WIDTH = { EMPTY_SPACE: 425, OVERLAY: 375 };\nconst MIN_WIDGET_WIDTH = 250;\n\nconst DEFAULT_WIDGET_LAYOUT_CONSTANTS: WidgetLayoutConstants = {\n\tpreviewEditorMargin: 2,\n\twidgetPadding: 2,\n\twidgetBorder: 1,\n\tlowerBarHeight: 20,\n\tminWidgetWidth: MIN_WIDGET_WIDTH,\n};\n\nexport class InlineEditsLongDistanceHint extends Disposable implements IInlineEditsView {\n\n\tprivate readonly _editorObs;\n\treadonly onDidClick = Event.None;\n\tprivate _viewWithElement: ObserverNodeWithElement<HTMLDivElement> | undefined = undefined;\n\n\tprivate readonly _previewEditor;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _viewState: IObservable<ILongDistanceViewState | undefined>,\n\t\tprivate readonly _previewTextModel: ITextModel,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t) {\n\t\tsuper();\n\n\t\tthis._styles = derived(reader => {\n\t\t\tconst v = this._tabAction.read(reader);\n\n\t\t\t// Check theme type by observing a color - this ensures we react to theme changes\n\t\t\tconst widgetBorderColor = observeColor(editorWidgetBorder, this._themeService).read(reader);\n\t\t\tconst isHighContrast = observableFromEvent(this._themeService.onDidColorThemeChange, () => {\n\t\t\t\tconst theme = this._themeService.getColorTheme();\n\t\t\t\treturn theme.type === 'hcDark' || theme.type === 'hcLight';\n\t\t\t}).read(reader);\n\n\t\t\tlet borderColor;\n\t\t\tif (isHighContrast) {\n\t\t\t\t// Use editorWidgetBorder in high contrast mode for better visibility\n\t\t\t\tborderColor = widgetBorderColor;\n\t\t\t} else {\n\t\t\t\tlet border;\n\t\t\t\tswitch (v) {\n\t\t\t\t\tcase InlineEditTabAction.Inactive: border = inlineEditIndicatorSecondaryBackground; break;\n\t\t\t\t\tcase InlineEditTabAction.Jump: border = inlineEditIndicatorPrimaryBackground; break;\n\t\t\t\t\tcase InlineEditTabAction.Accept: border = inlineEditIndicatorSuccessfulBackground; break;\n\t\t\t\t}\n\t\t\t\tborderColor = getEditorBlendedColor(border, this._themeService).read(reader);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tborder: borderColor.toString(),\n\t\t\t\tbackground: asCssVariable(editorBackground)\n\t\t\t};\n\t\t});\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tthis._previewEditor = this._register(\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\tLongDistancePreviewEditor,\n\t\t\t\tthis._previewTextModel,\n\t\t\t\tderived(reader => {\n\t\t\t\t\tconst viewState = this._viewState.read(reader);\n\t\t\t\t\tif (!viewState) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdiff: viewState.diff,\n\t\t\t\t\t\tmodel: viewState.model,\n\t\t\t\t\t\tinlineSuggestInfo: viewState.inlineSuggestInfo,\n\t\t\t\t\t\tnextCursorPosition: viewState.nextCursorPosition,\n\t\t\t\t\t} satisfies ILongDistancePreviewProps;\n\t\t\t\t}),\n\t\t\t\tthis._editor,\n\t\t\t\tthis._tabAction,\n\t\t\t)\n\t\t);\n\n\t\tthis._viewWithElement = this._view.keepUpdated(this._store);\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._viewWithElement.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: constObservable(0),\n\t\t}));\n\n\t\tthis._widgetContent.get().keepUpdated(this._store);\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst layoutInfo = this._previewEditorLayoutInfo.read(reader);\n\t\t\tif (!layoutInfo) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._previewEditor.layout(layoutInfo.codeEditorSize.toDimension(), layoutInfo.desiredPreviewEditorScrollLeft);\n\t\t}));\n\n\t\tthis._isVisibleDelayed.recomputeInitiallyAndOnChange(this._store);\n\t}\n\n\tprivate readonly _styles;\n\n\tpublic get isHovered() { return this._widgetContent.get().didMouseMoveDuringHover; }\n\n\tprivate readonly _hintTextPosition = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\treturn viewState ? new Position(viewState.hint.lineNumber, Number.MAX_SAFE_INTEGER) : null;\n\t});\n\n\tprivate readonly _lineSizesAroundHintPosition = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\tconst p = this._hintTextPosition.read(reader);\n\t\tif (!viewState || !p) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst model = this._editorObs.model.read(reader);\n\t\tif (!model) {\n\t\t\treturn [];\n\t\t}\n\t\tconst range = LineRange.ofLength(p.lineNumber, 1).addMargin(5, 5).intersect(LineRange.ofLength(1, model.getLineCount()));\n\n\t\tif (!range) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst sizes = getContentSizeOfLines(this._editorObs, range, reader);\n\t\tconst top = this._editorObs.observeTopForLineNumber(range.startLineNumber).read(reader);\n\n\t\treturn splitIntoContinuousLineRanges(range, sizes, top, this._editorObs, reader);\n\t});\n\n\tprivate readonly _isVisibleDelayed = debouncedObservable2(\n\t\tderived(this, reader => this._viewState.read(reader)?.hint.isVisible),\n\t\t(lastValue, newValue) => lastValue === true && newValue === false ? 200 : 0,\n\t);\n\n\tprivate readonly _previewEditorLayoutInfo = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\n\t\tif (!viewState || !this._isVisibleDelayed.read(reader)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst continousLineRanges = this._lineSizesAroundHintPosition.read(reader);\n\t\tif (continousLineRanges.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst editorScrollTop = this._editorObs.scrollTop.read(reader);\n\t\tconst editorScrollLeft = this._editorObs.scrollLeft.read(reader);\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\n\t\tconst previewContentHeight = this._previewEditor.contentHeight.read(reader);\n\t\tconst previewEditorContentLayout = this._previewEditor.horizontalContentRangeInPreviewEditorToShow.read(reader);\n\n\t\tif (!previewContentHeight || !previewEditorContentLayout) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// const debugRects = stackSizesDown(new Point(editorLayout.contentLeft, lineSizes.top - scrollTop), lineSizes.sizes);\n\n\t\tconst editorTrueContentWidth = editorLayout.contentWidth - editorLayout.verticalScrollbarWidth;\n\t\tconst editorTrueContentRight = editorLayout.contentLeft + editorTrueContentWidth;\n\n\t\t// drawEditorWidths(this._editor, reader);\n\n\t\tconst c = this._editorObs.cursorLineNumber.read(reader);\n\t\tif (!c) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst layoutConstants = DEFAULT_WIDGET_LAYOUT_CONSTANTS;\n\t\tconst extraGutterMarginToAvoidScrollBar = 2;\n\t\tconst previewEditorHeight = previewContentHeight + extraGutterMarginToAvoidScrollBar;\n\n\t\t// Try to find widget placement in available empty space\n\t\tlet possibleWidgetOutline: WidgetOutline | undefined;\n\t\tlet lastPlacementContext: WidgetPlacementContext | undefined;\n\n\t\tconst endOfLinePadding = (lineNumber: number) => lineNumber === viewState.hint.lineNumber ? 40 : 20;\n\n\t\tfor (const continousLineRange of continousLineRanges) {\n\t\t\tconst placementContext = new WidgetPlacementContext(\n\t\t\t\tcontinousLineRange,\n\t\t\t\teditorTrueContentWidth,\n\t\t\t\tendOfLinePadding\n\t\t\t);\n\t\t\tlastPlacementContext = placementContext;\n\n\t\t\tconst showRects = false;\n\t\t\tif (showRects) {\n\t\t\t\tconst rects2 = stackSizesDown(\n\t\t\t\t\tnew Point(editorTrueContentRight, continousLineRange.top - editorScrollTop),\n\t\t\t\t\tplacementContext.availableSpaceSizes as Size2D[],\n\t\t\t\t\t'right'\n\t\t\t\t);\n\t\t\t\tdebugView(debugLogRects({ ...rects2 }, this._editor.getDomNode()!), reader);\n\t\t\t}\n\n\t\t\tpossibleWidgetOutline = placementContext.tryFindWidgetOutline(\n\t\t\t\tviewState.hint.lineNumber,\n\t\t\t\tpreviewEditorHeight,\n\t\t\t\teditorTrueContentRight,\n\t\t\t\tlayoutConstants\n\t\t\t);\n\n\t\t\tif (possibleWidgetOutline) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to overlay position if no empty space was found\n\t\tlet position: 'overlay' | 'empty-space' = 'empty-space';\n\t\tif (!possibleWidgetOutline) {\n\t\t\tposition = 'overlay';\n\t\t\tconst maxAvailableWidth = Math.min(editorLayout.width - editorLayout.contentLeft, MAX_WIDGET_WIDTH.OVERLAY);\n\n\t\t\t// Create a fallback placement context for computing overlay vertical position\n\t\t\tconst fallbackPlacementContext = lastPlacementContext ?? new WidgetPlacementContext(\n\t\t\t\tcontinousLineRanges[0],\n\t\t\t\teditorTrueContentWidth,\n\t\t\t\tendOfLinePadding,\n\t\t\t);\n\n\t\t\tpossibleWidgetOutline = {\n\t\t\t\thorizontalWidgetRange: OffsetRange.ofStartAndLength(editorTrueContentRight - maxAvailableWidth, maxAvailableWidth),\n\t\t\t\tverticalWidgetRange: fallbackPlacementContext.getWidgetVerticalOutline(\n\t\t\t\t\tviewState.hint.lineNumber + 2,\n\t\t\t\t\tpreviewEditorHeight,\n\t\t\t\t\tlayoutConstants\n\t\t\t\t).delta(10),\n\t\t\t};\n\t\t}\n\n\t\tif (!possibleWidgetOutline) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst rectAvailableSpace = Rect.fromRanges(\n\t\t\tpossibleWidgetOutline.horizontalWidgetRange,\n\t\t\tpossibleWidgetOutline.verticalWidgetRange\n\t\t).translateX(-editorScrollLeft).translateY(-editorScrollTop);\n\n\t\tconst showAvailableSpace = false;\n\t\tif (showAvailableSpace) {\n\t\t\tdebugView(debugLogRects({ rectAvailableSpace }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst { previewEditorMargin, widgetPadding, widgetBorder, lowerBarHeight } = layoutConstants;\n\t\tconst maxWidgetWidth = Math.min(position === 'overlay' ? MAX_WIDGET_WIDTH.OVERLAY : MAX_WIDGET_WIDTH.EMPTY_SPACE, previewEditorContentLayout.maxEditorWidth + previewEditorMargin + widgetPadding);\n\n\t\tconst layout = distributeFlexBoxLayout(rectAvailableSpace.width, {\n\t\t\tspaceBefore: { min: 0, max: 10, priority: 1 },\n\t\t\tcontent: { min: 50, rules: [{ max: 150, priority: 2 }, { max: maxWidgetWidth, priority: 1 }] },\n\t\t\tspaceAfter: { min: 10 },\n\t\t});\n\n\t\tif (!layout) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst ranges = lengthsToOffsetRanges([layout.spaceBefore, layout.content, layout.spaceAfter], rectAvailableSpace.left);\n\t\tconst spaceBeforeRect = rectAvailableSpace.withHorizontalRange(ranges[0]);\n\t\tconst widgetRect = rectAvailableSpace.withHorizontalRange(ranges[1]);\n\t\tconst spaceAfterRect = rectAvailableSpace.withHorizontalRange(ranges[2]);\n\n\t\tconst showRects2 = false;\n\t\tif (showRects2) {\n\t\t\tdebugView(debugLogRects({ spaceBeforeRect, widgetRect, spaceAfterRect }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst previewEditorRect = widgetRect.withMargin(-widgetPadding - widgetBorder - previewEditorMargin).withMargin(0, 0, -lowerBarHeight, 0);\n\n\t\tconst showEditorRect = false;\n\t\tif (showEditorRect) {\n\t\t\tdebugView(debugLogRects({ previewEditorRect }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst previewEditorContentWidth = previewEditorRect.width - previewEditorContentLayout.nonContentWidth;\n\t\tconst maxPrefferedRangeLength = previewEditorContentWidth * 0.8;\n\t\tconst preferredRangeToReveal = previewEditorContentLayout.preferredRangeToReveal.intersect(OffsetRange.ofStartAndLength(\n\t\t\tpreviewEditorContentLayout.preferredRangeToReveal.start,\n\t\t\tmaxPrefferedRangeLength\n\t\t)) ?? previewEditorContentLayout.preferredRangeToReveal;\n\t\tconst desiredPreviewEditorScrollLeft = scrollToReveal(previewEditorContentLayout.indentationEnd, previewEditorContentWidth, preferredRangeToReveal);\n\n\t\treturn {\n\t\t\tcodeEditorSize: previewEditorRect.getSize(),\n\t\t\tcodeScrollLeft: editorScrollLeft,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\n\t\t\twidgetRect,\n\n\t\t\tpreviewEditorMargin,\n\t\t\twidgetPadding,\n\t\t\twidgetBorder,\n\n\t\t\tlowerBarHeight,\n\n\t\t\tdesiredPreviewEditorScrollLeft: desiredPreviewEditorScrollLeft.newScrollPosition,\n\t\t};\n\t});\n\n\tprivate readonly _view = n.div({\n\t\tclass: 'inline-edits-view',\n\t\tstyle: {\n\t\t\tposition: 'absolute',\n\t\t\toverflow: 'visible',\n\t\t\ttop: '0px',\n\t\t\tleft: '0px',\n\t\t\tdisplay: derived(this, reader => !!this._previewEditorLayoutInfo.read(reader) ? 'block' : 'none'),\n\t\t},\n\t}, [\n\t\tderived(this, _reader => [this._widgetContent]),\n\t]);\n\n\tprivate readonly _widgetContent = derived(this, reader => // TODO@hediet: remove when n.div lazily creates previewEditor.element node\n\t\tn.div({\n\t\t\tclass: 'inline-edits-long-distance-hint-widget',\n\t\t\tstyle: {\n\t\t\t\tposition: 'absolute',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\tcursor: 'pointer',\n\t\t\t\tbackground: asCssVariable(editorWidgetBackground),\n\t\t\t\tpadding: this._previewEditorLayoutInfo.map(i => i?.widgetPadding),\n\t\t\t\tboxSizing: 'border-box',\n\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\tborder: derived(reader => `${this._previewEditorLayoutInfo.read(reader)?.widgetBorder}px solid ${this._styles.read(reader).border}`),\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\topacity: derived(reader => this._viewState.read(reader)?.hint.isVisible ? '1' : '0'),\n\t\t\t\ttransition: 'opacity 200ms ease-in-out',\n\t\t\t\t...rectToProps(reader => this._previewEditorLayoutInfo.read(reader)?.widgetRect)\n\t\t\t},\n\t\t\tonmousedown: e => {\n\t\t\t\te.preventDefault(); // This prevents that the editor loses focus\n\t\t\t},\n\t\t\tonclick: () => {\n\t\t\t\tthis._viewState.read(undefined)?.model.jump();\n\t\t\t}\n\t\t}, [\n\t\t\tn.div({\n\t\t\t\tclass: ['editorContainer'],\n\t\t\t\tstyle: {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tpadding: this._previewEditorLayoutInfo.map(i => i?.previewEditorMargin),\n\t\t\t\t\tbackground: asCssVariable(editorBackground),\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t},\n\t\t\t}, [\n\t\t\t\tderived(this, r => this._previewEditor.element), // --\n\t\t\t]),\n\t\t\tn.div({ class: 'bar', style: { color: asCssVariable(descriptionForeground), pointerEvents: 'none', margin: '0 4px', height: this._previewEditorLayoutInfo.map(i => i?.lowerBarHeight), display: 'flex', justifyContent: 'space-between', alignItems: 'center' } }, [\n\t\t\t\tderived(this, reader => {\n\t\t\t\t\tconst children: (HTMLElement | ObserverNode<HTMLDivElement>)[] = [];\n\t\t\t\t\tconst viewState = this._viewState.read(reader);\n\t\t\t\t\tif (!viewState) {\n\t\t\t\t\t\treturn children;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Outline Element\n\t\t\t\t\tconst source = this._originalOutlineSource.read(reader);\n\t\t\t\t\tconst originalTargetLineNumber = this._originalTargetLineNumber.read(reader);\n\t\t\t\t\tconst outlineItems = source?.getAt(originalTargetLineNumber, reader).slice(0, 1) ?? [];\n\t\t\t\t\tconst outlineElements: ChildNode[] = [];\n\t\t\t\t\tif (outlineItems.length > 0) {\n\t\t\t\t\t\tfor (let i = 0; i < outlineItems.length; i++) {\n\t\t\t\t\t\t\tconst item = outlineItems[i];\n\t\t\t\t\t\t\tconst icon = SymbolKinds.toIcon(item.kind);\n\t\t\t\t\t\t\toutlineElements.push(n.div({\n\t\t\t\t\t\t\t\tclass: 'breadcrumb-item',\n\t\t\t\t\t\t\t\tstyle: { display: 'flex', alignItems: 'center', flex: '1 1 auto', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' },\n\t\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\trenderIcon(icon),\n\t\t\t\t\t\t\t\t'\\u00a0',\n\t\t\t\t\t\t\t\titem.name,\n\t\t\t\t\t\t\t\t...(i === outlineItems.length - 1\n\t\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t\t: [renderIcon(Codicon.chevronRight)]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tchildren.push(n.div({ class: 'outline-elements', style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, outlineElements));\n\n\t\t\t\t\t// Show Edit Direction\n\t\t\t\t\tconst arrowIcon = viewState.hint.lineNumber < originalTargetLineNumber ? Codicon.arrowDown : Codicon.arrowUp;\n\t\t\t\t\tconst keybinding = this._keybindingService.lookupKeybinding(jumpToNextInlineEditId);\n\t\t\t\t\tlet label = 'Go to suggestion';\n\t\t\t\t\tif (keybinding && keybinding.getLabel() === 'Tab') {\n\t\t\t\t\t\tlabel = 'Tab to jump';\n\t\t\t\t\t}\n\t\t\t\t\tchildren.push(n.div({\n\t\t\t\t\t\tclass: 'go-to-label',\n\t\t\t\t\t\tstyle: { position: 'relative', display: 'flex', alignItems: 'center', flex: '0 0 auto', paddingLeft: '6px' },\n\t\t\t\t\t}, [\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t'\\u00a0',\n\t\t\t\t\t\trenderIcon(arrowIcon),\n\t\t\t\t\t]));\n\n\t\t\t\t\treturn children;\n\t\t\t\t})\n\t\t\t]),\n\t\t])\n\t);\n\n\t// Drives breadcrumbs and symbol icon\n\tprivate readonly _originalTargetLineNumber = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\tif (!viewState) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (viewState.edit.action?.kind === 'jumpTo') {\n\t\t\treturn viewState.edit.action.position.lineNumber;\n\t\t}\n\n\t\treturn viewState.diff[0]?.original.startLineNumber ?? -1;\n\t});\n\n\tprivate readonly _originalOutlineSource = derivedDisposable(this, (reader) => {\n\t\tconst m = this._editorObs.model.read(reader);\n\t\tconst factory = HideUnchangedRegionsFeature._breadcrumbsSourceFactory.read(reader);\n\t\treturn (!m || !factory) ? undefined : factory(m, this._instantiationService);\n\t});\n}\n\nexport interface ILongDistanceHint {\n\tlineNumber: number;\n\tisVisible: boolean;\n}\n\nexport interface ILongDistanceViewState {\n\thint: ILongDistanceHint;\n\tnewTextLineCount: number;\n\tedit: InlineEditWithChanges;\n\tdiff: DetailedLineRangeMapping[];\n\tnextCursorPosition: Position | null;\n\n\tmodel: SimpleInlineSuggestModel;\n\tinlineSuggestInfo: InlineSuggestionGutterMenuData;\n}\n\nfunction lengthsToOffsetRanges(lengths: number[], initialOffset = 0): OffsetRange[] {\n\tconst result: OffsetRange[] = [];\n\tlet offset = initialOffset;\n\tfor (const length of lengths) {\n\t\tresult.push(new OffsetRange(offset, offset + length));\n\t\toffset += length;\n\t}\n\treturn result;\n}\n\nfunction stackSizesDown(at: Point, sizes: Size2D[], alignment: 'left' | 'right' = 'left'): Rect[] {\n\tconst rects: Rect[] = [];\n\tlet offset = 0;\n\tfor (const s of sizes) {\n\t\trects.push(\n\t\t\tRect.fromLeftTopWidthHeight(\n\t\t\t\tat.x + (alignment === 'left' ? 0 : -s.width),\n\t\t\t\tat.y + offset,\n\t\t\t\ts.width,\n\t\t\t\ts.height\n\t\t\t)\n\t\t);\n\t\toffset += s.height;\n\t}\n\treturn rects;\n}\n\n\n/**\n * Changes the scroll position as little as possible just to reveal the given range in the window.\n*/\nexport function scrollToReveal(currentScrollPosition: number, windowWidth: number, contentRangeToReveal: OffsetRange): { newScrollPosition: number } {\n\tconst visibleRange = new OffsetRange(currentScrollPosition, currentScrollPosition + windowWidth);\n\tif (visibleRange.containsRange(contentRangeToReveal)) {\n\t\treturn { newScrollPosition: currentScrollPosition };\n\t}\n\tif (contentRangeToReveal.length > windowWidth) {\n\t\treturn { newScrollPosition: contentRangeToReveal.start };\n\t}\n\tif (contentRangeToReveal.endExclusive > visibleRange.endExclusive) {\n\t\treturn { newScrollPosition: contentRangeToReveal.endExclusive - windowWidth };\n\t}\n\tif (contentRangeToReveal.start < visibleRange.start) {\n\t\treturn { newScrollPosition: contentRangeToReveal.start };\n\t}\n\treturn { newScrollPosition: currentScrollPosition };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { ChildNode, n, ObserverNode, ObserverNodeWithElement } from '../../../../../../../../base/browser/dom.js';\nimport { Event } from '../../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../../base/common/lifecycle.js';\nimport { IObservable, autorun, constObservable, debouncedObservable2, derived, derivedDisposable, observableFromEvent } from '../../../../../../../../base/common/observable.js';\nimport { IInstantiationService } from '../../../../../../../../platform/instantiation/common/instantiation.js';\nimport { ICodeEditor } from '../../../../../../../browser/editorBrowser.js';\nimport { observableCodeEditor } from '../../../../../../../browser/observableCodeEditor.js';\nimport { Rect } from '../../../../../../../common/core/2d/rect.js';\nimport { Position } from '../../../../../../../common/core/position.js';\nimport { ITextModel } from '../../../../../../../common/model.js';\nimport { IInlineEditsView, InlineEditTabAction } from '../../inlineEditsViewInterface.js';\nimport { InlineEditWithChanges } from '../../inlineEditWithChanges.js';\nimport { getContentSizeOfLines, rectToProps } from '../../utils/utils.js';\nimport { DetailedLineRangeMapping } from '../../../../../../../common/diff/rangeMapping.js';\nimport { OffsetRange } from '../../../../../../../common/core/ranges/offsetRange.js';\nimport { LineRange } from '../../../../../../../common/core/ranges/lineRange.js';\nimport { HideUnchangedRegionsFeature } from '../../../../../../../browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js';\nimport { Codicon } from '../../../../../../../../base/common/codicons.js';\nimport { renderIcon } from '../../../../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { SymbolKinds } from '../../../../../../../common/languages.js';\nimport { debugLogRects, debugView } from '../debugVisualization.js';\nimport { distributeFlexBoxLayout } from '../../utils/flexBoxLayout.js';\nimport { Point } from '../../../../../../../common/core/2d/point.js';\nimport { Size2D } from '../../../../../../../common/core/2d/size.js';\nimport { IThemeService } from '../../../../../../../../platform/theme/common/themeService.js';\nimport { IKeybindingService } from '../../../../../../../../platform/keybinding/common/keybinding.js';\nimport { getEditorBlendedColor, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorSecondaryBackground, inlineEditIndicatorSuccessfulBackground, observeColor } from '../../theme.js';\nimport { asCssVariable, descriptionForeground, editorBackground, editorWidgetBackground } from '../../../../../../../../platform/theme/common/colorRegistry.js';\nimport { editorWidgetBorder } from '../../../../../../../../platform/theme/common/colors/editorColors.js';\nimport { ILongDistancePreviewProps, LongDistancePreviewEditor } from './longDistancePreviewEditor.js';\nimport { InlineSuggestionGutterMenuData, SimpleInlineSuggestModel } from '../../components/gutterIndicatorView.js';\nimport { jumpToNextInlineEditId } from '../../../../controller/commandIds.js';\nimport { splitIntoContinuousLineRanges, WidgetLayoutConstants, WidgetOutline, WidgetPlacementContext } from './longDistnaceWidgetPlacement.js';\n\nconst BORDER_RADIUS = 6;\nconst MAX_WIDGET_WIDTH = { EMPTY_SPACE: 425, OVERLAY: 375 };\nconst MIN_WIDGET_WIDTH = 250;\n\nconst DEFAULT_WIDGET_LAYOUT_CONSTANTS: WidgetLayoutConstants = {\n\tpreviewEditorMargin: 2,\n\twidgetPadding: 2,\n\twidgetBorder: 1,\n\tlowerBarHeight: 20,\n\tminWidgetWidth: MIN_WIDGET_WIDTH,\n};\n\nexport class InlineEditsLongDistanceHint extends Disposable implements IInlineEditsView {\n\n\tprivate readonly _editorObs;\n\treadonly onDidClick = Event.None;\n\tprivate _viewWithElement: ObserverNodeWithElement<HTMLDivElement> | undefined = undefined;\n\n\tprivate readonly _previewEditor;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _viewState: IObservable<ILongDistanceViewState | undefined>,\n\t\tprivate readonly _previewTextModel: ITextModel,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t) {\n\t\tsuper();\n\n\t\tthis._styles = derived(reader => {\n\t\t\tconst v = this._tabAction.read(reader);\n\n\t\t\t// Check theme type by observing a color - this ensures we react to theme changes\n\t\t\tconst widgetBorderColor = observeColor(editorWidgetBorder, this._themeService).read(reader);\n\t\t\tconst isHighContrast = observableFromEvent(this._themeService.onDidColorThemeChange, () => {\n\t\t\t\tconst theme = this._themeService.getColorTheme();\n\t\t\t\treturn theme.type === 'hcDark' || theme.type === 'hcLight';\n\t\t\t}).read(reader);\n\n\t\t\tlet borderColor;\n\t\t\tif (isHighContrast) {\n\t\t\t\t// Use editorWidgetBorder in high contrast mode for better visibility\n\t\t\t\tborderColor = widgetBorderColor;\n\t\t\t} else {\n\t\t\t\tlet border;\n\t\t\t\tswitch (v) {\n\t\t\t\t\tcase InlineEditTabAction.Inactive: border = inlineEditIndicatorSecondaryBackground; break;\n\t\t\t\t\tcase InlineEditTabAction.Jump: border = inlineEditIndicatorPrimaryBackground; break;\n\t\t\t\t\tcase InlineEditTabAction.Accept: border = inlineEditIndicatorSuccessfulBackground; break;\n\t\t\t\t}\n\t\t\t\tborderColor = getEditorBlendedColor(border, this._themeService).read(reader);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tborder: borderColor.toString(),\n\t\t\t\tbackground: asCssVariable(editorBackground)\n\t\t\t};\n\t\t});\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tthis._previewEditor = this._register(\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\tLongDistancePreviewEditor,\n\t\t\t\tthis._previewTextModel,\n\t\t\t\tderived(reader => {\n\t\t\t\t\tconst viewState = this._viewState.read(reader);\n\t\t\t\t\tif (!viewState) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdiff: viewState.diff,\n\t\t\t\t\t\tmodel: viewState.model,\n\t\t\t\t\t\tinlineSuggestInfo: viewState.inlineSuggestInfo,\n\t\t\t\t\t\tnextCursorPosition: viewState.nextCursorPosition,\n\t\t\t\t\t} satisfies ILongDistancePreviewProps;\n\t\t\t\t}),\n\t\t\t\tthis._editor,\n\t\t\t\tthis._tabAction,\n\t\t\t)\n\t\t);\n\n\t\tthis._viewWithElement = this._view.keepUpdated(this._store);\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._viewWithElement.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: constObservable(0),\n\t\t}));\n\n\t\tthis._widgetContent.get().keepUpdated(this._store);\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst layoutInfo = this._previewEditorLayoutInfo.read(reader);\n\t\t\tif (!layoutInfo) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._previewEditor.layout(layoutInfo.codeEditorSize.toDimension(), layoutInfo.desiredPreviewEditorScrollLeft);\n\t\t}));\n\n\t\tthis._isVisibleDelayed.recomputeInitiallyAndOnChange(this._store);\n\t}\n\n\tprivate readonly _styles;\n\n\tpublic get isHovered() { return this._widgetContent.get().didMouseMoveDuringHover; }\n\n\tprivate readonly _hintTextPosition = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\treturn viewState ? new Position(viewState.hint.lineNumber, Number.MAX_SAFE_INTEGER) : null;\n\t});\n\n\tprivate readonly _lineSizesAroundHintPosition = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\tconst p = this._hintTextPosition.read(reader);\n\t\tif (!viewState || !p) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst model = this._editorObs.model.read(reader);\n\t\tif (!model) {\n\t\t\treturn [];\n\t\t}\n\t\tconst range = LineRange.ofLength(p.lineNumber, 1).addMargin(5, 5).intersect(LineRange.ofLength(1, model.getLineCount()));\n\n\t\tif (!range) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst sizes = getContentSizeOfLines(this._editorObs, range, reader);\n\t\tconst top = this._editorObs.observeTopForLineNumber(range.startLineNumber).read(reader);\n\n\t\treturn splitIntoContinuousLineRanges(range, sizes, top, this._editorObs, reader);\n\t});\n\n\tprivate readonly _isVisibleDelayed = debouncedObservable2(\n\t\tderived(this, reader => this._viewState.read(reader)?.hint.isVisible),\n\t\t(lastValue, newValue) => lastValue === true && newValue === false ? 200 : 0,\n\t);\n\n\tprivate readonly _previewEditorLayoutInfo = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\n\t\tif (!viewState || !this._isVisibleDelayed.read(reader)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst continousLineRanges = this._lineSizesAroundHintPosition.read(reader);\n\t\tif (continousLineRanges.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst editorScrollTop = this._editorObs.scrollTop.read(reader);\n\t\tconst editorScrollLeft = this._editorObs.scrollLeft.read(reader);\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\n\t\tconst previewContentHeight = this._previewEditor.contentHeight.read(reader);\n\t\tconst previewEditorContentLayout = this._previewEditor.horizontalContentRangeInPreviewEditorToShow.read(reader);\n\n\t\tif (!previewContentHeight || !previewEditorContentLayout) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// const debugRects = stackSizesDown(new Point(editorLayout.contentLeft, lineSizes.top - scrollTop), lineSizes.sizes);\n\n\t\tconst editorTrueContentWidth = editorLayout.contentWidth - editorLayout.verticalScrollbarWidth;\n\t\tconst editorTrueContentRight = editorLayout.contentLeft + editorTrueContentWidth;\n\n\t\t// drawEditorWidths(this._editor, reader);\n\n\t\tconst c = this._editorObs.cursorLineNumber.read(reader);\n\t\tif (!c) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst layoutConstants = DEFAULT_WIDGET_LAYOUT_CONSTANTS;\n\t\tconst extraGutterMarginToAvoidScrollBar = 2;\n\t\tconst previewEditorHeight = previewContentHeight + extraGutterMarginToAvoidScrollBar;\n\n\t\t// Try to find widget placement in available empty space\n\t\tlet possibleWidgetOutline: WidgetOutline | undefined;\n\t\tlet lastPlacementContext: WidgetPlacementContext | undefined;\n\n\t\tconst endOfLinePadding = (lineNumber: number) => lineNumber === viewState.hint.lineNumber ? 40 : 20;\n\n\t\tfor (const continousLineRange of continousLineRanges) {\n\t\t\tconst placementContext = new WidgetPlacementContext(\n\t\t\t\tcontinousLineRange,\n\t\t\t\teditorTrueContentWidth,\n\t\t\t\tendOfLinePadding\n\t\t\t);\n\t\t\tlastPlacementContext = placementContext;\n\n\t\t\tconst showRects = false;\n\t\t\tif (showRects) {\n\t\t\t\tconst rects2 = stackSizesDown(\n\t\t\t\t\tnew Point(editorTrueContentRight, continousLineRange.top - editorScrollTop),\n\t\t\t\t\tplacementContext.availableSpaceSizes as Size2D[],\n\t\t\t\t\t'right'\n\t\t\t\t);\n\t\t\t\tdebugView(debugLogRects({ ...rects2 }, this._editor.getDomNode()!), reader);\n\t\t\t}\n\n\t\t\tpossibleWidgetOutline = placementContext.tryFindWidgetOutline(\n\t\t\t\tviewState.hint.lineNumber,\n\t\t\t\tpreviewEditorHeight,\n\t\t\t\teditorTrueContentRight,\n\t\t\t\tlayoutConstants\n\t\t\t);\n\n\t\t\tif (possibleWidgetOutline) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to overlay position if no empty space was found\n\t\tlet position: 'overlay' | 'empty-space' = 'empty-space';\n\t\tif (!possibleWidgetOutline) {\n\t\t\tposition = 'overlay';\n\t\t\tconst maxAvailableWidth = Math.min(editorLayout.width - editorLayout.contentLeft, MAX_WIDGET_WIDTH.OVERLAY);\n\n\t\t\t// Create a fallback placement context for computing overlay vertical position\n\t\t\tconst fallbackPlacementContext = lastPlacementContext ?? new WidgetPlacementContext(\n\t\t\t\tcontinousLineRanges[0],\n\t\t\t\teditorTrueContentWidth,\n\t\t\t\tendOfLinePadding,\n\t\t\t);\n\n\t\t\tpossibleWidgetOutline = {\n\t\t\t\thorizontalWidgetRange: OffsetRange.ofStartAndLength(editorTrueContentRight - maxAvailableWidth, maxAvailableWidth),\n\t\t\t\tverticalWidgetRange: fallbackPlacementContext.getWidgetVerticalOutline(\n\t\t\t\t\tviewState.hint.lineNumber + 2,\n\t\t\t\t\tpreviewEditorHeight,\n\t\t\t\t\tlayoutConstants\n\t\t\t\t).delta(10),\n\t\t\t};\n\t\t}\n\n\t\tif (!possibleWidgetOutline) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst rectAvailableSpace = Rect.fromRanges(\n\t\t\tpossibleWidgetOutline.horizontalWidgetRange,\n\t\t\tpossibleWidgetOutline.verticalWidgetRange\n\t\t).translateX(-editorScrollLeft).translateY(-editorScrollTop);\n\n\t\tconst showAvailableSpace = false;\n\t\tif (showAvailableSpace) {\n\t\t\tdebugView(debugLogRects({ rectAvailableSpace }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst { previewEditorMargin, widgetPadding, widgetBorder, lowerBarHeight } = layoutConstants;\n\t\tconst maxWidgetWidth = Math.min(position === 'overlay' ? MAX_WIDGET_WIDTH.OVERLAY : MAX_WIDGET_WIDTH.EMPTY_SPACE, previewEditorContentLayout.maxEditorWidth + previewEditorMargin + widgetPadding);\n\n\t\tconst layout = distributeFlexBoxLayout(rectAvailableSpace.width, {\n\t\t\tspaceBefore: { min: 0, max: 10, priority: 1 },\n\t\t\tcontent: { min: 50, rules: [{ max: 150, priority: 2 }, { max: maxWidgetWidth, priority: 1 }] },\n\t\t\tspaceAfter: { min: 10 },\n\t\t});\n\n\t\tif (!layout) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst ranges = lengthsToOffsetRanges([layout.spaceBefore, layout.content, layout.spaceAfter], rectAvailableSpace.left);\n\t\tconst spaceBeforeRect = rectAvailableSpace.withHorizontalRange(ranges[0]);\n\t\tconst widgetRect = rectAvailableSpace.withHorizontalRange(ranges[1]);\n\t\tconst spaceAfterRect = rectAvailableSpace.withHorizontalRange(ranges[2]);\n\n\t\tconst showRects2 = false;\n\t\tif (showRects2) {\n\t\t\tdebugView(debugLogRects({ spaceBeforeRect, widgetRect, spaceAfterRect }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst previewEditorRect = widgetRect.withMargin(-widgetPadding - widgetBorder - previewEditorMargin).withMargin(0, 0, -lowerBarHeight, 0);\n\n\t\tconst showEditorRect = false;\n\t\tif (showEditorRect) {\n\t\t\tdebugView(debugLogRects({ previewEditorRect }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst previewEditorContentWidth = previewEditorRect.width - previewEditorContentLayout.nonContentWidth;\n\t\tconst maxPrefferedRangeLength = previewEditorContentWidth * 0.8;\n\t\tconst preferredRangeToReveal = previewEditorContentLayout.preferredRangeToReveal.intersect(OffsetRange.ofStartAndLength(\n\t\t\tpreviewEditorContentLayout.preferredRangeToReveal.start,\n\t\t\tmaxPrefferedRangeLength\n\t\t)) ?? previewEditorContentLayout.preferredRangeToReveal;\n\t\tconst desiredPreviewEditorScrollLeft = scrollToReveal(previewEditorContentLayout.indentationEnd, previewEditorContentWidth, preferredRangeToReveal);\n\n\t\treturn {\n\t\t\tcodeEditorSize: previewEditorRect.getSize(),\n\t\t\tcodeScrollLeft: editorScrollLeft,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\n\t\t\twidgetRect,\n\n\t\t\tpreviewEditorMargin,\n\t\t\twidgetPadding,\n\t\t\twidgetBorder,\n\n\t\t\tlowerBarHeight,\n\n\t\t\tdesiredPreviewEditorScrollLeft: desiredPreviewEditorScrollLeft.newScrollPosition,\n\t\t};\n\t});\n\n\tprivate readonly _view = n.div({\n\t\tclass: 'inline-edits-view',\n\t\tstyle: {\n\t\t\tposition: 'absolute',\n\t\t\toverflow: 'visible',\n\t\t\ttop: '0px',\n\t\t\tleft: '0px',\n\t\t\tdisplay: derived(this, reader => !!this._previewEditorLayoutInfo.read(reader) ? 'block' : 'none'),\n\t\t},\n\t}, [\n\t\tderived(this, _reader => [this._widgetContent]),\n\t]);\n\n\tprivate readonly _widgetContent = derived(this, reader => // TODO@hediet: remove when n.div lazily creates previewEditor.element node\n\t\tn.div({\n\t\t\tclass: 'inline-edits-long-distance-hint-widget',\n\t\t\tstyle: {\n\t\t\t\tposition: 'absolute',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\tcursor: 'pointer',\n\t\t\t\tbackground: asCssVariable(editorWidgetBackground),\n\t\t\t\tpadding: this._previewEditorLayoutInfo.map(i => i?.widgetPadding),\n\t\t\t\tboxSizing: 'border-box',\n\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\tborder: derived(reader => `${this._previewEditorLayoutInfo.read(reader)?.widgetBorder}px solid ${this._styles.read(reader).border}`),\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\topacity: derived(reader => this._viewState.read(reader)?.hint.isVisible ? '1' : '0'),\n\t\t\t\ttransition: 'opacity 200ms ease-in-out',\n\t\t\t\t...rectToProps(reader => this._previewEditorLayoutInfo.read(reader)?.widgetRect)\n\t\t\t},\n\t\t\tonmousedown: e => {\n\t\t\t\te.preventDefault(); // This prevents that the editor loses focus\n\t\t\t},\n\t\t\tonclick: () => {\n\t\t\t\tthis._viewState.read(undefined)?.model.jump();\n\t\t\t}\n\t\t}, [\n\t\t\tn.div({\n\t\t\t\tclass: ['editorContainer'],\n\t\t\t\tstyle: {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tpadding: this._previewEditorLayoutInfo.map(i => i?.previewEditorMargin),\n\t\t\t\t\tbackground: asCssVariable(editorBackground),\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t},\n\t\t\t}, [\n\t\t\t\tderived(this, r => this._previewEditor.element), // --\n\t\t\t]),\n\t\t\tn.div({ class: 'bar', style: { color: asCssVariable(descriptionForeground), pointerEvents: 'none', margin: '0 4px', height: this._previewEditorLayoutInfo.map(i => i?.lowerBarHeight), display: 'flex', justifyContent: 'space-between', alignItems: 'center' } }, [\n\t\t\t\tderived(this, reader => {\n\t\t\t\t\tconst children: (HTMLElement | ObserverNode<HTMLDivElement>)[] = [];\n\t\t\t\t\tconst viewState = this._viewState.read(reader);\n\t\t\t\t\tif (!viewState) {\n\t\t\t\t\t\treturn children;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Outline Element\n\t\t\t\t\tconst source = this._originalOutlineSource.read(reader);\n\t\t\t\t\tconst originalTargetLineNumber = this._originalTargetLineNumber.read(reader);\n\t\t\t\t\tconst outlineItems = source?.getAt(originalTargetLineNumber, reader).slice(0, 1) ?? [];\n\t\t\t\t\tconst outlineElements: ChildNode[] = [];\n\t\t\t\t\tif (outlineItems.length > 0) {\n\t\t\t\t\t\tfor (let i = 0; i < outlineItems.length; i++) {\n\t\t\t\t\t\t\tconst item = outlineItems[i];\n\t\t\t\t\t\t\tconst icon = SymbolKinds.toIcon(item.kind);\n\t\t\t\t\t\t\toutlineElements.push(n.div({\n\t\t\t\t\t\t\t\tclass: 'breadcrumb-item',\n\t\t\t\t\t\t\t\tstyle: { display: 'flex', alignItems: 'center', flex: '1 1 auto', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' },\n\t\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\trenderIcon(icon),\n\t\t\t\t\t\t\t\t'\\u00a0',\n\t\t\t\t\t\t\t\titem.name,\n\t\t\t\t\t\t\t\t...(i === outlineItems.length - 1\n\t\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t\t: [renderIcon(Codicon.chevronRight)]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tchildren.push(n.div({ class: 'outline-elements', style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, outlineElements));\n\n\t\t\t\t\t// Show Edit Direction\n\t\t\t\t\tconst arrowIcon = viewState.hint.lineNumber < originalTargetLineNumber ? Codicon.arrowDown : Codicon.arrowUp;\n\t\t\t\t\tconst keybinding = this._keybindingService.lookupKeybinding(jumpToNextInlineEditId);\n\t\t\t\t\tlet label = 'Go to suggestion';\n\t\t\t\t\tif (keybinding && keybinding.getLabel() === 'Tab') {\n\t\t\t\t\t\tlabel = 'Tab to jump';\n\t\t\t\t\t}\n\t\t\t\t\tchildren.push(n.div({\n\t\t\t\t\t\tclass: 'go-to-label',\n\t\t\t\t\t\tstyle: { position: 'relative', display: 'flex', alignItems: 'center', flex: '0 0 auto', paddingLeft: '6px' },\n\t\t\t\t\t}, [\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t'\\u00a0',\n\t\t\t\t\t\trenderIcon(arrowIcon),\n\t\t\t\t\t]));\n\n\t\t\t\t\treturn children;\n\t\t\t\t})\n\t\t\t]),\n\t\t])\n\t);\n\n\t// Drives breadcrumbs and symbol icon\n\tprivate readonly _originalTargetLineNumber = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\tif (!viewState) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (viewState.edit.action?.kind === 'jumpTo') {\n\t\t\treturn viewState.edit.action.position.lineNumber;\n\t\t}\n\n\t\treturn viewState.diff[0]?.original.startLineNumber ?? -1;\n\t});\n\n\tprivate readonly _originalOutlineSource = derivedDisposable(this, (reader) => {\n\t\tconst m = this._editorObs.model.read(reader);\n\t\tconst factory = HideUnchangedRegionsFeature._breadcrumbsSourceFactory.read(reader);\n\t\treturn (!m || !factory) ? undefined : factory(m, this._instantiationService);\n\t});\n}\n\nexport interface ILongDistanceHint {\n\tlineNumber: number;\n\tisVisible: boolean;\n}\n\nexport interface ILongDistanceViewState {\n\thint: ILongDistanceHint;\n\tnewTextLineCount: number;\n\tedit: InlineEditWithChanges;\n\tdiff: DetailedLineRangeMapping[];\n\tnextCursorPosition: Position | null;\n\n\tmodel: SimpleInlineSuggestModel;\n\tinlineSuggestInfo: InlineSuggestionGutterMenuData;\n}\n\nfunction lengthsToOffsetRanges(lengths: number[], initialOffset = 0): OffsetRange[] {\n\tconst result: OffsetRange[] = [];\n\tlet offset = initialOffset;\n\tfor (const length of lengths) {\n\t\tresult.push(new OffsetRange(offset, offset + length));\n\t\toffset += length;\n\t}\n\treturn result;\n}\n\nfunction stackSizesDown(at: Point, sizes: Size2D[], alignment: 'left' | 'right' = 'left'): Rect[] {\n\tconst rects: Rect[] = [];\n\tlet offset = 0;\n\tfor (const s of sizes) {\n\t\trects.push(\n\t\t\tRect.fromLeftTopWidthHeight(\n\t\t\t\tat.x + (alignment === 'left' ? 0 : -s.width),\n\t\t\t\tat.y + offset,\n\t\t\t\ts.width,\n\t\t\t\ts.height\n\t\t\t)\n\t\t);\n\t\toffset += s.height;\n\t}\n\treturn rects;\n}\n\n\n/**\n * Changes the scroll position as little as possible just to reveal the given range in the window.\n*/\nexport function scrollToReveal(currentScrollPosition: number, windowWidth: number, contentRangeToReveal: OffsetRange): { newScrollPosition: number } {\n\tconst visibleRange = new OffsetRange(currentScrollPosition, currentScrollPosition + windowWidth);\n\tif (visibleRange.containsRange(contentRangeToReveal)) {\n\t\treturn { newScrollPosition: currentScrollPosition };\n\t}\n\tif (contentRangeToReveal.length > windowWidth) {\n\t\treturn { newScrollPosition: contentRangeToReveal.start };\n\t}\n\tif (contentRangeToReveal.endExclusive > visibleRange.endExclusive) {\n\t\treturn { newScrollPosition: contentRangeToReveal.endExclusive - windowWidth };\n\t}\n\tif (contentRangeToReveal.start < visibleRange.start) {\n\t\treturn { newScrollPosition: contentRangeToReveal.start };\n\t}\n\treturn { newScrollPosition: currentScrollPosition };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.ts","vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.ts"],"names":[],"mappings":"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","file":"inlineEditsLongDistanceHint.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 *--------------------------------------------------------------------------------------------*/\nimport { ChildNode, n, ObserverNode, ObserverNodeWithElement } from '../../../../../../../../base/browser/dom.js';\nimport { Event } from '../../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../../base/common/lifecycle.js';\nimport { IObservable, autorun, constObservable, debouncedObservable2, derived, derivedDisposable, observableFromEvent } from '../../../../../../../../base/common/observable.js';\nimport { IInstantiationService } from '../../../../../../../../platform/instantiation/common/instantiation.js';\nimport { ICodeEditor } from '../../../../../../../browser/editorBrowser.js';\nimport { observableCodeEditor } from '../../../../../../../browser/observableCodeEditor.js';\nimport { Rect } from '../../../../../../../common/core/2d/rect.js';\nimport { Position } from '../../../../../../../common/core/position.js';\nimport { ITextModel } from '../../../../../../../common/model.js';\nimport { IInlineEditsView, InlineEditTabAction } from '../../inlineEditsViewInterface.js';\nimport { InlineEditWithChanges } from '../../inlineEditWithChanges.js';\nimport { getContentSizeOfLines, rectToProps } from '../../utils/utils.js';\nimport { DetailedLineRangeMapping } from '../../../../../../../common/diff/rangeMapping.js';\nimport { OffsetRange } from '../../../../../../../common/core/ranges/offsetRange.js';\nimport { LineRange } from '../../../../../../../common/core/ranges/lineRange.js';\nimport { HideUnchangedRegionsFeature } from '../../../../../../../browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js';\nimport { Codicon } from '../../../../../../../../base/common/codicons.js';\nimport { renderIcon } from '../../../../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { SymbolKinds } from '../../../../../../../common/languages.js';\nimport { debugLogRects, debugView } from '../debugVisualization.js';\nimport { distributeFlexBoxLayout } from '../../utils/flexBoxLayout.js';\nimport { Point } from '../../../../../../../common/core/2d/point.js';\nimport { Size2D } from '../../../../../../../common/core/2d/size.js';\nimport { IThemeService } from '../../../../../../../../platform/theme/common/themeService.js';\nimport { IKeybindingService } from '../../../../../../../../platform/keybinding/common/keybinding.js';\nimport { getEditorBackgroundColor, getEditorBlendedColor, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorSecondaryBackground, inlineEditIndicatorSuccessfulBackground, observeColor } from '../../theme.js';\nimport { asCssVariable, descriptionForeground, editorWidgetBackground } from '../../../../../../../../platform/theme/common/colorRegistry.js';\nimport { editorWidgetBorder } from '../../../../../../../../platform/theme/common/colors/editorColors.js';\nimport { ILongDistancePreviewProps, LongDistancePreviewEditor } from './longDistancePreviewEditor.js';\nimport { InlineSuggestionGutterMenuData, SimpleInlineSuggestModel } from '../../components/gutterIndicatorView.js';\nimport { jumpToNextInlineEditId } from '../../../../controller/commandIds.js';\nimport { splitIntoContinuousLineRanges, WidgetLayoutConstants, WidgetOutline, WidgetPlacementContext } from './longDistnaceWidgetPlacement.js';\nimport { InlineCompletionEditorType } from '../../../../model/provideInlineCompletions.js';\n\nconst BORDER_RADIUS = 6;\nconst MAX_WIDGET_WIDTH = { EMPTY_SPACE: 425, OVERLAY: 375 };\nconst MIN_WIDGET_WIDTH = 250;\n\nconst DEFAULT_WIDGET_LAYOUT_CONSTANTS: WidgetLayoutConstants = {\n\tpreviewEditorMargin: 2,\n\twidgetPadding: 2,\n\twidgetBorder: 1,\n\tlowerBarHeight: 20,\n\tminWidgetWidth: MIN_WIDGET_WIDTH,\n};\n\nexport class InlineEditsLongDistanceHint extends Disposable implements IInlineEditsView {\n\n\tprivate readonly _editorObs;\n\treadonly onDidClick = Event.None;\n\tprivate _viewWithElement: ObserverNodeWithElement<HTMLDivElement> | undefined = undefined;\n\n\tprivate readonly _previewEditor;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _viewState: IObservable<ILongDistanceViewState | undefined>,\n\t\tprivate readonly _previewTextModel: ITextModel,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t) {\n\t\tsuper();\n\n\t\tthis._styles = derived(reader => {\n\t\t\tconst v = this._tabAction.read(reader);\n\n\t\t\t// Check theme type by observing a color - this ensures we react to theme changes\n\t\t\tconst widgetBorderColor = observeColor(editorWidgetBorder, this._themeService).read(reader);\n\t\t\tconst isHighContrast = observableFromEvent(this._themeService.onDidColorThemeChange, () => {\n\t\t\t\tconst theme = this._themeService.getColorTheme();\n\t\t\t\treturn theme.type === 'hcDark' || theme.type === 'hcLight';\n\t\t\t}).read(reader);\n\n\t\t\tlet borderColor;\n\t\t\tif (isHighContrast) {\n\t\t\t\t// Use editorWidgetBorder in high contrast mode for better visibility\n\t\t\t\tborderColor = widgetBorderColor;\n\t\t\t} else {\n\t\t\t\tlet border;\n\t\t\t\tswitch (v) {\n\t\t\t\t\tcase InlineEditTabAction.Inactive: border = inlineEditIndicatorSecondaryBackground; break;\n\t\t\t\t\tcase InlineEditTabAction.Jump: border = inlineEditIndicatorPrimaryBackground; break;\n\t\t\t\t\tcase InlineEditTabAction.Accept: border = inlineEditIndicatorSuccessfulBackground; break;\n\t\t\t\t}\n\t\t\t\tborderColor = getEditorBlendedColor(border, this._themeService).read(reader);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tborder: borderColor.toString(),\n\t\t\t\tbackground: getEditorBackgroundColor(this._viewState.map(s => s?.editorType ?? InlineCompletionEditorType.TextEditor).read(reader)),\n\t\t\t};\n\t\t});\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tthis._previewEditor = this._register(\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\tLongDistancePreviewEditor,\n\t\t\t\tthis._previewTextModel,\n\t\t\t\tderived(reader => {\n\t\t\t\t\tconst viewState = this._viewState.read(reader);\n\t\t\t\t\tif (!viewState) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdiff: viewState.diff,\n\t\t\t\t\t\tmodel: viewState.model,\n\t\t\t\t\t\tinlineSuggestInfo: viewState.inlineSuggestInfo,\n\t\t\t\t\t\tnextCursorPosition: viewState.nextCursorPosition,\n\t\t\t\t\t} satisfies ILongDistancePreviewProps;\n\t\t\t\t}),\n\t\t\t\tthis._editor,\n\t\t\t\tthis._tabAction,\n\t\t\t)\n\t\t);\n\n\t\tthis._viewWithElement = this._view.keepUpdated(this._store);\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._viewWithElement.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: constObservable(0),\n\t\t}));\n\n\t\tthis._widgetContent.get().keepUpdated(this._store);\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst layoutInfo = this._previewEditorLayoutInfo.read(reader);\n\t\t\tif (!layoutInfo) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._previewEditor.layout(layoutInfo.codeEditorSize.toDimension(), layoutInfo.desiredPreviewEditorScrollLeft);\n\t\t}));\n\n\t\tthis._isVisibleDelayed.recomputeInitiallyAndOnChange(this._store);\n\t}\n\n\tprivate readonly _styles;\n\n\tpublic get isHovered() { return this._widgetContent.get().didMouseMoveDuringHover; }\n\n\tprivate readonly _hintTextPosition = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\treturn viewState ? new Position(viewState.hint.lineNumber, Number.MAX_SAFE_INTEGER) : null;\n\t});\n\n\tprivate readonly _lineSizesAroundHintPosition = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\tconst p = this._hintTextPosition.read(reader);\n\t\tif (!viewState || !p) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst model = this._editorObs.model.read(reader);\n\t\tif (!model) {\n\t\t\treturn [];\n\t\t}\n\t\tconst range = LineRange.ofLength(p.lineNumber, 1).addMargin(5, 5).intersect(LineRange.ofLength(1, model.getLineCount()));\n\n\t\tif (!range) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst sizes = getContentSizeOfLines(this._editorObs, range, reader);\n\t\tconst top = this._editorObs.observeTopForLineNumber(range.startLineNumber).read(reader);\n\n\t\treturn splitIntoContinuousLineRanges(range, sizes, top, this._editorObs, reader);\n\t});\n\n\tprivate readonly _isVisibleDelayed = debouncedObservable2(\n\t\tderived(this, reader => this._viewState.read(reader)?.hint.isVisible),\n\t\t(lastValue, newValue) => lastValue === true && newValue === false ? 200 : 0,\n\t);\n\n\tprivate readonly _previewEditorLayoutInfo = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\n\t\tif (!viewState || !this._isVisibleDelayed.read(reader)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst continousLineRanges = this._lineSizesAroundHintPosition.read(reader);\n\t\tif (continousLineRanges.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst editorScrollTop = this._editorObs.scrollTop.read(reader);\n\t\tconst editorScrollLeft = this._editorObs.scrollLeft.read(reader);\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\n\t\tconst previewContentHeight = this._previewEditor.contentHeight.read(reader);\n\t\tconst previewEditorContentLayout = this._previewEditor.horizontalContentRangeInPreviewEditorToShow.read(reader);\n\n\t\tif (!previewContentHeight || !previewEditorContentLayout) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// const debugRects = stackSizesDown(new Point(editorLayout.contentLeft, lineSizes.top - scrollTop), lineSizes.sizes);\n\n\t\tconst editorTrueContentWidth = editorLayout.contentWidth - editorLayout.verticalScrollbarWidth;\n\t\tconst editorTrueContentRight = editorLayout.contentLeft + editorTrueContentWidth;\n\n\t\t// drawEditorWidths(this._editor, reader);\n\n\t\tconst c = this._editorObs.cursorLineNumber.read(reader);\n\t\tif (!c) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst layoutConstants = DEFAULT_WIDGET_LAYOUT_CONSTANTS;\n\t\tconst extraGutterMarginToAvoidScrollBar = 2;\n\t\tconst previewEditorHeight = previewContentHeight + extraGutterMarginToAvoidScrollBar;\n\n\t\t// Try to find widget placement in available empty space\n\t\tlet possibleWidgetOutline: WidgetOutline | undefined;\n\t\tlet lastPlacementContext: WidgetPlacementContext | undefined;\n\n\t\tconst endOfLinePadding = (lineNumber: number) => lineNumber === viewState.hint.lineNumber ? 40 : 20;\n\n\t\tfor (const continousLineRange of continousLineRanges) {\n\t\t\tconst placementContext = new WidgetPlacementContext(\n\t\t\t\tcontinousLineRange,\n\t\t\t\teditorTrueContentWidth,\n\t\t\t\tendOfLinePadding\n\t\t\t);\n\t\t\tlastPlacementContext = placementContext;\n\n\t\t\tconst showRects = false;\n\t\t\tif (showRects) {\n\t\t\t\tconst rects2 = stackSizesDown(\n\t\t\t\t\tnew Point(editorTrueContentRight, continousLineRange.top - editorScrollTop),\n\t\t\t\t\tplacementContext.availableSpaceSizes as Size2D[],\n\t\t\t\t\t'right'\n\t\t\t\t);\n\t\t\t\tdebugView(debugLogRects({ ...rects2 }, this._editor.getDomNode()!), reader);\n\t\t\t}\n\n\t\t\tpossibleWidgetOutline = placementContext.tryFindWidgetOutline(\n\t\t\t\tviewState.hint.lineNumber,\n\t\t\t\tpreviewEditorHeight,\n\t\t\t\teditorTrueContentRight,\n\t\t\t\tlayoutConstants\n\t\t\t);\n\n\t\t\tif (possibleWidgetOutline) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to overlay position if no empty space was found\n\t\tlet position: 'overlay' | 'empty-space' = 'empty-space';\n\t\tif (!possibleWidgetOutline) {\n\t\t\tposition = 'overlay';\n\t\t\tconst maxAvailableWidth = Math.min(editorLayout.width - editorLayout.contentLeft, MAX_WIDGET_WIDTH.OVERLAY);\n\n\t\t\t// Create a fallback placement context for computing overlay vertical position\n\t\t\tconst fallbackPlacementContext = lastPlacementContext ?? new WidgetPlacementContext(\n\t\t\t\tcontinousLineRanges[0],\n\t\t\t\teditorTrueContentWidth,\n\t\t\t\tendOfLinePadding,\n\t\t\t);\n\n\t\t\tpossibleWidgetOutline = {\n\t\t\t\thorizontalWidgetRange: OffsetRange.ofStartAndLength(editorTrueContentRight - maxAvailableWidth, maxAvailableWidth),\n\t\t\t\tverticalWidgetRange: fallbackPlacementContext.getWidgetVerticalOutline(\n\t\t\t\t\tviewState.hint.lineNumber + 2,\n\t\t\t\t\tpreviewEditorHeight,\n\t\t\t\t\tlayoutConstants\n\t\t\t\t).delta(10),\n\t\t\t};\n\t\t}\n\n\t\tif (!possibleWidgetOutline) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst rectAvailableSpace = Rect.fromRanges(\n\t\t\tpossibleWidgetOutline.horizontalWidgetRange,\n\t\t\tpossibleWidgetOutline.verticalWidgetRange\n\t\t).translateX(-editorScrollLeft).translateY(-editorScrollTop);\n\n\t\tconst showAvailableSpace = false;\n\t\tif (showAvailableSpace) {\n\t\t\tdebugView(debugLogRects({ rectAvailableSpace }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst { previewEditorMargin, widgetPadding, widgetBorder, lowerBarHeight } = layoutConstants;\n\t\tconst maxWidgetWidth = Math.min(position === 'overlay' ? MAX_WIDGET_WIDTH.OVERLAY : MAX_WIDGET_WIDTH.EMPTY_SPACE, previewEditorContentLayout.maxEditorWidth + previewEditorMargin + widgetPadding);\n\n\t\tconst layout = distributeFlexBoxLayout(rectAvailableSpace.width, {\n\t\t\tspaceBefore: { min: 0, max: 10, priority: 1 },\n\t\t\tcontent: { min: 50, rules: [{ max: 150, priority: 2 }, { max: maxWidgetWidth, priority: 1 }] },\n\t\t\tspaceAfter: { min: 10 },\n\t\t});\n\n\t\tif (!layout) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst ranges = lengthsToOffsetRanges([layout.spaceBefore, layout.content, layout.spaceAfter], rectAvailableSpace.left);\n\t\tconst spaceBeforeRect = rectAvailableSpace.withHorizontalRange(ranges[0]);\n\t\tconst widgetRect = rectAvailableSpace.withHorizontalRange(ranges[1]);\n\t\tconst spaceAfterRect = rectAvailableSpace.withHorizontalRange(ranges[2]);\n\n\t\tconst showRects2 = false;\n\t\tif (showRects2) {\n\t\t\tdebugView(debugLogRects({ spaceBeforeRect, widgetRect, spaceAfterRect }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst previewEditorRect = widgetRect.withMargin(-widgetPadding - widgetBorder - previewEditorMargin).withMargin(0, 0, -lowerBarHeight, 0);\n\n\t\tconst showEditorRect = false;\n\t\tif (showEditorRect) {\n\t\t\tdebugView(debugLogRects({ previewEditorRect }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst previewEditorContentWidth = previewEditorRect.width - previewEditorContentLayout.nonContentWidth;\n\t\tconst maxPrefferedRangeLength = previewEditorContentWidth * 0.8;\n\t\tconst preferredRangeToReveal = previewEditorContentLayout.preferredRangeToReveal.intersect(OffsetRange.ofStartAndLength(\n\t\t\tpreviewEditorContentLayout.preferredRangeToReveal.start,\n\t\t\tmaxPrefferedRangeLength\n\t\t)) ?? previewEditorContentLayout.preferredRangeToReveal;\n\t\tconst desiredPreviewEditorScrollLeft = scrollToReveal(previewEditorContentLayout.indentationEnd, previewEditorContentWidth, preferredRangeToReveal);\n\n\t\treturn {\n\t\t\tcodeEditorSize: previewEditorRect.getSize(),\n\t\t\tcodeScrollLeft: editorScrollLeft,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\n\t\t\twidgetRect,\n\n\t\t\tpreviewEditorMargin,\n\t\t\twidgetPadding,\n\t\t\twidgetBorder,\n\n\t\t\tlowerBarHeight,\n\n\t\t\tdesiredPreviewEditorScrollLeft: desiredPreviewEditorScrollLeft.newScrollPosition,\n\t\t};\n\t});\n\n\tprivate readonly _view = n.div({\n\t\tclass: 'inline-edits-view',\n\t\tstyle: {\n\t\t\tposition: 'absolute',\n\t\t\toverflow: 'visible',\n\t\t\ttop: '0px',\n\t\t\tleft: '0px',\n\t\t\tdisplay: derived(this, reader => !!this._previewEditorLayoutInfo.read(reader) ? 'block' : 'none'),\n\t\t},\n\t}, [\n\t\tderived(this, _reader => [this._widgetContent]),\n\t]);\n\n\tprivate readonly _widgetContent = derived(this, reader => // TODO@hediet: remove when n.div lazily creates previewEditor.element node\n\t\tn.div({\n\t\t\tclass: 'inline-edits-long-distance-hint-widget',\n\t\t\tstyle: {\n\t\t\t\tposition: 'absolute',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\tcursor: 'pointer',\n\t\t\t\tbackground: asCssVariable(editorWidgetBackground),\n\t\t\t\tpadding: this._previewEditorLayoutInfo.map(i => i?.widgetPadding),\n\t\t\t\tboxSizing: 'border-box',\n\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\tborder: derived(reader => `${this._previewEditorLayoutInfo.read(reader)?.widgetBorder}px solid ${this._styles.read(reader).border}`),\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\topacity: derived(reader => this._viewState.read(reader)?.hint.isVisible ? '1' : '0'),\n\t\t\t\ttransition: 'opacity 200ms ease-in-out',\n\t\t\t\t...rectToProps(reader => this._previewEditorLayoutInfo.read(reader)?.widgetRect)\n\t\t\t},\n\t\t\tonmousedown: e => {\n\t\t\t\te.preventDefault(); // This prevents that the editor loses focus\n\t\t\t},\n\t\t\tonclick: () => {\n\t\t\t\tthis._viewState.read(undefined)?.model.jump();\n\t\t\t}\n\t\t}, [\n\t\t\tn.div({\n\t\t\t\tclass: ['editorContainer'],\n\t\t\t\tstyle: {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tpadding: this._previewEditorLayoutInfo.map(i => i?.previewEditorMargin),\n\t\t\t\t\tbackground: this._styles.map(s => s.background),\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t},\n\t\t\t}, [\n\t\t\t\tderived(this, r => this._previewEditor.element), // --\n\t\t\t]),\n\t\t\tn.div({ class: 'bar', style: { color: asCssVariable(descriptionForeground), pointerEvents: 'none', margin: '0 4px', height: this._previewEditorLayoutInfo.map(i => i?.lowerBarHeight), display: 'flex', justifyContent: 'space-between', alignItems: 'center' } }, [\n\t\t\t\tderived(this, reader => {\n\t\t\t\t\tconst children: (HTMLElement | ObserverNode<HTMLDivElement>)[] = [];\n\t\t\t\t\tconst viewState = this._viewState.read(reader);\n\t\t\t\t\tif (!viewState) {\n\t\t\t\t\t\treturn children;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Outline Element\n\t\t\t\t\tconst source = this._originalOutlineSource.read(reader);\n\t\t\t\t\tconst originalTargetLineNumber = this._originalTargetLineNumber.read(reader);\n\t\t\t\t\tconst outlineItems = source?.getAt(originalTargetLineNumber, reader).slice(0, 1) ?? [];\n\t\t\t\t\tconst outlineElements: ChildNode[] = [];\n\t\t\t\t\tif (outlineItems.length > 0) {\n\t\t\t\t\t\tfor (let i = 0; i < outlineItems.length; i++) {\n\t\t\t\t\t\t\tconst item = outlineItems[i];\n\t\t\t\t\t\t\tconst icon = SymbolKinds.toIcon(item.kind);\n\t\t\t\t\t\t\toutlineElements.push(n.div({\n\t\t\t\t\t\t\t\tclass: 'breadcrumb-item',\n\t\t\t\t\t\t\t\tstyle: { display: 'flex', alignItems: 'center', flex: '1 1 auto', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' },\n\t\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\trenderIcon(icon),\n\t\t\t\t\t\t\t\t'\\u00a0',\n\t\t\t\t\t\t\t\titem.name,\n\t\t\t\t\t\t\t\t...(i === outlineItems.length - 1\n\t\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t\t: [renderIcon(Codicon.chevronRight)]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tchildren.push(n.div({ class: 'outline-elements', style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, outlineElements));\n\n\t\t\t\t\t// Show Edit Direction\n\t\t\t\t\tconst arrowIcon = viewState.hint.lineNumber < originalTargetLineNumber ? Codicon.arrowDown : Codicon.arrowUp;\n\t\t\t\t\tconst keybinding = this._keybindingService.lookupKeybinding(jumpToNextInlineEditId);\n\t\t\t\t\tlet label = 'Go to suggestion';\n\t\t\t\t\tif (keybinding && keybinding.getLabel() === 'Tab') {\n\t\t\t\t\t\tlabel = 'Tab to jump';\n\t\t\t\t\t}\n\t\t\t\t\tchildren.push(n.div({\n\t\t\t\t\t\tclass: 'go-to-label',\n\t\t\t\t\t\tstyle: { position: 'relative', display: 'flex', alignItems: 'center', flex: '0 0 auto', paddingLeft: '6px' },\n\t\t\t\t\t}, [\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t'\\u00a0',\n\t\t\t\t\t\trenderIcon(arrowIcon),\n\t\t\t\t\t]));\n\n\t\t\t\t\treturn children;\n\t\t\t\t})\n\t\t\t]),\n\t\t])\n\t);\n\n\t// Drives breadcrumbs and symbol icon\n\tprivate readonly _originalTargetLineNumber = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\tif (!viewState) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (viewState.edit.action?.kind === 'jumpTo') {\n\t\t\treturn viewState.edit.action.position.lineNumber;\n\t\t}\n\n\t\treturn viewState.diff[0]?.original.startLineNumber ?? -1;\n\t});\n\n\tprivate readonly _originalOutlineSource = derivedDisposable(this, (reader) => {\n\t\tconst m = this._editorObs.model.read(reader);\n\t\tconst factory = HideUnchangedRegionsFeature._breadcrumbsSourceFactory.read(reader);\n\t\treturn (!m || !factory) ? undefined : factory(m, this._instantiationService);\n\t});\n}\n\nexport interface ILongDistanceHint {\n\tlineNumber: number;\n\tisVisible: boolean;\n}\n\nexport interface ILongDistanceViewState {\n\thint: ILongDistanceHint;\n\tnewTextLineCount: number;\n\tedit: InlineEditWithChanges;\n\tdiff: DetailedLineRangeMapping[];\n\tnextCursorPosition: Position | null;\n\teditorType: InlineCompletionEditorType;\n\n\tmodel: SimpleInlineSuggestModel;\n\tinlineSuggestInfo: InlineSuggestionGutterMenuData;\n}\n\nfunction lengthsToOffsetRanges(lengths: number[], initialOffset = 0): OffsetRange[] {\n\tconst result: OffsetRange[] = [];\n\tlet offset = initialOffset;\n\tfor (const length of lengths) {\n\t\tresult.push(new OffsetRange(offset, offset + length));\n\t\toffset += length;\n\t}\n\treturn result;\n}\n\nfunction stackSizesDown(at: Point, sizes: Size2D[], alignment: 'left' | 'right' = 'left'): Rect[] {\n\tconst rects: Rect[] = [];\n\tlet offset = 0;\n\tfor (const s of sizes) {\n\t\trects.push(\n\t\t\tRect.fromLeftTopWidthHeight(\n\t\t\t\tat.x + (alignment === 'left' ? 0 : -s.width),\n\t\t\t\tat.y + offset,\n\t\t\t\ts.width,\n\t\t\t\ts.height\n\t\t\t)\n\t\t);\n\t\toffset += s.height;\n\t}\n\treturn rects;\n}\n\n\n/**\n * Changes the scroll position as little as possible just to reveal the given range in the window.\n*/\nexport function scrollToReveal(currentScrollPosition: number, windowWidth: number, contentRangeToReveal: OffsetRange): { newScrollPosition: number } {\n\tconst visibleRange = new OffsetRange(currentScrollPosition, currentScrollPosition + windowWidth);\n\tif (visibleRange.containsRange(contentRangeToReveal)) {\n\t\treturn { newScrollPosition: currentScrollPosition };\n\t}\n\tif (contentRangeToReveal.length > windowWidth) {\n\t\treturn { newScrollPosition: contentRangeToReveal.start };\n\t}\n\tif (contentRangeToReveal.endExclusive > visibleRange.endExclusive) {\n\t\treturn { newScrollPosition: contentRangeToReveal.endExclusive - windowWidth };\n\t}\n\tif (contentRangeToReveal.start < visibleRange.start) {\n\t\treturn { newScrollPosition: contentRangeToReveal.start };\n\t}\n\treturn { newScrollPosition: currentScrollPosition };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { ChildNode, n, ObserverNode, ObserverNodeWithElement } from '../../../../../../../../base/browser/dom.js';\nimport { Event } from '../../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../../base/common/lifecycle.js';\nimport { IObservable, autorun, constObservable, debouncedObservable2, derived, derivedDisposable, observableFromEvent } from '../../../../../../../../base/common/observable.js';\nimport { IInstantiationService } from '../../../../../../../../platform/instantiation/common/instantiation.js';\nimport { ICodeEditor } from '../../../../../../../browser/editorBrowser.js';\nimport { observableCodeEditor } from '../../../../../../../browser/observableCodeEditor.js';\nimport { Rect } from '../../../../../../../common/core/2d/rect.js';\nimport { Position } from '../../../../../../../common/core/position.js';\nimport { ITextModel } from '../../../../../../../common/model.js';\nimport { IInlineEditsView, InlineEditTabAction } from '../../inlineEditsViewInterface.js';\nimport { InlineEditWithChanges } from '../../inlineEditWithChanges.js';\nimport { getContentSizeOfLines, rectToProps } from '../../utils/utils.js';\nimport { DetailedLineRangeMapping } from '../../../../../../../common/diff/rangeMapping.js';\nimport { OffsetRange } from '../../../../../../../common/core/ranges/offsetRange.js';\nimport { LineRange } from '../../../../../../../common/core/ranges/lineRange.js';\nimport { HideUnchangedRegionsFeature } from '../../../../../../../browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js';\nimport { Codicon } from '../../../../../../../../base/common/codicons.js';\nimport { renderIcon } from '../../../../../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport { SymbolKinds } from '../../../../../../../common/languages.js';\nimport { debugLogRects, debugView } from '../debugVisualization.js';\nimport { distributeFlexBoxLayout } from '../../utils/flexBoxLayout.js';\nimport { Point } from '../../../../../../../common/core/2d/point.js';\nimport { Size2D } from '../../../../../../../common/core/2d/size.js';\nimport { IThemeService } from '../../../../../../../../platform/theme/common/themeService.js';\nimport { IKeybindingService } from '../../../../../../../../platform/keybinding/common/keybinding.js';\nimport { getEditorBackgroundColor, getEditorBlendedColor, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorSecondaryBackground, inlineEditIndicatorSuccessfulBackground, observeColor } from '../../theme.js';\nimport { asCssVariable, descriptionForeground, editorWidgetBackground } from '../../../../../../../../platform/theme/common/colorRegistry.js';\nimport { editorWidgetBorder } from '../../../../../../../../platform/theme/common/colors/editorColors.js';\nimport { ILongDistancePreviewProps, LongDistancePreviewEditor } from './longDistancePreviewEditor.js';\nimport { InlineSuggestionGutterMenuData, SimpleInlineSuggestModel } from '../../components/gutterIndicatorView.js';\nimport { jumpToNextInlineEditId } from '../../../../controller/commandIds.js';\nimport { splitIntoContinuousLineRanges, WidgetLayoutConstants, WidgetOutline, WidgetPlacementContext } from './longDistnaceWidgetPlacement.js';\nimport { InlineCompletionEditorType } from '../../../../model/provideInlineCompletions.js';\n\nconst BORDER_RADIUS = 6;\nconst MAX_WIDGET_WIDTH = { EMPTY_SPACE: 425, OVERLAY: 375 };\nconst MIN_WIDGET_WIDTH = 250;\n\nconst DEFAULT_WIDGET_LAYOUT_CONSTANTS: WidgetLayoutConstants = {\n\tpreviewEditorMargin: 2,\n\twidgetPadding: 2,\n\twidgetBorder: 1,\n\tlowerBarHeight: 20,\n\tminWidgetWidth: MIN_WIDGET_WIDTH,\n};\n\nexport class InlineEditsLongDistanceHint extends Disposable implements IInlineEditsView {\n\n\tprivate readonly _editorObs;\n\treadonly onDidClick = Event.None;\n\tprivate _viewWithElement: ObserverNodeWithElement<HTMLDivElement> | undefined = undefined;\n\n\tprivate readonly _previewEditor;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _viewState: IObservable<ILongDistanceViewState | undefined>,\n\t\tprivate readonly _previewTextModel: ITextModel,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IThemeService private readonly _themeService: IThemeService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t) {\n\t\tsuper();\n\n\t\tthis._styles = derived(reader => {\n\t\t\tconst v = this._tabAction.read(reader);\n\n\t\t\t// Check theme type by observing a color - this ensures we react to theme changes\n\t\t\tconst widgetBorderColor = observeColor(editorWidgetBorder, this._themeService).read(reader);\n\t\t\tconst isHighContrast = observableFromEvent(this._themeService.onDidColorThemeChange, () => {\n\t\t\t\tconst theme = this._themeService.getColorTheme();\n\t\t\t\treturn theme.type === 'hcDark' || theme.type === 'hcLight';\n\t\t\t}).read(reader);\n\n\t\t\tlet borderColor;\n\t\t\tif (isHighContrast) {\n\t\t\t\t// Use editorWidgetBorder in high contrast mode for better visibility\n\t\t\t\tborderColor = widgetBorderColor;\n\t\t\t} else {\n\t\t\t\tlet border;\n\t\t\t\tswitch (v) {\n\t\t\t\t\tcase InlineEditTabAction.Inactive: border = inlineEditIndicatorSecondaryBackground; break;\n\t\t\t\t\tcase InlineEditTabAction.Jump: border = inlineEditIndicatorPrimaryBackground; break;\n\t\t\t\t\tcase InlineEditTabAction.Accept: border = inlineEditIndicatorSuccessfulBackground; break;\n\t\t\t\t}\n\t\t\t\tborderColor = getEditorBlendedColor(border, this._themeService).read(reader);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tborder: borderColor.toString(),\n\t\t\t\tbackground: getEditorBackgroundColor(this._viewState.map(s => s?.editorType ?? InlineCompletionEditorType.TextEditor).read(reader)),\n\t\t\t};\n\t\t});\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tthis._previewEditor = this._register(\n\t\t\tthis._instantiationService.createInstance(\n\t\t\t\tLongDistancePreviewEditor,\n\t\t\t\tthis._previewTextModel,\n\t\t\t\tderived(reader => {\n\t\t\t\t\tconst viewState = this._viewState.read(reader);\n\t\t\t\t\tif (!viewState) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdiff: viewState.diff,\n\t\t\t\t\t\tmodel: viewState.model,\n\t\t\t\t\t\tinlineSuggestInfo: viewState.inlineSuggestInfo,\n\t\t\t\t\t\tnextCursorPosition: viewState.nextCursorPosition,\n\t\t\t\t\t} satisfies ILongDistancePreviewProps;\n\t\t\t\t}),\n\t\t\t\tthis._editor,\n\t\t\t\tthis._tabAction,\n\t\t\t)\n\t\t);\n\n\t\tthis._viewWithElement = this._view.keepUpdated(this._store);\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._viewWithElement.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: constObservable(0),\n\t\t}));\n\n\t\tthis._widgetContent.get().keepUpdated(this._store);\n\n\t\tthis._register(autorun(reader => {\n\t\t\tconst layoutInfo = this._previewEditorLayoutInfo.read(reader);\n\t\t\tif (!layoutInfo) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._previewEditor.layout(layoutInfo.codeEditorSize.toDimension(), layoutInfo.desiredPreviewEditorScrollLeft);\n\t\t}));\n\n\t\tthis._isVisibleDelayed.recomputeInitiallyAndOnChange(this._store);\n\t}\n\n\tprivate readonly _styles;\n\n\tpublic get isHovered() { return this._widgetContent.get().didMouseMoveDuringHover; }\n\n\tprivate readonly _hintTextPosition = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\treturn viewState ? new Position(viewState.hint.lineNumber, Number.MAX_SAFE_INTEGER) : null;\n\t});\n\n\tprivate readonly _lineSizesAroundHintPosition = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\tconst p = this._hintTextPosition.read(reader);\n\t\tif (!viewState || !p) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst model = this._editorObs.model.read(reader);\n\t\tif (!model) {\n\t\t\treturn [];\n\t\t}\n\t\tconst range = LineRange.ofLength(p.lineNumber, 1).addMargin(5, 5).intersect(LineRange.ofLength(1, model.getLineCount()));\n\n\t\tif (!range) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst sizes = getContentSizeOfLines(this._editorObs, range, reader);\n\t\tconst top = this._editorObs.observeTopForLineNumber(range.startLineNumber).read(reader);\n\n\t\treturn splitIntoContinuousLineRanges(range, sizes, top, this._editorObs, reader);\n\t});\n\n\tprivate readonly _isVisibleDelayed = debouncedObservable2(\n\t\tderived(this, reader => this._viewState.read(reader)?.hint.isVisible),\n\t\t(lastValue, newValue) => lastValue === true && newValue === false ? 200 : 0,\n\t);\n\n\tprivate readonly _previewEditorLayoutInfo = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\n\t\tif (!viewState || !this._isVisibleDelayed.read(reader)) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst continousLineRanges = this._lineSizesAroundHintPosition.read(reader);\n\t\tif (continousLineRanges.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst editorScrollTop = this._editorObs.scrollTop.read(reader);\n\t\tconst editorScrollLeft = this._editorObs.scrollLeft.read(reader);\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\n\t\tconst previewContentHeight = this._previewEditor.contentHeight.read(reader);\n\t\tconst previewEditorContentLayout = this._previewEditor.horizontalContentRangeInPreviewEditorToShow.read(reader);\n\n\t\tif (!previewContentHeight || !previewEditorContentLayout) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// const debugRects = stackSizesDown(new Point(editorLayout.contentLeft, lineSizes.top - scrollTop), lineSizes.sizes);\n\n\t\tconst editorTrueContentWidth = editorLayout.contentWidth - editorLayout.verticalScrollbarWidth;\n\t\tconst editorTrueContentRight = editorLayout.contentLeft + editorTrueContentWidth;\n\n\t\t// drawEditorWidths(this._editor, reader);\n\n\t\tconst c = this._editorObs.cursorLineNumber.read(reader);\n\t\tif (!c) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst layoutConstants = DEFAULT_WIDGET_LAYOUT_CONSTANTS;\n\t\tconst extraGutterMarginToAvoidScrollBar = 2;\n\t\tconst previewEditorHeight = previewContentHeight + extraGutterMarginToAvoidScrollBar;\n\n\t\t// Try to find widget placement in available empty space\n\t\tlet possibleWidgetOutline: WidgetOutline | undefined;\n\t\tlet lastPlacementContext: WidgetPlacementContext | undefined;\n\n\t\tconst endOfLinePadding = (lineNumber: number) => lineNumber === viewState.hint.lineNumber ? 40 : 20;\n\n\t\tfor (const continousLineRange of continousLineRanges) {\n\t\t\tconst placementContext = new WidgetPlacementContext(\n\t\t\t\tcontinousLineRange,\n\t\t\t\teditorTrueContentWidth,\n\t\t\t\tendOfLinePadding\n\t\t\t);\n\t\t\tlastPlacementContext = placementContext;\n\n\t\t\tconst showRects = false;\n\t\t\tif (showRects) {\n\t\t\t\tconst rects2 = stackSizesDown(\n\t\t\t\t\tnew Point(editorTrueContentRight, continousLineRange.top - editorScrollTop),\n\t\t\t\t\tplacementContext.availableSpaceSizes as Size2D[],\n\t\t\t\t\t'right'\n\t\t\t\t);\n\t\t\t\tdebugView(debugLogRects({ ...rects2 }, this._editor.getDomNode()!), reader);\n\t\t\t}\n\n\t\t\tpossibleWidgetOutline = placementContext.tryFindWidgetOutline(\n\t\t\t\tviewState.hint.lineNumber,\n\t\t\t\tpreviewEditorHeight,\n\t\t\t\teditorTrueContentRight,\n\t\t\t\tlayoutConstants\n\t\t\t);\n\n\t\t\tif (possibleWidgetOutline) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to overlay position if no empty space was found\n\t\tlet position: 'overlay' | 'empty-space' = 'empty-space';\n\t\tif (!possibleWidgetOutline) {\n\t\t\tposition = 'overlay';\n\t\t\tconst maxAvailableWidth = Math.min(editorLayout.width - editorLayout.contentLeft, MAX_WIDGET_WIDTH.OVERLAY);\n\n\t\t\t// Create a fallback placement context for computing overlay vertical position\n\t\t\tconst fallbackPlacementContext = lastPlacementContext ?? new WidgetPlacementContext(\n\t\t\t\tcontinousLineRanges[0],\n\t\t\t\teditorTrueContentWidth,\n\t\t\t\tendOfLinePadding,\n\t\t\t);\n\n\t\t\tpossibleWidgetOutline = {\n\t\t\t\thorizontalWidgetRange: OffsetRange.ofStartAndLength(editorTrueContentRight - maxAvailableWidth, maxAvailableWidth),\n\t\t\t\tverticalWidgetRange: fallbackPlacementContext.getWidgetVerticalOutline(\n\t\t\t\t\tviewState.hint.lineNumber + 2,\n\t\t\t\t\tpreviewEditorHeight,\n\t\t\t\t\tlayoutConstants\n\t\t\t\t).delta(10),\n\t\t\t};\n\t\t}\n\n\t\tif (!possibleWidgetOutline) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst rectAvailableSpace = Rect.fromRanges(\n\t\t\tpossibleWidgetOutline.horizontalWidgetRange,\n\t\t\tpossibleWidgetOutline.verticalWidgetRange\n\t\t).translateX(-editorScrollLeft).translateY(-editorScrollTop);\n\n\t\tconst showAvailableSpace = false;\n\t\tif (showAvailableSpace) {\n\t\t\tdebugView(debugLogRects({ rectAvailableSpace }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst { previewEditorMargin, widgetPadding, widgetBorder, lowerBarHeight } = layoutConstants;\n\t\tconst maxWidgetWidth = Math.min(position === 'overlay' ? MAX_WIDGET_WIDTH.OVERLAY : MAX_WIDGET_WIDTH.EMPTY_SPACE, previewEditorContentLayout.maxEditorWidth + previewEditorMargin + widgetPadding);\n\n\t\tconst layout = distributeFlexBoxLayout(rectAvailableSpace.width, {\n\t\t\tspaceBefore: { min: 0, max: 10, priority: 1 },\n\t\t\tcontent: { min: 50, rules: [{ max: 150, priority: 2 }, { max: maxWidgetWidth, priority: 1 }] },\n\t\t\tspaceAfter: { min: 10 },\n\t\t});\n\n\t\tif (!layout) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst ranges = lengthsToOffsetRanges([layout.spaceBefore, layout.content, layout.spaceAfter], rectAvailableSpace.left);\n\t\tconst spaceBeforeRect = rectAvailableSpace.withHorizontalRange(ranges[0]);\n\t\tconst widgetRect = rectAvailableSpace.withHorizontalRange(ranges[1]);\n\t\tconst spaceAfterRect = rectAvailableSpace.withHorizontalRange(ranges[2]);\n\n\t\tconst showRects2 = false;\n\t\tif (showRects2) {\n\t\t\tdebugView(debugLogRects({ spaceBeforeRect, widgetRect, spaceAfterRect }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst previewEditorRect = widgetRect.withMargin(-widgetPadding - widgetBorder - previewEditorMargin).withMargin(0, 0, -lowerBarHeight, 0);\n\n\t\tconst showEditorRect = false;\n\t\tif (showEditorRect) {\n\t\t\tdebugView(debugLogRects({ previewEditorRect }, this._editor.getDomNode()!), reader);\n\t\t}\n\n\t\tconst previewEditorContentWidth = previewEditorRect.width - previewEditorContentLayout.nonContentWidth;\n\t\tconst maxPrefferedRangeLength = previewEditorContentWidth * 0.8;\n\t\tconst preferredRangeToReveal = previewEditorContentLayout.preferredRangeToReveal.intersect(OffsetRange.ofStartAndLength(\n\t\t\tpreviewEditorContentLayout.preferredRangeToReveal.start,\n\t\t\tmaxPrefferedRangeLength\n\t\t)) ?? previewEditorContentLayout.preferredRangeToReveal;\n\t\tconst desiredPreviewEditorScrollLeft = scrollToReveal(previewEditorContentLayout.indentationEnd, previewEditorContentWidth, preferredRangeToReveal);\n\n\t\treturn {\n\t\t\tcodeEditorSize: previewEditorRect.getSize(),\n\t\t\tcodeScrollLeft: editorScrollLeft,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\n\t\t\twidgetRect,\n\n\t\t\tpreviewEditorMargin,\n\t\t\twidgetPadding,\n\t\t\twidgetBorder,\n\n\t\t\tlowerBarHeight,\n\n\t\t\tdesiredPreviewEditorScrollLeft: desiredPreviewEditorScrollLeft.newScrollPosition,\n\t\t};\n\t});\n\n\tprivate readonly _view = n.div({\n\t\tclass: 'inline-edits-view',\n\t\tstyle: {\n\t\t\tposition: 'absolute',\n\t\t\toverflow: 'visible',\n\t\t\ttop: '0px',\n\t\t\tleft: '0px',\n\t\t\tdisplay: derived(this, reader => !!this._previewEditorLayoutInfo.read(reader) ? 'block' : 'none'),\n\t\t},\n\t}, [\n\t\tderived(this, _reader => [this._widgetContent]),\n\t]);\n\n\tprivate readonly _widgetContent = derived(this, reader => // TODO@hediet: remove when n.div lazily creates previewEditor.element node\n\t\tn.div({\n\t\t\tclass: 'inline-edits-long-distance-hint-widget',\n\t\t\tstyle: {\n\t\t\t\tposition: 'absolute',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\tcursor: 'pointer',\n\t\t\t\tbackground: asCssVariable(editorWidgetBackground),\n\t\t\t\tpadding: this._previewEditorLayoutInfo.map(i => i?.widgetPadding),\n\t\t\t\tboxSizing: 'border-box',\n\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\tborder: derived(reader => `${this._previewEditorLayoutInfo.read(reader)?.widgetBorder}px solid ${this._styles.read(reader).border}`),\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tflexDirection: 'column',\n\t\t\t\topacity: derived(reader => this._viewState.read(reader)?.hint.isVisible ? '1' : '0'),\n\t\t\t\ttransition: 'opacity 200ms ease-in-out',\n\t\t\t\t...rectToProps(reader => this._previewEditorLayoutInfo.read(reader)?.widgetRect)\n\t\t\t},\n\t\t\tonmousedown: e => {\n\t\t\t\te.preventDefault(); // This prevents that the editor loses focus\n\t\t\t},\n\t\t\tonclick: () => {\n\t\t\t\tthis._viewState.read(undefined)?.model.jump();\n\t\t\t}\n\t\t}, [\n\t\t\tn.div({\n\t\t\t\tclass: ['editorContainer'],\n\t\t\t\tstyle: {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tpadding: this._previewEditorLayoutInfo.map(i => i?.previewEditorMargin),\n\t\t\t\t\tbackground: this._styles.map(s => s.background),\n\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t},\n\t\t\t}, [\n\t\t\t\tderived(this, r => this._previewEditor.element), // --\n\t\t\t]),\n\t\t\tn.div({ class: 'bar', style: { color: asCssVariable(descriptionForeground), pointerEvents: 'none', margin: '0 4px', height: this._previewEditorLayoutInfo.map(i => i?.lowerBarHeight), display: 'flex', justifyContent: 'space-between', alignItems: 'center' } }, [\n\t\t\t\tderived(this, reader => {\n\t\t\t\t\tconst children: (HTMLElement | ObserverNode<HTMLDivElement>)[] = [];\n\t\t\t\t\tconst viewState = this._viewState.read(reader);\n\t\t\t\t\tif (!viewState) {\n\t\t\t\t\t\treturn children;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Outline Element\n\t\t\t\t\tconst source = this._originalOutlineSource.read(reader);\n\t\t\t\t\tconst originalTargetLineNumber = this._originalTargetLineNumber.read(reader);\n\t\t\t\t\tconst outlineItems = source?.getAt(originalTargetLineNumber, reader).slice(0, 1) ?? [];\n\t\t\t\t\tconst outlineElements: ChildNode[] = [];\n\t\t\t\t\tif (outlineItems.length > 0) {\n\t\t\t\t\t\tfor (let i = 0; i < outlineItems.length; i++) {\n\t\t\t\t\t\t\tconst item = outlineItems[i];\n\t\t\t\t\t\t\tconst icon = SymbolKinds.toIcon(item.kind);\n\t\t\t\t\t\t\toutlineElements.push(n.div({\n\t\t\t\t\t\t\t\tclass: 'breadcrumb-item',\n\t\t\t\t\t\t\t\tstyle: { display: 'flex', alignItems: 'center', flex: '1 1 auto', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' },\n\t\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\trenderIcon(icon),\n\t\t\t\t\t\t\t\t'\\u00a0',\n\t\t\t\t\t\t\t\titem.name,\n\t\t\t\t\t\t\t\t...(i === outlineItems.length - 1\n\t\t\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t\t\t: [renderIcon(Codicon.chevronRight)]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tchildren.push(n.div({ class: 'outline-elements', style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, outlineElements));\n\n\t\t\t\t\t// Show Edit Direction\n\t\t\t\t\tconst arrowIcon = viewState.hint.lineNumber < originalTargetLineNumber ? Codicon.arrowDown : Codicon.arrowUp;\n\t\t\t\t\tconst keybinding = this._keybindingService.lookupKeybinding(jumpToNextInlineEditId);\n\t\t\t\t\tlet label = 'Go to suggestion';\n\t\t\t\t\tif (keybinding && keybinding.getLabel() === 'Tab') {\n\t\t\t\t\t\tlabel = 'Tab to jump';\n\t\t\t\t\t}\n\t\t\t\t\tchildren.push(n.div({\n\t\t\t\t\t\tclass: 'go-to-label',\n\t\t\t\t\t\tstyle: { position: 'relative', display: 'flex', alignItems: 'center', flex: '0 0 auto', paddingLeft: '6px' },\n\t\t\t\t\t}, [\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t'\\u00a0',\n\t\t\t\t\t\trenderIcon(arrowIcon),\n\t\t\t\t\t]));\n\n\t\t\t\t\treturn children;\n\t\t\t\t})\n\t\t\t]),\n\t\t])\n\t);\n\n\t// Drives breadcrumbs and symbol icon\n\tprivate readonly _originalTargetLineNumber = derived(this, (reader) => {\n\t\tconst viewState = this._viewState.read(reader);\n\t\tif (!viewState) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (viewState.edit.action?.kind === 'jumpTo') {\n\t\t\treturn viewState.edit.action.position.lineNumber;\n\t\t}\n\n\t\treturn viewState.diff[0]?.original.startLineNumber ?? -1;\n\t});\n\n\tprivate readonly _originalOutlineSource = derivedDisposable(this, (reader) => {\n\t\tconst m = this._editorObs.model.read(reader);\n\t\tconst factory = HideUnchangedRegionsFeature._breadcrumbsSourceFactory.read(reader);\n\t\treturn (!m || !factory) ? undefined : factory(m, this._instantiationService);\n\t});\n}\n\nexport interface ILongDistanceHint {\n\tlineNumber: number;\n\tisVisible: boolean;\n}\n\nexport interface ILongDistanceViewState {\n\thint: ILongDistanceHint;\n\tnewTextLineCount: number;\n\tedit: InlineEditWithChanges;\n\tdiff: DetailedLineRangeMapping[];\n\tnextCursorPosition: Position | null;\n\teditorType: InlineCompletionEditorType;\n\n\tmodel: SimpleInlineSuggestModel;\n\tinlineSuggestInfo: InlineSuggestionGutterMenuData;\n}\n\nfunction lengthsToOffsetRanges(lengths: number[], initialOffset = 0): OffsetRange[] {\n\tconst result: OffsetRange[] = [];\n\tlet offset = initialOffset;\n\tfor (const length of lengths) {\n\t\tresult.push(new OffsetRange(offset, offset + length));\n\t\toffset += length;\n\t}\n\treturn result;\n}\n\nfunction stackSizesDown(at: Point, sizes: Size2D[], alignment: 'left' | 'right' = 'left'): Rect[] {\n\tconst rects: Rect[] = [];\n\tlet offset = 0;\n\tfor (const s of sizes) {\n\t\trects.push(\n\t\t\tRect.fromLeftTopWidthHeight(\n\t\t\t\tat.x + (alignment === 'left' ? 0 : -s.width),\n\t\t\t\tat.y + offset,\n\t\t\t\ts.width,\n\t\t\t\ts.height\n\t\t\t)\n\t\t);\n\t\toffset += s.height;\n\t}\n\treturn rects;\n}\n\n\n/**\n * Changes the scroll position as little as possible just to reveal the given range in the window.\n*/\nexport function scrollToReveal(currentScrollPosition: number, windowWidth: number, contentRangeToReveal: OffsetRange): { newScrollPosition: number } {\n\tconst visibleRange = new OffsetRange(currentScrollPosition, currentScrollPosition + windowWidth);\n\tif (visibleRange.containsRange(contentRangeToReveal)) {\n\t\treturn { newScrollPosition: currentScrollPosition };\n\t}\n\tif (contentRangeToReveal.length > windowWidth) {\n\t\treturn { newScrollPosition: contentRangeToReveal.start };\n\t}\n\tif (contentRangeToReveal.endExclusive > visibleRange.endExclusive) {\n\t\treturn { newScrollPosition: contentRangeToReveal.endExclusive - windowWidth };\n\t}\n\tif (contentRangeToReveal.start < visibleRange.start) {\n\t\treturn { newScrollPosition: contentRangeToReveal.start };\n\t}\n\treturn { newScrollPosition: currentScrollPosition };\n}\n"]}
|
|
@@ -13,6 +13,7 @@ import { InjectedTextCursorStops } from '../../../../../../common/model.js';
|
|
|
13
13
|
import { ModelDecorationOptions } from '../../../../../../common/model/textModel.js';
|
|
14
14
|
import { InlineEditClickEvent } from '../inlineEditsViewInterface.js';
|
|
15
15
|
import { classNames } from '../utils/utils.js';
|
|
16
|
+
import { InlineCompletionEditorType } from '../../../model/provideInlineCompletions.js';
|
|
16
17
|
export class OriginalEditorInlineDiffView extends Disposable {
|
|
17
18
|
constructor(_originalEditor, _state, _modifiedTextModel) {
|
|
18
19
|
super();
|
|
@@ -162,7 +163,7 @@ export class OriginalEditorInlineDiffView extends Disposable {
|
|
|
162
163
|
}
|
|
163
164
|
}
|
|
164
165
|
}
|
|
165
|
-
if (diff.
|
|
166
|
+
if (diff.editorType === InlineCompletionEditorType.DiffEditor) {
|
|
166
167
|
for (const m of diff.diff) {
|
|
167
168
|
if (!m.original.isEmpty) {
|
|
168
169
|
originalDecorations.push({
|