monaco-editor-core 0.56.0-dev-20251125 → 0.56.0-dev-20251217
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 +30 -4
- package/esm/vs/base/browser/dom.js +1 -4
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/markdownRenderer.js +25 -11
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/ui/button/button.js +15 -8
- package/esm/vs/base/browser/ui/button/button.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css +3 -8
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/list/list.css +1 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +11 -2
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/defaultAccount.js +6 -0
- package/esm/vs/base/common/defaultAccount.js.map +1 -0
- package/esm/vs/base/common/equals.js +73 -24
- package/esm/vs/base/common/equals.js.map +1 -1
- package/esm/vs/base/common/event.js +14 -4
- package/esm/vs/base/common/event.js.map +1 -1
- package/esm/vs/base/common/iterator.js.map +1 -1
- package/esm/vs/base/common/keybindings.js +0 -8
- package/esm/vs/base/common/keybindings.js.map +1 -1
- package/esm/vs/base/common/lifecycle.js +2 -2
- package/esm/vs/base/common/lifecycle.js.map +1 -1
- package/esm/vs/base/common/marshallingIds.js.map +1 -1
- package/esm/vs/base/common/observableInternal/index.js +1 -1
- package/esm/vs/base/common/observableInternal/index.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
- package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
- package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
- package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
- package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
- package/esm/vs/base/common/product.js.map +1 -1
- package/esm/vs/base/common/strings.js +3 -1
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
- package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
- package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
- package/esm/vs/editor/browser/view.js +11 -2
- package/esm/vs/editor/browser/view.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +5 -2
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +10 -0
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +48 -0
- package/esm/vs/editor/common/config/fontInfo.js +1 -1
- package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
- package/esm/vs/editor/common/core/edits/edit.js +19 -0
- package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
- package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
- package/esm/vs/editor/common/core/edits/textEdit.js +0 -3
- package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
- package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
- package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
- package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
- package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js +2 -2
- package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js.map +1 -1
- package/esm/vs/editor/common/languages/nullTokenize.js +1 -1
- package/esm/vs/editor/common/languages/nullTokenize.js.map +1 -1
- package/esm/vs/editor/common/languages/supports/tokenization.js +3 -0
- package/esm/vs/editor/common/languages/supports/tokenization.js.map +1 -1
- package/esm/vs/editor/common/languages.js +2 -1
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/model/decorationProvider.js +21 -1
- package/esm/vs/editor/common/model/decorationProvider.js.map +1 -1
- package/esm/vs/editor/common/model/textModel.js +49 -30
- package/esm/vs/editor/common/model/textModel.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js +6 -3
- package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/annotations.js +177 -0
- package/esm/vs/editor/common/model/tokens/annotations.js.map +1 -0
- package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +131 -0
- package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -0
- package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js +9 -0
- package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js.map +1 -1
- package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js +9 -0
- package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js.map +1 -1
- package/esm/vs/editor/common/textModelEditSource.js +2 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/textModelEvents.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/lineDecorations.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +54 -36
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +14 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
- package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +1 -0
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +33 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +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/inlineCompletions.contribution.js +2 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -70
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +59 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +152 -95
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +113 -54
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +317 -75
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
- 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 +81 -41
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -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 +4 -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 +4 -3
- 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 +8 -8
- 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 +9 -7
- 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 +203 -41
- 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/jumpToView.js +189 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
- 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/longDistanceHint/longDistancePreviewEditor.js +75 -32
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
- 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 +22 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.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 +32 -32
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
- 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 +19 -15
- package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
- package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
- 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/stickyScroll/browser/stickyScrollController.js +12 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
- package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +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 +19 -2
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +34 -3
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
- package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
- package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
- 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/actions.js +11 -5
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- 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/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
- package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
- 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/instantiation/common/instantiation.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +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/log/common/log.js +1 -1
- package/esm/vs/platform/log/common/log.js.map +1 -1
- package/esm/vs/platform/markers/common/markerService.js +6 -6
- package/esm/vs/platform/markers/common/markerService.js.map +1 -1
- 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/media/quickInput.css +7 -3
- package/esm/vs/platform/quickinput/browser/quickInput.js +19 -11
- 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 +6 -6
- package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
- package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
- 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 +13 -13
- package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
- 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 +21 -21
- package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
- package/esm/vs/platform/window/common/window.js +1 -1
- package/esm/vs/platform/window/common/window.js.map +1 -1
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +34 -3
- package/package.json +2 -2
- package/version.txt +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
- package/esm/vs/platform/product/common/productService.js.map +0 -1
|
@@ -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/inlineEditsDeletionView.ts","vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.ts"],"names":[],"mappings":"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","file":"inlineEditsDeletionView.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 { n } from '../../../../../../../base/browser/dom.js';\nimport { IMouseEvent } from '../../../../../../../base/browser/mouseEvent.js';\nimport { Emitter } from '../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../base/common/lifecycle.js';\nimport { constObservable, derived, derivedObservableWithCache, IObservable } from '../../../../../../../base/common/observable.js';\nimport { editorBackground } from '../../../../../../../platform/theme/common/colorRegistry.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { ICodeEditor } from '../../../../../../browser/editorBrowser.js';\nimport { ObservableCodeEditor, observableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { EditorOption } from '../../../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../../../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../../../../../../common/core/ranges/offsetRange.js';\nimport { Position } from '../../../../../../common/core/position.js';\nimport { Range } from '../../../../../../common/core/range.js';\nimport { IInlineEditsView, InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { InlineEditWithChanges } from '../inlineEditWithChanges.js';\nimport { getOriginalBorderColor, originalBackgroundColor } from '../theme.js';\nimport { getPrefixTrim, mapOutFalsy, maxContentWidthInRange } from '../utils/utils.js';\n\nconst HORIZONTAL_PADDING = 0;\nconst VERTICAL_PADDING = 0;\nconst BORDER_WIDTH = 1;\nconst WIDGET_SEPARATOR_WIDTH = 1;\nconst WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH = 3;\nconst BORDER_RADIUS = 4;\n\nexport class InlineEditsDeletionView extends Disposable implements IInlineEditsView {\n\n\tprivate readonly _onDidClick = this._register(new Emitter<IMouseEvent>());\n\treadonly onDidClick = this._onDidClick.event;\n\n\tprivate readonly _editorObs: ObservableCodeEditor;\n\n\tprivate readonly _originalVerticalStartPosition: IObservable<number | undefined>;\n\tprivate readonly _originalVerticalEndPosition: IObservable<number | undefined>;\n\n\tprivate readonly _originalDisplayRange: IObservable<LineRange | undefined>;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _edit: IObservable<InlineEditWithChanges | undefined>,\n\t\tprivate readonly _uiState: IObservable<{\n\t\t\toriginalRange: LineRange;\n\t\t\tdeletions: Range[];\n\t\t\tinDiffEditor: boolean;\n\t\t} | undefined>,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t) {\n\t\tsuper();\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tconst originalStartPosition = derived(this, (reader) => {\n\t\t\tconst inlineEdit = this._edit.read(reader);\n\t\t\treturn inlineEdit ? new Position(inlineEdit.originalLineRange.startLineNumber, 1) : null;\n\t\t});\n\n\t\tconst originalEndPosition = derived(this, (reader) => {\n\t\t\tconst inlineEdit = this._edit.read(reader);\n\t\t\treturn inlineEdit ? new Position(inlineEdit.originalLineRange.endLineNumberExclusive, 1) : null;\n\t\t});\n\n\t\tthis._originalDisplayRange = this._uiState.map(s => s?.originalRange);\n\t\tthis._originalVerticalStartPosition = this._editorObs.observePosition(originalStartPosition, this._store).map(p => p?.y);\n\t\tthis._originalVerticalEndPosition = this._editorObs.observePosition(originalEndPosition, this._store).map(p => p?.y);\n\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._nonOverflowView.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: derived(this, reader => {\n\t\t\t\tconst info = this._editorLayoutInfo.read(reader);\n\t\t\t\tif (info === null) { return 0; }\n\t\t\t\treturn info.codeRect.width;\n\t\t\t}),\n\t\t}));\n\t}\n\n\tprivate readonly _display = derived(this, reader => !!this._uiState.read(reader) ? 'block' : 'none');\n\n\tprivate readonly _editorMaxContentWidthInRange = derived(this, reader => {\n\t\tconst originalDisplayRange = this._originalDisplayRange.read(reader);\n\t\tif (!originalDisplayRange) {\n\t\t\treturn constObservable(0);\n\t\t}\n\t\tthis._editorObs.versionId.read(reader);\n\n\t\t// Take the max value that we observed.\n\t\t// Reset when either the edit changes or the editor text version.\n\t\treturn derivedObservableWithCache<number>(this, (reader, lastValue) => {\n\t\t\tconst maxWidth = maxContentWidthInRange(this._editorObs, originalDisplayRange, reader);\n\t\t\treturn Math.max(maxWidth, lastValue ?? 0);\n\t\t});\n\t}).map((v, r) => v.read(r));\n\n\tprivate readonly _maxPrefixTrim = derived(this, reader => {\n\t\tconst state = this._uiState.read(reader);\n\t\tif (!state) {\n\t\t\treturn { prefixTrim: 0, prefixLeftOffset: 0 };\n\t\t}\n\t\treturn getPrefixTrim(state.deletions, state.originalRange, [], this._editor);\n\t});\n\n\tprivate readonly _editorLayoutInfo = derived(this, (reader) => {\n\t\tconst inlineEdit = this._edit.read(reader);\n\t\tif (!inlineEdit) {\n\t\t\treturn null;\n\t\t}\n\t\tconst state = this._uiState.read(reader);\n\t\tif (!state) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\t\tconst horizontalScrollOffset = this._editorObs.scrollLeft.read(reader);\n\t\tconst w = this._editorObs.getOption(EditorOption.fontInfo).map(f => f.typicalHalfwidthCharacterWidth).read(reader);\n\n\t\tconst right = editorLayout.contentLeft + Math.max(this._editorMaxContentWidthInRange.read(reader), w) - horizontalScrollOffset;\n\n\t\tconst range = inlineEdit.originalLineRange;\n\t\tconst selectionTop = this._originalVerticalStartPosition.read(reader) ?? this._editor.getTopForLineNumber(range.startLineNumber) - this._editorObs.scrollTop.read(reader);\n\t\tconst selectionBottom = this._originalVerticalEndPosition.read(reader) ?? this._editor.getTopForLineNumber(range.endLineNumberExclusive) - this._editorObs.scrollTop.read(reader);\n\n\t\tconst left = editorLayout.contentLeft + this._maxPrefixTrim.read(reader).prefixLeftOffset - horizontalScrollOffset;\n\n\t\tif (right <= left) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst codeRect = Rect.fromLeftTopRightBottom(left, selectionTop, right, selectionBottom).withMargin(VERTICAL_PADDING, HORIZONTAL_PADDING);\n\n\t\treturn {\n\t\t\tcodeRect,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\t\t};\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tprivate readonly _originalOverlay = n.div({\n\t\tstyle: { pointerEvents: 'none', }\n\t}, derived(this, reader => {\n\t\tconst layoutInfoObs = mapOutFalsy(this._editorLayoutInfo).read(reader);\n\t\tif (!layoutInfoObs) { return undefined; }\n\n\t\t// Create an overlay which hides the left hand side of the original overlay when it overflows to the left\n\t\t// such that there is a smooth transition at the edge of content left\n\t\tconst overlayhider = layoutInfoObs.map(layoutInfo => Rect.fromLeftTopRightBottom(\n\t\t\tlayoutInfo.contentLeft - BORDER_RADIUS - BORDER_WIDTH,\n\t\t\tlayoutInfo.codeRect.top,\n\t\t\tlayoutInfo.contentLeft,\n\t\t\tlayoutInfo.codeRect.bottom\n\t\t));\n\n\t\tconst overlayRect = derived(this, reader => {\n\t\t\tconst rect = layoutInfoObs.read(reader).codeRect;\n\t\t\tconst overlayHider = overlayhider.read(reader);\n\t\t\treturn rect.intersectHorizontal(new OffsetRange(overlayHider.left, Number.MAX_SAFE_INTEGER));\n\t\t});\n\n\t\tconst separatorWidth = this._uiState.map(s => s?.inDiffEditor ? WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH : WIDGET_SEPARATOR_WIDTH).read(reader);\n\t\tconst separatorRect = overlayRect.map(rect => rect.withMargin(separatorWidth, separatorWidth));\n\n\t\treturn [\n\t\t\tn.div({\n\t\t\t\tclass: 'originalSeparatorDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...separatorRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: `${BORDER_RADIUS}px`,\n\t\t\t\t\tborder: `${BORDER_WIDTH + separatorWidth}px solid ${asCssVariable(editorBackground)}`,\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: `${BORDER_RADIUS}px`,\n\t\t\t\t\tborder: getOriginalBorderColor(this._tabAction).map(bc => `${BORDER_WIDTH}px solid ${asCssVariable(bc)}`),\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\tbackgroundColor: asCssVariable(originalBackgroundColor),\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayHiderDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayhider.read(reader).toStyles(),\n\t\t\t\t\tbackgroundColor: asCssVariable(editorBackground),\n\t\t\t\t}\n\t\t\t})\n\t\t];\n\t})).keepUpdated(this._store);\n\n\tprivate readonly _nonOverflowView = 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: this._display,\n\t\t},\n\t}, [\n\t\t[this._originalOverlay],\n\t]).keepUpdated(this._store);\n\n\treadonly isHovered = constObservable(false);\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 { n } from '../../../../../../../base/browser/dom.js';\nimport { IMouseEvent } from '../../../../../../../base/browser/mouseEvent.js';\nimport { Emitter } from '../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../base/common/lifecycle.js';\nimport { constObservable, derived, derivedObservableWithCache, IObservable } from '../../../../../../../base/common/observable.js';\nimport { editorBackground } from '../../../../../../../platform/theme/common/colorRegistry.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { ICodeEditor } from '../../../../../../browser/editorBrowser.js';\nimport { ObservableCodeEditor, observableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { EditorOption } from '../../../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../../../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../../../../../../common/core/ranges/offsetRange.js';\nimport { Position } from '../../../../../../common/core/position.js';\nimport { Range } from '../../../../../../common/core/range.js';\nimport { IInlineEditsView, InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { InlineEditWithChanges } from '../inlineEditWithChanges.js';\nimport { getOriginalBorderColor, originalBackgroundColor } from '../theme.js';\nimport { getPrefixTrim, mapOutFalsy, maxContentWidthInRange } from '../utils/utils.js';\n\nconst HORIZONTAL_PADDING = 0;\nconst VERTICAL_PADDING = 0;\nconst BORDER_WIDTH = 1;\nconst WIDGET_SEPARATOR_WIDTH = 1;\nconst WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH = 3;\nconst BORDER_RADIUS = 4;\n\nexport class InlineEditsDeletionView extends Disposable implements IInlineEditsView {\n\n\tprivate readonly _onDidClick = this._register(new Emitter<IMouseEvent>());\n\treadonly onDidClick = this._onDidClick.event;\n\n\tprivate readonly _editorObs: ObservableCodeEditor;\n\n\tprivate readonly _originalVerticalStartPosition: IObservable<number | undefined>;\n\tprivate readonly _originalVerticalEndPosition: IObservable<number | undefined>;\n\n\tprivate readonly _originalDisplayRange: IObservable<LineRange | undefined>;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _edit: IObservable<InlineEditWithChanges | undefined>,\n\t\tprivate readonly _uiState: IObservable<{\n\t\t\toriginalRange: LineRange;\n\t\t\tdeletions: Range[];\n\t\t\tinDiffEditor: boolean;\n\t\t} | undefined>,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t) {\n\t\tsuper();\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tconst originalStartPosition = derived(this, (reader) => {\n\t\t\tconst inlineEdit = this._edit.read(reader);\n\t\t\treturn inlineEdit ? new Position(inlineEdit.originalLineRange.startLineNumber, 1) : null;\n\t\t});\n\n\t\tconst originalEndPosition = derived(this, (reader) => {\n\t\t\tconst inlineEdit = this._edit.read(reader);\n\t\t\treturn inlineEdit ? new Position(inlineEdit.originalLineRange.endLineNumberExclusive, 1) : null;\n\t\t});\n\n\t\tthis._originalDisplayRange = this._uiState.map(s => s?.originalRange);\n\t\tthis._originalVerticalStartPosition = this._editorObs.observePosition(originalStartPosition, this._store).map(p => p?.y);\n\t\tthis._originalVerticalEndPosition = this._editorObs.observePosition(originalEndPosition, this._store).map(p => p?.y);\n\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._nonOverflowView.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: derived(this, reader => {\n\t\t\t\tconst info = this._editorLayoutInfo.read(reader);\n\t\t\t\tif (info === null) { return 0; }\n\t\t\t\treturn info.codeRect.width;\n\t\t\t}),\n\t\t}));\n\t}\n\n\tprivate readonly _display = derived(this, reader => !!this._uiState.read(reader) ? 'block' : 'none');\n\n\tprivate readonly _editorMaxContentWidthInRange = derived(this, reader => {\n\t\tconst originalDisplayRange = this._originalDisplayRange.read(reader);\n\t\tif (!originalDisplayRange) {\n\t\t\treturn constObservable(0);\n\t\t}\n\t\tthis._editorObs.versionId.read(reader);\n\n\t\t// Take the max value that we observed.\n\t\t// Reset when either the edit changes or the editor text version.\n\t\treturn derivedObservableWithCache<number>(this, (reader, lastValue) => {\n\t\t\tconst maxWidth = maxContentWidthInRange(this._editorObs, originalDisplayRange, reader);\n\t\t\treturn Math.max(maxWidth, lastValue ?? 0);\n\t\t});\n\t}).map((v, r) => v.read(r));\n\n\tprivate readonly _maxPrefixTrim = derived(this, reader => {\n\t\tconst state = this._uiState.read(reader);\n\t\tif (!state) {\n\t\t\treturn { prefixTrim: 0, prefixLeftOffset: 0 };\n\t\t}\n\t\treturn getPrefixTrim(state.deletions, state.originalRange, [], this._editor);\n\t});\n\n\tprivate readonly _editorLayoutInfo = derived(this, (reader) => {\n\t\tconst inlineEdit = this._edit.read(reader);\n\t\tif (!inlineEdit) {\n\t\t\treturn null;\n\t\t}\n\t\tconst state = this._uiState.read(reader);\n\t\tif (!state) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\t\tconst horizontalScrollOffset = this._editorObs.scrollLeft.read(reader);\n\t\tconst w = this._editorObs.getOption(EditorOption.fontInfo).map(f => f.typicalHalfwidthCharacterWidth).read(reader);\n\n\t\tconst right = editorLayout.contentLeft + Math.max(this._editorMaxContentWidthInRange.read(reader), w) - horizontalScrollOffset;\n\n\t\tconst range = inlineEdit.originalLineRange;\n\t\tconst selectionTop = this._originalVerticalStartPosition.read(reader) ?? this._editor.getTopForLineNumber(range.startLineNumber) - this._editorObs.scrollTop.read(reader);\n\t\tconst selectionBottom = this._originalVerticalEndPosition.read(reader) ?? this._editor.getTopForLineNumber(range.endLineNumberExclusive) - this._editorObs.scrollTop.read(reader);\n\n\t\tconst left = editorLayout.contentLeft + this._maxPrefixTrim.read(reader).prefixLeftOffset - horizontalScrollOffset;\n\n\t\tif (right <= left) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst codeRect = Rect.fromLeftTopRightBottom(left, selectionTop, right, selectionBottom).withMargin(VERTICAL_PADDING, HORIZONTAL_PADDING);\n\n\t\treturn {\n\t\t\tcodeRect,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\t\t};\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tprivate readonly _originalOverlay = n.div({\n\t\tstyle: { pointerEvents: 'none', }\n\t}, derived(this, reader => {\n\t\tconst layoutInfoObs = mapOutFalsy(this._editorLayoutInfo).read(reader);\n\t\tif (!layoutInfoObs) { return undefined; }\n\n\t\t// Create an overlay which hides the left hand side of the original overlay when it overflows to the left\n\t\t// such that there is a smooth transition at the edge of content left\n\t\tconst overlayhider = layoutInfoObs.map(layoutInfo => Rect.fromLeftTopRightBottom(\n\t\t\tlayoutInfo.contentLeft - BORDER_RADIUS - BORDER_WIDTH,\n\t\t\tlayoutInfo.codeRect.top,\n\t\t\tlayoutInfo.contentLeft,\n\t\t\tlayoutInfo.codeRect.bottom\n\t\t));\n\n\t\tconst overlayRect = derived(this, reader => {\n\t\t\tconst rect = layoutInfoObs.read(reader).codeRect;\n\t\t\tconst overlayHider = overlayhider.read(reader);\n\t\t\treturn rect.intersectHorizontal(new OffsetRange(overlayHider.left, Number.MAX_SAFE_INTEGER));\n\t\t});\n\n\t\tconst separatorWidth = this._uiState.map(s => s?.inDiffEditor ? WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH : WIDGET_SEPARATOR_WIDTH).read(reader);\n\t\tconst separatorRect = overlayRect.map(rect => rect.withMargin(separatorWidth, separatorWidth));\n\n\t\treturn [\n\t\t\tn.div({\n\t\t\t\tclass: 'originalSeparatorDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...separatorRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: `${BORDER_RADIUS}px`,\n\t\t\t\t\tborder: `${BORDER_WIDTH + separatorWidth}px solid ${asCssVariable(editorBackground)}`,\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: `${BORDER_RADIUS}px`,\n\t\t\t\t\tborder: getOriginalBorderColor(this._tabAction).map(bc => `${BORDER_WIDTH}px solid ${asCssVariable(bc)}`),\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\tbackgroundColor: asCssVariable(originalBackgroundColor),\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayHiderDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayhider.read(reader).toStyles(),\n\t\t\t\t\tbackgroundColor: asCssVariable(editorBackground),\n\t\t\t\t}\n\t\t\t})\n\t\t];\n\t})).keepUpdated(this._store);\n\n\tprivate readonly _nonOverflowView = 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: this._display,\n\t\t},\n\t}, [\n\t\t[this._originalOverlay],\n\t]).keepUpdated(this._store);\n\n\treadonly isHovered = constObservable(false);\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/inlineEditsDeletionView.ts","vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.ts"],"names":[],"mappings":"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","file":"inlineEditsDeletionView.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 { n } from '../../../../../../../base/browser/dom.js';\nimport { Event } from '../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../base/common/lifecycle.js';\nimport { constObservable, derived, derivedObservableWithCache, IObservable } from '../../../../../../../base/common/observable.js';\nimport { editorBackground } from '../../../../../../../platform/theme/common/colorRegistry.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { ICodeEditor } from '../../../../../../browser/editorBrowser.js';\nimport { ObservableCodeEditor, observableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { EditorOption } from '../../../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../../../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../../../../../../common/core/ranges/offsetRange.js';\nimport { Position } from '../../../../../../common/core/position.js';\nimport { Range } from '../../../../../../common/core/range.js';\nimport { IInlineEditsView, InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { InlineEditWithChanges } from '../inlineEditWithChanges.js';\nimport { getOriginalBorderColor, INLINE_EDITS_BORDER_RADIUS, originalBackgroundColor } from '../theme.js';\nimport { getPrefixTrim, mapOutFalsy, maxContentWidthInRange } from '../utils/utils.js';\n\nconst HORIZONTAL_PADDING = 0;\nconst VERTICAL_PADDING = 0;\nconst BORDER_WIDTH = 1;\nconst WIDGET_SEPARATOR_WIDTH = 1;\nconst WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH = 3;\nconst BORDER_RADIUS = INLINE_EDITS_BORDER_RADIUS;\n\nexport class InlineEditsDeletionView extends Disposable implements IInlineEditsView {\n\n\treadonly onDidClick = Event.None;\n\n\tprivate readonly _editorObs: ObservableCodeEditor;\n\n\tprivate readonly _originalVerticalStartPosition: IObservable<number | undefined>;\n\tprivate readonly _originalVerticalEndPosition: IObservable<number | undefined>;\n\n\tprivate readonly _originalDisplayRange: IObservable<LineRange | undefined>;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _edit: IObservable<InlineEditWithChanges | undefined>,\n\t\tprivate readonly _uiState: IObservable<{\n\t\t\toriginalRange: LineRange;\n\t\t\tdeletions: Range[];\n\t\t\tinDiffEditor: boolean;\n\t\t} | undefined>,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t) {\n\t\tsuper();\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tconst originalStartPosition = derived(this, (reader) => {\n\t\t\tconst inlineEdit = this._edit.read(reader);\n\t\t\treturn inlineEdit ? new Position(inlineEdit.originalLineRange.startLineNumber, 1) : null;\n\t\t});\n\n\t\tconst originalEndPosition = derived(this, (reader) => {\n\t\t\tconst inlineEdit = this._edit.read(reader);\n\t\t\treturn inlineEdit ? new Position(inlineEdit.originalLineRange.endLineNumberExclusive, 1) : null;\n\t\t});\n\n\t\tthis._originalDisplayRange = this._uiState.map(s => s?.originalRange);\n\t\tthis._originalVerticalStartPosition = this._editorObs.observePosition(originalStartPosition, this._store).map(p => p?.y);\n\t\tthis._originalVerticalEndPosition = this._editorObs.observePosition(originalEndPosition, this._store).map(p => p?.y);\n\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._nonOverflowView.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: derived(this, reader => {\n\t\t\t\tconst info = this._editorLayoutInfo.read(reader);\n\t\t\t\tif (info === null) { return 0; }\n\t\t\t\treturn info.codeRect.width;\n\t\t\t}),\n\t\t}));\n\t}\n\n\tprivate readonly _display = derived(this, reader => !!this._uiState.read(reader) ? 'block' : 'none');\n\n\tprivate readonly _editorMaxContentWidthInRange = derived(this, reader => {\n\t\tconst originalDisplayRange = this._originalDisplayRange.read(reader);\n\t\tif (!originalDisplayRange) {\n\t\t\treturn constObservable(0);\n\t\t}\n\t\tthis._editorObs.versionId.read(reader);\n\n\t\t// Take the max value that we observed.\n\t\t// Reset when either the edit changes or the editor text version.\n\t\treturn derivedObservableWithCache<number>(this, (reader, lastValue) => {\n\t\t\tconst maxWidth = maxContentWidthInRange(this._editorObs, originalDisplayRange, reader);\n\t\t\treturn Math.max(maxWidth, lastValue ?? 0);\n\t\t});\n\t}).map((v, r) => v.read(r));\n\n\tprivate readonly _maxPrefixTrim = derived(this, reader => {\n\t\tconst state = this._uiState.read(reader);\n\t\tif (!state) {\n\t\t\treturn { prefixTrim: 0, prefixLeftOffset: 0 };\n\t\t}\n\t\treturn getPrefixTrim(state.deletions, state.originalRange, [], this._editor);\n\t});\n\n\tprivate readonly _editorLayoutInfo = derived(this, (reader) => {\n\t\tconst inlineEdit = this._edit.read(reader);\n\t\tif (!inlineEdit) {\n\t\t\treturn null;\n\t\t}\n\t\tconst state = this._uiState.read(reader);\n\t\tif (!state) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\t\tconst horizontalScrollOffset = this._editorObs.scrollLeft.read(reader);\n\t\tconst w = this._editorObs.getOption(EditorOption.fontInfo).map(f => f.typicalHalfwidthCharacterWidth).read(reader);\n\n\t\tconst right = editorLayout.contentLeft + Math.max(this._editorMaxContentWidthInRange.read(reader), w) - horizontalScrollOffset;\n\n\t\tconst range = inlineEdit.originalLineRange;\n\t\tconst selectionTop = this._originalVerticalStartPosition.read(reader) ?? this._editor.getTopForLineNumber(range.startLineNumber) - this._editorObs.scrollTop.read(reader);\n\t\tconst selectionBottom = this._originalVerticalEndPosition.read(reader) ?? this._editor.getTopForLineNumber(range.endLineNumberExclusive) - this._editorObs.scrollTop.read(reader);\n\n\t\tconst left = editorLayout.contentLeft + this._maxPrefixTrim.read(reader).prefixLeftOffset - horizontalScrollOffset;\n\n\t\tif (right <= left) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst codeRect = Rect.fromLeftTopRightBottom(left, selectionTop, right, selectionBottom).withMargin(VERTICAL_PADDING, HORIZONTAL_PADDING);\n\n\t\treturn {\n\t\t\tcodeRect,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\t\t};\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tprivate readonly _originalOverlay = n.div({\n\t\tstyle: { pointerEvents: 'none', }\n\t}, derived(this, reader => {\n\t\tconst layoutInfoObs = mapOutFalsy(this._editorLayoutInfo).read(reader);\n\t\tif (!layoutInfoObs) { return undefined; }\n\n\t\t// Create an overlay which hides the left hand side of the original overlay when it overflows to the left\n\t\t// such that there is a smooth transition at the edge of content left\n\t\tconst overlayhider = layoutInfoObs.map(layoutInfo => Rect.fromLeftTopRightBottom(\n\t\t\tlayoutInfo.contentLeft - BORDER_RADIUS - BORDER_WIDTH,\n\t\t\tlayoutInfo.codeRect.top,\n\t\t\tlayoutInfo.contentLeft,\n\t\t\tlayoutInfo.codeRect.bottom\n\t\t));\n\n\t\tconst overlayRect = derived(this, reader => {\n\t\t\tconst rect = layoutInfoObs.read(reader).codeRect;\n\t\t\tconst overlayHider = overlayhider.read(reader);\n\t\t\treturn rect.intersectHorizontal(new OffsetRange(overlayHider.left, Number.MAX_SAFE_INTEGER));\n\t\t});\n\n\t\tconst separatorWidth = this._uiState.map(s => s?.inDiffEditor ? WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH : WIDGET_SEPARATOR_WIDTH).read(reader);\n\t\tconst separatorRect = overlayRect.map(rect => rect.withMargin(separatorWidth, separatorWidth));\n\n\t\treturn [\n\t\t\tn.div({\n\t\t\t\tclass: 'originalSeparatorDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...separatorRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: `${BORDER_RADIUS}px`,\n\t\t\t\t\tborder: `${BORDER_WIDTH + separatorWidth}px solid ${asCssVariable(editorBackground)}`,\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: `${BORDER_RADIUS}px`,\n\t\t\t\t\tborder: getOriginalBorderColor(this._tabAction).map(bc => `${BORDER_WIDTH}px solid ${asCssVariable(bc)}`),\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\tbackgroundColor: asCssVariable(originalBackgroundColor),\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayHiderDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayhider.read(reader).toStyles(),\n\t\t\t\t\tbackgroundColor: asCssVariable(editorBackground),\n\t\t\t\t}\n\t\t\t})\n\t\t];\n\t})).keepUpdated(this._store);\n\n\tprivate readonly _nonOverflowView = 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: this._display,\n\t\t},\n\t}, [\n\t\t[this._originalOverlay],\n\t]).keepUpdated(this._store);\n\n\treadonly isHovered = constObservable(false);\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 { n } from '../../../../../../../base/browser/dom.js';\nimport { Event } from '../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../base/common/lifecycle.js';\nimport { constObservable, derived, derivedObservableWithCache, IObservable } from '../../../../../../../base/common/observable.js';\nimport { editorBackground } from '../../../../../../../platform/theme/common/colorRegistry.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { ICodeEditor } from '../../../../../../browser/editorBrowser.js';\nimport { ObservableCodeEditor, observableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { EditorOption } from '../../../../../../common/config/editorOptions.js';\nimport { LineRange } from '../../../../../../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../../../../../../common/core/ranges/offsetRange.js';\nimport { Position } from '../../../../../../common/core/position.js';\nimport { Range } from '../../../../../../common/core/range.js';\nimport { IInlineEditsView, InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { InlineEditWithChanges } from '../inlineEditWithChanges.js';\nimport { getOriginalBorderColor, INLINE_EDITS_BORDER_RADIUS, originalBackgroundColor } from '../theme.js';\nimport { getPrefixTrim, mapOutFalsy, maxContentWidthInRange } from '../utils/utils.js';\n\nconst HORIZONTAL_PADDING = 0;\nconst VERTICAL_PADDING = 0;\nconst BORDER_WIDTH = 1;\nconst WIDGET_SEPARATOR_WIDTH = 1;\nconst WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH = 3;\nconst BORDER_RADIUS = INLINE_EDITS_BORDER_RADIUS;\n\nexport class InlineEditsDeletionView extends Disposable implements IInlineEditsView {\n\n\treadonly onDidClick = Event.None;\n\n\tprivate readonly _editorObs: ObservableCodeEditor;\n\n\tprivate readonly _originalVerticalStartPosition: IObservable<number | undefined>;\n\tprivate readonly _originalVerticalEndPosition: IObservable<number | undefined>;\n\n\tprivate readonly _originalDisplayRange: IObservable<LineRange | undefined>;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _edit: IObservable<InlineEditWithChanges | undefined>,\n\t\tprivate readonly _uiState: IObservable<{\n\t\t\toriginalRange: LineRange;\n\t\t\tdeletions: Range[];\n\t\t\tinDiffEditor: boolean;\n\t\t} | undefined>,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t) {\n\t\tsuper();\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tconst originalStartPosition = derived(this, (reader) => {\n\t\t\tconst inlineEdit = this._edit.read(reader);\n\t\t\treturn inlineEdit ? new Position(inlineEdit.originalLineRange.startLineNumber, 1) : null;\n\t\t});\n\n\t\tconst originalEndPosition = derived(this, (reader) => {\n\t\t\tconst inlineEdit = this._edit.read(reader);\n\t\t\treturn inlineEdit ? new Position(inlineEdit.originalLineRange.endLineNumberExclusive, 1) : null;\n\t\t});\n\n\t\tthis._originalDisplayRange = this._uiState.map(s => s?.originalRange);\n\t\tthis._originalVerticalStartPosition = this._editorObs.observePosition(originalStartPosition, this._store).map(p => p?.y);\n\t\tthis._originalVerticalEndPosition = this._editorObs.observePosition(originalEndPosition, this._store).map(p => p?.y);\n\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._nonOverflowView.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: derived(this, reader => {\n\t\t\t\tconst info = this._editorLayoutInfo.read(reader);\n\t\t\t\tif (info === null) { return 0; }\n\t\t\t\treturn info.codeRect.width;\n\t\t\t}),\n\t\t}));\n\t}\n\n\tprivate readonly _display = derived(this, reader => !!this._uiState.read(reader) ? 'block' : 'none');\n\n\tprivate readonly _editorMaxContentWidthInRange = derived(this, reader => {\n\t\tconst originalDisplayRange = this._originalDisplayRange.read(reader);\n\t\tif (!originalDisplayRange) {\n\t\t\treturn constObservable(0);\n\t\t}\n\t\tthis._editorObs.versionId.read(reader);\n\n\t\t// Take the max value that we observed.\n\t\t// Reset when either the edit changes or the editor text version.\n\t\treturn derivedObservableWithCache<number>(this, (reader, lastValue) => {\n\t\t\tconst maxWidth = maxContentWidthInRange(this._editorObs, originalDisplayRange, reader);\n\t\t\treturn Math.max(maxWidth, lastValue ?? 0);\n\t\t});\n\t}).map((v, r) => v.read(r));\n\n\tprivate readonly _maxPrefixTrim = derived(this, reader => {\n\t\tconst state = this._uiState.read(reader);\n\t\tif (!state) {\n\t\t\treturn { prefixTrim: 0, prefixLeftOffset: 0 };\n\t\t}\n\t\treturn getPrefixTrim(state.deletions, state.originalRange, [], this._editor);\n\t});\n\n\tprivate readonly _editorLayoutInfo = derived(this, (reader) => {\n\t\tconst inlineEdit = this._edit.read(reader);\n\t\tif (!inlineEdit) {\n\t\t\treturn null;\n\t\t}\n\t\tconst state = this._uiState.read(reader);\n\t\tif (!state) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\t\tconst horizontalScrollOffset = this._editorObs.scrollLeft.read(reader);\n\t\tconst w = this._editorObs.getOption(EditorOption.fontInfo).map(f => f.typicalHalfwidthCharacterWidth).read(reader);\n\n\t\tconst right = editorLayout.contentLeft + Math.max(this._editorMaxContentWidthInRange.read(reader), w) - horizontalScrollOffset;\n\n\t\tconst range = inlineEdit.originalLineRange;\n\t\tconst selectionTop = this._originalVerticalStartPosition.read(reader) ?? this._editor.getTopForLineNumber(range.startLineNumber) - this._editorObs.scrollTop.read(reader);\n\t\tconst selectionBottom = this._originalVerticalEndPosition.read(reader) ?? this._editor.getTopForLineNumber(range.endLineNumberExclusive) - this._editorObs.scrollTop.read(reader);\n\n\t\tconst left = editorLayout.contentLeft + this._maxPrefixTrim.read(reader).prefixLeftOffset - horizontalScrollOffset;\n\n\t\tif (right <= left) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst codeRect = Rect.fromLeftTopRightBottom(left, selectionTop, right, selectionBottom).withMargin(VERTICAL_PADDING, HORIZONTAL_PADDING);\n\n\t\treturn {\n\t\t\tcodeRect,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\t\t};\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tprivate readonly _originalOverlay = n.div({\n\t\tstyle: { pointerEvents: 'none', }\n\t}, derived(this, reader => {\n\t\tconst layoutInfoObs = mapOutFalsy(this._editorLayoutInfo).read(reader);\n\t\tif (!layoutInfoObs) { return undefined; }\n\n\t\t// Create an overlay which hides the left hand side of the original overlay when it overflows to the left\n\t\t// such that there is a smooth transition at the edge of content left\n\t\tconst overlayhider = layoutInfoObs.map(layoutInfo => Rect.fromLeftTopRightBottom(\n\t\t\tlayoutInfo.contentLeft - BORDER_RADIUS - BORDER_WIDTH,\n\t\t\tlayoutInfo.codeRect.top,\n\t\t\tlayoutInfo.contentLeft,\n\t\t\tlayoutInfo.codeRect.bottom\n\t\t));\n\n\t\tconst overlayRect = derived(this, reader => {\n\t\t\tconst rect = layoutInfoObs.read(reader).codeRect;\n\t\t\tconst overlayHider = overlayhider.read(reader);\n\t\t\treturn rect.intersectHorizontal(new OffsetRange(overlayHider.left, Number.MAX_SAFE_INTEGER));\n\t\t});\n\n\t\tconst separatorWidth = this._uiState.map(s => s?.inDiffEditor ? WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH : WIDGET_SEPARATOR_WIDTH).read(reader);\n\t\tconst separatorRect = overlayRect.map(rect => rect.withMargin(separatorWidth, separatorWidth));\n\n\t\treturn [\n\t\t\tn.div({\n\t\t\t\tclass: 'originalSeparatorDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...separatorRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: `${BORDER_RADIUS}px`,\n\t\t\t\t\tborder: `${BORDER_WIDTH + separatorWidth}px solid ${asCssVariable(editorBackground)}`,\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: `${BORDER_RADIUS}px`,\n\t\t\t\t\tborder: getOriginalBorderColor(this._tabAction).map(bc => `${BORDER_WIDTH}px solid ${asCssVariable(bc)}`),\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\tbackgroundColor: asCssVariable(originalBackgroundColor),\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayHiderDeletion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayhider.read(reader).toStyles(),\n\t\t\t\t\tbackgroundColor: asCssVariable(editorBackground),\n\t\t\t\t}\n\t\t\t})\n\t\t];\n\t})).keepUpdated(this._store);\n\n\tprivate readonly _nonOverflowView = 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: this._display,\n\t\t},\n\t}, [\n\t\t[this._originalOverlay],\n\t]).keepUpdated(this._store);\n\n\treadonly isHovered = constObservable(false);\n}\n"]}
|
|
@@ -30,12 +30,13 @@ import { LineTokens, TokenArray } from '../../../../../../common/tokens/lineToke
|
|
|
30
30
|
import { InlineDecoration } from '../../../../../../common/viewModel/inlineDecorations.js';
|
|
31
31
|
import { GhostText, GhostTextPart } from '../../../model/ghostText.js';
|
|
32
32
|
import { GhostTextView } from '../../ghostText/ghostTextView.js';
|
|
33
|
-
import {
|
|
33
|
+
import { InlineEditClickEvent } from '../inlineEditsViewInterface.js';
|
|
34
|
+
import { getModifiedBorderColor, INLINE_EDITS_BORDER_RADIUS, modifiedBackgroundColor } from '../theme.js';
|
|
34
35
|
import { getPrefixTrim, mapOutFalsy } from '../utils/utils.js';
|
|
35
36
|
const BORDER_WIDTH = 1;
|
|
36
37
|
const WIDGET_SEPARATOR_WIDTH = 1;
|
|
37
38
|
const WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH = 3;
|
|
38
|
-
const BORDER_RADIUS =
|
|
39
|
+
const BORDER_RADIUS = INLINE_EDITS_BORDER_RADIUS;
|
|
39
40
|
let InlineEditsInsertionView = class InlineEditsInsertionView extends Disposable {
|
|
40
41
|
constructor(_editor, _input, _tabAction, instantiationService, _languageService) {
|
|
41
42
|
super();
|
|
@@ -242,7 +243,7 @@ let InlineEditsInsertionView = class InlineEditsInsertionView extends Disposable
|
|
|
242
243
|
}));
|
|
243
244
|
this.isHovered = this._ghostTextView.isHovered;
|
|
244
245
|
this._register(this._ghostTextView.onDidClick((e) => {
|
|
245
|
-
this._onDidClick.fire(e);
|
|
246
|
+
this._onDidClick.fire(new InlineEditClickEvent(e));
|
|
246
247
|
}));
|
|
247
248
|
this._register(this._editorObs.createOverlayWidget({
|
|
248
249
|
domNode: this._view.element,
|
|
@@ -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/inlineEditsInsertionView.ts","vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.ts"],"names":[],"mappings":"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","file":"inlineEditsInsertionView.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 { $, n } from '../../../../../../../base/browser/dom.js';\nimport { IMouseEvent } from '../../../../../../../base/browser/mouseEvent.js';\nimport { Emitter } from '../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../base/common/lifecycle.js';\nimport { constObservable, derived, IObservable, observableValue } from '../../../../../../../base/common/observable.js';\nimport { IInstantiationService } from '../../../../../../../platform/instantiation/common/instantiation.js';\nimport { editorBackground } from '../../../../../../../platform/theme/common/colorRegistry.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { ICodeEditor } from '../../../../../../browser/editorBrowser.js';\nimport { ObservableCodeEditor, observableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { LineSource, renderLines, RenderOptions } from '../../../../../../browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { Position } from '../../../../../../common/core/position.js';\nimport { Range } from '../../../../../../common/core/range.js';\nimport { LineRange } from '../../../../../../common/core/ranges/lineRange.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 { InlineDecoration, InlineDecorationType } from '../../../../../../common/viewModel/inlineDecorations.js';\nimport { GhostText, GhostTextPart } from '../../../model/ghostText.js';\nimport { GhostTextView, IGhostTextWidgetData } from '../../ghostText/ghostTextView.js';\nimport { IInlineEditsView, InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { getModifiedBorderColor, modifiedBackgroundColor } from '../theme.js';\nimport { getPrefixTrim, mapOutFalsy } from '../utils/utils.js';\n\nconst BORDER_WIDTH = 1;\nconst WIDGET_SEPARATOR_WIDTH = 1;\nconst WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH = 3;\nconst BORDER_RADIUS = 4;\n\nexport class InlineEditsInsertionView extends Disposable implements IInlineEditsView {\n\tprivate readonly _editorObs: ObservableCodeEditor;\n\n\tprivate readonly _onDidClick = this._register(new Emitter<IMouseEvent>());\n\treadonly onDidClick = this._onDidClick.event;\n\n\tprivate readonly _state = derived(this, reader => {\n\t\tconst state = this._input.read(reader);\n\t\tif (!state) { return undefined; }\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tif (state.startColumn === 1 && state.lineNumber > 1 && textModel.getLineLength(state.lineNumber) !== 0 && state.text.endsWith(eol) && !state.text.startsWith(eol)) {\n\t\t\tconst endOfLineColumn = textModel.getLineLength(state.lineNumber - 1) + 1;\n\t\t\treturn { lineNumber: state.lineNumber - 1, column: endOfLineColumn, text: eol + state.text.slice(0, -eol.length) };\n\t\t}\n\n\t\treturn { lineNumber: state.lineNumber, column: state.startColumn, text: state.text };\n\t});\n\n\tprivate readonly _trimVertically = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tconst text = state?.text;\n\t\tif (!text || text.trim() === '') {\n\t\t\treturn { topOffset: 0, bottomOffset: 0, linesTop: 0, linesBottom: 0 };\n\t\t}\n\n\t\t// Adjust for leading/trailing newlines\n\t\tconst lineHeight = this._editor.getLineHeightForPosition(new Position(state.lineNumber, 1));\n\t\tconst eol = this._editor.getModel()!.getEOL();\n\t\tlet linesTop = 0;\n\t\tlet linesBottom = 0;\n\n\t\tlet i = 0;\n\t\tfor (; i < text.length && text.startsWith(eol, i); i += eol.length) {\n\t\t\tlinesTop += 1;\n\t\t}\n\n\t\tfor (let j = text.length; j > i && text.endsWith(eol, j); j -= eol.length) {\n\t\t\tlinesBottom += 1;\n\t\t}\n\n\t\treturn { topOffset: linesTop * lineHeight, bottomOffset: linesBottom * lineHeight, linesTop, linesBottom };\n\t});\n\n\tprivate readonly _maxPrefixTrim = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn { prefixLeftOffset: 0, prefixTrim: 0 };\n\t\t}\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tconst trimVertically = this._trimVertically.read(reader);\n\n\t\tconst lines = state.text.split(eol);\n\t\tconst modifiedLines = lines.slice(trimVertically.linesTop, lines.length - trimVertically.linesBottom);\n\t\tif (trimVertically.linesTop === 0) {\n\t\t\tmodifiedLines[0] = textModel.getLineContent(state.lineNumber) + modifiedLines[0];\n\t\t}\n\n\t\tconst originalRange = new LineRange(state.lineNumber, state.lineNumber + (trimVertically.linesTop > 0 ? 0 : 1));\n\n\t\treturn getPrefixTrim([], originalRange, modifiedLines, this._editor);\n\t});\n\n\tprivate readonly _ghostText = derived<GhostText | undefined>(reader => {\n\t\tconst state = this._state.read(reader);\n\t\tconst prefixTrim = this._maxPrefixTrim.read(reader);\n\t\tif (!state) { return undefined; }\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\t\tconst modifiedLines = state.text.split(eol);\n\n\t\tconst inlineDecorations = modifiedLines.map((line, i) => new InlineDecoration(\n\t\t\tnew Range(i + 1, i === 0 ? 1 : prefixTrim.prefixTrim + 1, i + 1, line.length + 1),\n\t\t\t'modified-background',\n\t\t\tInlineDecorationType.Regular\n\t\t));\n\n\t\treturn new GhostText(state.lineNumber, [new GhostTextPart(state.column, state.text, false, inlineDecorations)]);\n\t});\n\n\tprotected readonly _ghostTextView: GhostTextView;\n\treadonly isHovered: IObservable<boolean>;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _input: IObservable<{\n\t\t\tlineNumber: number;\n\t\t\tstartColumn: number;\n\t\t\ttext: string;\n\t\t\tinDiffEditor: boolean;\n\t\t} | undefined>,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tthis._ghostTextView = this._register(instantiationService.createInstance(\n\t\t\tGhostTextView,\n\t\t\tthis._editor,\n\t\t\tderived(reader => {\n\t\t\t\tconst ghostText = this._ghostText.read(reader);\n\t\t\t\tif (!ghostText) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tghostText: ghostText,\n\t\t\t\t\thandleInlineCompletionShown: (data) => {\n\t\t\t\t\t\t// This is a no-op for the insertion view, as it is handled by the InlineEditsView.\n\t\t\t\t\t},\n\t\t\t\t\twarning: undefined,\n\t\t\t\t} satisfies IGhostTextWidgetData;\n\t\t\t}),\n\t\t\t{\n\t\t\t\textraClasses: ['inline-edit'],\n\t\t\t\tisClickable: true,\n\t\t\t\tshouldKeepCursorStable: true,\n\t\t\t}\n\t\t));\n\n\t\tthis.isHovered = this._ghostTextView.isHovered;\n\n\t\tthis._register(this._ghostTextView.onDidClick((e) => {\n\t\t\tthis._onDidClick.fire(e);\n\t\t}));\n\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._view.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: derived(this, reader => {\n\t\t\t\tconst info = this._overlayLayout.read(reader);\n\t\t\t\tif (info === null) { return 0; }\n\t\t\t\treturn info.minContentWidthRequired;\n\t\t\t}),\n\t\t}));\n\t}\n\n\tprivate readonly _display = derived(this, reader => !!this._state.read(reader) ? 'block' : 'none');\n\n\tprivate readonly _editorMaxContentWidthInRange = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn 0;\n\t\t}\n\t\tthis._editorObs.versionId.read(reader);\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tconst textBeforeInsertion = state.text.startsWith(eol) ? '' : textModel.getValueInRange(new Range(state.lineNumber, 1, state.lineNumber, state.column));\n\t\tconst textAfterInsertion = textModel.getValueInRange(new Range(state.lineNumber, state.column, state.lineNumber, textModel.getLineLength(state.lineNumber) + 1));\n\t\tconst text = textBeforeInsertion + state.text + textAfterInsertion;\n\t\tconst lines = text.split(eol);\n\n\t\tconst renderOptions = RenderOptions.fromEditor(this._editor).withSetWidth(false).withScrollBeyondLastColumn(0);\n\t\tconst lineWidths = lines.map(line => {\n\t\t\tconst t = textModel.tokenization.tokenizeLinesAt(state.lineNumber, [line])?.[0];\n\t\t\tlet tokens: LineTokens;\n\t\t\tif (t) {\n\t\t\t\ttokens = TokenArray.fromLineTokens(t).toLineTokens(line, this._languageService.languageIdCodec);\n\t\t\t} else {\n\t\t\t\ttokens = LineTokens.createEmpty(line, this._languageService.languageIdCodec);\n\t\t\t}\n\n\t\t\treturn renderLines(new LineSource([tokens]), renderOptions, [], $('div'), true).minWidthInPx;\n\t\t});\n\n\t\t// Take the max value that we observed.\n\t\t// Reset when either the edit changes or the editor text version.\n\t\treturn Math.max(...lineWidths);\n\t});\n\n\tpublic readonly startLineOffset = this._trimVertically.map(v => v.topOffset);\n\tpublic readonly originalLines = this._state.map(s => s ?\n\t\tnew LineRange(\n\t\t\ts.lineNumber,\n\t\t\tMath.min(s.lineNumber + 2, this._editor.getModel()!.getLineCount() + 1)\n\t\t) : undefined\n\t);\n\n\tprivate readonly _overlayLayout = derived(this, (reader) => {\n\t\tthis._ghostText.read(reader);\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Update the overlay when the position changes\n\t\tthis._editorObs.observePosition(observableValue(this, new Position(state.lineNumber, state.column)), reader.store).read(reader);\n\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\t\tconst horizontalScrollOffset = this._editorObs.scrollLeft.read(reader);\n\t\tconst verticalScrollbarWidth = this._editorObs.layoutInfoVerticalScrollbarWidth.read(reader);\n\n\t\tconst right = editorLayout.contentLeft + this._editorMaxContentWidthInRange.read(reader) - horizontalScrollOffset;\n\t\tconst prefixLeftOffset = this._maxPrefixTrim.read(reader).prefixLeftOffset ?? 0 /* fix due to observable bug? */;\n\t\tconst left = editorLayout.contentLeft + prefixLeftOffset - horizontalScrollOffset;\n\t\tif (right <= left) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { topOffset: topTrim, bottomOffset: bottomTrim } = this._trimVertically.read(reader);\n\n\t\tconst scrollTop = this._editorObs.scrollTop.read(reader);\n\t\tconst height = this._ghostTextView.height.read(reader) - topTrim - bottomTrim;\n\t\tconst top = this._editor.getTopForLineNumber(state.lineNumber) - scrollTop + topTrim;\n\t\tconst bottom = top + height;\n\n\t\tconst overlay = new Rect(left, top, right, bottom);\n\n\t\treturn {\n\t\t\toverlay,\n\t\t\tstartsAtContentLeft: prefixLeftOffset === 0,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\t\t\tminContentWidthRequired: prefixLeftOffset + overlay.width + verticalScrollbarWidth,\n\t\t};\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tprivate readonly _modifiedOverlay = n.div({\n\t\tstyle: { pointerEvents: 'none', }\n\t}, derived(this, reader => {\n\t\tconst overlayLayoutObs = mapOutFalsy(this._overlayLayout).read(reader);\n\t\tif (!overlayLayoutObs) { return undefined; }\n\n\t\t// Create an overlay which hides the left hand side of the original overlay when it overflows to the left\n\t\t// such that there is a smooth transition at the edge of content left\n\t\tconst overlayHider = overlayLayoutObs.map(layoutInfo => Rect.fromLeftTopRightBottom(\n\t\t\tlayoutInfo.contentLeft - BORDER_RADIUS - BORDER_WIDTH,\n\t\t\tlayoutInfo.overlay.top,\n\t\t\tlayoutInfo.contentLeft,\n\t\t\tlayoutInfo.overlay.bottom\n\t\t)).read(reader);\n\n\t\tconst separatorWidth = this._input.map(i => i?.inDiffEditor ? WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH : WIDGET_SEPARATOR_WIDTH).read(reader);\n\t\tconst overlayRect = overlayLayoutObs.map(l => l.overlay.withMargin(0, BORDER_WIDTH, 0, l.startsAtContentLeft ? 0 : BORDER_WIDTH).intersectHorizontal(new OffsetRange(overlayHider.left, Number.MAX_SAFE_INTEGER)));\n\t\tconst underlayRect = overlayRect.map(rect => rect.withMargin(separatorWidth, separatorWidth));\n\n\t\treturn [\n\t\t\tn.div({\n\t\t\t\tclass: 'originalUnderlayInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...underlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\t\tborder: `${BORDER_WIDTH + separatorWidth}px solid ${asCssVariable(editorBackground)}`,\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\t\tborder: getModifiedBorderColor(this._tabAction).map(bc => `${BORDER_WIDTH}px solid ${asCssVariable(bc)}`),\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\tbackgroundColor: asCssVariable(modifiedBackgroundColor),\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayHiderInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayHider.toStyles(),\n\t\t\t\t\tbackgroundColor: asCssVariable(editorBackground),\n\t\t\t\t}\n\t\t\t})\n\t\t];\n\t})).keepUpdated(this._store);\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: this._display,\n\t\t},\n\t}, [\n\t\t[this._modifiedOverlay],\n\t]).keepUpdated(this._store);\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 { $, n } from '../../../../../../../base/browser/dom.js';\nimport { IMouseEvent } from '../../../../../../../base/browser/mouseEvent.js';\nimport { Emitter } from '../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../base/common/lifecycle.js';\nimport { constObservable, derived, IObservable, observableValue } from '../../../../../../../base/common/observable.js';\nimport { IInstantiationService } from '../../../../../../../platform/instantiation/common/instantiation.js';\nimport { editorBackground } from '../../../../../../../platform/theme/common/colorRegistry.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { ICodeEditor } from '../../../../../../browser/editorBrowser.js';\nimport { ObservableCodeEditor, observableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { LineSource, renderLines, RenderOptions } from '../../../../../../browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { Position } from '../../../../../../common/core/position.js';\nimport { Range } from '../../../../../../common/core/range.js';\nimport { LineRange } from '../../../../../../common/core/ranges/lineRange.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 { InlineDecoration, InlineDecorationType } from '../../../../../../common/viewModel/inlineDecorations.js';\nimport { GhostText, GhostTextPart } from '../../../model/ghostText.js';\nimport { GhostTextView, IGhostTextWidgetData } from '../../ghostText/ghostTextView.js';\nimport { IInlineEditsView, InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { getModifiedBorderColor, modifiedBackgroundColor } from '../theme.js';\nimport { getPrefixTrim, mapOutFalsy } from '../utils/utils.js';\n\nconst BORDER_WIDTH = 1;\nconst WIDGET_SEPARATOR_WIDTH = 1;\nconst WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH = 3;\nconst BORDER_RADIUS = 4;\n\nexport class InlineEditsInsertionView extends Disposable implements IInlineEditsView {\n\tprivate readonly _editorObs: ObservableCodeEditor;\n\n\tprivate readonly _onDidClick = this._register(new Emitter<IMouseEvent>());\n\treadonly onDidClick = this._onDidClick.event;\n\n\tprivate readonly _state = derived(this, reader => {\n\t\tconst state = this._input.read(reader);\n\t\tif (!state) { return undefined; }\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tif (state.startColumn === 1 && state.lineNumber > 1 && textModel.getLineLength(state.lineNumber) !== 0 && state.text.endsWith(eol) && !state.text.startsWith(eol)) {\n\t\t\tconst endOfLineColumn = textModel.getLineLength(state.lineNumber - 1) + 1;\n\t\t\treturn { lineNumber: state.lineNumber - 1, column: endOfLineColumn, text: eol + state.text.slice(0, -eol.length) };\n\t\t}\n\n\t\treturn { lineNumber: state.lineNumber, column: state.startColumn, text: state.text };\n\t});\n\n\tprivate readonly _trimVertically = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tconst text = state?.text;\n\t\tif (!text || text.trim() === '') {\n\t\t\treturn { topOffset: 0, bottomOffset: 0, linesTop: 0, linesBottom: 0 };\n\t\t}\n\n\t\t// Adjust for leading/trailing newlines\n\t\tconst lineHeight = this._editor.getLineHeightForPosition(new Position(state.lineNumber, 1));\n\t\tconst eol = this._editor.getModel()!.getEOL();\n\t\tlet linesTop = 0;\n\t\tlet linesBottom = 0;\n\n\t\tlet i = 0;\n\t\tfor (; i < text.length && text.startsWith(eol, i); i += eol.length) {\n\t\t\tlinesTop += 1;\n\t\t}\n\n\t\tfor (let j = text.length; j > i && text.endsWith(eol, j); j -= eol.length) {\n\t\t\tlinesBottom += 1;\n\t\t}\n\n\t\treturn { topOffset: linesTop * lineHeight, bottomOffset: linesBottom * lineHeight, linesTop, linesBottom };\n\t});\n\n\tprivate readonly _maxPrefixTrim = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn { prefixLeftOffset: 0, prefixTrim: 0 };\n\t\t}\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tconst trimVertically = this._trimVertically.read(reader);\n\n\t\tconst lines = state.text.split(eol);\n\t\tconst modifiedLines = lines.slice(trimVertically.linesTop, lines.length - trimVertically.linesBottom);\n\t\tif (trimVertically.linesTop === 0) {\n\t\t\tmodifiedLines[0] = textModel.getLineContent(state.lineNumber) + modifiedLines[0];\n\t\t}\n\n\t\tconst originalRange = new LineRange(state.lineNumber, state.lineNumber + (trimVertically.linesTop > 0 ? 0 : 1));\n\n\t\treturn getPrefixTrim([], originalRange, modifiedLines, this._editor);\n\t});\n\n\tprivate readonly _ghostText = derived<GhostText | undefined>(reader => {\n\t\tconst state = this._state.read(reader);\n\t\tconst prefixTrim = this._maxPrefixTrim.read(reader);\n\t\tif (!state) { return undefined; }\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\t\tconst modifiedLines = state.text.split(eol);\n\n\t\tconst inlineDecorations = modifiedLines.map((line, i) => new InlineDecoration(\n\t\t\tnew Range(i + 1, i === 0 ? 1 : prefixTrim.prefixTrim + 1, i + 1, line.length + 1),\n\t\t\t'modified-background',\n\t\t\tInlineDecorationType.Regular\n\t\t));\n\n\t\treturn new GhostText(state.lineNumber, [new GhostTextPart(state.column, state.text, false, inlineDecorations)]);\n\t});\n\n\tprotected readonly _ghostTextView: GhostTextView;\n\treadonly isHovered: IObservable<boolean>;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _input: IObservable<{\n\t\t\tlineNumber: number;\n\t\t\tstartColumn: number;\n\t\t\ttext: string;\n\t\t\tinDiffEditor: boolean;\n\t\t} | undefined>,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tthis._ghostTextView = this._register(instantiationService.createInstance(\n\t\t\tGhostTextView,\n\t\t\tthis._editor,\n\t\t\tderived(reader => {\n\t\t\t\tconst ghostText = this._ghostText.read(reader);\n\t\t\t\tif (!ghostText) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tghostText: ghostText,\n\t\t\t\t\thandleInlineCompletionShown: (data) => {\n\t\t\t\t\t\t// This is a no-op for the insertion view, as it is handled by the InlineEditsView.\n\t\t\t\t\t},\n\t\t\t\t\twarning: undefined,\n\t\t\t\t} satisfies IGhostTextWidgetData;\n\t\t\t}),\n\t\t\t{\n\t\t\t\textraClasses: ['inline-edit'],\n\t\t\t\tisClickable: true,\n\t\t\t\tshouldKeepCursorStable: true,\n\t\t\t}\n\t\t));\n\n\t\tthis.isHovered = this._ghostTextView.isHovered;\n\n\t\tthis._register(this._ghostTextView.onDidClick((e) => {\n\t\t\tthis._onDidClick.fire(e);\n\t\t}));\n\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._view.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: derived(this, reader => {\n\t\t\t\tconst info = this._overlayLayout.read(reader);\n\t\t\t\tif (info === null) { return 0; }\n\t\t\t\treturn info.minContentWidthRequired;\n\t\t\t}),\n\t\t}));\n\t}\n\n\tprivate readonly _display = derived(this, reader => !!this._state.read(reader) ? 'block' : 'none');\n\n\tprivate readonly _editorMaxContentWidthInRange = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn 0;\n\t\t}\n\t\tthis._editorObs.versionId.read(reader);\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tconst textBeforeInsertion = state.text.startsWith(eol) ? '' : textModel.getValueInRange(new Range(state.lineNumber, 1, state.lineNumber, state.column));\n\t\tconst textAfterInsertion = textModel.getValueInRange(new Range(state.lineNumber, state.column, state.lineNumber, textModel.getLineLength(state.lineNumber) + 1));\n\t\tconst text = textBeforeInsertion + state.text + textAfterInsertion;\n\t\tconst lines = text.split(eol);\n\n\t\tconst renderOptions = RenderOptions.fromEditor(this._editor).withSetWidth(false).withScrollBeyondLastColumn(0);\n\t\tconst lineWidths = lines.map(line => {\n\t\t\tconst t = textModel.tokenization.tokenizeLinesAt(state.lineNumber, [line])?.[0];\n\t\t\tlet tokens: LineTokens;\n\t\t\tif (t) {\n\t\t\t\ttokens = TokenArray.fromLineTokens(t).toLineTokens(line, this._languageService.languageIdCodec);\n\t\t\t} else {\n\t\t\t\ttokens = LineTokens.createEmpty(line, this._languageService.languageIdCodec);\n\t\t\t}\n\n\t\t\treturn renderLines(new LineSource([tokens]), renderOptions, [], $('div'), true).minWidthInPx;\n\t\t});\n\n\t\t// Take the max value that we observed.\n\t\t// Reset when either the edit changes or the editor text version.\n\t\treturn Math.max(...lineWidths);\n\t});\n\n\tpublic readonly startLineOffset = this._trimVertically.map(v => v.topOffset);\n\tpublic readonly originalLines = this._state.map(s => s ?\n\t\tnew LineRange(\n\t\t\ts.lineNumber,\n\t\t\tMath.min(s.lineNumber + 2, this._editor.getModel()!.getLineCount() + 1)\n\t\t) : undefined\n\t);\n\n\tprivate readonly _overlayLayout = derived(this, (reader) => {\n\t\tthis._ghostText.read(reader);\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Update the overlay when the position changes\n\t\tthis._editorObs.observePosition(observableValue(this, new Position(state.lineNumber, state.column)), reader.store).read(reader);\n\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\t\tconst horizontalScrollOffset = this._editorObs.scrollLeft.read(reader);\n\t\tconst verticalScrollbarWidth = this._editorObs.layoutInfoVerticalScrollbarWidth.read(reader);\n\n\t\tconst right = editorLayout.contentLeft + this._editorMaxContentWidthInRange.read(reader) - horizontalScrollOffset;\n\t\tconst prefixLeftOffset = this._maxPrefixTrim.read(reader).prefixLeftOffset ?? 0 /* fix due to observable bug? */;\n\t\tconst left = editorLayout.contentLeft + prefixLeftOffset - horizontalScrollOffset;\n\t\tif (right <= left) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { topOffset: topTrim, bottomOffset: bottomTrim } = this._trimVertically.read(reader);\n\n\t\tconst scrollTop = this._editorObs.scrollTop.read(reader);\n\t\tconst height = this._ghostTextView.height.read(reader) - topTrim - bottomTrim;\n\t\tconst top = this._editor.getTopForLineNumber(state.lineNumber) - scrollTop + topTrim;\n\t\tconst bottom = top + height;\n\n\t\tconst overlay = new Rect(left, top, right, bottom);\n\n\t\treturn {\n\t\t\toverlay,\n\t\t\tstartsAtContentLeft: prefixLeftOffset === 0,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\t\t\tminContentWidthRequired: prefixLeftOffset + overlay.width + verticalScrollbarWidth,\n\t\t};\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tprivate readonly _modifiedOverlay = n.div({\n\t\tstyle: { pointerEvents: 'none', }\n\t}, derived(this, reader => {\n\t\tconst overlayLayoutObs = mapOutFalsy(this._overlayLayout).read(reader);\n\t\tif (!overlayLayoutObs) { return undefined; }\n\n\t\t// Create an overlay which hides the left hand side of the original overlay when it overflows to the left\n\t\t// such that there is a smooth transition at the edge of content left\n\t\tconst overlayHider = overlayLayoutObs.map(layoutInfo => Rect.fromLeftTopRightBottom(\n\t\t\tlayoutInfo.contentLeft - BORDER_RADIUS - BORDER_WIDTH,\n\t\t\tlayoutInfo.overlay.top,\n\t\t\tlayoutInfo.contentLeft,\n\t\t\tlayoutInfo.overlay.bottom\n\t\t)).read(reader);\n\n\t\tconst separatorWidth = this._input.map(i => i?.inDiffEditor ? WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH : WIDGET_SEPARATOR_WIDTH).read(reader);\n\t\tconst overlayRect = overlayLayoutObs.map(l => l.overlay.withMargin(0, BORDER_WIDTH, 0, l.startsAtContentLeft ? 0 : BORDER_WIDTH).intersectHorizontal(new OffsetRange(overlayHider.left, Number.MAX_SAFE_INTEGER)));\n\t\tconst underlayRect = overlayRect.map(rect => rect.withMargin(separatorWidth, separatorWidth));\n\n\t\treturn [\n\t\t\tn.div({\n\t\t\t\tclass: 'originalUnderlayInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...underlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\t\tborder: `${BORDER_WIDTH + separatorWidth}px solid ${asCssVariable(editorBackground)}`,\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\t\tborder: getModifiedBorderColor(this._tabAction).map(bc => `${BORDER_WIDTH}px solid ${asCssVariable(bc)}`),\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\tbackgroundColor: asCssVariable(modifiedBackgroundColor),\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayHiderInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayHider.toStyles(),\n\t\t\t\t\tbackgroundColor: asCssVariable(editorBackground),\n\t\t\t\t}\n\t\t\t})\n\t\t];\n\t})).keepUpdated(this._store);\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: this._display,\n\t\t},\n\t}, [\n\t\t[this._modifiedOverlay],\n\t]).keepUpdated(this._store);\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/inlineEditsInsertionView.ts","vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.ts"],"names":[],"mappings":"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","file":"inlineEditsInsertionView.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 { $, n } from '../../../../../../../base/browser/dom.js';\nimport { Emitter } from '../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../base/common/lifecycle.js';\nimport { constObservable, derived, IObservable, observableValue } from '../../../../../../../base/common/observable.js';\nimport { IInstantiationService } from '../../../../../../../platform/instantiation/common/instantiation.js';\nimport { editorBackground } from '../../../../../../../platform/theme/common/colorRegistry.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { ICodeEditor } from '../../../../../../browser/editorBrowser.js';\nimport { ObservableCodeEditor, observableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { LineSource, renderLines, RenderOptions } from '../../../../../../browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { Position } from '../../../../../../common/core/position.js';\nimport { Range } from '../../../../../../common/core/range.js';\nimport { LineRange } from '../../../../../../common/core/ranges/lineRange.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 { InlineDecoration, InlineDecorationType } from '../../../../../../common/viewModel/inlineDecorations.js';\nimport { GhostText, GhostTextPart } from '../../../model/ghostText.js';\nimport { GhostTextView, IGhostTextWidgetData } from '../../ghostText/ghostTextView.js';\nimport { IInlineEditsView, InlineEditClickEvent, InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { getModifiedBorderColor, INLINE_EDITS_BORDER_RADIUS, modifiedBackgroundColor } from '../theme.js';\nimport { getPrefixTrim, mapOutFalsy } from '../utils/utils.js';\n\nconst BORDER_WIDTH = 1;\nconst WIDGET_SEPARATOR_WIDTH = 1;\nconst WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH = 3;\nconst BORDER_RADIUS = INLINE_EDITS_BORDER_RADIUS;\n\nexport class InlineEditsInsertionView extends Disposable implements IInlineEditsView {\n\tprivate readonly _editorObs: ObservableCodeEditor;\n\n\tprivate readonly _onDidClick = this._register(new Emitter<InlineEditClickEvent>());\n\treadonly onDidClick = this._onDidClick.event;\n\n\tprivate readonly _state = derived(this, reader => {\n\t\tconst state = this._input.read(reader);\n\t\tif (!state) { return undefined; }\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tif (state.startColumn === 1 && state.lineNumber > 1 && textModel.getLineLength(state.lineNumber) !== 0 && state.text.endsWith(eol) && !state.text.startsWith(eol)) {\n\t\t\tconst endOfLineColumn = textModel.getLineLength(state.lineNumber - 1) + 1;\n\t\t\treturn { lineNumber: state.lineNumber - 1, column: endOfLineColumn, text: eol + state.text.slice(0, -eol.length) };\n\t\t}\n\n\t\treturn { lineNumber: state.lineNumber, column: state.startColumn, text: state.text };\n\t});\n\n\tprivate readonly _trimVertically = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tconst text = state?.text;\n\t\tif (!text || text.trim() === '') {\n\t\t\treturn { topOffset: 0, bottomOffset: 0, linesTop: 0, linesBottom: 0 };\n\t\t}\n\n\t\t// Adjust for leading/trailing newlines\n\t\tconst lineHeight = this._editor.getLineHeightForPosition(new Position(state.lineNumber, 1));\n\t\tconst eol = this._editor.getModel()!.getEOL();\n\t\tlet linesTop = 0;\n\t\tlet linesBottom = 0;\n\n\t\tlet i = 0;\n\t\tfor (; i < text.length && text.startsWith(eol, i); i += eol.length) {\n\t\t\tlinesTop += 1;\n\t\t}\n\n\t\tfor (let j = text.length; j > i && text.endsWith(eol, j); j -= eol.length) {\n\t\t\tlinesBottom += 1;\n\t\t}\n\n\t\treturn { topOffset: linesTop * lineHeight, bottomOffset: linesBottom * lineHeight, linesTop, linesBottom };\n\t});\n\n\tprivate readonly _maxPrefixTrim = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn { prefixLeftOffset: 0, prefixTrim: 0 };\n\t\t}\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tconst trimVertically = this._trimVertically.read(reader);\n\n\t\tconst lines = state.text.split(eol);\n\t\tconst modifiedLines = lines.slice(trimVertically.linesTop, lines.length - trimVertically.linesBottom);\n\t\tif (trimVertically.linesTop === 0) {\n\t\t\tmodifiedLines[0] = textModel.getLineContent(state.lineNumber) + modifiedLines[0];\n\t\t}\n\n\t\tconst originalRange = new LineRange(state.lineNumber, state.lineNumber + (trimVertically.linesTop > 0 ? 0 : 1));\n\n\t\treturn getPrefixTrim([], originalRange, modifiedLines, this._editor);\n\t});\n\n\tprivate readonly _ghostText = derived<GhostText | undefined>(reader => {\n\t\tconst state = this._state.read(reader);\n\t\tconst prefixTrim = this._maxPrefixTrim.read(reader);\n\t\tif (!state) { return undefined; }\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\t\tconst modifiedLines = state.text.split(eol);\n\n\t\tconst inlineDecorations = modifiedLines.map((line, i) => new InlineDecoration(\n\t\t\tnew Range(i + 1, i === 0 ? 1 : prefixTrim.prefixTrim + 1, i + 1, line.length + 1),\n\t\t\t'modified-background',\n\t\t\tInlineDecorationType.Regular\n\t\t));\n\n\t\treturn new GhostText(state.lineNumber, [new GhostTextPart(state.column, state.text, false, inlineDecorations)]);\n\t});\n\n\tprotected readonly _ghostTextView: GhostTextView;\n\treadonly isHovered: IObservable<boolean>;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _input: IObservable<{\n\t\t\tlineNumber: number;\n\t\t\tstartColumn: number;\n\t\t\ttext: string;\n\t\t\tinDiffEditor: boolean;\n\t\t} | undefined>,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tthis._ghostTextView = this._register(instantiationService.createInstance(\n\t\t\tGhostTextView,\n\t\t\tthis._editor,\n\t\t\tderived(reader => {\n\t\t\t\tconst ghostText = this._ghostText.read(reader);\n\t\t\t\tif (!ghostText) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tghostText: ghostText,\n\t\t\t\t\thandleInlineCompletionShown: (data) => {\n\t\t\t\t\t\t// This is a no-op for the insertion view, as it is handled by the InlineEditsView.\n\t\t\t\t\t},\n\t\t\t\t\twarning: undefined,\n\t\t\t\t} satisfies IGhostTextWidgetData;\n\t\t\t}),\n\t\t\t{\n\t\t\t\textraClasses: ['inline-edit'],\n\t\t\t\tisClickable: true,\n\t\t\t\tshouldKeepCursorStable: true,\n\t\t\t}\n\t\t));\n\n\t\tthis.isHovered = this._ghostTextView.isHovered;\n\n\t\tthis._register(this._ghostTextView.onDidClick((e) => {\n\t\t\tthis._onDidClick.fire(new InlineEditClickEvent(e));\n\t\t}));\n\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._view.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: derived(this, reader => {\n\t\t\t\tconst info = this._overlayLayout.read(reader);\n\t\t\t\tif (info === null) { return 0; }\n\t\t\t\treturn info.minContentWidthRequired;\n\t\t\t}),\n\t\t}));\n\t}\n\n\tprivate readonly _display = derived(this, reader => !!this._state.read(reader) ? 'block' : 'none');\n\n\tprivate readonly _editorMaxContentWidthInRange = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn 0;\n\t\t}\n\t\tthis._editorObs.versionId.read(reader);\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tconst textBeforeInsertion = state.text.startsWith(eol) ? '' : textModel.getValueInRange(new Range(state.lineNumber, 1, state.lineNumber, state.column));\n\t\tconst textAfterInsertion = textModel.getValueInRange(new Range(state.lineNumber, state.column, state.lineNumber, textModel.getLineLength(state.lineNumber) + 1));\n\t\tconst text = textBeforeInsertion + state.text + textAfterInsertion;\n\t\tconst lines = text.split(eol);\n\n\t\tconst renderOptions = RenderOptions.fromEditor(this._editor).withSetWidth(false).withScrollBeyondLastColumn(0);\n\t\tconst lineWidths = lines.map(line => {\n\t\t\tconst t = textModel.tokenization.tokenizeLinesAt(state.lineNumber, [line])?.[0];\n\t\t\tlet tokens: LineTokens;\n\t\t\tif (t) {\n\t\t\t\ttokens = TokenArray.fromLineTokens(t).toLineTokens(line, this._languageService.languageIdCodec);\n\t\t\t} else {\n\t\t\t\ttokens = LineTokens.createEmpty(line, this._languageService.languageIdCodec);\n\t\t\t}\n\n\t\t\treturn renderLines(new LineSource([tokens]), renderOptions, [], $('div'), true).minWidthInPx;\n\t\t});\n\n\t\t// Take the max value that we observed.\n\t\t// Reset when either the edit changes or the editor text version.\n\t\treturn Math.max(...lineWidths);\n\t});\n\n\tpublic readonly startLineOffset = this._trimVertically.map(v => v.topOffset);\n\tpublic readonly originalLines = this._state.map(s => s ?\n\t\tnew LineRange(\n\t\t\ts.lineNumber,\n\t\t\tMath.min(s.lineNumber + 2, this._editor.getModel()!.getLineCount() + 1)\n\t\t) : undefined\n\t);\n\n\tprivate readonly _overlayLayout = derived(this, (reader) => {\n\t\tthis._ghostText.read(reader);\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Update the overlay when the position changes\n\t\tthis._editorObs.observePosition(observableValue(this, new Position(state.lineNumber, state.column)), reader.store).read(reader);\n\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\t\tconst horizontalScrollOffset = this._editorObs.scrollLeft.read(reader);\n\t\tconst verticalScrollbarWidth = this._editorObs.layoutInfoVerticalScrollbarWidth.read(reader);\n\n\t\tconst right = editorLayout.contentLeft + this._editorMaxContentWidthInRange.read(reader) - horizontalScrollOffset;\n\t\tconst prefixLeftOffset = this._maxPrefixTrim.read(reader).prefixLeftOffset ?? 0 /* fix due to observable bug? */;\n\t\tconst left = editorLayout.contentLeft + prefixLeftOffset - horizontalScrollOffset;\n\t\tif (right <= left) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { topOffset: topTrim, bottomOffset: bottomTrim } = this._trimVertically.read(reader);\n\n\t\tconst scrollTop = this._editorObs.scrollTop.read(reader);\n\t\tconst height = this._ghostTextView.height.read(reader) - topTrim - bottomTrim;\n\t\tconst top = this._editor.getTopForLineNumber(state.lineNumber) - scrollTop + topTrim;\n\t\tconst bottom = top + height;\n\n\t\tconst overlay = new Rect(left, top, right, bottom);\n\n\t\treturn {\n\t\t\toverlay,\n\t\t\tstartsAtContentLeft: prefixLeftOffset === 0,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\t\t\tminContentWidthRequired: prefixLeftOffset + overlay.width + verticalScrollbarWidth,\n\t\t};\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tprivate readonly _modifiedOverlay = n.div({\n\t\tstyle: { pointerEvents: 'none', }\n\t}, derived(this, reader => {\n\t\tconst overlayLayoutObs = mapOutFalsy(this._overlayLayout).read(reader);\n\t\tif (!overlayLayoutObs) { return undefined; }\n\n\t\t// Create an overlay which hides the left hand side of the original overlay when it overflows to the left\n\t\t// such that there is a smooth transition at the edge of content left\n\t\tconst overlayHider = overlayLayoutObs.map(layoutInfo => Rect.fromLeftTopRightBottom(\n\t\t\tlayoutInfo.contentLeft - BORDER_RADIUS - BORDER_WIDTH,\n\t\t\tlayoutInfo.overlay.top,\n\t\t\tlayoutInfo.contentLeft,\n\t\t\tlayoutInfo.overlay.bottom\n\t\t)).read(reader);\n\n\t\tconst separatorWidth = this._input.map(i => i?.inDiffEditor ? WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH : WIDGET_SEPARATOR_WIDTH).read(reader);\n\t\tconst overlayRect = overlayLayoutObs.map(l => l.overlay.withMargin(0, BORDER_WIDTH, 0, l.startsAtContentLeft ? 0 : BORDER_WIDTH).intersectHorizontal(new OffsetRange(overlayHider.left, Number.MAX_SAFE_INTEGER)));\n\t\tconst underlayRect = overlayRect.map(rect => rect.withMargin(separatorWidth, separatorWidth));\n\n\t\treturn [\n\t\t\tn.div({\n\t\t\t\tclass: 'originalUnderlayInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...underlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\t\tborder: `${BORDER_WIDTH + separatorWidth}px solid ${asCssVariable(editorBackground)}`,\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\t\tborder: getModifiedBorderColor(this._tabAction).map(bc => `${BORDER_WIDTH}px solid ${asCssVariable(bc)}`),\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\tbackgroundColor: asCssVariable(modifiedBackgroundColor),\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayHiderInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayHider.toStyles(),\n\t\t\t\t\tbackgroundColor: asCssVariable(editorBackground),\n\t\t\t\t}\n\t\t\t})\n\t\t];\n\t})).keepUpdated(this._store);\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: this._display,\n\t\t},\n\t}, [\n\t\t[this._modifiedOverlay],\n\t]).keepUpdated(this._store);\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 { $, n } from '../../../../../../../base/browser/dom.js';\nimport { Emitter } from '../../../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../../../base/common/lifecycle.js';\nimport { constObservable, derived, IObservable, observableValue } from '../../../../../../../base/common/observable.js';\nimport { IInstantiationService } from '../../../../../../../platform/instantiation/common/instantiation.js';\nimport { editorBackground } from '../../../../../../../platform/theme/common/colorRegistry.js';\nimport { asCssVariable } from '../../../../../../../platform/theme/common/colorUtils.js';\nimport { ICodeEditor } from '../../../../../../browser/editorBrowser.js';\nimport { ObservableCodeEditor, observableCodeEditor } from '../../../../../../browser/observableCodeEditor.js';\nimport { LineSource, renderLines, RenderOptions } from '../../../../../../browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js';\nimport { Rect } from '../../../../../../common/core/2d/rect.js';\nimport { Position } from '../../../../../../common/core/position.js';\nimport { Range } from '../../../../../../common/core/range.js';\nimport { LineRange } from '../../../../../../common/core/ranges/lineRange.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 { InlineDecoration, InlineDecorationType } from '../../../../../../common/viewModel/inlineDecorations.js';\nimport { GhostText, GhostTextPart } from '../../../model/ghostText.js';\nimport { GhostTextView, IGhostTextWidgetData } from '../../ghostText/ghostTextView.js';\nimport { IInlineEditsView, InlineEditClickEvent, InlineEditTabAction } from '../inlineEditsViewInterface.js';\nimport { getModifiedBorderColor, INLINE_EDITS_BORDER_RADIUS, modifiedBackgroundColor } from '../theme.js';\nimport { getPrefixTrim, mapOutFalsy } from '../utils/utils.js';\n\nconst BORDER_WIDTH = 1;\nconst WIDGET_SEPARATOR_WIDTH = 1;\nconst WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH = 3;\nconst BORDER_RADIUS = INLINE_EDITS_BORDER_RADIUS;\n\nexport class InlineEditsInsertionView extends Disposable implements IInlineEditsView {\n\tprivate readonly _editorObs: ObservableCodeEditor;\n\n\tprivate readonly _onDidClick = this._register(new Emitter<InlineEditClickEvent>());\n\treadonly onDidClick = this._onDidClick.event;\n\n\tprivate readonly _state = derived(this, reader => {\n\t\tconst state = this._input.read(reader);\n\t\tif (!state) { return undefined; }\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tif (state.startColumn === 1 && state.lineNumber > 1 && textModel.getLineLength(state.lineNumber) !== 0 && state.text.endsWith(eol) && !state.text.startsWith(eol)) {\n\t\t\tconst endOfLineColumn = textModel.getLineLength(state.lineNumber - 1) + 1;\n\t\t\treturn { lineNumber: state.lineNumber - 1, column: endOfLineColumn, text: eol + state.text.slice(0, -eol.length) };\n\t\t}\n\n\t\treturn { lineNumber: state.lineNumber, column: state.startColumn, text: state.text };\n\t});\n\n\tprivate readonly _trimVertically = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tconst text = state?.text;\n\t\tif (!text || text.trim() === '') {\n\t\t\treturn { topOffset: 0, bottomOffset: 0, linesTop: 0, linesBottom: 0 };\n\t\t}\n\n\t\t// Adjust for leading/trailing newlines\n\t\tconst lineHeight = this._editor.getLineHeightForPosition(new Position(state.lineNumber, 1));\n\t\tconst eol = this._editor.getModel()!.getEOL();\n\t\tlet linesTop = 0;\n\t\tlet linesBottom = 0;\n\n\t\tlet i = 0;\n\t\tfor (; i < text.length && text.startsWith(eol, i); i += eol.length) {\n\t\t\tlinesTop += 1;\n\t\t}\n\n\t\tfor (let j = text.length; j > i && text.endsWith(eol, j); j -= eol.length) {\n\t\t\tlinesBottom += 1;\n\t\t}\n\n\t\treturn { topOffset: linesTop * lineHeight, bottomOffset: linesBottom * lineHeight, linesTop, linesBottom };\n\t});\n\n\tprivate readonly _maxPrefixTrim = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn { prefixLeftOffset: 0, prefixTrim: 0 };\n\t\t}\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tconst trimVertically = this._trimVertically.read(reader);\n\n\t\tconst lines = state.text.split(eol);\n\t\tconst modifiedLines = lines.slice(trimVertically.linesTop, lines.length - trimVertically.linesBottom);\n\t\tif (trimVertically.linesTop === 0) {\n\t\t\tmodifiedLines[0] = textModel.getLineContent(state.lineNumber) + modifiedLines[0];\n\t\t}\n\n\t\tconst originalRange = new LineRange(state.lineNumber, state.lineNumber + (trimVertically.linesTop > 0 ? 0 : 1));\n\n\t\treturn getPrefixTrim([], originalRange, modifiedLines, this._editor);\n\t});\n\n\tprivate readonly _ghostText = derived<GhostText | undefined>(reader => {\n\t\tconst state = this._state.read(reader);\n\t\tconst prefixTrim = this._maxPrefixTrim.read(reader);\n\t\tif (!state) { return undefined; }\n\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\t\tconst modifiedLines = state.text.split(eol);\n\n\t\tconst inlineDecorations = modifiedLines.map((line, i) => new InlineDecoration(\n\t\t\tnew Range(i + 1, i === 0 ? 1 : prefixTrim.prefixTrim + 1, i + 1, line.length + 1),\n\t\t\t'modified-background',\n\t\t\tInlineDecorationType.Regular\n\t\t));\n\n\t\treturn new GhostText(state.lineNumber, [new GhostTextPart(state.column, state.text, false, inlineDecorations)]);\n\t});\n\n\tprotected readonly _ghostTextView: GhostTextView;\n\treadonly isHovered: IObservable<boolean>;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _input: IObservable<{\n\t\t\tlineNumber: number;\n\t\t\tstartColumn: number;\n\t\t\ttext: string;\n\t\t\tinDiffEditor: boolean;\n\t\t} | undefined>,\n\t\tprivate readonly _tabAction: IObservable<InlineEditTabAction>,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editorObs = observableCodeEditor(this._editor);\n\n\t\tthis._ghostTextView = this._register(instantiationService.createInstance(\n\t\t\tGhostTextView,\n\t\t\tthis._editor,\n\t\t\tderived(reader => {\n\t\t\t\tconst ghostText = this._ghostText.read(reader);\n\t\t\t\tif (!ghostText) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tghostText: ghostText,\n\t\t\t\t\thandleInlineCompletionShown: (data) => {\n\t\t\t\t\t\t// This is a no-op for the insertion view, as it is handled by the InlineEditsView.\n\t\t\t\t\t},\n\t\t\t\t\twarning: undefined,\n\t\t\t\t} satisfies IGhostTextWidgetData;\n\t\t\t}),\n\t\t\t{\n\t\t\t\textraClasses: ['inline-edit'],\n\t\t\t\tisClickable: true,\n\t\t\t\tshouldKeepCursorStable: true,\n\t\t\t}\n\t\t));\n\n\t\tthis.isHovered = this._ghostTextView.isHovered;\n\n\t\tthis._register(this._ghostTextView.onDidClick((e) => {\n\t\t\tthis._onDidClick.fire(new InlineEditClickEvent(e));\n\t\t}));\n\n\t\tthis._register(this._editorObs.createOverlayWidget({\n\t\t\tdomNode: this._view.element,\n\t\t\tposition: constObservable(null),\n\t\t\tallowEditorOverflow: false,\n\t\t\tminContentWidthInPx: derived(this, reader => {\n\t\t\t\tconst info = this._overlayLayout.read(reader);\n\t\t\t\tif (info === null) { return 0; }\n\t\t\t\treturn info.minContentWidthRequired;\n\t\t\t}),\n\t\t}));\n\t}\n\n\tprivate readonly _display = derived(this, reader => !!this._state.read(reader) ? 'block' : 'none');\n\n\tprivate readonly _editorMaxContentWidthInRange = derived(this, reader => {\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn 0;\n\t\t}\n\t\tthis._editorObs.versionId.read(reader);\n\t\tconst textModel = this._editor.getModel()!;\n\t\tconst eol = textModel.getEOL();\n\n\t\tconst textBeforeInsertion = state.text.startsWith(eol) ? '' : textModel.getValueInRange(new Range(state.lineNumber, 1, state.lineNumber, state.column));\n\t\tconst textAfterInsertion = textModel.getValueInRange(new Range(state.lineNumber, state.column, state.lineNumber, textModel.getLineLength(state.lineNumber) + 1));\n\t\tconst text = textBeforeInsertion + state.text + textAfterInsertion;\n\t\tconst lines = text.split(eol);\n\n\t\tconst renderOptions = RenderOptions.fromEditor(this._editor).withSetWidth(false).withScrollBeyondLastColumn(0);\n\t\tconst lineWidths = lines.map(line => {\n\t\t\tconst t = textModel.tokenization.tokenizeLinesAt(state.lineNumber, [line])?.[0];\n\t\t\tlet tokens: LineTokens;\n\t\t\tif (t) {\n\t\t\t\ttokens = TokenArray.fromLineTokens(t).toLineTokens(line, this._languageService.languageIdCodec);\n\t\t\t} else {\n\t\t\t\ttokens = LineTokens.createEmpty(line, this._languageService.languageIdCodec);\n\t\t\t}\n\n\t\t\treturn renderLines(new LineSource([tokens]), renderOptions, [], $('div'), true).minWidthInPx;\n\t\t});\n\n\t\t// Take the max value that we observed.\n\t\t// Reset when either the edit changes or the editor text version.\n\t\treturn Math.max(...lineWidths);\n\t});\n\n\tpublic readonly startLineOffset = this._trimVertically.map(v => v.topOffset);\n\tpublic readonly originalLines = this._state.map(s => s ?\n\t\tnew LineRange(\n\t\t\ts.lineNumber,\n\t\t\tMath.min(s.lineNumber + 2, this._editor.getModel()!.getLineCount() + 1)\n\t\t) : undefined\n\t);\n\n\tprivate readonly _overlayLayout = derived(this, (reader) => {\n\t\tthis._ghostText.read(reader);\n\t\tconst state = this._state.read(reader);\n\t\tif (!state) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Update the overlay when the position changes\n\t\tthis._editorObs.observePosition(observableValue(this, new Position(state.lineNumber, state.column)), reader.store).read(reader);\n\n\t\tconst editorLayout = this._editorObs.layoutInfo.read(reader);\n\t\tconst horizontalScrollOffset = this._editorObs.scrollLeft.read(reader);\n\t\tconst verticalScrollbarWidth = this._editorObs.layoutInfoVerticalScrollbarWidth.read(reader);\n\n\t\tconst right = editorLayout.contentLeft + this._editorMaxContentWidthInRange.read(reader) - horizontalScrollOffset;\n\t\tconst prefixLeftOffset = this._maxPrefixTrim.read(reader).prefixLeftOffset ?? 0 /* fix due to observable bug? */;\n\t\tconst left = editorLayout.contentLeft + prefixLeftOffset - horizontalScrollOffset;\n\t\tif (right <= left) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst { topOffset: topTrim, bottomOffset: bottomTrim } = this._trimVertically.read(reader);\n\n\t\tconst scrollTop = this._editorObs.scrollTop.read(reader);\n\t\tconst height = this._ghostTextView.height.read(reader) - topTrim - bottomTrim;\n\t\tconst top = this._editor.getTopForLineNumber(state.lineNumber) - scrollTop + topTrim;\n\t\tconst bottom = top + height;\n\n\t\tconst overlay = new Rect(left, top, right, bottom);\n\n\t\treturn {\n\t\t\toverlay,\n\t\t\tstartsAtContentLeft: prefixLeftOffset === 0,\n\t\t\tcontentLeft: editorLayout.contentLeft,\n\t\t\tminContentWidthRequired: prefixLeftOffset + overlay.width + verticalScrollbarWidth,\n\t\t};\n\t}).recomputeInitiallyAndOnChange(this._store);\n\n\tprivate readonly _modifiedOverlay = n.div({\n\t\tstyle: { pointerEvents: 'none', }\n\t}, derived(this, reader => {\n\t\tconst overlayLayoutObs = mapOutFalsy(this._overlayLayout).read(reader);\n\t\tif (!overlayLayoutObs) { return undefined; }\n\n\t\t// Create an overlay which hides the left hand side of the original overlay when it overflows to the left\n\t\t// such that there is a smooth transition at the edge of content left\n\t\tconst overlayHider = overlayLayoutObs.map(layoutInfo => Rect.fromLeftTopRightBottom(\n\t\t\tlayoutInfo.contentLeft - BORDER_RADIUS - BORDER_WIDTH,\n\t\t\tlayoutInfo.overlay.top,\n\t\t\tlayoutInfo.contentLeft,\n\t\t\tlayoutInfo.overlay.bottom\n\t\t)).read(reader);\n\n\t\tconst separatorWidth = this._input.map(i => i?.inDiffEditor ? WIDGET_SEPARATOR_DIFF_EDITOR_WIDTH : WIDGET_SEPARATOR_WIDTH).read(reader);\n\t\tconst overlayRect = overlayLayoutObs.map(l => l.overlay.withMargin(0, BORDER_WIDTH, 0, l.startsAtContentLeft ? 0 : BORDER_WIDTH).intersectHorizontal(new OffsetRange(overlayHider.left, Number.MAX_SAFE_INTEGER)));\n\t\tconst underlayRect = overlayRect.map(rect => rect.withMargin(separatorWidth, separatorWidth));\n\n\t\treturn [\n\t\t\tn.div({\n\t\t\t\tclass: 'originalUnderlayInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...underlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\t\tborder: `${BORDER_WIDTH + separatorWidth}px solid ${asCssVariable(editorBackground)}`,\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayRect.read(reader).toStyles(),\n\t\t\t\t\tborderRadius: BORDER_RADIUS,\n\t\t\t\t\tborder: getModifiedBorderColor(this._tabAction).map(bc => `${BORDER_WIDTH}px solid ${asCssVariable(bc)}`),\n\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\tbackgroundColor: asCssVariable(modifiedBackgroundColor),\n\t\t\t\t}\n\t\t\t}),\n\t\t\tn.div({\n\t\t\t\tclass: 'originalOverlayHiderInsertion',\n\t\t\t\tstyle: {\n\t\t\t\t\t...overlayHider.toStyles(),\n\t\t\t\t\tbackgroundColor: asCssVariable(editorBackground),\n\t\t\t\t}\n\t\t\t})\n\t\t];\n\t})).keepUpdated(this._store);\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: this._display,\n\t\t},\n\t}, [\n\t\t[this._modifiedOverlay],\n\t]).keepUpdated(this._store);\n}\n"]}
|
|
@@ -11,8 +11,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
import { $,
|
|
15
|
-
import { StandardMouseEvent } from '../../../../../../../base/browser/mouseEvent.js';
|
|
14
|
+
import { $, n } from '../../../../../../../base/browser/dom.js';
|
|
16
15
|
import { Emitter } from '../../../../../../../base/common/event.js';
|
|
17
16
|
import { Disposable, toDisposable } from '../../../../../../../base/common/lifecycle.js';
|
|
18
17
|
import { autorunDelta, constObservable, derived } from '../../../../../../../base/common/observable.js';
|
|
@@ -28,7 +27,8 @@ import { OffsetRange } from '../../../../../../common/core/ranges/offsetRange.js
|
|
|
28
27
|
import { ILanguageService } from '../../../../../../common/languages/language.js';
|
|
29
28
|
import { LineTokens, TokenArray } from '../../../../../../common/tokens/lineTokens.js';
|
|
30
29
|
import { InlineDecoration } from '../../../../../../common/viewModel/inlineDecorations.js';
|
|
31
|
-
import {
|
|
30
|
+
import { InlineEditClickEvent } from '../inlineEditsViewInterface.js';
|
|
31
|
+
import { getEditorBlendedColor, getModifiedBorderColor, getOriginalBorderColor, INLINE_EDITS_BORDER_RADIUS, modifiedChangedLineBackgroundColor, originalBackgroundColor } from '../theme.js';
|
|
32
32
|
import { getEditorValidOverlayRect, getPrefixTrim, mapOutFalsy, rectToProps } from '../utils/utils.js';
|
|
33
33
|
let InlineEditsLineReplacementView = class InlineEditsLineReplacementView extends Disposable {
|
|
34
34
|
constructor(_editor, _edit, _isInDiffEditor, _tabAction, _languageService, _themeService) {
|
|
@@ -178,7 +178,7 @@ let InlineEditsLineReplacementView = class InlineEditsLineReplacementView extend
|
|
|
178
178
|
style: {
|
|
179
179
|
position: 'absolute',
|
|
180
180
|
...rectToProps(reader => layout.read(reader).background.translateX(-contentLeft).withMargin(separatorWidth)),
|
|
181
|
-
borderRadius:
|
|
181
|
+
borderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,
|
|
182
182
|
border: `${separatorWidth + 1}px solid ${asCssVariable(editorBackground)}`,
|
|
183
183
|
boxSizing: 'border-box',
|
|
184
184
|
pointerEvents: 'none',
|
|
@@ -189,7 +189,7 @@ let InlineEditsLineReplacementView = class InlineEditsLineReplacementView extend
|
|
|
189
189
|
style: {
|
|
190
190
|
position: 'absolute',
|
|
191
191
|
...rectToProps(reader => layout.read(reader).background.translateX(-contentLeft)),
|
|
192
|
-
borderRadius:
|
|
192
|
+
borderRadius: `${INLINE_EDITS_BORDER_RADIUS}px`,
|
|
193
193
|
border: getEditorBlendedColor(originalBorderColor, this._themeService).map(c => `1px solid ${c.toString()}`),
|
|
194
194
|
pointerEvents: 'none',
|
|
195
195
|
boxSizing: 'border-box',
|
|
@@ -201,7 +201,7 @@ let InlineEditsLineReplacementView = class InlineEditsLineReplacementView extend
|
|
|
201
201
|
style: {
|
|
202
202
|
position: 'absolute',
|
|
203
203
|
...rectToProps(reader => layout.read(reader).lowerBackground.translateX(-contentLeft)),
|
|
204
|
-
borderRadius:
|
|
204
|
+
borderRadius: `0 0 ${INLINE_EDITS_BORDER_RADIUS}px ${INLINE_EDITS_BORDER_RADIUS}px`,
|
|
205
205
|
background: asCssVariable(editorBackground),
|
|
206
206
|
boxShadow: `${asCssVariable(scrollbarShadow)} 0 6px 6px -6px`,
|
|
207
207
|
border: `1px solid ${asCssVariable(modifiedBorderColor)}`,
|
|
@@ -213,7 +213,7 @@ let InlineEditsLineReplacementView = class InlineEditsLineReplacementView extend
|
|
|
213
213
|
onmousedown: e => {
|
|
214
214
|
e.preventDefault(); // This prevents that the editor loses focus
|
|
215
215
|
},
|
|
216
|
-
onclick: (e) => this._onDidClick.fire(
|
|
216
|
+
onclick: (e) => this._onDidClick.fire(InlineEditClickEvent.create(e)),
|
|
217
217
|
}, [
|
|
218
218
|
n.div({
|
|
219
219
|
style: {
|
|
@@ -233,7 +233,7 @@ let InlineEditsLineReplacementView = class InlineEditsLineReplacementView extend
|
|
|
233
233
|
fontWeight: this._editor.getOption(62 /* EditorOption.fontWeight */),
|
|
234
234
|
pointerEvents: 'none',
|
|
235
235
|
whiteSpace: 'nowrap',
|
|
236
|
-
borderRadius:
|
|
236
|
+
borderRadius: `0 0 ${INLINE_EDITS_BORDER_RADIUS}px ${INLINE_EDITS_BORDER_RADIUS}px`,
|
|
237
237
|
overflow: 'hidden',
|
|
238
238
|
}
|
|
239
239
|
}, [...modifiedLineElements.lines]),
|