monaco-editor-core 0.57.0 → 0.58.0-dev-20261104
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 +38 -6
- package/esm/vs/base/browser/browser.js +8 -0
- package/esm/vs/base/browser/browser.js.map +1 -1
- package/esm/vs/base/browser/contextmenu.js +8 -1
- package/esm/vs/base/browser/contextmenu.js.map +1 -1
- package/esm/vs/base/browser/dom.js +34 -5
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/dompurify/dompurify.js +2457 -2640
- package/esm/vs/base/browser/markdownRenderer.js +48 -21
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/pixelRatio.js +3 -2
- package/esm/vs/base/browser/pixelRatio.js.map +1 -1
- package/esm/vs/base/browser/ui/actionbar/actionViewItems.js +5 -2
- package/esm/vs/base/browser/ui/actionbar/actionViewItems.js.map +1 -1
- package/esm/vs/base/browser/ui/actionbar/actionbar.js +7 -2
- package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
- package/esm/vs/base/browser/ui/animations/animations.js +68 -40
- package/esm/vs/base/browser/ui/animations/animations.js.map +1 -1
- package/esm/vs/base/browser/ui/button/button.js +7 -0
- package/esm/vs/base/browser/ui/button/button.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/contextview/contextview.css +15 -0
- package/esm/vs/base/browser/ui/contextview/contextview.js +266 -40
- package/esm/vs/base/browser/ui/contextview/contextview.js.map +1 -1
- package/esm/vs/base/browser/ui/contextview/windowControlsOverlay.js +72 -0
- package/esm/vs/base/browser/ui/contextview/windowControlsOverlay.js.map +1 -0
- package/esm/vs/base/browser/ui/dialog/dialog.css +5 -0
- package/esm/vs/base/browser/ui/dropdown/dropdown.js +2 -1
- package/esm/vs/base/browser/ui/dropdown/dropdown.js.map +1 -1
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +1 -0
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
- package/esm/vs/base/browser/ui/hover/hover.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listView.js +87 -15
- package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
- package/esm/vs/base/browser/ui/list/listWidget.js +37 -15
- package/esm/vs/base/browser/ui/list/listWidget.js.map +1 -1
- package/esm/vs/base/browser/ui/menu/menu.js +189 -52
- package/esm/vs/base/browser/ui/menu/menu.js.map +1 -1
- package/esm/vs/base/browser/ui/radio/radio.css +11 -0
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js +2 -1
- package/esm/vs/base/browser/ui/scrollbar/scrollableElement.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +14 -8
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
- package/esm/vs/base/browser/ui/splitview/splitview.js +11 -7
- package/esm/vs/base/browser/ui/splitview/splitview.js.map +1 -1
- package/esm/vs/base/browser/ui/toggle/switch.css +16 -7
- package/esm/vs/base/browser/ui/toggle/switch.js +9 -6
- package/esm/vs/base/browser/ui/toggle/switch.js.map +1 -1
- package/esm/vs/base/browser/ui/toolbar/toolbar.css +1 -2
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +85 -38
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/abstractTree.js +48 -9
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js +10 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTree.js +3 -0
- package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
- package/esm/vs/base/common/actions.js +8 -2
- package/esm/vs/base/common/actions.js.map +1 -1
- package/esm/vs/base/common/arrays.js +4 -4
- package/esm/vs/base/common/arrays.js.map +1 -1
- package/esm/vs/base/common/async.js +12 -8
- package/esm/vs/base/common/async.js.map +1 -1
- package/esm/vs/base/common/cancellation.js +25 -0
- package/esm/vs/base/common/cancellation.js.map +1 -1
- package/esm/vs/base/common/codicons.js +2 -0
- package/esm/vs/base/common/codicons.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +2 -0
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/color.js +1 -1
- package/esm/vs/base/common/color.js.map +1 -1
- package/esm/vs/base/common/diff/diff.js +60 -1
- package/esm/vs/base/common/diff/diff.js.map +1 -1
- package/esm/vs/base/common/event.js +1 -1
- package/esm/vs/base/common/event.js.map +1 -1
- package/esm/vs/base/common/glob.js +1 -0
- package/esm/vs/base/common/glob.js.map +1 -1
- package/esm/vs/base/common/htmlContent.js +74 -12
- package/esm/vs/base/common/htmlContent.js.map +1 -1
- package/esm/vs/base/common/json.js +19 -0
- package/esm/vs/base/common/json.js.map +1 -0
- package/esm/vs/base/common/network.js +16 -0
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/resources.js +14 -2
- package/esm/vs/base/common/resources.js.map +1 -1
- package/esm/vs/base/common/strings.js +1 -1
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/base/common/uri.js +2 -2
- package/esm/vs/base/common/uri.js.map +1 -1
- package/esm/vs/editor/browser/config/editorConfiguration.js +1 -1
- package/esm/vs/editor/browser/config/fontMeasurements.js +19 -6
- package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
- package/esm/vs/editor/browser/controller/dragScrolling.js +3 -3
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +11 -5
- package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -38
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/screenReaderContentRich.js +3 -3
- package/esm/vs/editor/browser/controller/editContext/native/screenReaderSupport.js +6 -6
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +12 -10
- package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
- package/esm/vs/editor/browser/controller/mouseHandler.js +7 -7
- package/esm/vs/editor/browser/controller/mouseTarget.js +3 -3
- package/esm/vs/editor/browser/coreCommands.js +2 -2
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/editorMarkdownSanitizer.js +19 -0
- package/esm/vs/editor/browser/editorMarkdownSanitizer.js.map +1 -0
- package/esm/vs/editor/browser/gpu/rectangleRenderer.js +1 -1
- package/esm/vs/editor/browser/gpu/viewGpuContext.js +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +1 -1
- package/esm/vs/editor/browser/services/editorWorkerService.js +3 -2
- package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
- package/esm/vs/editor/browser/services/openerService.js +6 -2
- package/esm/vs/editor/browser/services/openerService.js.map +1 -1
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js +34 -11
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
- package/esm/vs/editor/browser/view/viewController.js +7 -7
- package/esm/vs/editor/browser/view/viewController.js.map +1 -1
- package/esm/vs/editor/browser/view/viewLayer.js +1 -1
- package/esm/vs/editor/browser/view/viewOverlays.js +4 -4
- package/esm/vs/editor/browser/view.js +5 -5
- package/esm/vs/editor/browser/viewParts/blockDecorations/blockDecorations.js +1 -1
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +11 -3
- package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +6 -6
- package/esm/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js +12 -12
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +9 -2
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.js +2 -2
- package/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js +2 -2
- package/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js +2 -2
- package/esm/vs/editor/browser/viewParts/margin/margin.js +2 -2
- package/esm/vs/editor/browser/viewParts/minimap/minimap.js +6 -6
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +9 -2
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js +5 -5
- package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +3 -3
- package/esm/vs/editor/browser/viewParts/rulers/rulers.js +2 -2
- package/esm/vs/editor/browser/viewParts/rulersGpu/rulersGpu.js +1 -1
- package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +3 -3
- package/esm/vs/editor/browser/viewParts/selections/selections.js +2 -2
- package/esm/vs/editor/browser/viewParts/viewCursors/viewCursor.js +2 -2
- package/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.js +6 -6
- package/esm/vs/editor/browser/viewParts/viewLines/viewLineOptions.js +5 -5
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +11 -11
- package/esm/vs/editor/browser/viewParts/viewLinesGpu/viewLinesGpu.js +1 -1
- package/esm/vs/editor/browser/viewParts/viewZones/viewZones.js +2 -2
- package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +4 -4
- package/esm/vs/editor/browser/viewParts/wordWrapIndicator/wordWrapIndicator.js +2 -2
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +22 -21
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/commands.js +12 -12
- package/esm/vs/editor/browser/widget/diffEditor/components/accessibleDiffViewer.js +18 -18
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorEditors.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/diffEditorViewZones.js +3 -3
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +10 -10
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +4 -4
- package/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js +21 -3
- package/esm/vs/editor/browser/widget/diffEditor/diffProviderFactoryService.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/gutterFeature.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +10 -10
- package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/features/overviewRulerFeature.js +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
- package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
- package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollLayout.js +2 -2
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollLayout.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollView.js +21 -2
- package/esm/vs/editor/browser/widget/multiDiffEditor/compressedVirtualizedScrollView.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +2 -2
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +11 -3
- package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
- package/esm/vs/editor/browser/widget/multiDiffEditor/virtualizedItemManager.js +1 -0
- package/esm/vs/editor/browser/widget/multiDiffEditor/virtualizedItemManager.js.map +1 -1
- package/esm/vs/editor/common/commands/columnSelectionPasteCommand.js +64 -0
- package/esm/vs/editor/common/commands/columnSelectionPasteCommand.js.map +1 -0
- package/esm/vs/editor/common/config/editorConfigurationSchema.js +68 -58
- package/esm/vs/editor/common/config/editorConfigurationSchema.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +560 -500
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/core/editorColorRegistry.js +71 -71
- package/esm/vs/editor/common/core/edits/textEdit.js +16 -0
- package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursor.js +20 -10
- package/esm/vs/editor/common/cursor/cursor.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js +67 -14
- package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorTypeOperations.js +2 -2
- package/esm/vs/editor/common/cursor/cursorTypeOperations.js.map +1 -1
- package/esm/vs/editor/common/cursorCommon.js +22 -21
- package/esm/vs/editor/common/cursorCommon.js.map +1 -1
- package/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js +21 -8
- package/esm/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.js.map +1 -1
- package/esm/vs/editor/common/diff/documentDiffProvider.js.map +1 -1
- package/esm/vs/editor/common/diff/externalLinesDiffComputer.js +38 -26
- package/esm/vs/editor/common/diff/externalLinesDiffComputer.js.map +1 -1
- package/esm/vs/editor/common/diff/rangeMapping.js +11 -1
- package/esm/vs/editor/common/diff/rangeMapping.js.map +1 -1
- package/esm/vs/editor/common/diff/verifyLinesDiff.js +28 -0
- package/esm/vs/editor/common/diff/verifyLinesDiff.js.map +1 -0
- package/esm/vs/editor/common/editorContextKeys.js +53 -53
- package/esm/vs/editor/common/languages/languageConfiguration.js +8 -0
- package/esm/vs/editor/common/languages/languageConfiguration.js.map +1 -1
- package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
- package/esm/vs/editor/common/languages.js +56 -56
- package/esm/vs/editor/common/model/editStack.js +1 -1
- package/esm/vs/editor/common/services/editorWebWorker.js +27 -6
- package/esm/vs/editor/common/services/editorWebWorker.js.map +1 -1
- package/esm/vs/editor/common/services/editorWorker.js.map +1 -1
- package/esm/vs/editor/common/services/languageService.js +6 -4
- package/esm/vs/editor/common/services/languageService.js.map +1 -1
- package/esm/vs/editor/common/services/markerDecorationsService.js +21 -2
- package/esm/vs/editor/common/services/markerDecorationsService.js.map +1 -1
- package/esm/vs/editor/common/standalone/standaloneEnums.js +100 -97
- package/esm/vs/editor/common/standalone/standaloneEnums.js.map +1 -1
- package/esm/vs/editor/common/standaloneStrings.js +11 -11
- package/esm/vs/editor/common/textModelEditSource.js +9 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLayout.js +16 -16
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
- package/esm/vs/editor/common/viewModel/monospaceLineBreaksComputer.js +1 -1
- package/esm/vs/editor/common/viewModel/viewModelImpl.js +19 -19
- package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
- package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +9 -9
- package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
- package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +23 -20
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
- package/esm/vs/editor/contrib/codeAction/browser/codeActionModel.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js +25 -10
- package/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerContribution.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +3 -3
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerParticipant.js +1 -1
- package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +17 -17
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js.map +1 -1
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +39 -39
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.js +19 -0
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.js.map +1 -0
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +26 -18
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js.map +1 -1
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +18 -18
- package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findModel.js +6 -6
- package/esm/vs/editor/contrib/find/browser/findWidget.js +40 -40
- package/esm/vs/editor/contrib/find/browser/findWidget.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/folding.js +23 -23
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +2 -2
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +4 -4
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js.map +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +9 -3
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js +2 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverWidget.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +10 -8
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +6 -6
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +5 -5
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +9 -9
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js +3 -3
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +21 -21
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +6 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +7 -7
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +3 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +5 -4
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js.map +1 -1
- package/esm/vs/editor/contrib/links/browser/links.js +16 -15
- package/esm/vs/editor/contrib/links/browser/links.js.map +1 -1
- package/esm/vs/editor/contrib/longLinesHelper/browser/longLinesHelper.js +1 -1
- package/esm/vs/editor/contrib/message/browser/messageController.js +16 -12
- package/esm/vs/editor/contrib/message/browser/messageController.js.map +1 -1
- package/esm/vs/editor/contrib/middleScroll/browser/middleScrollController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +91 -55
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js +3 -3
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js.map +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +6 -4
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js.map +1 -1
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderTextContribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +12 -12
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +3 -3
- package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +6 -6
- package/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js +23 -13
- package/esm/vs/editor/contrib/semanticTokens/browser/documentSemanticTokens.js.map +1 -1
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +5 -5
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +5 -5
- package/esm/vs/editor/contrib/snippet/browser/snippetSession.js +2 -2
- 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 +10 -8
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollModelProvider.js +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollProvider.js +2 -2
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +6 -6
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -9
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +15 -15
- package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/suggestModel.js +11 -11
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +27 -27
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +8 -6
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +5 -5
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +3 -3
- package/esm/vs/editor/contrib/suggest/browser/wordDistance.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 +27 -27
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider.js +1 -1
- package/esm/vs/editor/contrib/wordHighlighter/browser/textualHighlightProvider.js.map +1 -1
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +50 -14
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +6 -6
- package/esm/vs/editor/editor.api.d.ts +133 -98
- package/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js +1 -1
- package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js +5 -3
- package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js +15 -1
- package/esm/vs/editor/standalone/browser/standaloneCodeEditor.js.map +1 -1
- package/esm/vs/nls.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +72 -66
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js.map +1 -1
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +434 -136
- package/esm/vs/platform/actionWidget/browser/actionList.js.map +1 -1
- package/esm/vs/platform/actionWidget/browser/actionWidget.css +74 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +24 -26
- package/esm/vs/platform/actionWidget/browser/actionWidget.js.map +1 -1
- package/esm/vs/platform/actionWidget/browser/actionWidgetMotion.js +16 -0
- package/esm/vs/platform/actionWidget/browser/actionWidgetMotion.js.map +1 -0
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +15 -17
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
- package/esm/vs/platform/actions/browser/toolbar.js +25 -12
- package/esm/vs/platform/actions/browser/toolbar.js.map +1 -1
- package/esm/vs/platform/actions/common/actions.js +4 -2
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +15 -8
- package/esm/vs/platform/actions/common/menuService.js.map +1 -1
- package/esm/vs/platform/configuration/common/configuration.js +3 -1
- package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationModels.js +16 -11
- package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationRegistry.js +29 -27
- package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurations.js +13 -1
- package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +2 -2
- package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +28 -14
- package/esm/vs/platform/contextkey/common/contextkey.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkeys.js +10 -10
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/contextview/browser/contextMenuHandler.js +17 -4
- package/esm/vs/platform/contextview/browser/contextMenuHandler.js.map +1 -1
- package/esm/vs/platform/contextview/browser/contextMenuService.js +1 -1
- package/esm/vs/platform/contextview/browser/contextMenuService.js.map +1 -1
- package/esm/vs/platform/contextview/browser/contextView.js.map +1 -1
- package/esm/vs/platform/contextview/browser/contextViewService.js +7 -2
- package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
- package/esm/vs/platform/editor/common/editor.js +17 -0
- package/esm/vs/platform/editor/common/editor.js.map +1 -1
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverService.js +6 -3
- package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +38 -6
- package/esm/vs/platform/hover/browser/hoverWidget.js.map +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +32 -5
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js.map +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js +1 -1
- package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +5 -5
- package/esm/vs/platform/keybinding/common/keybindingResolver.js +1 -1
- package/esm/vs/platform/keybinding/common/keybindingResolver.js.map +1 -1
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/markers/common/markerService.js +11 -8
- 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/markers/common/markers.js.map +1 -1
- package/esm/vs/platform/notification/common/notification.js.map +1 -1
- package/esm/vs/platform/notification/common/notificationMessage.js +37 -0
- package/esm/vs/platform/notification/common/notificationMessage.js.map +1 -0
- package/esm/vs/platform/opener/common/opener.js.map +1 -1
- package/esm/vs/platform/progress/common/progress.js.map +1 -1
- 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 +33 -2
- package/esm/vs/platform/quickinput/browser/quickAccess.js +7 -4
- package/esm/vs/platform/quickinput/browser/quickAccess.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +65 -15
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.js +96 -90
- package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputService.js +5 -7
- package/esm/vs/platform/quickinput/browser/quickInputService.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickTree.js +1 -1
- package/esm/vs/platform/quickinput/common/quickAccess.js.map +1 -1
- package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
- package/esm/vs/platform/storage/common/storage.js.map +1 -1
- package/esm/vs/platform/theme/common/colorRegistry.js +1 -0
- package/esm/vs/platform/theme/common/colorRegistry.js.map +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +11 -3
- package/esm/vs/platform/theme/common/colorUtils.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/baseColors.js +19 -19
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -9
- package/esm/vs/platform/theme/common/colors/chartsColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/confettiColors.js +14 -0
- package/esm/vs/platform/theme/common/colors/confettiColors.js.map +1 -0
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/inputColors.js +48 -48
- package/esm/vs/platform/theme/common/colors/inputColors.js.map +1 -1
- 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 +10 -10
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +133 -98
- package/package.json +3 -3
- package/version.txt +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.ts"],"names":[],"mappings":"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","file":"copyPasteController.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IAction } from '../../../../base/common/actions.js';\nimport { coalesce } from '../../../../base/common/arrays.js';\nimport { CancelablePromise, createCancelablePromise, DeferredPromise, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { createStringDataTransferItem, IReadonlyVSDataTransfer, matchesMimeType, UriList, VSDataTransfer } from '../../../../base/common/dataTransfer.js';\nimport { isCancellationError } from '../../../../base/common/errors.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Mimes } from '../../../../base/common/mime.js';\nimport { upcast } from '../../../../base/common/types.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { localize } from '../../../../nls.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { IProgressService, ProgressLocation } from '../../../../platform/progress/common/progress.js';\nimport { IQuickInputService, IQuickPickItem, IQuickPickSeparator } from '../../../../platform/quickinput/common/quickInput.js';\nimport { IClipboardCopyEvent, IClipboardPasteEvent, IWritableClipboardData } from '../../../browser/controller/editContext/clipboardUtils.js';\nimport { ICodeEditor, PastePayload } from '../../../browser/editorBrowser.js';\nimport { IBulkEditService } from '../../../browser/services/bulkEditService.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { Handler, IEditorContribution } from '../../../common/editorCommon.js';\nimport { DocumentPasteContext, DocumentPasteEdit, DocumentPasteEditProvider, DocumentPasteTriggerKind } from '../../../common/languages.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CodeEditorStateFlag, EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { InlineProgressManager } from '../../inlineProgress/browser/inlineProgress.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { PreferredPasteConfiguration } from './copyPasteContribution.js';\nimport { DefaultTextPasteOrDropEditProvider } from './defaultProviders.js';\nimport { createCombinedWorkspaceEdit, sortEditsByYieldTo } from './edit.js';\nimport { PostEditWidgetManager } from './postEditWidget.js';\n\nexport const changePasteTypeCommandId = 'editor.changePasteType';\n\nexport const pasteAsPreferenceConfig = 'editor.pasteAs.preferences';\n\nexport const pasteWidgetVisibleCtx = new RawContextKey<boolean>('pasteWidgetVisible', false, localize('pasteWidgetVisible', \"Whether the paste widget is showing\"));\n\nconst vscodeClipboardMime = 'application/vnd.code.copymetadata';\n\ninterface CopyMetadata {\n\treadonly id?: string;\n\treadonly providerCopyMimeTypes?: readonly string[];\n\n\treadonly defaultPastePayload: Omit<PastePayload, 'text'>;\n}\n\ntype PasteEditWithProvider = DocumentPasteEdit & {\n\tprovider: DocumentPasteEditProvider;\n};\n\n\ninterface DocumentPasteWithProviderEditsSession {\n\tedits: readonly PasteEditWithProvider[];\n\tdispose(): void;\n}\n\nexport type PastePreference =\n\t| { readonly only: HierarchicalKind }\n\t| { readonly preferences: readonly HierarchicalKind[] }\n\t| { readonly providerId: string } // Only used internally\n\t;\n\ninterface CopyOperation {\n\treadonly providerMimeTypes: readonly string[];\n\treadonly operation: CancelablePromise<IReadonlyVSDataTransfer | undefined>;\n}\n\nexport class CopyPasteController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.copyPasteActionController';\n\n\tpublic static get(editor: ICodeEditor): CopyPasteController | null {\n\t\treturn editor.getContribution<CopyPasteController>(CopyPasteController.ID);\n\t}\n\n\tprivate static _configureDefaultAction?: IAction;\n\n\t/**\n\t * Global tracking the last copy operation.\n\t *\n\t * This is shared across all editors so that you can copy and paste between groups.\n\t *\n\t * TODO: figure out how to make this work with multiple windows\n\t */\n\tprivate static _currentCopyOperation?: {\n\t\treadonly handle: string;\n\t\treadonly operations: ReadonlyArray<CopyOperation>;\n\t};\n\n\tprivate readonly _editor: ICodeEditor;\n\n\tprivate _currentPasteOperation?: CancelablePromise<void>;\n\tprivate _pasteAsActionContext?: { readonly preferred?: PastePreference };\n\n\tprivate readonly _pasteProgressManager: InlineProgressManager;\n\tprivate readonly _postPasteWidgetManager: PostEditWidgetManager<PasteEditWithProvider>;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t\t@IBulkEditService private readonly _bulkEditService: IBulkEditService,\n\t\t@IClipboardService private readonly _clipboardService: IClipboardService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@IConfigurationService private readonly _configService: IConfigurationService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IQuickInputService private readonly _quickInputService: IQuickInputService,\n\t\t@IProgressService private readonly _progressService: IProgressService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\n\t\tthis._register(editor.onWillCopy(e => this.handleCopy(e)));\n\t\tthis._register(editor.onWillCut(e => this.handleCopy(e)));\n\t\tthis._register(editor.onWillPaste(e => this.handlePaste(e)));\n\n\t\tthis._pasteProgressManager = this._register(new InlineProgressManager('pasteIntoEditor', editor, instantiationService));\n\n\t\tthis._postPasteWidgetManager = this._register(instantiationService.createInstance(PostEditWidgetManager, 'pasteIntoEditor', editor, pasteWidgetVisibleCtx,\n\t\t\t{ id: changePasteTypeCommandId, label: localize('postPasteWidgetTitle', \"Show paste options...\") },\n\t\t\t() => CopyPasteController._configureDefaultAction ? [CopyPasteController._configureDefaultAction] : []\n\t\t));\n\t}\n\n\tpublic changePasteType() {\n\t\tthis._postPasteWidgetManager.tryShowSelector();\n\t}\n\n\tpublic async pasteAs(preferred?: PastePreference) {\n\t\tthis._logService.trace('CopyPasteController.pasteAs');\n\t\tthis._editor.focus();\n\t\ttry {\n\t\t\tthis._logService.trace('Before calling editor.action.clipboardPasteAction');\n\t\t\tthis._pasteAsActionContext = { preferred };\n\t\t\tawait this._commandService.executeCommand('editor.action.clipboardPasteAction');\n\t\t} finally {\n\t\t\tthis._pasteAsActionContext = undefined;\n\t\t}\n\t}\n\n\tpublic clearWidgets() {\n\t\tthis._postPasteWidgetManager.clear();\n\t}\n\n\tprivate isPasteAsEnabled(): boolean {\n\t\treturn this._editor.getOption(EditorOption.pasteAs).enabled;\n\t}\n\n\tpublic async finishedPaste(): Promise<void> {\n\t\tawait this._currentPasteOperation;\n\t}\n\n\tprivate handleCopy(e: IClipboardCopyEvent) {\n\t\tthis._logService.trace('CopyPasteController#handleCopy');\n\t\tif (!this._editor.hasTextFocus()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Explicitly clear the clipboard internal state.\n\t\t// This is needed because on web, the browser clipboard is faked out using an in-memory store.\n\t\t// This means the resources clipboard is not properly updated when copying from the editor.\n\t\tthis._clipboardService.clearInternalState?.();\n\n\t\tif (!this.isPasteAsEnabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst viewModel = this._editor._getViewModel();\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!model || !viewModel || !selections?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst defaultPastePayload = {\n\t\t\tmulticursorText: e.dataToCopy.multicursorText ?? null,\n\t\t\tpasteOnNewLine: e.dataToCopy.isFromEmptySelection,\n\t\t\tmode: null\n\t\t};\n\n\t\tconst providers = this._languageFeaturesService.documentPasteEditProvider\n\t\t\t.ordered(model)\n\t\t\t.filter(x => !!x.prepareDocumentPaste);\n\t\tif (!providers.length) {\n\t\t\tthis.setCopyMetadata(e.clipboardData, { defaultPastePayload });\n\t\t\treturn;\n\t\t}\n\n\t\tconst dataTransfer = new VSDataTransfer();\n\t\tconst providerCopyMimeTypes = providers.flatMap(x => x.copyMimeTypes ?? []);\n\n\t\t// Save off a handle pointing to data that VS Code maintains.\n\t\tconst handle = generateUuid();\n\t\tthis.setCopyMetadata(e.clipboardData, {\n\t\t\tid: handle,\n\t\t\tproviderCopyMimeTypes,\n\t\t\tdefaultPastePayload\n\t\t});\n\n\t\tconst operations = providers.map((provider): CopyOperation => {\n\t\t\treturn {\n\t\t\t\tproviderMimeTypes: provider.copyMimeTypes,\n\t\t\t\toperation: createCancelablePromise(token =>\n\t\t\t\t\tprovider.prepareDocumentPaste!(model, e.dataToCopy.sourceRanges, dataTransfer, token)\n\t\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}))\n\t\t\t};\n\t\t});\n\n\t\tCopyPasteController._currentCopyOperation?.operations.forEach(entry => entry.operation.cancel());\n\t\tCopyPasteController._currentCopyOperation = { handle, operations };\n\t}\n\n\tprivate async handlePaste(e: IClipboardPasteEvent) {\n\t\tthis._logService.trace('CopyPasteController#handlePaste for id : ', e.metadata?.id);\n\n\t\tif (!this._editor.hasTextFocus()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst dataTransfer = e.toExternalVSDataTransfer();\n\t\tif (!dataTransfer) {\n\t\t\treturn;\n\t\t}\n\t\tdataTransfer.delete(vscodeClipboardMime);\n\n\t\tMessageController.get(this._editor)?.closeMessage();\n\t\tthis._currentPasteOperation?.cancel();\n\t\tthis._currentPasteOperation = undefined;\n\n\t\tconst model = this._editor.getModel();\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!selections?.length || !model) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tthis._editor.getOption(EditorOption.readOnly) // Never enabled if editor is readonly.\n\t\t\t|| (!this.isPasteAsEnabled() && !this._pasteAsActionContext) // Or feature disabled (but still enable if paste was explicitly requested)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst metadata = this.fetchCopyMetadata(e);\n\t\tthis._logService.trace('CopyPasteController#handlePaste with metadata : ', metadata?.id, ' and text.length : ', e.clipboardData.getData('text/plain').length);\n\n\t\tconst fileTypes = Array.from(e.clipboardData.files).map(file => file.type);\n\n\t\tconst allPotentialMimeTypes = [\n\t\t\t...e.clipboardData.types,\n\t\t\t...fileTypes,\n\t\t\t...metadata?.providerCopyMimeTypes ?? [],\n\t\t\t// TODO: always adds `uri-list` because this get set if there are resources in the system clipboard.\n\t\t\t// However we can only check the system clipboard async. For this early check, just add it in.\n\t\t\t// We filter providers again once we have the final dataTransfer we will use.\n\t\t\tMimes.uriList,\n\t\t];\n\n\t\tconst allProviders = this._languageFeaturesService.documentPasteEditProvider\n\t\t\t.ordered(model)\n\t\t\t.filter(provider => {\n\t\t\t\t// Filter out providers that don't match the requested paste types\n\t\t\t\tconst preference = this._pasteAsActionContext?.preferred;\n\t\t\t\tif (preference) {\n\t\t\t\t\tif (!this.providerMatchesPreference(provider, preference)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// And providers that don't handle any of mime types in the clipboard\n\t\t\t\treturn provider.pasteMimeTypes?.some(type => matchesMimeType(type, allPotentialMimeTypes));\n\t\t\t});\n\t\tif (!allProviders.length) {\n\t\t\tif (this._pasteAsActionContext?.preferred) {\n\t\t\t\tthis.showPasteAsNoEditMessage(selections, this._pasteAsActionContext.preferred);\n\n\t\t\t\t// Also prevent default paste from applying\n\t\t\t\te.setHandled();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Prevent the editor's default paste handler from running.\n\t\t// Note that after this point, we are fully responsible for handling paste.\n\t\t// If we can't provider a paste for any reason, we need to explicitly delegate pasting back to the editor.\n\t\te.setHandled();\n\n\t\tif (this._pasteAsActionContext) {\n\t\t\tthis.showPasteAsPick(this._pasteAsActionContext.preferred, allProviders, selections, dataTransfer, metadata);\n\t\t} else {\n\t\t\tthis.doPasteInline(allProviders, selections, dataTransfer, metadata, e.browserEvent);\n\t\t}\n\t}\n\n\tprivate showPasteAsNoEditMessage(selections: readonly Selection[], preference: PastePreference) {\n\t\tconst kindLabel = 'only' in preference\n\t\t\t? preference.only.value\n\t\t\t: 'preferences' in preference\n\t\t\t\t? (preference.preferences.length ? preference.preferences.map(preference => preference.value).join(', ') : localize('noPreferences', \"empty\"))\n\t\t\t\t: preference.providerId;\n\n\t\tMessageController.get(this._editor)?.showMessage(localize('pasteAsError', \"No paste edits for '{0}' found\", kindLabel), selections[0].getStartPosition());\n\t}\n\n\tprivate doPasteInline(allProviders: readonly DocumentPasteEditProvider[], selections: readonly Selection[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, clipboardEvent: ClipboardEvent | undefined): void {\n\t\tthis._logService.trace('CopyPasteController#doPasteInline');\n\t\tconst editor = this._editor;\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst editorStateCts = new EditorStateCancellationTokenSource(editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection, undefined);\n\n\t\tconst p = createCancelablePromise(async (pToken) => {\n\t\t\tconst editor = this._editor;\n\t\t\tif (!editor.hasModel()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst model = editor.getModel();\n\n\t\t\tconst disposables = new DisposableStore();\n\t\t\tconst cts = disposables.add(new CancellationTokenSource(pToken));\n\t\t\tdisposables.add(editorStateCts.token.onCancellationRequested(() => cts.cancel()));\n\n\t\t\tconst token = cts.token;\n\t\t\ttry {\n\t\t\t\tawait this.mergeInDataFromCopy(allProviders, dataTransfer, metadata, token);\n\t\t\t\tif (token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst supportedProviders = allProviders.filter(provider => this.isSupportedPasteProvider(provider, dataTransfer));\n\t\t\t\tif (!supportedProviders.length\n\t\t\t\t\t|| (supportedProviders.length === 1 && supportedProviders[0] instanceof DefaultTextPasteOrDropEditProvider) // Only our default text provider is active\n\t\t\t\t) {\n\t\t\t\t\treturn this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t\t}\n\n\t\t\t\tconst context: DocumentPasteContext = {\n\t\t\t\t\ttriggerKind: DocumentPasteTriggerKind.Automatic,\n\t\t\t\t};\n\n\t\t\t\tconst editSession = await this.getPasteEdits(supportedProviders, dataTransfer, model, selections, context, token);\n\t\t\t\tdisposables.add(editSession);\n\t\t\t\tif (token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If the only edit returned is our default text edit, use the default paste handler\n\t\t\t\tif (editSession.edits.length === 1 && editSession.edits[0].provider instanceof DefaultTextPasteOrDropEditProvider) {\n\t\t\t\t\treturn this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t\t}\n\n\t\t\t\tif (editSession.edits.length) {\n\t\t\t\t\tconst canShowWidget = editor.getOption(EditorOption.pasteAs).showPasteSelector === 'afterPaste';\n\t\t\t\t\treturn this._postPasteWidgetManager.applyEditAndShowIfNeeded(selections, { activeEditIndex: this.getInitialActiveEditIndex(model, editSession.edits), allEdits: editSession.edits }, canShowWidget, async (edit, resolveToken) => {\n\t\t\t\t\t\tif (!edit.provider.resolveDocumentPasteEdit) {\n\t\t\t\t\t\t\treturn edit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst resolveP = edit.provider.resolveDocumentPasteEdit(edit, resolveToken);\n\t\t\t\t\t\tconst showP = new DeferredPromise<void>();\n\t\t\t\t\t\tconst resolved = await this._pasteProgressManager.showWhile(selections[0].getEndPosition(), localize('resolveProcess', \"Resolving paste edit for '{0}'. Click to cancel\", edit.title), raceCancellation(Promise.race([showP.p, resolveP]), resolveToken), {\n\t\t\t\t\t\t\tcancel: () => showP.cancel()\n\t\t\t\t\t\t}, 0);\n\n\t\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\t\tedit.insertText = resolved.insertText;\n\t\t\t\t\t\t\tedit.additionalEdit = resolved.additionalEdit;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn edit;\n\t\t\t\t\t}, token);\n\t\t\t\t}\n\n\t\t\t\tawait this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t} finally {\n\t\t\t\tdisposables.dispose();\n\t\t\t\tif (this._currentPasteOperation === p) {\n\t\t\t\t\tthis._currentPasteOperation = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._pasteProgressManager.showWhile(selections[0].getEndPosition(), localize('pasteIntoEditorProgress', \"Running paste handlers. Click to cancel and do basic paste\"), p, {\n\t\t\tcancel: async () => {\n\t\t\t\tp.cancel();\n\t\t\t\tif (editorStateCts.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tawait this.applyDefaultPasteHandler(dataTransfer, metadata, editorStateCts.token, clipboardEvent);\n\t\t\t}\n\t\t}).finally(() => {\n\t\t\teditorStateCts.dispose();\n\t\t});\n\t\tthis._currentPasteOperation = p;\n\t}\n\n\tprivate showPasteAsPick(preference: PastePreference | undefined, allProviders: readonly DocumentPasteEditProvider[], selections: readonly Selection[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined): void {\n\t\tthis._logService.trace('CopyPasteController#showPasteAsPick');\n\t\tconst p = createCancelablePromise(async (token) => {\n\t\t\tconst editor = this._editor;\n\t\t\tif (!editor.hasModel()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst model = editor.getModel();\n\n\t\t\tconst disposables = new DisposableStore();\n\t\t\tconst tokenSource = disposables.add(new EditorStateCancellationTokenSource(editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection, undefined, token));\n\t\t\ttry {\n\t\t\t\tawait this.mergeInDataFromCopy(allProviders, dataTransfer, metadata, tokenSource.token);\n\t\t\t\tif (tokenSource.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Filter out any providers the don't match the full data transfer we will send them.\n\t\t\t\tlet supportedProviders = allProviders.filter(provider => this.isSupportedPasteProvider(provider, dataTransfer, preference));\n\t\t\t\tif (preference) {\n\t\t\t\t\t// We are looking for a specific edit\n\t\t\t\t\tsupportedProviders = supportedProviders.filter(provider => this.providerMatchesPreference(provider, preference));\n\t\t\t\t}\n\n\t\t\t\tconst context: DocumentPasteContext = {\n\t\t\t\t\ttriggerKind: DocumentPasteTriggerKind.PasteAs,\n\t\t\t\t\tonly: preference && 'only' in preference ? preference.only : undefined,\n\t\t\t\t};\n\t\t\t\tlet editSession = disposables.add(await this.getPasteEdits(supportedProviders, dataTransfer, model, selections, context, tokenSource.token));\n\t\t\t\tif (tokenSource.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Filter out any edits that don't match the requested kind\n\t\t\t\tif (preference) {\n\t\t\t\t\teditSession = {\n\t\t\t\t\t\tedits: editSession.edits.filter(edit => {\n\t\t\t\t\t\t\tif ('only' in preference) {\n\t\t\t\t\t\t\t\treturn preference.only.contains(edit.kind);\n\t\t\t\t\t\t\t} else if ('preferences' in preference) {\n\t\t\t\t\t\t\t\treturn preference.preferences.some(preference => preference.contains(edit.kind));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn preference.providerId === edit.provider.id;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tdispose: editSession.dispose\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (!editSession.edits.length) {\n\t\t\t\t\tif (preference) {\n\t\t\t\t\t\tthis.showPasteAsNoEditMessage(selections, preference);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet pickedEdit: DocumentPasteEdit | undefined;\n\t\t\t\tif (preference) {\n\t\t\t\t\tpickedEdit = editSession.edits.at(0);\n\t\t\t\t} else {\n\t\t\t\t\ttype ItemWithEdit = IQuickPickItem & { edit?: DocumentPasteEdit };\n\t\t\t\t\tconst configureDefaultItem: ItemWithEdit = {\n\t\t\t\t\t\tid: 'editor.pasteAs.default',\n\t\t\t\t\t\tlabel: localize('pasteAsDefault', \"Configure default paste action\"),\n\t\t\t\t\t\tedit: undefined,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst selected = await this._quickInputService.pick<ItemWithEdit>(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t...editSession.edits.map((edit): ItemWithEdit => ({\n\t\t\t\t\t\t\t\tlabel: edit.title,\n\t\t\t\t\t\t\t\tdescription: edit.kind?.value,\n\t\t\t\t\t\t\t\tedit,\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t...(CopyPasteController._configureDefaultAction ? [\n\t\t\t\t\t\t\t\tupcast<IQuickPickSeparator>({ type: 'separator' }),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: CopyPasteController._configureDefaultAction.label,\n\t\t\t\t\t\t\t\t\tedit: undefined,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t] : [])\n\t\t\t\t\t\t], {\n\t\t\t\t\t\tplaceHolder: localize('pasteAsPickerPlaceholder', \"Select Paste Action\"),\n\t\t\t\t\t});\n\n\t\t\t\t\tif (selected === configureDefaultItem) {\n\t\t\t\t\t\tCopyPasteController._configureDefaultAction?.run();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tpickedEdit = selected?.edit;\n\t\t\t\t}\n\n\t\t\t\tif (!pickedEdit) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst combinedWorkspaceEdit = createCombinedWorkspaceEdit(model.uri, selections, pickedEdit);\n\t\t\t\tawait this._bulkEditService.apply(combinedWorkspaceEdit, { editor: this._editor });\n\t\t\t} finally {\n\t\t\t\tdisposables.dispose();\n\t\t\t\tif (this._currentPasteOperation === p) {\n\t\t\t\t\tthis._currentPasteOperation = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._progressService.withProgress({\n\t\t\tlocation: ProgressLocation.Window,\n\t\t\ttitle: localize('pasteAsProgress', \"Running paste handlers\"),\n\t\t}, () => p);\n\t}\n\n\tprivate setCopyMetadata(clipboardData: IWritableClipboardData, metadata: CopyMetadata) {\n\t\tthis._logService.trace('CopyPasteController#setCopyMetadata new id : ', metadata.id);\n\t\tclipboardData.setData(vscodeClipboardMime, JSON.stringify(metadata));\n\t}\n\n\tprivate fetchCopyMetadata(e: IClipboardPasteEvent): CopyMetadata | undefined {\n\t\tthis._logService.trace('CopyPasteController#fetchCopyMetadata');\n\n\t\t// Prefer using the clipboard data we saved off\n\t\tconst rawMetadata = e.clipboardData.getData(vscodeClipboardMime);\n\t\tif (rawMetadata) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(rawMetadata);\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\n\t\tif (e.metadata) {\n\t\t\treturn {\n\t\t\t\tdefaultPastePayload: {\n\t\t\t\t\tmode: e.metadata.mode,\n\t\t\t\t\tmulticursorText: e.metadata.multicursorText ?? null,\n\t\t\t\t\tpasteOnNewLine: !!e.metadata.isFromEmptySelection,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate async mergeInDataFromCopy(allProviders: readonly DocumentPasteEditProvider[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, token: CancellationToken): Promise<void> {\n\t\tthis._logService.trace('CopyPasteController#mergeInDataFromCopy with metadata : ', metadata?.id);\n\t\tif (metadata?.id && CopyPasteController._currentCopyOperation?.handle === metadata.id) {\n\t\t\t// Only resolve providers that have data we may care about\n\t\t\tconst toResolve = CopyPasteController._currentCopyOperation.operations\n\t\t\t\t.filter(op => allProviders.some(provider => provider.pasteMimeTypes.some(type => matchesMimeType(type, op.providerMimeTypes))))\n\t\t\t\t.map(op => op.operation);\n\n\t\t\tconst toMergeResults = await Promise.all(toResolve);\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Values from higher priority providers should overwrite values from lower priority ones.\n\t\t\t// Reverse the array to so that the calls to `DataTransfer.replace` later will do this\n\t\t\tfor (const toMergeData of toMergeResults.reverse()) {\n\t\t\t\tif (toMergeData) {\n\t\t\t\t\tfor (const [key, value] of toMergeData) {\n\t\t\t\t\t\tdataTransfer.replace(key, value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!dataTransfer.has(Mimes.uriList)) {\n\t\t\tconst resources = await this._clipboardService.readResources();\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (resources.length) {\n\t\t\t\tdataTransfer.append(Mimes.uriList, createStringDataTransferItem(UriList.create(resources)));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async getPasteEdits(providers: readonly DocumentPasteEditProvider[], dataTransfer: VSDataTransfer, model: ITextModel, selections: readonly Selection[], context: DocumentPasteContext, token: CancellationToken): Promise<DocumentPasteWithProviderEditsSession> {\n\t\tconst disposables = new DisposableStore();\n\n\t\tconst results = await raceCancellation(\n\t\t\tPromise.all(providers.map(async provider => {\n\t\t\t\ttry {\n\t\t\t\t\tconst edits = await provider.provideDocumentPasteEdits?.(model, selections, dataTransfer, context, token);\n\t\t\t\t\tif (edits) {\n\t\t\t\t\t\tdisposables.add(edits);\n\t\t\t\t\t}\n\t\t\t\t\treturn edits?.edits?.map(edit => ({ ...edit, provider }));\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!isCancellationError(err)) {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t}\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t})),\n\t\t\ttoken);\n\t\tconst edits = coalesce(results ?? []).flat().filter(edit => {\n\t\t\treturn !context.only || context.only.contains(edit.kind);\n\t\t});\n\t\treturn {\n\t\t\tedits: sortEditsByYieldTo(edits),\n\t\t\tdispose: () => disposables.dispose()\n\t\t};\n\t}\n\n\tprivate async applyDefaultPasteHandler(dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, token: CancellationToken, clipboardEvent: ClipboardEvent | undefined) {\n\t\tconst textDataTransfer = dataTransfer.get(Mimes.text) ?? dataTransfer.get('text');\n\t\tconst text = (await textDataTransfer?.asString()) ?? '';\n\t\tif (token.isCancellationRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst payload: PastePayload = {\n\t\t\tclipboardEvent,\n\t\t\ttext,\n\t\t\tpasteOnNewLine: metadata?.defaultPastePayload.pasteOnNewLine ?? false,\n\t\t\tmulticursorText: metadata?.defaultPastePayload.multicursorText ?? null,\n\t\t\tmode: null,\n\t\t};\n\t\tthis._logService.trace('CopyPasteController#applyDefaultPasteHandler for id : ', metadata?.id);\n\t\tthis._editor.trigger('keyboard', Handler.Paste, payload);\n\t}\n\n\t/**\n\t * Filter out providers if they:\n\t * - Don't handle any of the data transfer types we have\n\t * - Don't match the preferred paste kind\n\t */\n\tprivate isSupportedPasteProvider(provider: DocumentPasteEditProvider, dataTransfer: VSDataTransfer, preference?: PastePreference): boolean {\n\t\tif (!provider.pasteMimeTypes?.some(type => dataTransfer.matches(type))) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !preference || this.providerMatchesPreference(provider, preference);\n\t}\n\n\tprivate providerMatchesPreference(provider: DocumentPasteEditProvider, preference: PastePreference): boolean {\n\t\tif ('only' in preference) {\n\t\t\treturn provider.providedPasteEditKinds.some(providedKind => preference.only.contains(providedKind));\n\t\t} else if ('preferences' in preference) {\n\t\t\treturn provider.providedPasteEditKinds.some(providedKind => preference.preferences.some(preferredKind => preferredKind.contains(providedKind)));\n\t\t} else {\n\t\t\treturn provider.id === preference.providerId;\n\t\t}\n\t}\n\n\tprivate getInitialActiveEditIndex(model: ITextModel, edits: readonly DocumentPasteEdit[]): number {\n\t\tconst preferredProviders = this._configService.getValue<PreferredPasteConfiguration[]>(pasteAsPreferenceConfig, { resource: model.uri });\n\t\tfor (const config of Array.isArray(preferredProviders) ? preferredProviders : []) {\n\t\t\tconst desiredKind = new HierarchicalKind(config);\n\t\t\tconst editIndex = edits.findIndex(edit => desiredKind.contains(edit.kind));\n\t\t\tif (editIndex >= 0) {\n\t\t\t\treturn editIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.ts"],"names":[],"mappings":"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","file":"copyPasteController.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { IAction } from '../../../../base/common/actions.js';\nimport { coalesce } from '../../../../base/common/arrays.js';\nimport { CancelablePromise, createCancelablePromise, DeferredPromise, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { createStringDataTransferItem, IReadonlyVSDataTransfer, matchesMimeType, UriList, VSDataTransfer } from '../../../../base/common/dataTransfer.js';\nimport { isCancellationError } from '../../../../base/common/errors.js';\nimport { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Mimes } from '../../../../base/common/mime.js';\nimport { upcast } from '../../../../base/common/types.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { localize } from '../../../../nls.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { IProgressService, ProgressLocation } from '../../../../platform/progress/common/progress.js';\nimport { IQuickInputService, IQuickPickItem, IQuickPickSeparator } from '../../../../platform/quickinput/common/quickInput.js';\nimport { IClipboardCopyEvent, IClipboardPasteEvent, IWritableClipboardData } from '../../../browser/controller/editContext/clipboardUtils.js';\nimport { ICodeEditor, PastePayload } from '../../../browser/editorBrowser.js';\nimport { IBulkEditService } from '../../../browser/services/bulkEditService.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { Handler, IEditorContribution } from '../../../common/editorCommon.js';\nimport { DocumentPasteContext, DocumentPasteEdit, DocumentPasteEditProvider, DocumentPasteTriggerKind } from '../../../common/languages.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CodeEditorStateFlag, EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { InlineProgressManager } from '../../inlineProgress/browser/inlineProgress.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { PreferredPasteConfiguration } from './copyPasteContribution.js';\nimport { DefaultTextPasteOrDropEditProvider } from './defaultProviders.js';\nimport { createCombinedWorkspaceEdit, sortEditsByYieldTo } from './edit.js';\nimport { PasteEditSession } from './pasteEditSession.js';\nimport { PostEditWidgetManager } from './postEditWidget.js';\n\nexport const changePasteTypeCommandId = 'editor.changePasteType';\n\nexport const pasteAsPreferenceConfig = 'editor.pasteAs.preferences';\n\nexport const pasteWidgetVisibleCtx = new RawContextKey<boolean>('pasteWidgetVisible', false, localize('pasteWidgetVisible', \"Whether the paste widget is showing\"));\n\nconst vscodeClipboardMime = 'application/vnd.code.copymetadata';\n\ninterface CopyMetadata {\n\treadonly id?: string;\n\treadonly providerCopyMimeTypes?: readonly string[];\n\n\treadonly defaultPastePayload: Omit<PastePayload, 'text'>;\n}\n\ntype PasteEditWithProvider = DocumentPasteEdit & {\n\tprovider: DocumentPasteEditProvider;\n};\n\n\nexport type PastePreference =\n\t| { readonly only: HierarchicalKind }\n\t| { readonly preferences: readonly HierarchicalKind[] }\n\t| { readonly providerId: string } // Only used internally\n\t;\n\ninterface CopyOperation {\n\treadonly providerMimeTypes: readonly string[];\n\treadonly operation: CancelablePromise<IReadonlyVSDataTransfer | undefined>;\n}\n\nexport class CopyPasteController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.copyPasteActionController';\n\n\tpublic static get(editor: ICodeEditor): CopyPasteController | null {\n\t\treturn editor.getContribution<CopyPasteController>(CopyPasteController.ID);\n\t}\n\n\tprivate static _configureDefaultAction?: IAction;\n\n\t/**\n\t * Global tracking the last copy operation.\n\t *\n\t * This is shared across all editors so that you can copy and paste between groups.\n\t *\n\t * TODO: figure out how to make this work with multiple windows\n\t */\n\tprivate static _currentCopyOperation?: {\n\t\treadonly handle: string;\n\t\treadonly operations: ReadonlyArray<CopyOperation>;\n\t};\n\n\tprivate readonly _editor: ICodeEditor;\n\n\tprivate _currentPasteOperation?: CancelablePromise<void>;\n\tprivate _pasteAsActionContext?: { readonly preferred?: PastePreference };\n\n\tprivate readonly _pasteProgressManager: InlineProgressManager;\n\tprivate readonly _postPasteWidgetManager: PostEditWidgetManager<PasteEditWithProvider>;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t\t@IBulkEditService private readonly _bulkEditService: IBulkEditService,\n\t\t@IClipboardService private readonly _clipboardService: IClipboardService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@IConfigurationService private readonly _configService: IConfigurationService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IQuickInputService private readonly _quickInputService: IQuickInputService,\n\t\t@IProgressService private readonly _progressService: IProgressService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editor = editor;\n\n\t\tthis._register(editor.onWillCopy(e => this.handleCopy(e)));\n\t\tthis._register(editor.onWillCut(e => this.handleCopy(e)));\n\t\tthis._register(editor.onWillPaste(e => this.handlePaste(e)));\n\n\t\tthis._pasteProgressManager = this._register(new InlineProgressManager('pasteIntoEditor', editor, instantiationService));\n\n\t\tthis._postPasteWidgetManager = this._register(instantiationService.createInstance(PostEditWidgetManager, 'pasteIntoEditor', editor, pasteWidgetVisibleCtx,\n\t\t\t{ id: changePasteTypeCommandId, label: localize('postPasteWidgetTitle', \"Show paste options...\") },\n\t\t\t() => CopyPasteController._configureDefaultAction ? [CopyPasteController._configureDefaultAction] : []\n\t\t));\n\t}\n\n\tpublic changePasteType() {\n\t\tthis._postPasteWidgetManager.tryShowSelector();\n\t}\n\n\tpublic async pasteAs(preferred?: PastePreference) {\n\t\tthis._logService.trace('CopyPasteController.pasteAs');\n\t\tthis._editor.focus();\n\t\ttry {\n\t\t\tthis._logService.trace('Before calling editor.action.clipboardPasteAction');\n\t\t\tthis._pasteAsActionContext = { preferred };\n\t\t\tawait this._commandService.executeCommand('editor.action.clipboardPasteAction');\n\t\t} finally {\n\t\t\tthis._pasteAsActionContext = undefined;\n\t\t}\n\t}\n\n\tpublic clearWidgets() {\n\t\tthis._postPasteWidgetManager.clear();\n\t}\n\n\tprivate isPasteAsEnabled(): boolean {\n\t\treturn this._editor.getOption(EditorOption.pasteAs).enabled;\n\t}\n\n\tpublic async finishedPaste(): Promise<void> {\n\t\tawait this._currentPasteOperation;\n\t}\n\n\tprivate handleCopy(e: IClipboardCopyEvent) {\n\t\tthis._logService.trace('CopyPasteController#handleCopy');\n\t\tif (!this._editor.hasTextFocus()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Explicitly clear the clipboard internal state.\n\t\t// This is needed because on web, the browser clipboard is faked out using an in-memory store.\n\t\t// This means the resources clipboard is not properly updated when copying from the editor.\n\t\tthis._clipboardService.clearInternalState?.();\n\n\t\tif (!this.isPasteAsEnabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst viewModel = this._editor._getViewModel();\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!model || !viewModel || !selections?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst defaultPastePayload = {\n\t\t\tmulticursorText: e.dataToCopy.multicursorText ?? null,\n\t\t\tpasteOnNewLine: e.dataToCopy.isFromEmptySelection,\n\t\t\tisBlock: e.dataToCopy.isBlock,\n\t\t\tmode: null\n\t\t};\n\n\t\tconst providers = this._languageFeaturesService.documentPasteEditProvider\n\t\t\t.ordered(model)\n\t\t\t.filter(x => !!x.prepareDocumentPaste);\n\t\tif (!providers.length) {\n\t\t\tthis.setCopyMetadata(e.clipboardData, { defaultPastePayload });\n\t\t\treturn;\n\t\t}\n\n\t\tconst dataTransfer = new VSDataTransfer();\n\t\tconst providerCopyMimeTypes = providers.flatMap(x => x.copyMimeTypes ?? []);\n\n\t\t// Save off a handle pointing to data that VS Code maintains.\n\t\tconst handle = generateUuid();\n\t\tthis.setCopyMetadata(e.clipboardData, {\n\t\t\tid: handle,\n\t\t\tproviderCopyMimeTypes,\n\t\t\tdefaultPastePayload\n\t\t});\n\n\t\tconst operations = providers.map((provider): CopyOperation => {\n\t\t\treturn {\n\t\t\t\tproviderMimeTypes: provider.copyMimeTypes,\n\t\t\t\toperation: createCancelablePromise(token =>\n\t\t\t\t\tprovider.prepareDocumentPaste!(model, e.dataToCopy.sourceRanges, dataTransfer, token)\n\t\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}))\n\t\t\t};\n\t\t});\n\n\t\tCopyPasteController._currentCopyOperation?.operations.forEach(entry => entry.operation.cancel());\n\t\tCopyPasteController._currentCopyOperation = { handle, operations };\n\t}\n\n\tprivate async handlePaste(e: IClipboardPasteEvent) {\n\t\tthis._logService.trace('CopyPasteController#handlePaste for id : ', e.metadata?.id);\n\n\t\tif (!this._editor.hasTextFocus()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst dataTransfer = e.toExternalVSDataTransfer();\n\t\tif (!dataTransfer) {\n\t\t\treturn;\n\t\t}\n\t\tdataTransfer.delete(vscodeClipboardMime);\n\n\t\tMessageController.get(this._editor)?.closeMessage();\n\t\tthis._currentPasteOperation?.cancel();\n\t\tthis._currentPasteOperation = undefined;\n\n\t\tconst model = this._editor.getModel();\n\t\tconst selections = this._editor.getSelections();\n\t\tif (!selections?.length || !model) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tthis._editor.getOption(EditorOption.readOnly) // Never enabled if editor is readonly.\n\t\t\t|| (!this.isPasteAsEnabled() && !this._pasteAsActionContext) // Or feature disabled (but still enable if paste was explicitly requested)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst metadata = this.fetchCopyMetadata(e);\n\t\tthis._logService.trace('CopyPasteController#handlePaste with metadata : ', metadata?.id, ' and text.length : ', e.clipboardData.getData('text/plain').length);\n\n\t\tconst fileTypes = Array.from(e.clipboardData.files).map(file => file.type);\n\n\t\tconst allPotentialMimeTypes = [\n\t\t\t...e.clipboardData.types,\n\t\t\t...fileTypes,\n\t\t\t...metadata?.providerCopyMimeTypes ?? [],\n\t\t\t// TODO: always adds `uri-list` because this get set if there are resources in the system clipboard.\n\t\t\t// However we can only check the system clipboard async. For this early check, just add it in.\n\t\t\t// We filter providers again once we have the final dataTransfer we will use.\n\t\t\tMimes.uriList,\n\t\t];\n\n\t\tconst allProviders = this._languageFeaturesService.documentPasteEditProvider\n\t\t\t.ordered(model)\n\t\t\t.filter(provider => {\n\t\t\t\t// Filter out providers that don't match the requested paste types\n\t\t\t\tconst preference = this._pasteAsActionContext?.preferred;\n\t\t\t\tif (preference) {\n\t\t\t\t\tif (!this.providerMatchesPreference(provider, preference)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// And providers that don't handle any of mime types in the clipboard\n\t\t\t\treturn provider.pasteMimeTypes?.some(type => matchesMimeType(type, allPotentialMimeTypes));\n\t\t\t});\n\t\tif (!allProviders.length) {\n\t\t\tif (this._pasteAsActionContext?.preferred) {\n\t\t\t\tthis.showPasteAsNoEditMessage(selections, this._pasteAsActionContext.preferred);\n\n\t\t\t\t// Also prevent default paste from applying\n\t\t\t\te.setHandled();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Prevent the editor's default paste handler from running.\n\t\t// Note that after this point, we are fully responsible for handling paste.\n\t\t// If we can't provider a paste for any reason, we need to explicitly delegate pasting back to the editor.\n\t\te.setHandled();\n\n\t\tif (this._pasteAsActionContext) {\n\t\t\tthis.showPasteAsPick(this._pasteAsActionContext.preferred, allProviders, selections, dataTransfer, metadata);\n\t\t} else {\n\t\t\tthis.doPasteInline(allProviders, selections, dataTransfer, metadata, e.browserEvent);\n\t\t}\n\t}\n\n\tprivate showPasteAsNoEditMessage(selections: readonly Selection[], preference: PastePreference) {\n\t\tconst kindLabel = 'only' in preference\n\t\t\t? preference.only.value\n\t\t\t: 'preferences' in preference\n\t\t\t\t? (preference.preferences.length ? preference.preferences.map(preference => preference.value).join(', ') : localize('noPreferences', \"empty\"))\n\t\t\t\t: preference.providerId;\n\n\t\tMessageController.get(this._editor)?.showMessage(localize('pasteAsError', \"No paste edits for '{0}' found\", kindLabel), selections[0].getStartPosition());\n\t}\n\n\tprivate doPasteInline(allProviders: readonly DocumentPasteEditProvider[], selections: readonly Selection[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, clipboardEvent: ClipboardEvent | undefined): void {\n\t\tthis._logService.trace('CopyPasteController#doPasteInline');\n\t\tconst editor = this._editor;\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst editorStateCts = new EditorStateCancellationTokenSource(editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection, undefined);\n\n\t\tconst p = createCancelablePromise(async (pToken) => {\n\t\t\tconst editor = this._editor;\n\t\t\tif (!editor.hasModel()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst model = editor.getModel();\n\n\t\t\tconst disposables = new DisposableStore();\n\t\t\tconst cts = disposables.add(new CancellationTokenSource(pToken));\n\t\t\tconst editorStateListener = disposables.add(editorStateCts.token.onCancellationRequested(() => cts.cancel()));\n\n\t\t\tconst token = cts.token;\n\t\t\ttry {\n\t\t\t\tawait this.mergeInDataFromCopy(allProviders, dataTransfer, metadata, token);\n\t\t\t\tif (token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst supportedProviders = allProviders.filter(provider => this.isSupportedPasteProvider(provider, dataTransfer));\n\t\t\t\tif (!supportedProviders.length\n\t\t\t\t\t|| (supportedProviders.length === 1 && supportedProviders[0] instanceof DefaultTextPasteOrDropEditProvider) // Only our default text provider is active\n\t\t\t\t) {\n\t\t\t\t\treturn this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t\t}\n\n\t\t\t\tconst context: DocumentPasteContext = {\n\t\t\t\t\ttriggerKind: DocumentPasteTriggerKind.Automatic,\n\t\t\t\t};\n\n\t\t\t\tconst editSession = disposables.add(await this.getPasteEdits(supportedProviders, dataTransfer, model, selections, context, token));\n\t\t\t\tif (token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If the only edit returned is our default text edit, use the default paste handler\n\t\t\t\tif (editSession.edits.length === 1 && editSession.edits[0].provider instanceof DefaultTextPasteOrDropEditProvider) {\n\t\t\t\t\treturn this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t\t}\n\n\t\t\t\tif (editSession.edits.length) {\n\t\t\t\t\tconst canShowWidget = editor.getOption(EditorOption.pasteAs).showPasteSelector === 'afterPaste';\n\t\t\t\t\t// Applying the paste changes editor state itself. The widget manager handles cancellation during resolve.\n\t\t\t\t\tdisposables.delete(editorStateListener);\n\t\t\t\t\treturn await this._postPasteWidgetManager.applyEditAndShowIfNeeded(selections, { activeEditIndex: this.getInitialActiveEditIndex(model, editSession.edits), allEdits: editSession.edits }, canShowWidget, async (edit, resolveToken) => {\n\t\t\t\t\t\tif (!edit.provider.resolveDocumentPasteEdit) {\n\t\t\t\t\t\t\treturn edit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst resolveP = edit.provider.resolveDocumentPasteEdit(edit, resolveToken);\n\t\t\t\t\t\tconst showP = new DeferredPromise<void>();\n\t\t\t\t\t\tconst resolved = await this._pasteProgressManager.showWhile(selections[0].getEndPosition(), localize('resolveProcess', \"Resolving paste edit for '{0}'. Click to cancel\", edit.title), raceCancellation(Promise.race([showP.p, resolveP]), resolveToken), {\n\t\t\t\t\t\t\tcancel: () => showP.cancel()\n\t\t\t\t\t\t}, 0);\n\n\t\t\t\t\t\tif (resolved) {\n\t\t\t\t\t\t\tedit.insertText = resolved.insertText;\n\t\t\t\t\t\t\tedit.additionalEdit = resolved.additionalEdit;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn edit;\n\t\t\t\t\t}, token, editSession);\n\t\t\t\t}\n\n\t\t\t\tawait this.applyDefaultPasteHandler(dataTransfer, metadata, token, clipboardEvent);\n\t\t\t} finally {\n\t\t\t\tdisposables.dispose();\n\t\t\t\tif (this._currentPasteOperation === p) {\n\t\t\t\t\tthis._currentPasteOperation = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._pasteProgressManager.showWhile(selections[0].getEndPosition(), localize('pasteIntoEditorProgress', \"Running paste handlers. Click to cancel and do basic paste\"), p, {\n\t\t\tcancel: async () => {\n\t\t\t\tp.cancel();\n\t\t\t\tif (editorStateCts.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tawait this.applyDefaultPasteHandler(dataTransfer, metadata, editorStateCts.token, clipboardEvent);\n\t\t\t}\n\t\t}).finally(() => {\n\t\t\teditorStateCts.dispose();\n\t\t});\n\t\tthis._currentPasteOperation = p;\n\t}\n\n\tprivate showPasteAsPick(preference: PastePreference | undefined, allProviders: readonly DocumentPasteEditProvider[], selections: readonly Selection[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined): void {\n\t\tthis._logService.trace('CopyPasteController#showPasteAsPick');\n\t\tconst p = createCancelablePromise(async (token) => {\n\t\t\tconst editor = this._editor;\n\t\t\tif (!editor.hasModel()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst model = editor.getModel();\n\n\t\t\tconst disposables = new DisposableStore();\n\t\t\tconst tokenSource = disposables.add(new EditorStateCancellationTokenSource(editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection, undefined, token));\n\t\t\ttry {\n\t\t\t\tawait this.mergeInDataFromCopy(allProviders, dataTransfer, metadata, tokenSource.token);\n\t\t\t\tif (tokenSource.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Filter out any providers the don't match the full data transfer we will send them.\n\t\t\t\tlet supportedProviders = allProviders.filter(provider => this.isSupportedPasteProvider(provider, dataTransfer, preference));\n\t\t\t\tif (preference) {\n\t\t\t\t\t// We are looking for a specific edit\n\t\t\t\t\tsupportedProviders = supportedProviders.filter(provider => this.providerMatchesPreference(provider, preference));\n\t\t\t\t}\n\n\t\t\t\tconst context: DocumentPasteContext = {\n\t\t\t\t\ttriggerKind: DocumentPasteTriggerKind.PasteAs,\n\t\t\t\t\tonly: preference && 'only' in preference ? preference.only : undefined,\n\t\t\t\t};\n\t\t\t\tconst editSession = disposables.add(await this.getPasteEdits(supportedProviders, dataTransfer, model, selections, context, tokenSource.token));\n\t\t\t\tif (tokenSource.token.isCancellationRequested) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Filter out any edits that don't match the requested kind\n\t\t\t\tlet edits = editSession.edits;\n\t\t\t\tif (preference) {\n\t\t\t\t\tedits = edits.filter(edit => {\n\t\t\t\t\t\tif ('only' in preference) {\n\t\t\t\t\t\t\treturn preference.only.contains(edit.kind);\n\t\t\t\t\t\t} else if ('preferences' in preference) {\n\t\t\t\t\t\t\treturn preference.preferences.some(preference => preference.contains(edit.kind));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn preference.providerId === edit.provider.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (!edits.length) {\n\t\t\t\t\tif (preference) {\n\t\t\t\t\t\tthis.showPasteAsNoEditMessage(selections, preference);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet pickedEdit: DocumentPasteEdit | undefined;\n\t\t\t\tif (preference) {\n\t\t\t\t\tpickedEdit = edits.at(0);\n\t\t\t\t} else {\n\t\t\t\t\ttype ItemWithEdit = IQuickPickItem & { edit?: DocumentPasteEdit };\n\t\t\t\t\tconst configureDefaultItem: ItemWithEdit = {\n\t\t\t\t\t\tid: 'editor.pasteAs.default',\n\t\t\t\t\t\tlabel: localize('pasteAsDefault', \"Configure default paste action\"),\n\t\t\t\t\t\tedit: undefined,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst selected = await this._quickInputService.pick<ItemWithEdit>(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t...edits.map((edit): ItemWithEdit => ({\n\t\t\t\t\t\t\t\tlabel: edit.title,\n\t\t\t\t\t\t\t\tdescription: edit.kind?.value,\n\t\t\t\t\t\t\t\tedit,\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t...(CopyPasteController._configureDefaultAction ? [\n\t\t\t\t\t\t\t\tupcast<IQuickPickSeparator>({ type: 'separator' }),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: CopyPasteController._configureDefaultAction.label,\n\t\t\t\t\t\t\t\t\tedit: undefined,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t] : [])\n\t\t\t\t\t\t], {\n\t\t\t\t\t\tplaceHolder: localize('pasteAsPickerPlaceholder', \"Select Paste Action\"),\n\t\t\t\t\t});\n\n\t\t\t\t\tif (selected === configureDefaultItem) {\n\t\t\t\t\t\tCopyPasteController._configureDefaultAction?.run();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tpickedEdit = selected?.edit;\n\t\t\t\t}\n\n\t\t\t\tif (!pickedEdit) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst combinedWorkspaceEdit = createCombinedWorkspaceEdit(model.uri, selections, pickedEdit);\n\t\t\t\tawait this._bulkEditService.apply(combinedWorkspaceEdit, { editor: this._editor });\n\t\t\t} finally {\n\t\t\t\tdisposables.dispose();\n\t\t\t\tif (this._currentPasteOperation === p) {\n\t\t\t\t\tthis._currentPasteOperation = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._progressService.withProgress({\n\t\t\tlocation: ProgressLocation.Window,\n\t\t\ttitle: localize('pasteAsProgress', \"Running paste handlers\"),\n\t\t}, () => p);\n\t}\n\n\tprivate setCopyMetadata(clipboardData: IWritableClipboardData, metadata: CopyMetadata) {\n\t\tthis._logService.trace('CopyPasteController#setCopyMetadata new id : ', metadata.id);\n\t\tclipboardData.setData(vscodeClipboardMime, JSON.stringify(metadata));\n\t}\n\n\tprivate fetchCopyMetadata(e: IClipboardPasteEvent): CopyMetadata | undefined {\n\t\tthis._logService.trace('CopyPasteController#fetchCopyMetadata');\n\n\t\t// Prefer using the clipboard data we saved off\n\t\tconst rawMetadata = e.clipboardData.getData(vscodeClipboardMime);\n\t\tif (rawMetadata) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(rawMetadata);\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\n\t\tif (e.metadata) {\n\t\t\treturn {\n\t\t\t\tdefaultPastePayload: {\n\t\t\t\t\tmode: e.metadata.mode,\n\t\t\t\t\tmulticursorText: e.metadata.multicursorText ?? null,\n\t\t\t\t\tpasteOnNewLine: !!e.metadata.isFromEmptySelection,\n\t\t\t\t\tisBlock: !!e.metadata.isBlock,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate async mergeInDataFromCopy(allProviders: readonly DocumentPasteEditProvider[], dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, token: CancellationToken): Promise<void> {\n\t\tthis._logService.trace('CopyPasteController#mergeInDataFromCopy with metadata : ', metadata?.id);\n\t\tif (metadata?.id && CopyPasteController._currentCopyOperation?.handle === metadata.id) {\n\t\t\t// Only resolve providers that have data we may care about\n\t\t\tconst toResolve = CopyPasteController._currentCopyOperation.operations\n\t\t\t\t.filter(op => allProviders.some(provider => provider.pasteMimeTypes.some(type => matchesMimeType(type, op.providerMimeTypes))))\n\t\t\t\t.map(op => op.operation);\n\n\t\t\tconst toMergeResults = await Promise.all(toResolve);\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Values from higher priority providers should overwrite values from lower priority ones.\n\t\t\t// Reverse the array to so that the calls to `DataTransfer.replace` later will do this\n\t\t\tfor (const toMergeData of toMergeResults.reverse()) {\n\t\t\t\tif (toMergeData) {\n\t\t\t\t\tfor (const [key, value] of toMergeData) {\n\t\t\t\t\t\tdataTransfer.replace(key, value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!dataTransfer.has(Mimes.uriList)) {\n\t\t\tconst resources = await this._clipboardService.readResources();\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (resources.length) {\n\t\t\t\tdataTransfer.append(Mimes.uriList, createStringDataTransferItem(UriList.create(resources)));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async getPasteEdits(providers: readonly DocumentPasteEditProvider[], dataTransfer: VSDataTransfer, model: ITextModel, selections: readonly Selection[], context: DocumentPasteContext, token: CancellationToken): Promise<PasteEditSession<PasteEditWithProvider>> {\n\t\tconst disposables = new DisposableStore();\n\n\t\tconst results = await raceCancellation(\n\t\t\tPromise.all(providers.map(async provider => {\n\t\t\t\ttry {\n\t\t\t\t\tconst edits = await provider.provideDocumentPasteEdits?.(model, selections, dataTransfer, context, token);\n\t\t\t\t\tif (edits) {\n\t\t\t\t\t\tdisposables.add(edits);\n\t\t\t\t\t}\n\t\t\t\t\treturn edits?.edits?.map(edit => ({ ...edit, provider }));\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!isCancellationError(err)) {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t}\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t})),\n\t\t\ttoken);\n\t\tconst edits = coalesce(results ?? []).flat().filter(edit => {\n\t\t\treturn !context.only || context.only.contains(edit.kind);\n\t\t});\n\t\treturn new PasteEditSession(sortEditsByYieldTo(edits), disposables);\n\t}\n\n\tprivate async applyDefaultPasteHandler(dataTransfer: VSDataTransfer, metadata: CopyMetadata | undefined, token: CancellationToken, clipboardEvent: ClipboardEvent | undefined) {\n\t\tconst textDataTransfer = dataTransfer.get(Mimes.text) ?? dataTransfer.get('text');\n\t\tconst text = (await textDataTransfer?.asString()) ?? '';\n\t\tif (token.isCancellationRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst payload: PastePayload = {\n\t\t\tclipboardEvent,\n\t\t\ttext,\n\t\t\tpasteOnNewLine: metadata?.defaultPastePayload.pasteOnNewLine ?? false,\n\t\t\tmulticursorText: metadata?.defaultPastePayload.multicursorText ?? null,\n\t\t\tisBlock: !!metadata?.defaultPastePayload.isBlock,\n\t\t\tmode: null,\n\t\t};\n\t\tthis._logService.trace('CopyPasteController#applyDefaultPasteHandler for id : ', metadata?.id);\n\t\tthis._editor.trigger('keyboard', Handler.Paste, payload);\n\t}\n\n\t/**\n\t * Filter out providers if they:\n\t * - Don't handle any of the data transfer types we have\n\t * - Don't match the preferred paste kind\n\t */\n\tprivate isSupportedPasteProvider(provider: DocumentPasteEditProvider, dataTransfer: VSDataTransfer, preference?: PastePreference): boolean {\n\t\tif (!provider.pasteMimeTypes?.some(type => dataTransfer.matches(type))) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !preference || this.providerMatchesPreference(provider, preference);\n\t}\n\n\tprivate providerMatchesPreference(provider: DocumentPasteEditProvider, preference: PastePreference): boolean {\n\t\tif ('only' in preference) {\n\t\t\treturn provider.providedPasteEditKinds.some(providedKind => preference.only.contains(providedKind));\n\t\t} else if ('preferences' in preference) {\n\t\t\treturn provider.providedPasteEditKinds.some(providedKind => preference.preferences.some(preferredKind => preferredKind.contains(providedKind)));\n\t\t} else {\n\t\t\treturn provider.id === preference.providerId;\n\t\t}\n\t}\n\n\tprivate getInitialActiveEditIndex(model: ITextModel, edits: readonly DocumentPasteEdit[]): number {\n\t\tconst preferredProviders = this._configService.getValue<PreferredPasteConfiguration[]>(pasteAsPreferenceConfig, { resource: model.uri });\n\t\tfor (const config of Array.isArray(preferredProviders) ? preferredProviders : []) {\n\t\t\tconst desiredKind = new HierarchicalKind(config);\n\t\t\tconst editIndex = edits.findIndex(edit => desiredKind.contains(edit.kind));\n\t\t\tif (editIndex >= 0) {\n\t\t\t\treturn editIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n}\n"]}
|
|
@@ -72,7 +72,7 @@ export class DefaultTextPasteOrDropEditProvider extends SimplePasteAndDropProvid
|
|
|
72
72
|
const insertText = await textEntry.asString();
|
|
73
73
|
return {
|
|
74
74
|
handledMimeType: Mimes.text,
|
|
75
|
-
title: localize(
|
|
75
|
+
title: localize(987, "Insert Plain Text"),
|
|
76
76
|
insertText,
|
|
77
77
|
kind: this.kind,
|
|
78
78
|
};
|
|
@@ -105,14 +105,14 @@ class PathProvider extends SimplePasteAndDropProvider {
|
|
|
105
105
|
if (uriCount > 0) {
|
|
106
106
|
// Dropping at least one generic uri (such as https) so use most generic label
|
|
107
107
|
label = entries.length > 1
|
|
108
|
-
? localize(
|
|
109
|
-
: localize(
|
|
108
|
+
? localize(988, "Insert Uris")
|
|
109
|
+
: localize(989, "Insert Uri");
|
|
110
110
|
}
|
|
111
111
|
else {
|
|
112
112
|
// All the paths are file paths
|
|
113
113
|
label = entries.length > 1
|
|
114
|
-
? localize(
|
|
115
|
-
: localize(
|
|
114
|
+
? localize(990, "Insert Paths")
|
|
115
|
+
: localize(991, "Insert Path");
|
|
116
116
|
}
|
|
117
117
|
return {
|
|
118
118
|
handledMimeType: Mimes.uriList,
|
|
@@ -145,8 +145,8 @@ let RelativePathProvider = class RelativePathProvider extends SimplePasteAndDrop
|
|
|
145
145
|
handledMimeType: Mimes.uriList,
|
|
146
146
|
insertText: relativeUris.join(' '),
|
|
147
147
|
title: entries.length > 1
|
|
148
|
-
? localize(
|
|
149
|
-
: localize(
|
|
148
|
+
? localize(992, "Insert Relative Paths")
|
|
149
|
+
: localize(993, "Insert Relative Path"),
|
|
150
150
|
kind: this.kind,
|
|
151
151
|
};
|
|
152
152
|
}
|
|
@@ -176,7 +176,7 @@ class PasteHtmlProvider {
|
|
|
176
176
|
edits: [{
|
|
177
177
|
insertText: htmlText,
|
|
178
178
|
yieldTo: this._yieldTo,
|
|
179
|
-
title: localize(
|
|
179
|
+
title: localize(994, 'Insert HTML'),
|
|
180
180
|
kind: this.kind,
|
|
181
181
|
}],
|
|
182
182
|
};
|
|
@@ -34,7 +34,7 @@ import { sortEditsByYieldTo } from './edit.js';
|
|
|
34
34
|
import { PostEditWidgetManager } from './postEditWidget.js';
|
|
35
35
|
export const dropAsPreferenceConfig = 'editor.dropIntoEditor.preferences';
|
|
36
36
|
export const changeDropTypeCommandId = 'editor.changeDropType';
|
|
37
|
-
export const dropWidgetVisibleCtx = new RawContextKey('dropWidgetVisible', false, localize(
|
|
37
|
+
export const dropWidgetVisibleCtx = new RawContextKey('dropWidgetVisible', false, localize(995, "Whether the drop widget is showing"));
|
|
38
38
|
let DropIntoEditorController = class DropIntoEditorController extends Disposable {
|
|
39
39
|
static { DropIntoEditorController_1 = this; }
|
|
40
40
|
static { this.ID = 'editor.contrib.dropIntoEditorController'; }
|
|
@@ -48,7 +48,7 @@ let DropIntoEditorController = class DropIntoEditorController extends Disposable
|
|
|
48
48
|
this._treeViewsDragAndDropService = _treeViewsDragAndDropService;
|
|
49
49
|
this.treeItemsTransfer = LocalSelectionTransfer.getInstance();
|
|
50
50
|
this._dropProgressManager = this._register(instantiationService.createInstance(InlineProgressManager, 'dropIntoEditor', editor));
|
|
51
|
-
this._postDropWidgetManager = this._register(instantiationService.createInstance(PostEditWidgetManager, 'dropIntoEditor', editor, dropWidgetVisibleCtx, { id: changeDropTypeCommandId, label: localize(
|
|
51
|
+
this._postDropWidgetManager = this._register(instantiationService.createInstance(PostEditWidgetManager, 'dropIntoEditor', editor, dropWidgetVisibleCtx, { id: changeDropTypeCommandId, label: localize(996, "Show drop options...") }, () => DropIntoEditorController_1._configureDefaultAction ? [DropIntoEditorController_1._configureDefaultAction] : []));
|
|
52
52
|
this._register(editor.onDropIntoEditor(e => this.onDropIntoEditor(editor, e.position, e.event)));
|
|
53
53
|
}
|
|
54
54
|
clearWidgets() {
|
|
@@ -103,7 +103,7 @@ let DropIntoEditorController = class DropIntoEditorController extends Disposable
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
});
|
|
106
|
-
this._dropProgressManager.showWhile(position, localize(
|
|
106
|
+
this._dropProgressManager.showWhile(position, localize(997, "Running drop handlers. Click to cancel"), p, { cancel: () => p.cancel() });
|
|
107
107
|
DropIntoEditorController_1._currentDropOperation = p;
|
|
108
108
|
}
|
|
109
109
|
async getDropEdits(providers, model, position, dataTransfer, token) {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';
|
|
6
|
+
/** Owns cached paste edits until they are disposed or transferred to another session. */
|
|
7
|
+
export class PasteEditSession extends Disposable {
|
|
8
|
+
constructor(edits, disposables) {
|
|
9
|
+
super();
|
|
10
|
+
this.edits = edits;
|
|
11
|
+
this._disposables = this._register(new MutableDisposable());
|
|
12
|
+
this._disposables.value = disposables;
|
|
13
|
+
}
|
|
14
|
+
/** Transfers the edits to a new owner. Disposing this session will no longer release them. */
|
|
15
|
+
take() {
|
|
16
|
+
return new PasteEditSession(this.edits, this._disposables.clearAndLeak());
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=pasteEditSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.ts","vs/editor/contrib/dropOrPasteInto/browser/pasteEditSession.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,UAAU,EAAe,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAGlG,yFAAyF;AACzF,MAAM,OAAO,gBAAkE,SAAQ,UAAU;IAGhG,YAAqB,KAAmB,EAAE,WAAoC;QAC7E,KAAK,EAAE,CAAC;QADY,UAAK,GAAL,KAAK,CAAc;QAFvB,iBAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,EAAe,CAAC,CAAC;QAIpF,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,WAAW,CAAC;IACvC,CAAC;IAED,8FAA8F;IAC9F,IAAI;QACH,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3E,CAAC;CACD","file":"pasteEditSession.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Disposable, IDisposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { DocumentPasteEdit } from '../../../common/languages.js';\n\n/** Owns cached paste edits until they are disposed or transferred to another session. */\nexport class PasteEditSession<T extends DocumentPasteEdit = DocumentPasteEdit> extends Disposable {\n\tprivate readonly _disposables = this._register(new MutableDisposable<IDisposable>());\n\n\tconstructor(readonly edits: readonly T[], disposables: IDisposable | undefined) {\n\t\tsuper();\n\t\tthis._disposables.value = disposables;\n\t}\n\n\t/** Transfers the edits to a new owner. Disposing this session will no longer release them. */\n\ttake(): PasteEditSession<T> {\n\t\treturn new PasteEditSession(this.edits, this._disposables.clearAndLeak());\n\t}\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 *--------------------------------------------------------------------------------------------*/\n\nimport { Disposable, IDisposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { DocumentPasteEdit } from '../../../common/languages.js';\n\n/** Owns cached paste edits until they are disposed or transferred to another session. */\nexport class PasteEditSession<T extends DocumentPasteEdit = DocumentPasteEdit> extends Disposable {\n\tprivate readonly _disposables = this._register(new MutableDisposable<IDisposable>());\n\n\tconstructor(readonly edits: readonly T[], disposables: IDisposable | undefined) {\n\t\tsuper();\n\t\tthis._disposables.value = disposables;\n\t}\n\n\t/** Transfers the edits to a new owner. Disposing this session will no longer release them. */\n\ttake(): PasteEditSession<T> {\n\t\treturn new PasteEditSession(this.edits, this._disposables.clearAndLeak());\n\t}\n}\n"]}
|
|
@@ -34,7 +34,7 @@ import './postEditWidget.css';
|
|
|
34
34
|
let PostEditWidget = class PostEditWidget extends Disposable {
|
|
35
35
|
static { PostEditWidget_1 = this; }
|
|
36
36
|
static { this.baseId = 'editor.widget.postEditWidget'; }
|
|
37
|
-
constructor(typeId, editor, visibleContext, showCommand, range, edits, onSelectNewEdit, additionalActions, contextKeyService, _keybindingService, _actionWidgetService) {
|
|
37
|
+
constructor(typeId, editor, visibleContext, showCommand, range, edits, onSelectNewEdit, additionalActions, editSessionOwner, contextKeyService, _keybindingService, _actionWidgetService) {
|
|
38
38
|
super();
|
|
39
39
|
this.typeId = typeId;
|
|
40
40
|
this.editor = editor;
|
|
@@ -47,6 +47,7 @@ let PostEditWidget = class PostEditWidget extends Disposable {
|
|
|
47
47
|
this._actionWidgetService = _actionWidgetService;
|
|
48
48
|
this.allowEditorOverflow = true;
|
|
49
49
|
this.suppressMouseDown = true;
|
|
50
|
+
this._editSession = editSessionOwner ? this._register(editSessionOwner.take()) : undefined;
|
|
50
51
|
this.create();
|
|
51
52
|
this.visibleContext = visibleContext.bindTo(contextKeyService);
|
|
52
53
|
this.visibleContext.set(true);
|
|
@@ -104,16 +105,17 @@ let PostEditWidget = class PostEditWidget extends Disposable {
|
|
|
104
105
|
this._actionWidgetService.hide(false);
|
|
105
106
|
const i = this.edits.allEdits.findIndex(edit => edit === item);
|
|
106
107
|
if (i !== this.edits.activeEditIndex) {
|
|
107
|
-
|
|
108
|
+
// Transfer the edits before undo disposes this widget.
|
|
109
|
+
return this.onSelectNewEdit(i, this._editSession?.take());
|
|
108
110
|
}
|
|
109
111
|
},
|
|
110
112
|
}, anchor, this.editor.getDomNode() ?? undefined, this.additionalActions);
|
|
111
113
|
}
|
|
112
114
|
};
|
|
113
115
|
PostEditWidget = PostEditWidget_1 = __decorate([
|
|
114
|
-
__param(
|
|
115
|
-
__param(
|
|
116
|
-
__param(
|
|
116
|
+
__param(9, IContextKeyService),
|
|
117
|
+
__param(10, IKeybindingService),
|
|
118
|
+
__param(11, IActionWidgetService)
|
|
117
119
|
], PostEditWidget);
|
|
118
120
|
let PostEditWidgetManager = class PostEditWidgetManager extends Disposable {
|
|
119
121
|
constructor(_id, _editor, _visibleContext, _showCommand, _getAdditionalActions, _instantiationService, _bulkEditService, _notificationService) {
|
|
@@ -129,7 +131,7 @@ let PostEditWidgetManager = class PostEditWidgetManager extends Disposable {
|
|
|
129
131
|
this._currentWidget = this._register(new MutableDisposable());
|
|
130
132
|
this._register(Event.any(_editor.onDidChangeModel, _editor.onDidChangeModelContent)(() => this.clear()));
|
|
131
133
|
}
|
|
132
|
-
async applyEditAndShowIfNeeded(ranges, edits, canShowWidget, resolve, token) {
|
|
134
|
+
async applyEditAndShowIfNeeded(ranges, edits, canShowWidget, resolve, token, editSessionOwner) {
|
|
133
135
|
if (!ranges.length || !this._editor.hasModel()) {
|
|
134
136
|
return;
|
|
135
137
|
}
|
|
@@ -138,13 +140,19 @@ let PostEditWidgetManager = class PostEditWidgetManager extends Disposable {
|
|
|
138
140
|
if (!edit) {
|
|
139
141
|
return;
|
|
140
142
|
}
|
|
141
|
-
const onDidSelectEdit = async (newEditIndex) => {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
const onDidSelectEdit = async (newEditIndex, editSession) => {
|
|
144
|
+
try {
|
|
145
|
+
this.clear();
|
|
146
|
+
const model = this._editor.getModel();
|
|
147
|
+
if (!model) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
await model.undo();
|
|
151
|
+
await this.applyEditAndShowIfNeeded(ranges, { activeEditIndex: newEditIndex, allEdits: edits.allEdits }, canShowWidget, resolve, token, editSession);
|
|
152
|
+
}
|
|
153
|
+
finally {
|
|
154
|
+
editSession?.dispose();
|
|
145
155
|
}
|
|
146
|
-
await model.undo();
|
|
147
|
-
this.applyEditAndShowIfNeeded(ranges, { activeEditIndex: newEditIndex, allEdits: edits.allEdits }, canShowWidget, resolve, token);
|
|
148
156
|
};
|
|
149
157
|
const handleError = (e, message) => {
|
|
150
158
|
if (isCancellationError(e)) {
|
|
@@ -152,7 +160,7 @@ let PostEditWidgetManager = class PostEditWidgetManager extends Disposable {
|
|
|
152
160
|
}
|
|
153
161
|
this._notificationService.error(message);
|
|
154
162
|
if (canShowWidget) {
|
|
155
|
-
this.show(ranges[0], edits, onDidSelectEdit);
|
|
163
|
+
this.show(ranges[0], edits, onDidSelectEdit, editSessionOwner);
|
|
156
164
|
}
|
|
157
165
|
};
|
|
158
166
|
const editorStateCts = new EditorStateCancellationTokenSource(this._editor, 1 /* CodeEditorStateFlag.Value */ | 2 /* CodeEditorStateFlag.Selection */, undefined, token);
|
|
@@ -161,7 +169,7 @@ let PostEditWidgetManager = class PostEditWidgetManager extends Disposable {
|
|
|
161
169
|
resolvedEdit = await raceCancellationError(resolve(edit, editorStateCts.token), editorStateCts.token);
|
|
162
170
|
}
|
|
163
171
|
catch (e) {
|
|
164
|
-
return handleError(e, localize(
|
|
172
|
+
return handleError(e, localize(998, "Error resolving edit '{0}':\n{1}", edit.title, toErrorMessage(e)));
|
|
165
173
|
}
|
|
166
174
|
finally {
|
|
167
175
|
editorStateCts.dispose();
|
|
@@ -184,7 +192,7 @@ let PostEditWidgetManager = class PostEditWidgetManager extends Disposable {
|
|
|
184
192
|
editRange = model.getDecorationRange(editTrackingDecoration[0]);
|
|
185
193
|
}
|
|
186
194
|
catch (e) {
|
|
187
|
-
return handleError(e, localize(
|
|
195
|
+
return handleError(e, localize(999, "Error applying edit '{0}':\n{1}", edit.title, toErrorMessage(e)));
|
|
188
196
|
}
|
|
189
197
|
finally {
|
|
190
198
|
model.deltaDecorations(editTrackingDecoration, []);
|
|
@@ -193,13 +201,13 @@ let PostEditWidgetManager = class PostEditWidgetManager extends Disposable {
|
|
|
193
201
|
return;
|
|
194
202
|
}
|
|
195
203
|
if (canShowWidget && editResult.isApplied && edits.allEdits.length > 1) {
|
|
196
|
-
this.show(editRange ?? primaryRange, edits, onDidSelectEdit);
|
|
204
|
+
this.show(editRange ?? primaryRange, edits, onDidSelectEdit, editSessionOwner);
|
|
197
205
|
}
|
|
198
206
|
}
|
|
199
|
-
show(range, edits, onDidSelectEdit) {
|
|
207
|
+
show(range, edits, onDidSelectEdit, editSessionOwner) {
|
|
200
208
|
this.clear();
|
|
201
209
|
if (this._editor.hasModel()) {
|
|
202
|
-
this._currentWidget.value = this._instantiationService.createInstance((PostEditWidget), this._id, this._editor, this._visibleContext, this._showCommand, range, edits, onDidSelectEdit, this._getAdditionalActions());
|
|
210
|
+
this._currentWidget.value = this._instantiationService.createInstance((PostEditWidget), this._id, this._editor, this._visibleContext, this._showCommand, range, edits, onDidSelectEdit, this._getAdditionalActions(), editSessionOwner);
|
|
203
211
|
}
|
|
204
212
|
}
|
|
205
213
|
clear() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;;;;;;;;;;;AAEhG,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAEtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2DAA2D,CAAC;AACjG,OAAO,EAAe,kBAAkB,EAAiB,MAAM,sDAAsD,CAAC;AACtH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AAEhG,OAAO,EAAmB,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAIjG,OAAO,EAAuB,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AACnH,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,sBAAsB,CAAC;AAa9B,IAAM,cAAc,GAApB,MAAM,cAA+D,SAAQ,UAAU;;aAC9D,WAAM,GAAG,8BAAH,AAAiC,CAAC;IAUhE,YACkB,MAAc,EACd,MAAmB,EACpC,cAAsC,EACrB,WAAwB,EACxB,KAAY,EACZ,KAAiB,EACjB,eAA4C,EAC5C,iBAAqC,EAClC,iBAAqC,EACrC,kBAAuD,EACrD,oBAA2D;QAEjF,KAAK,EAAE,CAAC;QAZS,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAa;QAEnB,gBAAW,GAAX,WAAW,CAAa;QACxB,UAAK,GAAL,KAAK,CAAO;QACZ,UAAK,GAAL,KAAK,CAAY;QACjB,oBAAe,GAAf,eAAe,CAA6B;QAC5C,sBAAiB,GAAjB,iBAAiB,CAAoB;QAEjB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACpC,yBAAoB,GAApB,oBAAoB,CAAsB;QAnBzE,wBAAmB,GAAG,IAAI,CAAC;QAC3B,sBAAiB,GAAG,IAAI,CAAC;QAsBjC,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC/D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE;YACxD,IAAI,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,GAAG,EAAE;YACpF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnH,CAAC;IAEO,MAAM;QACb,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAE1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;YACrD,YAAY,EAAE,IAAI;SAClB,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;QAEhC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACzG,CAAC;IAED,KAAK;QACJ,OAAO,gBAAc,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IAClD,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,WAAW;QACV,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YACrC,UAAU,EAAE,+CAAuC;SACnD,CAAC;IACH,CAAC;IAED,YAAY;QACX,MAAM,GAAG,GAAG,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAEpE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EACrD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAsB,EAAE;YACvD,OAAO;gBACN,IAAI,0CAA2B;gBAC/B,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;aACpH,CAAC;QACH,CAAC,CAAC,EAAE;YACJ,MAAM,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;YACD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEtC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBAC/D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;oBACtC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;SACD,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3E,CAAC;;AAvGI,cAAc;IAoBjB,WAAA,kBAAkB,CAAA;IAClB,WAAA,kBAAkB,CAAA;IAClB,YAAA,oBAAoB,CAAA;GAtBjB,cAAc,CAwGnB;AAEM,IAAM,qBAAqB,GAA3B,MAAM,qBAAsE,SAAQ,UAAU;IAIpG,YACkB,GAAW,EACX,OAAoB,EACpB,eAAuC,EACvC,YAAyB,EACzB,qBAA+C,EACzC,qBAA6D,EAClE,gBAAmD,EAC/C,oBAA2D;QAEjF,KAAK,EAAE,CAAC;QATS,QAAG,GAAH,GAAG,CAAQ;QACX,YAAO,GAAP,OAAO,CAAa;QACpB,oBAAe,GAAf,eAAe,CAAwB;QACvC,iBAAY,GAAZ,YAAY,CAAa;QACzB,0BAAqB,GAArB,qBAAqB,CAA0B;QACxB,0BAAqB,GAArB,qBAAqB,CAAuB;QACjD,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC9B,yBAAoB,GAApB,oBAAoB,CAAsB;QAVjE,mBAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,EAAqB,CAAC,CAAC;QAc5F,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CACvB,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,uBAAuB,CAC/B,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,MAAwB,EAAE,KAAiB,EAAE,aAAsB,EAAE,OAA0D,EAAE,KAAwB;QAC9L,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAChD,OAAO;QACR,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO;QACR,CAAC;QAED,MAAM,eAAe,GAAG,KAAK,EAAE,YAAoB,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO;YACR,CAAC;YAED,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACnI,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,CAAC,CAAQ,EAAE,OAAe,EAAE,EAAE;YACjD,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,OAAO;YACR,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;YAC9C,CAAC;QACF,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,kCAAkC,CAAC,IAAI,CAAC,OAAO,EAAE,yEAAyD,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACzJ,IAAI,YAAe,CAAC;QACpB,IAAI,CAAC;YACJ,YAAY,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QACvG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,OAAO,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAc,EAAE,kCAAkC,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpH,CAAC;gBAAS,CAAC;YACV,cAAc,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACnC,OAAO;QACR,CAAC;QAED,MAAM,qBAAqB,GAAG,2BAA2B,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAE3F,2DAA2D;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,sBAAsB,GAAG,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;gBAC1D,KAAK,EAAE,YAAY;gBACnB,OAAO,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,UAAU,6DAAqD,EAAE;aAC9G,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,UAA2B,CAAC;QAChC,IAAI,SAAuB,CAAC;QAC5B,IAAI,CAAC;YACJ,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACvG,SAAS,GAAG,KAAK,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,OAAO,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAY,EAAE,iCAAiC,EAAE,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjH,CAAC;gBAAS,CAAC;YACV,KAAK,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACnC,OAAO;QACR,CAAC;QAED,IAAI,aAAa,IAAI,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,YAAY,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;QAC9D,CAAC;IACF,CAAC;IAEM,IAAI,CAAC,KAAY,EAAE,KAAiB,EAAE,eAA2C;QACvF,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAA,cAAiB,CAAA,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACxN,CAAC;IACF,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEM,eAAe;QACrB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;IAC3C,CAAC;CACD,CAAA;AAjHY,qBAAqB;IAU/B,WAAA,qBAAqB,CAAA;IACrB,WAAA,gBAAgB,CAAA;IAChB,WAAA,oBAAoB,CAAA;GAZV,qBAAqB,CAiHjC","file":"postEditWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { IAction } from '../../../../base/common/actions.js';\nimport { raceCancellationError } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { toErrorMessage } from '../../../../base/common/errorMessage.js';\nimport { isCancellationError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { localize } from '../../../../nls.js';\nimport { ActionListItemKind, IActionListItem } from '../../../../platform/actionWidget/browser/actionList.js';\nimport { IActionWidgetService } from '../../../../platform/actionWidget/browser/actionWidget.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { IBulkEditResult, IBulkEditService } from '../../../browser/services/bulkEditService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { DocumentDropEdit, DocumentPasteEdit } from '../../../common/languages.js';\nimport { TrackedRangeStickiness } from '../../../common/model.js';\nimport { CodeEditorStateFlag, EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { createCombinedWorkspaceEdit } from './edit.js';\nimport './postEditWidget.css';\n\n\ninterface EditSet<Edit extends DocumentPasteEdit | DocumentDropEdit> {\n\treadonly activeEditIndex: number;\n\treadonly allEdits: ReadonlyArray<Edit>;\n}\n\ninterface ShowCommand {\n\treadonly id: string;\n\treadonly label: string;\n}\n\nclass PostEditWidget<T extends DocumentPasteEdit | DocumentDropEdit> extends Disposable implements IContentWidget {\n\tprivate static readonly baseId = 'editor.widget.postEditWidget';\n\n\treadonly allowEditorOverflow = true;\n\treadonly suppressMouseDown = true;\n\n\tprivate domNode!: HTMLElement;\n\tprivate button!: Button;\n\n\tprivate readonly visibleContext: IContextKey<boolean>;\n\n\tconstructor(\n\t\tprivate readonly typeId: string,\n\t\tprivate readonly editor: ICodeEditor,\n\t\tvisibleContext: RawContextKey<boolean>,\n\t\tprivate readonly showCommand: ShowCommand,\n\t\tprivate readonly range: Range,\n\t\tprivate readonly edits: EditSet<T>,\n\t\tprivate readonly onSelectNewEdit: (editIndex: number) => void,\n\t\tprivate readonly additionalActions: readonly IAction[],\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IActionWidgetService private readonly _actionWidgetService: IActionWidgetService,\n\t) {\n\t\tsuper();\n\n\t\tthis.create();\n\n\t\tthis.visibleContext = visibleContext.bindTo(contextKeyService);\n\t\tthis.visibleContext.set(true);\n\t\tthis._register(toDisposable(() => this.visibleContext.reset()));\n\n\t\tthis.editor.addContentWidget(this);\n\t\tthis.editor.layoutContentWidget(this);\n\n\t\tthis._register(toDisposable((() => this.editor.removeContentWidget(this))));\n\n\t\tthis._register(this.editor.onDidChangeCursorPosition(e => {\n\t\t\tthis.dispose();\n\t\t}));\n\n\t\tthis._register(Event.runAndSubscribe(_keybindingService.onDidUpdateKeybindings, () => {\n\t\t\tthis._updateButtonTitle();\n\t\t}));\n\t}\n\n\tprivate _updateButtonTitle() {\n\t\tthis.button.element.title = this._keybindingService.appendKeybinding(this.showCommand.label, this.showCommand.id);\n\t}\n\n\tprivate create(): void {\n\t\tthis.domNode = dom.$('.post-edit-widget');\n\n\t\tthis.button = this._register(new Button(this.domNode, {\n\t\t\tsupportIcons: true,\n\t\t}));\n\t\tthis.button.label = '$(insert)';\n\n\t\tthis._register(dom.addDisposableListener(this.domNode, dom.EventType.CLICK, () => this.showSelector()));\n\t}\n\n\tgetId(): string {\n\t\treturn PostEditWidget.baseId + '.' + this.typeId;\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this.domNode;\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\treturn {\n\t\t\tposition: this.range.getEndPosition(),\n\t\t\tpreference: [ContentWidgetPositionPreference.BELOW]\n\t\t};\n\t}\n\n\tshowSelector() {\n\t\tconst pos = dom.getDomNodePagePosition(this.button.element);\n\t\tconst anchor = { x: pos.left + pos.width, y: pos.top + pos.height };\n\n\t\tthis._actionWidgetService.show('postEditWidget', false,\n\t\t\tthis.edits.allEdits.map((edit, i): IActionListItem<T> => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: ActionListItemKind.Action,\n\t\t\t\t\titem: edit,\n\t\t\t\t\tlabel: edit.title,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tcanPreview: false,\n\t\t\t\t\tgroup: { title: '', icon: ThemeIcon.fromId(i === this.edits.activeEditIndex ? Codicon.check.id : Codicon.blank.id) },\n\t\t\t\t};\n\t\t\t}), {\n\t\t\tonHide: () => {\n\t\t\t\tthis.editor.focus();\n\t\t\t},\n\t\t\tonSelect: (item) => {\n\t\t\t\tthis._actionWidgetService.hide(false);\n\n\t\t\t\tconst i = this.edits.allEdits.findIndex(edit => edit === item);\n\t\t\t\tif (i !== this.edits.activeEditIndex) {\n\t\t\t\t\treturn this.onSelectNewEdit(i);\n\t\t\t\t}\n\t\t\t},\n\t\t}, anchor, this.editor.getDomNode() ?? undefined, this.additionalActions);\n\t}\n}\n\nexport class PostEditWidgetManager<T extends DocumentPasteEdit | DocumentDropEdit> extends Disposable {\n\n\tprivate readonly _currentWidget = this._register(new MutableDisposable<PostEditWidget<T>>());\n\n\tconstructor(\n\t\tprivate readonly _id: string,\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _visibleContext: RawContextKey<boolean>,\n\t\tprivate readonly _showCommand: ShowCommand,\n\t\tprivate readonly _getAdditionalActions: () => readonly IAction[],\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IBulkEditService private readonly _bulkEditService: IBulkEditService,\n\t\t@INotificationService private readonly _notificationService: INotificationService,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(Event.any(\n\t\t\t_editor.onDidChangeModel,\n\t\t\t_editor.onDidChangeModelContent,\n\t\t)(() => this.clear()));\n\t}\n\n\tpublic async applyEditAndShowIfNeeded(ranges: readonly Range[], edits: EditSet<T>, canShowWidget: boolean, resolve: (edit: T, token: CancellationToken) => Promise<T>, token: CancellationToken) {\n\t\tif (!ranges.length || !this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst edit = edits.allEdits.at(edits.activeEditIndex);\n\t\tif (!edit) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst onDidSelectEdit = async (newEditIndex: number) => {\n\t\t\tconst model = this._editor.getModel();\n\t\t\tif (!model) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait model.undo();\n\t\t\tthis.applyEditAndShowIfNeeded(ranges, { activeEditIndex: newEditIndex, allEdits: edits.allEdits }, canShowWidget, resolve, token);\n\t\t};\n\n\t\tconst handleError = (e: Error, message: string) => {\n\t\t\tif (isCancellationError(e)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._notificationService.error(message);\n\t\t\tif (canShowWidget) {\n\t\t\t\tthis.show(ranges[0], edits, onDidSelectEdit);\n\t\t\t}\n\t\t};\n\n\t\tconst editorStateCts = new EditorStateCancellationTokenSource(this._editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection, undefined, token);\n\t\tlet resolvedEdit: T;\n\t\ttry {\n\t\t\tresolvedEdit = await raceCancellationError(resolve(edit, editorStateCts.token), editorStateCts.token);\n\t\t} catch (e) {\n\t\t\treturn handleError(e, localize('resolveError', \"Error resolving edit '{0}':\\n{1}\", edit.title, toErrorMessage(e)));\n\t\t} finally {\n\t\t\teditorStateCts.dispose();\n\t\t}\n\n\t\tif (token.isCancellationRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst combinedWorkspaceEdit = createCombinedWorkspaceEdit(model.uri, ranges, resolvedEdit);\n\n\t\t// Use a decoration to track edits around the trigger range\n\t\tconst primaryRange = ranges[0];\n\t\tconst editTrackingDecoration = model.deltaDecorations([], [{\n\t\t\trange: primaryRange,\n\t\t\toptions: { description: 'paste-line-suffix', stickiness: TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges }\n\t\t}]);\n\n\t\tthis._editor.focus();\n\t\tlet editResult: IBulkEditResult;\n\t\tlet editRange: Range | null;\n\t\ttry {\n\t\t\teditResult = await this._bulkEditService.apply(combinedWorkspaceEdit, { editor: this._editor, token });\n\t\t\teditRange = model.getDecorationRange(editTrackingDecoration[0]);\n\t\t} catch (e) {\n\t\t\treturn handleError(e, localize('applyError', \"Error applying edit '{0}':\\n{1}\", edit.title, toErrorMessage(e)));\n\t\t} finally {\n\t\t\tmodel.deltaDecorations(editTrackingDecoration, []);\n\t\t}\n\n\t\tif (token.isCancellationRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (canShowWidget && editResult.isApplied && edits.allEdits.length > 1) {\n\t\t\tthis.show(editRange ?? primaryRange, edits, onDidSelectEdit);\n\t\t}\n\t}\n\n\tpublic show(range: Range, edits: EditSet<T>, onDidSelectEdit: (newIndex: number) => void) {\n\t\tthis.clear();\n\n\t\tif (this._editor.hasModel()) {\n\t\t\tthis._currentWidget.value = this._instantiationService.createInstance(PostEditWidget<T>, this._id, this._editor, this._visibleContext, this._showCommand, range, edits, onDidSelectEdit, this._getAdditionalActions());\n\t\t}\n\t}\n\n\tpublic clear() {\n\t\tthis._currentWidget.clear();\n\t}\n\n\tpublic tryShowSelector() {\n\t\tthis._currentWidget.value?.showSelector();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.ts"],"names":[],"mappings":"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","file":"postEditWidget.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Button } from '../../../../base/browser/ui/button/button.js';\nimport { IAction } from '../../../../base/common/actions.js';\nimport { raceCancellationError } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { toErrorMessage } from '../../../../base/common/errorMessage.js';\nimport { isCancellationError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { localize } from '../../../../nls.js';\nimport { ActionListItemKind, IActionListItem } from '../../../../platform/actionWidget/browser/actionList.js';\nimport { IActionWidgetService } from '../../../../platform/actionWidget/browser/actionWidget.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { IBulkEditResult, IBulkEditService } from '../../../browser/services/bulkEditService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { DocumentDropEdit, DocumentPasteEdit } from '../../../common/languages.js';\nimport { TrackedRangeStickiness } from '../../../common/model.js';\nimport { CodeEditorStateFlag, EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { createCombinedWorkspaceEdit } from './edit.js';\nimport { PasteEditSession } from './pasteEditSession.js';\nimport './postEditWidget.css';\n\n\ninterface EditSet<Edit extends DocumentPasteEdit | DocumentDropEdit> {\n\treadonly activeEditIndex: number;\n\treadonly allEdits: ReadonlyArray<Edit>;\n}\n\ninterface ShowCommand {\n\treadonly id: string;\n\treadonly label: string;\n}\n\nclass PostEditWidget<T extends DocumentPasteEdit | DocumentDropEdit> extends Disposable implements IContentWidget {\n\tprivate static readonly baseId = 'editor.widget.postEditWidget';\n\n\treadonly allowEditorOverflow = true;\n\treadonly suppressMouseDown = true;\n\n\tprivate readonly _editSession: PasteEditSession | undefined;\n\n\tprivate domNode!: HTMLElement;\n\tprivate button!: Button;\n\n\tprivate readonly visibleContext: IContextKey<boolean>;\n\n\tconstructor(\n\t\tprivate readonly typeId: string,\n\t\tprivate readonly editor: ICodeEditor,\n\t\tvisibleContext: RawContextKey<boolean>,\n\t\tprivate readonly showCommand: ShowCommand,\n\t\tprivate readonly range: Range,\n\t\tprivate readonly edits: EditSet<T>,\n\t\tprivate readonly onSelectNewEdit: (editIndex: number, editSession: PasteEditSession | undefined) => void,\n\t\tprivate readonly additionalActions: readonly IAction[],\n\t\teditSessionOwner: PasteEditSession | undefined,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IActionWidgetService private readonly _actionWidgetService: IActionWidgetService,\n\t) {\n\t\tsuper();\n\n\t\tthis._editSession = editSessionOwner ? this._register(editSessionOwner.take()) : undefined;\n\t\tthis.create();\n\n\t\tthis.visibleContext = visibleContext.bindTo(contextKeyService);\n\t\tthis.visibleContext.set(true);\n\t\tthis._register(toDisposable(() => this.visibleContext.reset()));\n\n\t\tthis.editor.addContentWidget(this);\n\t\tthis.editor.layoutContentWidget(this);\n\n\t\tthis._register(toDisposable((() => this.editor.removeContentWidget(this))));\n\n\t\tthis._register(this.editor.onDidChangeCursorPosition(e => {\n\t\t\tthis.dispose();\n\t\t}));\n\n\t\tthis._register(Event.runAndSubscribe(_keybindingService.onDidUpdateKeybindings, () => {\n\t\t\tthis._updateButtonTitle();\n\t\t}));\n\t}\n\n\tprivate _updateButtonTitle() {\n\t\tthis.button.element.title = this._keybindingService.appendKeybinding(this.showCommand.label, this.showCommand.id);\n\t}\n\n\tprivate create(): void {\n\t\tthis.domNode = dom.$('.post-edit-widget');\n\n\t\tthis.button = this._register(new Button(this.domNode, {\n\t\t\tsupportIcons: true,\n\t\t}));\n\t\tthis.button.label = '$(insert)';\n\n\t\tthis._register(dom.addDisposableListener(this.domNode, dom.EventType.CLICK, () => this.showSelector()));\n\t}\n\n\tgetId(): string {\n\t\treturn PostEditWidget.baseId + '.' + this.typeId;\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this.domNode;\n\t}\n\n\tgetPosition(): IContentWidgetPosition | null {\n\t\treturn {\n\t\t\tposition: this.range.getEndPosition(),\n\t\t\tpreference: [ContentWidgetPositionPreference.BELOW]\n\t\t};\n\t}\n\n\tshowSelector() {\n\t\tconst pos = dom.getDomNodePagePosition(this.button.element);\n\t\tconst anchor = { x: pos.left + pos.width, y: pos.top + pos.height };\n\n\t\tthis._actionWidgetService.show('postEditWidget', false,\n\t\t\tthis.edits.allEdits.map((edit, i): IActionListItem<T> => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: ActionListItemKind.Action,\n\t\t\t\t\titem: edit,\n\t\t\t\t\tlabel: edit.title,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tcanPreview: false,\n\t\t\t\t\tgroup: { title: '', icon: ThemeIcon.fromId(i === this.edits.activeEditIndex ? Codicon.check.id : Codicon.blank.id) },\n\t\t\t\t};\n\t\t\t}), {\n\t\t\tonHide: () => {\n\t\t\t\tthis.editor.focus();\n\t\t\t},\n\t\t\tonSelect: (item) => {\n\t\t\t\tthis._actionWidgetService.hide(false);\n\n\t\t\t\tconst i = this.edits.allEdits.findIndex(edit => edit === item);\n\t\t\t\tif (i !== this.edits.activeEditIndex) {\n\t\t\t\t\t// Transfer the edits before undo disposes this widget.\n\t\t\t\t\treturn this.onSelectNewEdit(i, this._editSession?.take());\n\t\t\t\t}\n\t\t\t},\n\t\t}, anchor, this.editor.getDomNode() ?? undefined, this.additionalActions);\n\t}\n}\n\nexport class PostEditWidgetManager<T extends DocumentPasteEdit | DocumentDropEdit> extends Disposable {\n\n\tprivate readonly _currentWidget = this._register(new MutableDisposable<PostEditWidget<T>>());\n\n\tconstructor(\n\t\tprivate readonly _id: string,\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _visibleContext: RawContextKey<boolean>,\n\t\tprivate readonly _showCommand: ShowCommand,\n\t\tprivate readonly _getAdditionalActions: () => readonly IAction[],\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@IBulkEditService private readonly _bulkEditService: IBulkEditService,\n\t\t@INotificationService private readonly _notificationService: INotificationService,\n\t) {\n\t\tsuper();\n\n\t\tthis._register(Event.any(\n\t\t\t_editor.onDidChangeModel,\n\t\t\t_editor.onDidChangeModelContent,\n\t\t)(() => this.clear()));\n\t}\n\n\tpublic async applyEditAndShowIfNeeded(ranges: readonly Range[], edits: EditSet<T>, canShowWidget: boolean, resolve: (edit: T, token: CancellationToken) => Promise<T>, token: CancellationToken, editSessionOwner?: PasteEditSession) {\n\t\tif (!ranges.length || !this._editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst edit = edits.allEdits.at(edits.activeEditIndex);\n\t\tif (!edit) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst onDidSelectEdit = async (newEditIndex: number, editSession: PasteEditSession | undefined) => {\n\t\t\ttry {\n\t\t\t\tthis.clear();\n\t\t\t\tconst model = this._editor.getModel();\n\t\t\t\tif (!model) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tawait model.undo();\n\t\t\t\tawait this.applyEditAndShowIfNeeded(ranges, { activeEditIndex: newEditIndex, allEdits: edits.allEdits }, canShowWidget, resolve, token, editSession);\n\t\t\t} finally {\n\t\t\t\teditSession?.dispose();\n\t\t\t}\n\t\t};\n\n\t\tconst handleError = (e: Error, message: string) => {\n\t\t\tif (isCancellationError(e)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._notificationService.error(message);\n\t\t\tif (canShowWidget) {\n\t\t\t\tthis.show(ranges[0], edits, onDidSelectEdit, editSessionOwner);\n\t\t\t}\n\t\t};\n\n\t\tconst editorStateCts = new EditorStateCancellationTokenSource(this._editor, CodeEditorStateFlag.Value | CodeEditorStateFlag.Selection, undefined, token);\n\t\tlet resolvedEdit: T;\n\t\ttry {\n\t\t\tresolvedEdit = await raceCancellationError(resolve(edit, editorStateCts.token), editorStateCts.token);\n\t\t} catch (e) {\n\t\t\treturn handleError(e, localize('resolveError', \"Error resolving edit '{0}':\\n{1}\", edit.title, toErrorMessage(e)));\n\t\t} finally {\n\t\t\teditorStateCts.dispose();\n\t\t}\n\n\t\tif (token.isCancellationRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst combinedWorkspaceEdit = createCombinedWorkspaceEdit(model.uri, ranges, resolvedEdit);\n\n\t\t// Use a decoration to track edits around the trigger range\n\t\tconst primaryRange = ranges[0];\n\t\tconst editTrackingDecoration = model.deltaDecorations([], [{\n\t\t\trange: primaryRange,\n\t\t\toptions: { description: 'paste-line-suffix', stickiness: TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges }\n\t\t}]);\n\n\t\tthis._editor.focus();\n\t\tlet editResult: IBulkEditResult;\n\t\tlet editRange: Range | null;\n\t\ttry {\n\t\t\teditResult = await this._bulkEditService.apply(combinedWorkspaceEdit, { editor: this._editor, token });\n\t\t\teditRange = model.getDecorationRange(editTrackingDecoration[0]);\n\t\t} catch (e) {\n\t\t\treturn handleError(e, localize('applyError', \"Error applying edit '{0}':\\n{1}\", edit.title, toErrorMessage(e)));\n\t\t} finally {\n\t\t\tmodel.deltaDecorations(editTrackingDecoration, []);\n\t\t}\n\n\t\tif (token.isCancellationRequested) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (canShowWidget && editResult.isApplied && edits.allEdits.length > 1) {\n\t\t\tthis.show(editRange ?? primaryRange, edits, onDidSelectEdit, editSessionOwner);\n\t\t}\n\t}\n\n\tpublic show(range: Range, edits: EditSet<T>, onDidSelectEdit: (newIndex: number, editSession: PasteEditSession | undefined) => void, editSessionOwner?: PasteEditSession) {\n\t\tthis.clear();\n\n\t\tif (this._editor.hasModel()) {\n\t\t\tthis._currentWidget.value = this._instantiationService.createInstance(PostEditWidget<T>, this._id, this._editor, this._visibleContext, this._showCommand, range, edits, onDidSelectEdit, this._getAdditionalActions(), editSessionOwner);\n\t\t}\n\t}\n\n\tpublic clear() {\n\t\tthis._currentWidget.clear();\n\t}\n\n\tpublic tryShowSelector() {\n\t\tthis._currentWidget.value?.showSelector();\n\t}\n}\n"]}
|
|
@@ -10,7 +10,7 @@ import { createDecorator } from '../../../../platform/instantiation/common/insta
|
|
|
10
10
|
import { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
|
|
11
11
|
import { localize } from '../../../../nls.js';
|
|
12
12
|
const IEditorCancellationTokens = createDecorator('IEditorCancelService');
|
|
13
|
-
const ctxCancellableOperation = new RawContextKey('cancellableOperation', false, localize(
|
|
13
|
+
const ctxCancellableOperation = new RawContextKey('cancellableOperation', false, localize(1000, 'Whether the editor runs a cancellable operation, e.g. like \'Peek References\''));
|
|
14
14
|
registerSingleton(IEditorCancellationTokens, class {
|
|
15
15
|
constructor() {
|
|
16
16
|
this._tokens = new WeakMap();
|