monaco-editor-core 0.55.1 → 0.56.0-dev-20251121
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 +27 -8
- package/esm/vs/base/browser/dom.js +31 -34
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/dompurify/dompurify.js +0 -1
- package/esm/vs/base/browser/keyboardEvent.js +3 -3
- package/esm/vs/base/browser/keyboardEvent.js.map +1 -1
- package/esm/vs/base/browser/markdownRenderer.js +5 -2
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/pixelRatio.js +5 -5
- package/esm/vs/base/browser/pixelRatio.js.map +1 -1
- package/esm/vs/base/browser/trustedTypes.js +1 -1
- package/esm/vs/base/browser/trustedTypes.js.map +1 -1
- package/esm/vs/base/browser/ui/actionbar/actionbar.js +3 -0
- package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +7 -0
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
- package/esm/vs/base/browser/ui/hover/hoverWidget.css +0 -13
- package/esm/vs/base/browser/ui/inputbox/inputBox.js +7 -0
- package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
- package/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css +4 -2
- package/esm/vs/base/browser/ui/list/listView.js +7 -2
- package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBox.js +4 -0
- package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css +12 -32
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +8 -18
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +41 -14
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/abstractTree.js +11 -0
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js +1 -0
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/dataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
- package/esm/vs/base/common/arrays.js +10 -0
- package/esm/vs/base/common/arrays.js.map +1 -1
- package/esm/vs/base/common/async.js +34 -0
- package/esm/vs/base/common/async.js.map +1 -1
- package/esm/vs/base/common/buffer.js +1 -1
- package/esm/vs/base/common/buffer.js.map +1 -1
- package/esm/vs/base/common/cancellation.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +3 -0
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/collections.js.map +1 -1
- package/esm/vs/base/common/equals.js.map +1 -1
- package/esm/vs/base/common/event.js +32 -15
- package/esm/vs/base/common/event.js.map +1 -1
- package/esm/vs/base/common/filters.js +22 -3
- package/esm/vs/base/common/filters.js.map +1 -1
- package/esm/vs/base/common/hotReload.js +2 -2
- package/esm/vs/base/common/hotReload.js.map +1 -1
- package/esm/vs/base/common/iterator.js +1 -1
- package/esm/vs/base/common/iterator.js.map +1 -1
- package/esm/vs/base/common/keyCodes.js +7 -6
- package/esm/vs/base/common/keyCodes.js.map +1 -1
- package/esm/vs/base/common/linkedList.js.map +1 -1
- package/esm/vs/base/common/map.js.map +1 -1
- package/esm/vs/base/common/marked/marked.js +0 -1
- package/esm/vs/base/common/network.js +26 -1
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/normalization.js +19 -6
- package/esm/vs/base/common/normalization.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugLocation.js +1 -2
- package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugName.js +0 -1
- package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
- package/esm/vs/base/common/observableInternal/index.js +4 -4
- package/esm/vs/base/common/observableInternal/index.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js +38 -10
- package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/baseObservable.js +3 -3
- package/esm/vs/base/common/observableInternal/observables/baseObservable.js.map +1 -1
- package/esm/vs/base/common/observableInternal/utils/utils.js +46 -5
- package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
- package/esm/vs/base/common/path.js +1 -0
- package/esm/vs/base/common/path.js.map +1 -1
- package/esm/vs/base/common/strings.js +27 -19
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/editor/browser/config/elementSizeObserver.js +5 -5
- package/esm/vs/editor/browser/config/elementSizeObserver.js.map +1 -1
- package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js +6 -0
- package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
- package/esm/vs/editor/browser/config/tabFocus.js +4 -2
- package/esm/vs/editor/browser/config/tabFocus.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -0
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/coreCommands.js +1 -2
- package/esm/vs/editor/browser/coreCommands.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +32 -1
- package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
- package/esm/vs/editor/browser/services/contribution.js +9 -0
- package/esm/vs/editor/browser/services/contribution.js.map +1 -0
- package/esm/vs/editor/browser/services/editorWorkerService.js +27 -14
- package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
- package/esm/vs/editor/browser/services/openerService.js +5 -1
- package/esm/vs/editor/browser/services/openerService.js.map +1 -1
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js +1 -1
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
- package/esm/vs/editor/browser/view/renderingContext.js +1 -1
- package/esm/vs/editor/browser/view/renderingContext.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +10 -3
- package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +3 -4
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/minimap/minimap.js +1 -1
- package/esm/vs/editor/browser/viewParts/minimap/minimap.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +1 -1
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +4 -2
- package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/rulers/rulers.js +1 -3
- package/esm/vs/editor/browser/viewParts/rulers/rulers.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +1 -1
- package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js +2 -1
- package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +6 -18
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +0 -7
- package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +7 -2
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js.map +1 -1
- package/esm/vs/editor/common/commands/replaceCommand.js +2 -2
- package/esm/vs/editor/common/commands/replaceCommand.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +374 -360
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/core/2d/rect.js +7 -0
- package/esm/vs/editor/common/core/2d/rect.js.map +1 -1
- package/esm/vs/editor/common/core/2d/size.js +20 -0
- package/esm/vs/editor/common/core/2d/size.js.map +1 -0
- package/esm/vs/editor/common/core/editorColorRegistry.js +69 -68
- package/esm/vs/editor/common/core/editorColorRegistry.js.map +1 -1
- package/esm/vs/editor/common/core/ranges/offsetRange.js +9 -0
- package/esm/vs/editor/common/core/ranges/offsetRange.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/editorContextKeys.js +47 -47
- package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
- package/esm/vs/editor/common/languages.js +56 -56
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/model/editStack.js +1 -1
- package/esm/vs/editor/common/services/languagesAssociations.js +6 -8
- package/esm/vs/editor/common/services/languagesAssociations.js.map +1 -1
- package/esm/vs/editor/common/standaloneStrings.js +11 -10
- package/esm/vs/editor/common/standaloneStrings.js.map +1 -1
- package/esm/vs/editor/common/textModelEditSource.js +1 -1
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
- package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
- package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
- package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
- package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
- package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
- package/esm/vs/editor/contrib/codelens/browser/codelens.js.map +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
- package/esm/vs/editor/contrib/codelens/browser/codelensController.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/hoverColorPickerParticipant.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js +14 -0
- package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +17 -17
- package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
- package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
- package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/format.js +21 -6
- package/esm/vs/editor/contrib/format/browser/format.js.map +1 -1
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +5 -10
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +11 -6
- package/esm/vs/editor/contrib/hover/browser/glyphHoverController.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/hoverUtils.js +24 -0
- package/esm/vs/editor/contrib/hover/browser/hoverUtils.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +20 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +18 -16
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +42 -37
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +3 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +54 -43
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +12 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +74 -48
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +8 -36
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js +10 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +105 -119
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +8 -36
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js +95 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +17 -9
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +415 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +253 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js +103 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js +32 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +44 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +181 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -0
- 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 -31
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +2 -2
- package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js.map +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +18 -13
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +12 -12
- package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -29
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +4 -4
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
- package/esm/vs/editor/editor.all.js +1 -0
- package/esm/vs/editor/editor.all.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +9 -5
- package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js +22 -2
- package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js.map +1 -1
- package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js +39 -0
- package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js.map +1 -0
- package/esm/vs/editor/standalone/browser/standaloneEditor.js +2 -1
- package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js +3 -21
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneWebWorker.js +4 -4
- package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +7 -9
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
- package/esm/vs/platform/actions/browser/toolbar.js +2 -2
- package/esm/vs/platform/actions/common/actions.js +2 -0
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configuration.js +5 -4
- package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationModels.js +21 -10
- package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +3 -3
- package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/list/browser/listService.js.map +1 -1
- package/esm/vs/platform/markers/common/markerService.js +2 -2
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +11 -32
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/media/quickInput.css +9 -3
- 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 +35 -14
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.js +4 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.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/quickInputTreeController.js +71 -40
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +21 -8
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
- package/esm/vs/platform/telemetry/common/gdprTypings.js.map +1 -1
- package/esm/vs/platform/telemetry/common/telemetry.js.map +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/editorColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
- package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
- package/esm/vs/platform/theme/common/colors/miscColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js +12 -0
- package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js.map +1 -0
- package/esm/vs/platform/webWorker/browser/webWorkerService.js +7 -0
- package/esm/vs/platform/webWorker/browser/webWorkerService.js.map +1 -0
- package/esm/vs/{base/browser/webWorkerFactory.js → platform/webWorker/browser/webWorkerServiceImpl.js} +47 -66
- package/esm/vs/platform/webWorker/browser/webWorkerServiceImpl.js.map +1 -0
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +9 -5
- package/package.json +2 -2
- package/esm/vs/base/browser/webWorkerFactory.js.map +0 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js +0 -82
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/observableCodeEditor.ts","vs/editor/browser/observableCodeEditor.ts"],"names":[],"mappings":"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","file":"observableCodeEditor.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 { equalsIfDefined, itemsEquals } from '../../base/common/equals.js';\nimport { Disposable, DisposableStore, IDisposable, toDisposable } from '../../base/common/lifecycle.js';\nimport { DebugLocation, IObservable, IObservableWithChange, ITransaction, TransactionImpl, autorun, autorunOpts, derived, derivedOpts, derivedWithSetter, observableFromEvent, observableSignal, observableValue, observableValueOpts } from '../../base/common/observable.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from '../common/config/editorOptions.js';\nimport { LineRange } from '../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../common/core/ranges/offsetRange.js';\nimport { Position } from '../common/core/position.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ICursorSelectionChangedEvent } from '../common/cursorEvents.js';\nimport { IModelDeltaDecoration, ITextModel } from '../common/model.js';\nimport { IModelContentChangedEvent } from '../common/textModelEvents.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, IPasteEvent } from './editorBrowser.js';\nimport { Point } from '../common/core/2d/point.js';\n\n/**\n * Returns a facade for the code editor that provides observables for various states/events.\n*/\nexport function observableCodeEditor(editor: ICodeEditor): ObservableCodeEditor {\n\treturn ObservableCodeEditor.get(editor);\n}\n\nexport class ObservableCodeEditor extends Disposable {\n\tprivate static readonly _map = new Map<ICodeEditor, ObservableCodeEditor>();\n\n\t/**\n\t * Make sure that editor is not disposed yet!\n\t*/\n\tpublic static get(editor: ICodeEditor): ObservableCodeEditor {\n\t\tlet result = ObservableCodeEditor._map.get(editor);\n\t\tif (!result) {\n\t\t\tresult = new ObservableCodeEditor(editor);\n\t\t\tObservableCodeEditor._map.set(editor, result);\n\t\t\tconst d = editor.onDidDispose(() => {\n\t\t\t\tconst item = ObservableCodeEditor._map.get(editor);\n\t\t\t\tif (item) {\n\t\t\t\t\tObservableCodeEditor._map.delete(editor);\n\t\t\t\t\titem.dispose();\n\t\t\t\t\td.dispose();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _updateCounter;\n\tprivate _currentTransaction: TransactionImpl | undefined;\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._currentTransaction = new TransactionImpl(() => {\n\t\t\t\t/** @description Update editor state */\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tconst t = this._currentTransaction!;\n\t\t\tthis._currentTransaction = undefined;\n\t\t\tt.finish();\n\t\t}\n\t}\n\n\tprivate constructor(public readonly editor: ICodeEditor) {\n\t\tsuper();\n\t\tthis._updateCounter = 0;\n\t\tthis._currentTransaction = undefined;\n\t\tthis._model = observableValue(this, this.editor.getModel());\n\t\tthis.model = this._model;\n\t\tthis.isReadonly = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.readOnly));\n\t\tthis._versionId = observableValueOpts<number | null, IModelContentChangedEvent | undefined>({ owner: this, lazy: true }, this.editor.getModel()?.getVersionId() ?? null);\n\t\tthis.versionId = this._versionId;\n\t\tthis._selections = observableValueOpts<Selection[] | null, ICursorSelectionChangedEvent | undefined>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Selection.selectionsEqual)), lazy: true },\n\t\t\tthis.editor.getSelections() ?? null\n\t\t);\n\t\tthis.selections = this._selections;\n\t\tthis.positions = derivedOpts<readonly Position[] | null>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Position.equals)) },\n\t\t\treader => this.selections.read(reader)?.map(s => s.getStartPosition()) ?? null\n\t\t);\n\t\tthis.isFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorWidget(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorWidget(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasWidgetFocus());\n\t\tthis.isTextFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorText(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorText(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasTextFocus());\n\t\tthis.inComposition = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidCompositionStart(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\tconst d2 = this.editor.onDidCompositionEnd(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.inComposition);\n\t\tthis.value = derivedWithSetter(this,\n\t\t\treader => { this.versionId.read(reader); return this.model.read(reader)?.getValue() ?? ''; },\n\t\t\t(value, tx) => {\n\t\t\t\tconst model = this.model.get();\n\t\t\t\tif (model !== null) {\n\t\t\t\t\tif (value !== model.getValue()) {\n\t\t\t\t\t\tmodel.setValue(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.valueIsEmpty = derived(this, reader => { this.versionId.read(reader); return this.editor.getModel()?.getValueLength() === 0; });\n\t\tthis.cursorSelection = derivedOpts({ owner: this, equalsFn: equalsIfDefined(Selection.selectionsEqual) }, reader => this.selections.read(reader)?.[0] ?? null);\n\t\tthis.cursorPosition = derivedOpts({ owner: this, equalsFn: Position.equals }, reader => this.selections.read(reader)?.[0]?.getPosition() ?? null);\n\t\tthis.cursorLineNumber = derived<number | null>(this, reader => this.cursorPosition.read(reader)?.lineNumber ?? null);\n\t\tthis.onDidType = observableSignal<string>(this);\n\t\tthis.onDidPaste = observableSignal<IPasteEvent>(this);\n\t\tthis.scrollTop = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollTop());\n\t\tthis.scrollLeft = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollLeft());\n\t\tthis.layoutInfo = observableFromEvent(this.editor.onDidLayoutChange, () => this.editor.getLayoutInfo());\n\t\tthis.layoutInfoContentLeft = this.layoutInfo.map(l => l.contentLeft);\n\t\tthis.layoutInfoDecorationsLeft = this.layoutInfo.map(l => l.decorationsLeft);\n\t\tthis.layoutInfoWidth = this.layoutInfo.map(l => l.width);\n\t\tthis.layoutInfoHeight = this.layoutInfo.map(l => l.height);\n\t\tthis.layoutInfoMinimap = this.layoutInfo.map(l => l.minimap);\n\t\tthis.layoutInfoVerticalScrollbarWidth = this.layoutInfo.map(l => l.verticalScrollbarWidth);\n\t\tthis.contentWidth = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentWidth());\n\t\tthis.contentHeight = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentHeight());\n\n\t\tthis._widgetCounter = 0;\n\t\tthis.openedPeekWidgets = observableValue(this, 0);\n\n\t\tthis._register(this.editor.onBeginUpdate(() => this._beginUpdate()));\n\t\tthis._register(this.editor.onEndUpdate(() => this._endUpdate()));\n\n\t\tthis._register(this.editor.onDidChangeModel(() => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidType((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidType.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidPaste((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidPaste.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeModelContent(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis.domNode = derived(reader => {\n\t\t\tthis.model.read(reader);\n\t\t\treturn this.editor.getDomNode();\n\t\t});\n\t}\n\n\tpublic forceUpdate(): void;\n\tpublic forceUpdate<T>(cb: (tx: ITransaction) => T): T;\n\tpublic forceUpdate<T>(cb?: (tx: ITransaction) => T): T {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._forceUpdate();\n\t\t\tif (!cb) { return undefined as T; }\n\t\t\treturn cb(this._currentTransaction!);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _forceUpdate(): void {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, undefined);\n\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, undefined);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate readonly _model;\n\tpublic readonly model: IObservable<ITextModel | null>;\n\n\tpublic readonly isReadonly;\n\n\tprivate readonly _versionId;\n\tpublic readonly versionId: IObservableWithChange<number | null, IModelContentChangedEvent | undefined>;\n\n\tprivate readonly _selections;\n\tpublic readonly selections: IObservableWithChange<Selection[] | null, ICursorSelectionChangedEvent | undefined>;\n\n\n\tpublic readonly positions;\n\n\tpublic readonly isFocused;\n\n\tpublic readonly isTextFocused;\n\n\tpublic readonly inComposition;\n\n\tpublic readonly value;\n\tpublic readonly valueIsEmpty;\n\tpublic readonly cursorSelection;\n\tpublic readonly cursorPosition;\n\tpublic readonly cursorLineNumber;\n\n\tpublic readonly onDidType;\n\tpublic readonly onDidPaste;\n\n\tpublic readonly scrollTop;\n\tpublic readonly scrollLeft;\n\n\tpublic readonly layoutInfo;\n\tpublic readonly layoutInfoContentLeft;\n\tpublic readonly layoutInfoDecorationsLeft;\n\tpublic readonly layoutInfoWidth;\n\tpublic readonly layoutInfoHeight;\n\tpublic readonly layoutInfoMinimap;\n\tpublic readonly layoutInfoVerticalScrollbarWidth;\n\n\tpublic readonly contentWidth;\n\tpublic readonly contentHeight;\n\n\tpublic readonly domNode;\n\n\tpublic getOption<T extends EditorOption>(id: T, debugLocation = DebugLocation.ofCaller()): IObservable<FindComputedEditorOptionValueById<T>> {\n\t\treturn observableFromEvent(this, cb => this.editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(id)) { cb(undefined); }\n\t\t}), () => this.editor.getOption(id), debugLocation);\n\t}\n\n\tpublic setDecorations(decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\t\tconst d = new DisposableStore();\n\t\tconst decorationsCollection = this.editor.createDecorationsCollection();\n\t\td.add(autorunOpts({ owner: this, debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\t\tconst d = decorations.read(reader);\n\t\t\tdecorationsCollection.set(d);\n\t\t}));\n\t\td.add({\n\t\t\tdispose: () => {\n\t\t\t\tdecorationsCollection.clear();\n\t\t\t}\n\t\t});\n\t\treturn d;\n\t}\n\n\tprivate _widgetCounter;\n\n\tpublic createOverlayWidget(widget: IObservableOverlayWidget): IDisposable {\n\t\tconst overlayWidgetId = 'observableOverlayWidget' + (this._widgetCounter++);\n\t\tconst w: IOverlayWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => overlayWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t\tgetMinContentWidthInPx: () => widget.minContentWidthInPx.get(),\n\t\t};\n\t\tthis.editor.addOverlayWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\twidget.minContentWidthInPx.read(reader);\n\t\t\tthis.editor.layoutOverlayWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeOverlayWidget(w);\n\t\t});\n\t}\n\n\tpublic createContentWidget(widget: IObservableContentWidget): IDisposable {\n\t\tconst contentWidgetId = 'observableContentWidget' + (this._widgetCounter++);\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t});\n\t}\n\n\tpublic observeLineOffsetRange(lineRange: IObservable<LineRange>, store: DisposableStore): IObservable<OffsetRange> {\n\t\tconst start = this.observePosition(lineRange.map(r => new Position(r.startLineNumber, 1)), store);\n\t\tconst end = this.observePosition(lineRange.map(r => new Position(r.endLineNumberExclusive + 1, 1)), store);\n\n\t\treturn derived(reader => {\n\t\t\tstart.read(reader);\n\t\t\tend.read(reader);\n\t\t\tconst range = lineRange.read(reader);\n\t\t\tconst lineCount = this.model.read(reader)?.getLineCount();\n\t\t\tconst s = (\n\t\t\t\t(typeof lineCount !== 'undefined' && range.startLineNumber > lineCount\n\t\t\t\t\t? this.editor.getBottomForLineNumber(lineCount)\n\t\t\t\t\t: this.editor.getTopForLineNumber(range.startLineNumber)\n\t\t\t\t)\n\t\t\t\t- this.scrollTop.read(reader)\n\t\t\t);\n\t\t\tconst e = range.isEmpty ? s : (this.editor.getBottomForLineNumber(range.endLineNumberExclusive - 1) - this.scrollTop.read(reader));\n\t\t\treturn new OffsetRange(s, e);\n\t\t});\n\t}\n\n\tpublic observePosition(position: IObservable<Position | null>, store: DisposableStore): IObservable<Point | null> {\n\t\tlet pos = position.get();\n\t\tconst result = observableValueOpts<Point | null>({ owner: this, debugName: () => `topLeftOfPosition${pos?.toString()}`, equalsFn: equalsIfDefined(Point.equals) }, new Point(0, 0));\n\t\tconst contentWidgetId = `observablePositionWidget` + (this._widgetCounter++);\n\t\tconst domNode = document.createElement('div');\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => domNode,\n\t\t\tgetPosition: () => {\n\t\t\t\treturn pos ? { preference: [ContentWidgetPositionPreference.EXACT], position: position.get() } : null;\n\t\t\t},\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: false,\n\t\t\tafterRender: (position, coordinate) => {\n\t\t\t\tconst model = this._model.get();\n\t\t\t\tif (model && pos && pos.lineNumber > model.getLineCount()) {\n\t\t\t\t\t// the position is after the last line\n\t\t\t\t\tresult.set(new Point(0, this.editor.getBottomForLineNumber(model.getLineCount()) - this.scrollTop.get()), undefined);\n\t\t\t\t} else {\n\t\t\t\t\tresult.set(coordinate ? new Point(coordinate.left, coordinate.top) : null, undefined);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tstore.add(autorun(reader => {\n\t\t\tpos = position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t}));\n\t\tstore.add(toDisposable(() => {\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t}));\n\t\treturn result;\n\t}\n\n\tpublic readonly openedPeekWidgets;\n\n\tisTargetHovered(predicate: (target: IEditorMouseEvent) => boolean, store: DisposableStore): IObservable<boolean> {\n\t\tconst isHovered = observableValue('isInjectedTextHovered', false);\n\t\tstore.add(this.editor.onMouseMove(e => {\n\t\t\tconst val = predicate(e);\n\t\t\tisHovered.set(val, undefined);\n\t\t}));\n\n\t\tstore.add(this.editor.onMouseLeave(E => {\n\t\t\tisHovered.set(false, undefined);\n\t\t}));\n\t\treturn isHovered;\n\t}\n\n\tobserveLineHeightForPosition(position: IObservable<Position> | Position): IObservable<number>;\n\tobserveLineHeightForPosition(position: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForPosition(position: IObservable<Position | null> | Position): IObservable<number | null> {\n\t\treturn derived(reader => {\n\t\t\tconst pos = position instanceof Position ? position : position.read(reader);\n\t\t\tif (pos === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tthis.getOption(EditorOption.lineHeight).read(reader);\n\n\t\t\treturn this.editor.getLineHeightForPosition(pos);\n\t\t});\n\t}\n\n\tobserveLineHeightForLine(lineNumber: IObservable<number> | number): IObservable<number>;\n\tobserveLineHeightForLine(lineNumber: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForLine(lineNumber: IObservable<number | null> | number): IObservable<number | null> {\n\t\tif (typeof lineNumber === 'number') {\n\t\t\treturn this.observeLineHeightForPosition(new Position(lineNumber, 1));\n\t\t}\n\n\t\treturn derived(reader => {\n\t\t\tconst line = lineNumber.read(reader);\n\t\t\tif (line === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.observeLineHeightForPosition(new Position(line, 1)).read(reader);\n\t\t});\n\t}\n\n\tobserveLineHeightsForLineRange(lineNumber: IObservable<LineRange> | LineRange): IObservable<number[]> {\n\t\treturn derived(reader => {\n\t\t\tconst range = lineNumber instanceof LineRange ? lineNumber : lineNumber.read(reader);\n\n\t\t\tconst heights: number[] = [];\n\t\t\tfor (let i = range.startLineNumber; i < range.endLineNumberExclusive; i++) {\n\t\t\t\theights.push(this.observeLineHeightForLine(i).read(reader));\n\t\t\t}\n\t\t\treturn heights;\n\t\t});\n\t}\n\n}\n\ninterface IObservableOverlayWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IOverlayWidgetPosition | null>;\n\treadonly minContentWidthInPx: IObservable<number>;\n\tget allowEditorOverflow(): boolean;\n}\n\ninterface IObservableContentWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IContentWidgetPosition | null>;\n\tget allowEditorOverflow(): boolean;\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 { equalsIfDefined, itemsEquals } from '../../base/common/equals.js';\nimport { Disposable, DisposableStore, IDisposable, toDisposable } from '../../base/common/lifecycle.js';\nimport { DebugLocation, IObservable, IObservableWithChange, ITransaction, TransactionImpl, autorun, autorunOpts, derived, derivedOpts, derivedWithSetter, observableFromEvent, observableSignal, observableValue, observableValueOpts } from '../../base/common/observable.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from '../common/config/editorOptions.js';\nimport { LineRange } from '../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../common/core/ranges/offsetRange.js';\nimport { Position } from '../common/core/position.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ICursorSelectionChangedEvent } from '../common/cursorEvents.js';\nimport { IModelDeltaDecoration, ITextModel } from '../common/model.js';\nimport { IModelContentChangedEvent } from '../common/textModelEvents.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, IPasteEvent } from './editorBrowser.js';\nimport { Point } from '../common/core/2d/point.js';\n\n/**\n * Returns a facade for the code editor that provides observables for various states/events.\n*/\nexport function observableCodeEditor(editor: ICodeEditor): ObservableCodeEditor {\n\treturn ObservableCodeEditor.get(editor);\n}\n\nexport class ObservableCodeEditor extends Disposable {\n\tprivate static readonly _map = new Map<ICodeEditor, ObservableCodeEditor>();\n\n\t/**\n\t * Make sure that editor is not disposed yet!\n\t*/\n\tpublic static get(editor: ICodeEditor): ObservableCodeEditor {\n\t\tlet result = ObservableCodeEditor._map.get(editor);\n\t\tif (!result) {\n\t\t\tresult = new ObservableCodeEditor(editor);\n\t\t\tObservableCodeEditor._map.set(editor, result);\n\t\t\tconst d = editor.onDidDispose(() => {\n\t\t\t\tconst item = ObservableCodeEditor._map.get(editor);\n\t\t\t\tif (item) {\n\t\t\t\t\tObservableCodeEditor._map.delete(editor);\n\t\t\t\t\titem.dispose();\n\t\t\t\t\td.dispose();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _updateCounter;\n\tprivate _currentTransaction: TransactionImpl | undefined;\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._currentTransaction = new TransactionImpl(() => {\n\t\t\t\t/** @description Update editor state */\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tconst t = this._currentTransaction!;\n\t\t\tthis._currentTransaction = undefined;\n\t\t\tt.finish();\n\t\t}\n\t}\n\n\tprivate constructor(public readonly editor: ICodeEditor) {\n\t\tsuper();\n\t\tthis._updateCounter = 0;\n\t\tthis._currentTransaction = undefined;\n\t\tthis._model = observableValue(this, this.editor.getModel());\n\t\tthis.model = this._model;\n\t\tthis.isReadonly = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.readOnly));\n\t\tthis._versionId = observableValueOpts<number | null, IModelContentChangedEvent | undefined>({ owner: this, lazy: true }, this.editor.getModel()?.getVersionId() ?? null);\n\t\tthis.versionId = this._versionId;\n\t\tthis._selections = observableValueOpts<Selection[] | null, ICursorSelectionChangedEvent | undefined>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Selection.selectionsEqual)), lazy: true },\n\t\t\tthis.editor.getSelections() ?? null\n\t\t);\n\t\tthis.selections = this._selections;\n\t\tthis.positions = derivedOpts<readonly Position[] | null>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Position.equals)) },\n\t\t\treader => this.selections.read(reader)?.map(s => s.getStartPosition()) ?? null\n\t\t);\n\t\tthis.isFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorWidget(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorWidget(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasWidgetFocus());\n\t\tthis.isTextFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorText(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorText(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasTextFocus());\n\t\tthis.inComposition = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidCompositionStart(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\tconst d2 = this.editor.onDidCompositionEnd(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.inComposition);\n\t\tthis.value = derivedWithSetter(this,\n\t\t\treader => { this.versionId.read(reader); return this.model.read(reader)?.getValue() ?? ''; },\n\t\t\t(value, tx) => {\n\t\t\t\tconst model = this.model.get();\n\t\t\t\tif (model !== null) {\n\t\t\t\t\tif (value !== model.getValue()) {\n\t\t\t\t\t\tmodel.setValue(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.valueIsEmpty = derived(this, reader => { this.versionId.read(reader); return this.editor.getModel()?.getValueLength() === 0; });\n\t\tthis.cursorSelection = derivedOpts({ owner: this, equalsFn: equalsIfDefined(Selection.selectionsEqual) }, reader => this.selections.read(reader)?.[0] ?? null);\n\t\tthis.cursorPosition = derivedOpts({ owner: this, equalsFn: Position.equals }, reader => this.selections.read(reader)?.[0]?.getPosition() ?? null);\n\t\tthis.cursorLineNumber = derived<number | null>(this, reader => this.cursorPosition.read(reader)?.lineNumber ?? null);\n\t\tthis.onDidType = observableSignal<string>(this);\n\t\tthis.onDidPaste = observableSignal<IPasteEvent>(this);\n\t\tthis.scrollTop = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollTop());\n\t\tthis.scrollLeft = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollLeft());\n\t\tthis.layoutInfo = observableFromEvent(this.editor.onDidLayoutChange, () => this.editor.getLayoutInfo());\n\t\tthis.layoutInfoContentLeft = this.layoutInfo.map(l => l.contentLeft);\n\t\tthis.layoutInfoDecorationsLeft = this.layoutInfo.map(l => l.decorationsLeft);\n\t\tthis.layoutInfoWidth = this.layoutInfo.map(l => l.width);\n\t\tthis.layoutInfoHeight = this.layoutInfo.map(l => l.height);\n\t\tthis.layoutInfoMinimap = this.layoutInfo.map(l => l.minimap);\n\t\tthis.layoutInfoVerticalScrollbarWidth = this.layoutInfo.map(l => l.verticalScrollbarWidth);\n\t\tthis.contentWidth = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentWidth());\n\t\tthis.contentHeight = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentHeight());\n\n\t\tthis._widgetCounter = 0;\n\t\tthis.openedPeekWidgets = observableValue(this, 0);\n\n\t\tthis._register(this.editor.onBeginUpdate(() => this._beginUpdate()));\n\t\tthis._register(this.editor.onEndUpdate(() => this._endUpdate()));\n\n\t\tthis._register(this.editor.onDidChangeModel(() => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidType((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidType.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidPaste((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidPaste.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeModelContent(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis.domNode = derived(reader => {\n\t\t\tthis.model.read(reader);\n\t\t\treturn this.editor.getDomNode();\n\t\t});\n\t}\n\n\tpublic forceUpdate(): void;\n\tpublic forceUpdate<T>(cb: (tx: ITransaction) => T): T;\n\tpublic forceUpdate<T>(cb?: (tx: ITransaction) => T): T {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._forceUpdate();\n\t\t\tif (!cb) { return undefined as T; }\n\t\t\treturn cb(this._currentTransaction!);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _forceUpdate(): void {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, undefined);\n\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, undefined);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate readonly _model;\n\tpublic readonly model: IObservable<ITextModel | null>;\n\n\tpublic readonly isReadonly;\n\n\tprivate readonly _versionId;\n\tpublic readonly versionId: IObservableWithChange<number | null, IModelContentChangedEvent | undefined>;\n\n\tprivate readonly _selections;\n\tpublic readonly selections: IObservableWithChange<Selection[] | null, ICursorSelectionChangedEvent | undefined>;\n\n\n\tpublic readonly positions;\n\n\tpublic readonly isFocused;\n\n\tpublic readonly isTextFocused;\n\n\tpublic readonly inComposition;\n\n\tpublic readonly value;\n\tpublic readonly valueIsEmpty;\n\tpublic readonly cursorSelection;\n\tpublic readonly cursorPosition;\n\tpublic readonly cursorLineNumber;\n\n\tpublic readonly onDidType;\n\tpublic readonly onDidPaste;\n\n\tpublic readonly scrollTop;\n\tpublic readonly scrollLeft;\n\n\tpublic readonly layoutInfo;\n\tpublic readonly layoutInfoContentLeft;\n\tpublic readonly layoutInfoDecorationsLeft;\n\tpublic readonly layoutInfoWidth;\n\tpublic readonly layoutInfoHeight;\n\tpublic readonly layoutInfoMinimap;\n\tpublic readonly layoutInfoVerticalScrollbarWidth;\n\n\tpublic readonly contentWidth;\n\tpublic readonly contentHeight;\n\n\tpublic readonly domNode;\n\n\tpublic getOption<T extends EditorOption>(id: T, debugLocation = DebugLocation.ofCaller()): IObservable<FindComputedEditorOptionValueById<T>> {\n\t\treturn observableFromEvent(this, cb => this.editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(id)) { cb(undefined); }\n\t\t}), () => this.editor.getOption(id), debugLocation);\n\t}\n\n\tpublic setDecorations(decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\t\tconst d = new DisposableStore();\n\t\tconst decorationsCollection = this.editor.createDecorationsCollection();\n\t\td.add(autorunOpts({ owner: this, debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\t\tconst d = decorations.read(reader);\n\t\t\tdecorationsCollection.set(d);\n\t\t}));\n\t\td.add({\n\t\t\tdispose: () => {\n\t\t\t\tdecorationsCollection.clear();\n\t\t\t}\n\t\t});\n\t\treturn d;\n\t}\n\n\tprivate _widgetCounter;\n\n\tpublic createOverlayWidget(widget: IObservableOverlayWidget): IDisposable {\n\t\tconst overlayWidgetId = 'observableOverlayWidget' + (this._widgetCounter++);\n\t\tconst w: IOverlayWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => overlayWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t\tgetMinContentWidthInPx: () => widget.minContentWidthInPx.get(),\n\t\t};\n\t\tthis.editor.addOverlayWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\twidget.minContentWidthInPx.read(reader);\n\t\t\tthis.editor.layoutOverlayWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeOverlayWidget(w);\n\t\t});\n\t}\n\n\tpublic createContentWidget(widget: IObservableContentWidget): IDisposable {\n\t\tconst contentWidgetId = 'observableContentWidget' + (this._widgetCounter++);\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t});\n\t}\n\n\tpublic observeLineOffsetRange(lineRange: IObservable<LineRange>, store: DisposableStore): IObservable<OffsetRange> {\n\t\tconst start = this.observePosition(lineRange.map(r => new Position(r.startLineNumber, 1)), store);\n\t\tconst end = this.observePosition(lineRange.map(r => new Position(r.endLineNumberExclusive + 1, 1)), store);\n\n\t\treturn derived(reader => {\n\t\t\tstart.read(reader);\n\t\t\tend.read(reader);\n\t\t\tconst range = lineRange.read(reader);\n\t\t\tconst lineCount = this.model.read(reader)?.getLineCount();\n\t\t\tconst s = (\n\t\t\t\t(typeof lineCount !== 'undefined' && range.startLineNumber > lineCount\n\t\t\t\t\t? this.editor.getBottomForLineNumber(lineCount)\n\t\t\t\t\t: this.editor.getTopForLineNumber(range.startLineNumber)\n\t\t\t\t)\n\t\t\t\t- this.scrollTop.read(reader)\n\t\t\t);\n\t\t\tconst e = range.isEmpty ? s : (this.editor.getBottomForLineNumber(range.endLineNumberExclusive - 1) - this.scrollTop.read(reader));\n\t\t\treturn new OffsetRange(s, e);\n\t\t});\n\t}\n\n\tpublic observePosition(position: IObservable<Position | null>, store: DisposableStore): IObservable<Point | null> {\n\t\tlet pos = position.get();\n\t\tconst result = observableValueOpts<Point | null>({ owner: this, debugName: () => `topLeftOfPosition${pos?.toString()}`, equalsFn: equalsIfDefined(Point.equals) }, new Point(0, 0));\n\t\tconst contentWidgetId = `observablePositionWidget` + (this._widgetCounter++);\n\t\tconst domNode = document.createElement('div');\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => domNode,\n\t\t\tgetPosition: () => {\n\t\t\t\treturn pos ? { preference: [ContentWidgetPositionPreference.EXACT], position: position.get() } : null;\n\t\t\t},\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: false,\n\t\t\tafterRender: (position, coordinate) => {\n\t\t\t\tconst model = this._model.get();\n\t\t\t\tif (model && pos && pos.lineNumber > model.getLineCount()) {\n\t\t\t\t\t// the position is after the last line\n\t\t\t\t\tresult.set(new Point(0, this.editor.getBottomForLineNumber(model.getLineCount()) - this.scrollTop.get()), undefined);\n\t\t\t\t} else {\n\t\t\t\t\tresult.set(coordinate ? new Point(coordinate.left, coordinate.top) : null, undefined);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tstore.add(autorun(reader => {\n\t\t\tpos = position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t}));\n\t\tstore.add(toDisposable(() => {\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t}));\n\t\treturn result;\n\t}\n\n\tpublic readonly openedPeekWidgets;\n\n\tisTargetHovered(predicate: (target: IEditorMouseEvent) => boolean, store: DisposableStore): IObservable<boolean> {\n\t\tconst isHovered = observableValue('isInjectedTextHovered', false);\n\t\tstore.add(this.editor.onMouseMove(e => {\n\t\t\tconst val = predicate(e);\n\t\t\tisHovered.set(val, undefined);\n\t\t}));\n\n\t\tstore.add(this.editor.onMouseLeave(E => {\n\t\t\tisHovered.set(false, undefined);\n\t\t}));\n\t\treturn isHovered;\n\t}\n\n\tobserveLineHeightForPosition(position: IObservable<Position> | Position): IObservable<number>;\n\tobserveLineHeightForPosition(position: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForPosition(position: IObservable<Position | null> | Position): IObservable<number | null> {\n\t\treturn derived(reader => {\n\t\t\tconst pos = position instanceof Position ? position : position.read(reader);\n\t\t\tif (pos === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tthis.getOption(EditorOption.lineHeight).read(reader);\n\n\t\t\treturn this.editor.getLineHeightForPosition(pos);\n\t\t});\n\t}\n\n\tobserveLineHeightForLine(lineNumber: IObservable<number> | number): IObservable<number>;\n\tobserveLineHeightForLine(lineNumber: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForLine(lineNumber: IObservable<number | null> | number): IObservable<number | null> {\n\t\tif (typeof lineNumber === 'number') {\n\t\t\treturn this.observeLineHeightForPosition(new Position(lineNumber, 1));\n\t\t}\n\n\t\treturn derived(reader => {\n\t\t\tconst line = lineNumber.read(reader);\n\t\t\tif (line === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.observeLineHeightForPosition(new Position(line, 1)).read(reader);\n\t\t});\n\t}\n\n\tobserveLineHeightsForLineRange(lineNumber: IObservable<LineRange> | LineRange): IObservable<number[]> {\n\t\treturn derived(reader => {\n\t\t\tconst range = lineNumber instanceof LineRange ? lineNumber : lineNumber.read(reader);\n\n\t\t\tconst heights: number[] = [];\n\t\t\tfor (let i = range.startLineNumber; i < range.endLineNumberExclusive; i++) {\n\t\t\t\theights.push(this.observeLineHeightForLine(i).read(reader));\n\t\t\t}\n\t\t\treturn heights;\n\t\t});\n\t}\n\n}\n\ninterface IObservableOverlayWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IOverlayWidgetPosition | null>;\n\treadonly minContentWidthInPx: IObservable<number>;\n\tget allowEditorOverflow(): boolean;\n}\n\ninterface IObservableContentWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IContentWidgetPosition | null>;\n\tget allowEditorOverflow(): boolean;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/observableCodeEditor.ts","vs/editor/browser/observableCodeEditor.ts"],"names":[],"mappings":"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","file":"observableCodeEditor.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 { equalsIfDefined, itemsEquals } from '../../base/common/equals.js';\nimport { Disposable, DisposableStore, IDisposable, toDisposable } from '../../base/common/lifecycle.js';\nimport { DebugLocation, IObservable, IObservableWithChange, IReader, ITransaction, TransactionImpl, autorun, autorunOpts, derived, derivedOpts, derivedWithSetter, observableFromEvent, observableSignal, observableSignalFromEvent, observableValue, observableValueOpts } from '../../base/common/observable.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from '../common/config/editorOptions.js';\nimport { LineRange } from '../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../common/core/ranges/offsetRange.js';\nimport { Position } from '../common/core/position.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ICursorSelectionChangedEvent } from '../common/cursorEvents.js';\nimport { IModelDeltaDecoration, ITextModel } from '../common/model.js';\nimport { IModelContentChangedEvent } from '../common/textModelEvents.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, IPasteEvent } from './editorBrowser.js';\nimport { Point } from '../common/core/2d/point.js';\n\n/**\n * Returns a facade for the code editor that provides observables for various states/events.\n*/\nexport function observableCodeEditor(editor: ICodeEditor): ObservableCodeEditor {\n\treturn ObservableCodeEditor.get(editor);\n}\n\nexport class ObservableCodeEditor extends Disposable {\n\tprivate static readonly _map = new Map<ICodeEditor, ObservableCodeEditor>();\n\n\t/**\n\t * Make sure that editor is not disposed yet!\n\t*/\n\tpublic static get(editor: ICodeEditor): ObservableCodeEditor {\n\t\tlet result = ObservableCodeEditor._map.get(editor);\n\t\tif (!result) {\n\t\t\tresult = new ObservableCodeEditor(editor);\n\t\t\tObservableCodeEditor._map.set(editor, result);\n\t\t\tconst d = editor.onDidDispose(() => {\n\t\t\t\tconst item = ObservableCodeEditor._map.get(editor);\n\t\t\t\tif (item) {\n\t\t\t\t\tObservableCodeEditor._map.delete(editor);\n\t\t\t\t\titem.dispose();\n\t\t\t\t\td.dispose();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _updateCounter;\n\tprivate _currentTransaction: TransactionImpl | undefined;\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._currentTransaction = new TransactionImpl(() => {\n\t\t\t\t/** @description Update editor state */\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tconst t = this._currentTransaction!;\n\t\t\tthis._currentTransaction = undefined;\n\t\t\tt.finish();\n\t\t}\n\t}\n\n\tprivate constructor(public readonly editor: ICodeEditor) {\n\t\tsuper();\n\t\tthis._updateCounter = 0;\n\t\tthis._currentTransaction = undefined;\n\t\tthis._model = observableValue(this, this.editor.getModel());\n\t\tthis.model = this._model;\n\t\tthis.isReadonly = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.readOnly));\n\t\tthis._versionId = observableValueOpts<number | null, IModelContentChangedEvent | undefined>({ owner: this, lazy: true }, this.editor.getModel()?.getVersionId() ?? null);\n\t\tthis.versionId = this._versionId;\n\t\tthis._selections = observableValueOpts<Selection[] | null, ICursorSelectionChangedEvent | undefined>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Selection.selectionsEqual)), lazy: true },\n\t\t\tthis.editor.getSelections() ?? null\n\t\t);\n\t\tthis.selections = this._selections;\n\t\tthis.positions = derivedOpts<readonly Position[] | null>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Position.equals)) },\n\t\t\treader => this.selections.read(reader)?.map(s => s.getStartPosition()) ?? null\n\t\t);\n\t\tthis.isFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorWidget(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorWidget(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasWidgetFocus());\n\t\tthis.isTextFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorText(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorText(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasTextFocus());\n\t\tthis.inComposition = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidCompositionStart(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\tconst d2 = this.editor.onDidCompositionEnd(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.inComposition);\n\t\tthis.value = derivedWithSetter(this,\n\t\t\treader => { this.versionId.read(reader); return this.model.read(reader)?.getValue() ?? ''; },\n\t\t\t(value, tx) => {\n\t\t\t\tconst model = this.model.get();\n\t\t\t\tif (model !== null) {\n\t\t\t\t\tif (value !== model.getValue()) {\n\t\t\t\t\t\tmodel.setValue(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.valueIsEmpty = derived(this, reader => { this.versionId.read(reader); return this.editor.getModel()?.getValueLength() === 0; });\n\t\tthis.cursorSelection = derivedOpts({ owner: this, equalsFn: equalsIfDefined(Selection.selectionsEqual) }, reader => this.selections.read(reader)?.[0] ?? null);\n\t\tthis.cursorPosition = derivedOpts({ owner: this, equalsFn: Position.equals }, reader => this.selections.read(reader)?.[0]?.getPosition() ?? null);\n\t\tthis.cursorLineNumber = derived<number | null>(this, reader => this.cursorPosition.read(reader)?.lineNumber ?? null);\n\t\tthis.onDidType = observableSignal<string>(this);\n\t\tthis.onDidPaste = observableSignal<IPasteEvent>(this);\n\t\tthis.scrollTop = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollTop());\n\t\tthis.scrollLeft = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollLeft());\n\t\tthis.layoutInfo = observableFromEvent(this.editor.onDidLayoutChange, () => this.editor.getLayoutInfo());\n\t\tthis.layoutInfoContentLeft = this.layoutInfo.map(l => l.contentLeft);\n\t\tthis.layoutInfoDecorationsLeft = this.layoutInfo.map(l => l.decorationsLeft);\n\t\tthis.layoutInfoWidth = this.layoutInfo.map(l => l.width);\n\t\tthis.layoutInfoHeight = this.layoutInfo.map(l => l.height);\n\t\tthis.layoutInfoMinimap = this.layoutInfo.map(l => l.minimap);\n\t\tthis.layoutInfoVerticalScrollbarWidth = this.layoutInfo.map(l => l.verticalScrollbarWidth);\n\t\tthis.contentWidth = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentWidth());\n\t\tthis.contentHeight = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentHeight());\n\t\tthis._onDidChangeViewZones = observableSignalFromEvent(this, this.editor.onDidChangeViewZones);\n\t\tthis._onDidHiddenAreasChanged = observableSignalFromEvent(this, this.editor.onDidChangeHiddenAreas);\n\t\tthis._onDidLineHeightChanged = observableSignalFromEvent(this, this.editor.onDidChangeLineHeight);\n\n\t\tthis._widgetCounter = 0;\n\t\tthis.openedPeekWidgets = observableValue(this, 0);\n\n\t\tthis._register(this.editor.onBeginUpdate(() => this._beginUpdate()));\n\t\tthis._register(this.editor.onEndUpdate(() => this._endUpdate()));\n\n\t\tthis._register(this.editor.onDidChangeModel(() => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidType((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidType.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidPaste((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidPaste.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeModelContent(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis.domNode = derived(reader => {\n\t\t\tthis.model.read(reader);\n\t\t\treturn this.editor.getDomNode();\n\t\t});\n\t}\n\n\tpublic forceUpdate(): void;\n\tpublic forceUpdate<T>(cb: (tx: ITransaction) => T): T;\n\tpublic forceUpdate<T>(cb?: (tx: ITransaction) => T): T {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._forceUpdate();\n\t\t\tif (!cb) { return undefined as T; }\n\t\t\treturn cb(this._currentTransaction!);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _forceUpdate(): void {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, undefined);\n\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, undefined);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate readonly _model;\n\tpublic readonly model: IObservable<ITextModel | null>;\n\n\tpublic readonly isReadonly;\n\n\tprivate readonly _versionId;\n\tpublic readonly versionId: IObservableWithChange<number | null, IModelContentChangedEvent | undefined>;\n\n\tprivate readonly _selections;\n\tpublic readonly selections: IObservableWithChange<Selection[] | null, ICursorSelectionChangedEvent | undefined>;\n\n\n\tpublic readonly positions;\n\n\tpublic readonly isFocused;\n\n\tpublic readonly isTextFocused;\n\n\tpublic readonly inComposition;\n\n\tpublic readonly value;\n\tpublic readonly valueIsEmpty;\n\tpublic readonly cursorSelection;\n\tpublic readonly cursorPosition;\n\tpublic readonly cursorLineNumber;\n\n\tpublic readonly onDidType;\n\tpublic readonly onDidPaste;\n\n\tpublic readonly scrollTop;\n\tpublic readonly scrollLeft;\n\n\tpublic readonly layoutInfo;\n\tpublic readonly layoutInfoContentLeft;\n\tpublic readonly layoutInfoDecorationsLeft;\n\tpublic readonly layoutInfoWidth;\n\tpublic readonly layoutInfoHeight;\n\tpublic readonly layoutInfoMinimap;\n\tpublic readonly layoutInfoVerticalScrollbarWidth;\n\n\tpublic readonly contentWidth;\n\tpublic readonly contentHeight;\n\n\tpublic readonly domNode;\n\n\tpublic getOption<T extends EditorOption>(id: T, debugLocation = DebugLocation.ofCaller()): IObservable<FindComputedEditorOptionValueById<T>> {\n\t\treturn observableFromEvent(this, cb => this.editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(id)) { cb(undefined); }\n\t\t}), () => this.editor.getOption(id), debugLocation);\n\t}\n\n\tpublic setDecorations(decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\t\tconst d = new DisposableStore();\n\t\tconst decorationsCollection = this.editor.createDecorationsCollection();\n\t\td.add(autorunOpts({ owner: this, debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\t\tconst d = decorations.read(reader);\n\t\t\tdecorationsCollection.set(d);\n\t\t}));\n\t\td.add({\n\t\t\tdispose: () => {\n\t\t\t\tdecorationsCollection.clear();\n\t\t\t}\n\t\t});\n\t\treturn d;\n\t}\n\n\tprivate _widgetCounter;\n\n\tpublic createOverlayWidget(widget: IObservableOverlayWidget): IDisposable {\n\t\tconst overlayWidgetId = 'observableOverlayWidget' + (this._widgetCounter++);\n\t\tconst w: IOverlayWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => overlayWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t\tgetMinContentWidthInPx: () => widget.minContentWidthInPx.get(),\n\t\t};\n\t\tthis.editor.addOverlayWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\twidget.minContentWidthInPx.read(reader);\n\t\t\tthis.editor.layoutOverlayWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeOverlayWidget(w);\n\t\t});\n\t}\n\n\tpublic createContentWidget(widget: IObservableContentWidget): IDisposable {\n\t\tconst contentWidgetId = 'observableContentWidget' + (this._widgetCounter++);\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t});\n\t}\n\n\tpublic observeLineOffsetRange(lineRange: IObservable<LineRange>, store: DisposableStore): IObservable<OffsetRange> {\n\t\tconst start = this.observePosition(lineRange.map(r => new Position(r.startLineNumber, 1)), store);\n\t\tconst end = this.observePosition(lineRange.map(r => new Position(r.endLineNumberExclusive + 1, 1)), store);\n\n\t\treturn derived(reader => {\n\t\t\tstart.read(reader);\n\t\t\tend.read(reader);\n\t\t\tconst range = lineRange.read(reader);\n\t\t\tconst lineCount = this.model.read(reader)?.getLineCount();\n\t\t\tconst s = (\n\t\t\t\t(typeof lineCount !== 'undefined' && range.startLineNumber > lineCount\n\t\t\t\t\t? this.editor.getBottomForLineNumber(lineCount)\n\t\t\t\t\t: this.editor.getTopForLineNumber(range.startLineNumber)\n\t\t\t\t)\n\t\t\t\t- this.scrollTop.read(reader)\n\t\t\t);\n\t\t\tconst e = range.isEmpty ? s : (this.editor.getBottomForLineNumber(range.endLineNumberExclusive - 1) - this.scrollTop.read(reader));\n\t\t\treturn new OffsetRange(s, e);\n\t\t});\n\t}\n\n\t/**\n\t * Uses an approximation if the exact position cannot be determined.\n\t */\n\tgetLeftOfPosition(position: Position, reader: IReader | undefined): number {\n\t\tthis.layoutInfo.read(reader);\n\t\tthis.value.read(reader);\n\n\t\tlet offset = this.editor.getOffsetForColumn(position.lineNumber, position.column);\n\t\tif (offset === -1) {\n\t\t\t// approximation\n\t\t\tconst typicalHalfwidthCharacterWidth = this.editor.getOption(EditorOption.fontInfo).typicalHalfwidthCharacterWidth;\n\t\t\tconst approximation = position.column * typicalHalfwidthCharacterWidth;\n\t\t\toffset = approximation;\n\t\t}\n\t\treturn offset;\n\t}\n\n\tpublic observePosition(position: IObservable<Position | null>, store: DisposableStore): IObservable<Point | null> {\n\t\tlet pos = position.get();\n\t\tconst result = observableValueOpts<Point | null>({ owner: this, debugName: () => `topLeftOfPosition${pos?.toString()}`, equalsFn: equalsIfDefined(Point.equals) }, new Point(0, 0));\n\t\tconst contentWidgetId = `observablePositionWidget` + (this._widgetCounter++);\n\t\tconst domNode = document.createElement('div');\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => domNode,\n\t\t\tgetPosition: () => {\n\t\t\t\treturn pos ? { preference: [ContentWidgetPositionPreference.EXACT], position: position.get() } : null;\n\t\t\t},\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: false,\n\t\t\tafterRender: (position, coordinate) => {\n\t\t\t\tconst model = this._model.get();\n\t\t\t\tif (model && pos && pos.lineNumber > model.getLineCount()) {\n\t\t\t\t\t// the position is after the last line\n\t\t\t\t\tresult.set(new Point(0, this.editor.getBottomForLineNumber(model.getLineCount()) - this.scrollTop.get()), undefined);\n\t\t\t\t} else {\n\t\t\t\t\tresult.set(coordinate ? new Point(coordinate.left, coordinate.top) : null, undefined);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tstore.add(autorun(reader => {\n\t\t\tpos = position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t}));\n\t\tstore.add(toDisposable(() => {\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t}));\n\t\treturn result;\n\t}\n\n\tpublic readonly openedPeekWidgets;\n\n\tisTargetHovered(predicate: (target: IEditorMouseEvent) => boolean, store: DisposableStore): IObservable<boolean> {\n\t\tconst isHovered = observableValue('isInjectedTextHovered', false);\n\t\tstore.add(this.editor.onMouseMove(e => {\n\t\t\tconst val = predicate(e);\n\t\t\tisHovered.set(val, undefined);\n\t\t}));\n\n\t\tstore.add(this.editor.onMouseLeave(E => {\n\t\t\tisHovered.set(false, undefined);\n\t\t}));\n\t\treturn isHovered;\n\t}\n\n\tobserveLineHeightForPosition(position: IObservable<Position> | Position): IObservable<number>;\n\tobserveLineHeightForPosition(position: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForPosition(position: IObservable<Position | null> | Position): IObservable<number | null> {\n\t\treturn derived(reader => {\n\t\t\tconst pos = position instanceof Position ? position : position.read(reader);\n\t\t\tif (pos === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tthis.getOption(EditorOption.lineHeight).read(reader);\n\n\t\t\treturn this.editor.getLineHeightForPosition(pos);\n\t\t});\n\t}\n\n\tobserveLineHeightForLine(lineNumber: IObservable<number> | number): IObservable<number>;\n\tobserveLineHeightForLine(lineNumber: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForLine(lineNumber: IObservable<number | null> | number): IObservable<number | null> {\n\t\tif (typeof lineNumber === 'number') {\n\t\t\treturn this.observeLineHeightForPosition(new Position(lineNumber, 1));\n\t\t}\n\n\t\treturn derived(reader => {\n\t\t\tconst line = lineNumber.read(reader);\n\t\t\tif (line === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.observeLineHeightForPosition(new Position(line, 1)).read(reader);\n\t\t});\n\t}\n\n\tobserveLineHeightsForLineRange(lineNumber: IObservable<LineRange> | LineRange): IObservable<number[]> {\n\t\treturn derived(reader => {\n\t\t\tconst range = lineNumber instanceof LineRange ? lineNumber : lineNumber.read(reader);\n\n\t\t\tconst heights: number[] = [];\n\t\t\tfor (let i = range.startLineNumber; i < range.endLineNumberExclusive; i++) {\n\t\t\t\theights.push(this.observeLineHeightForLine(i).read(reader));\n\t\t\t}\n\t\t\treturn heights;\n\t\t});\n\t}\n\n\tprivate readonly _onDidChangeViewZones;\n\tprivate readonly _onDidHiddenAreasChanged;\n\tprivate readonly _onDidLineHeightChanged;\n\n\t/**\n\t * Get the vertical position (top offset) for the line's bottom w.r.t. to the first line.\n\t */\n\tobserveTopForLineNumber(lineNumber: number): IObservable<number> {\n\t\treturn derived(reader => {\n\t\t\tthis.layoutInfo.read(reader);\n\t\t\tthis._onDidChangeViewZones.read(reader);\n\t\t\tthis._onDidHiddenAreasChanged.read(reader);\n\t\t\tthis._onDidLineHeightChanged.read(reader);\n\t\t\tthis._versionId.read(reader);\n\t\t\treturn this.editor.getTopForLineNumber(lineNumber);\n\t\t});\n\t}\n}\n\ninterface IObservableOverlayWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IOverlayWidgetPosition | null>;\n\treadonly minContentWidthInPx: IObservable<number>;\n\tget allowEditorOverflow(): boolean;\n}\n\ninterface IObservableContentWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IContentWidgetPosition | null>;\n\tget allowEditorOverflow(): boolean;\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 { equalsIfDefined, itemsEquals } from '../../base/common/equals.js';\nimport { Disposable, DisposableStore, IDisposable, toDisposable } from '../../base/common/lifecycle.js';\nimport { DebugLocation, IObservable, IObservableWithChange, IReader, ITransaction, TransactionImpl, autorun, autorunOpts, derived, derivedOpts, derivedWithSetter, observableFromEvent, observableSignal, observableSignalFromEvent, observableValue, observableValueOpts } from '../../base/common/observable.js';\nimport { EditorOption, FindComputedEditorOptionValueById } from '../common/config/editorOptions.js';\nimport { LineRange } from '../common/core/ranges/lineRange.js';\nimport { OffsetRange } from '../common/core/ranges/offsetRange.js';\nimport { Position } from '../common/core/position.js';\nimport { Selection } from '../common/core/selection.js';\nimport { ICursorSelectionChangedEvent } from '../common/cursorEvents.js';\nimport { IModelDeltaDecoration, ITextModel } from '../common/model.js';\nimport { IModelContentChangedEvent } from '../common/textModelEvents.js';\nimport { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent, IOverlayWidget, IOverlayWidgetPosition, IPasteEvent } from './editorBrowser.js';\nimport { Point } from '../common/core/2d/point.js';\n\n/**\n * Returns a facade for the code editor that provides observables for various states/events.\n*/\nexport function observableCodeEditor(editor: ICodeEditor): ObservableCodeEditor {\n\treturn ObservableCodeEditor.get(editor);\n}\n\nexport class ObservableCodeEditor extends Disposable {\n\tprivate static readonly _map = new Map<ICodeEditor, ObservableCodeEditor>();\n\n\t/**\n\t * Make sure that editor is not disposed yet!\n\t*/\n\tpublic static get(editor: ICodeEditor): ObservableCodeEditor {\n\t\tlet result = ObservableCodeEditor._map.get(editor);\n\t\tif (!result) {\n\t\t\tresult = new ObservableCodeEditor(editor);\n\t\t\tObservableCodeEditor._map.set(editor, result);\n\t\t\tconst d = editor.onDidDispose(() => {\n\t\t\t\tconst item = ObservableCodeEditor._map.get(editor);\n\t\t\t\tif (item) {\n\t\t\t\t\tObservableCodeEditor._map.delete(editor);\n\t\t\t\t\titem.dispose();\n\t\t\t\t\td.dispose();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate _updateCounter;\n\tprivate _currentTransaction: TransactionImpl | undefined;\n\n\tprivate _beginUpdate(): void {\n\t\tthis._updateCounter++;\n\t\tif (this._updateCounter === 1) {\n\t\t\tthis._currentTransaction = new TransactionImpl(() => {\n\t\t\t\t/** @description Update editor state */\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate _endUpdate(): void {\n\t\tthis._updateCounter--;\n\t\tif (this._updateCounter === 0) {\n\t\t\tconst t = this._currentTransaction!;\n\t\t\tthis._currentTransaction = undefined;\n\t\t\tt.finish();\n\t\t}\n\t}\n\n\tprivate constructor(public readonly editor: ICodeEditor) {\n\t\tsuper();\n\t\tthis._updateCounter = 0;\n\t\tthis._currentTransaction = undefined;\n\t\tthis._model = observableValue(this, this.editor.getModel());\n\t\tthis.model = this._model;\n\t\tthis.isReadonly = observableFromEvent(this, this.editor.onDidChangeConfiguration, () => this.editor.getOption(EditorOption.readOnly));\n\t\tthis._versionId = observableValueOpts<number | null, IModelContentChangedEvent | undefined>({ owner: this, lazy: true }, this.editor.getModel()?.getVersionId() ?? null);\n\t\tthis.versionId = this._versionId;\n\t\tthis._selections = observableValueOpts<Selection[] | null, ICursorSelectionChangedEvent | undefined>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Selection.selectionsEqual)), lazy: true },\n\t\t\tthis.editor.getSelections() ?? null\n\t\t);\n\t\tthis.selections = this._selections;\n\t\tthis.positions = derivedOpts<readonly Position[] | null>(\n\t\t\t{ owner: this, equalsFn: equalsIfDefined(itemsEquals(Position.equals)) },\n\t\t\treader => this.selections.read(reader)?.map(s => s.getStartPosition()) ?? null\n\t\t);\n\t\tthis.isFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorWidget(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorWidget(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasWidgetFocus());\n\t\tthis.isTextFocused = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidFocusEditorText(e);\n\t\t\tconst d2 = this.editor.onDidBlurEditorText(e);\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.hasTextFocus());\n\t\tthis.inComposition = observableFromEvent(this, e => {\n\t\t\tconst d1 = this.editor.onDidCompositionStart(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\tconst d2 = this.editor.onDidCompositionEnd(() => {\n\t\t\t\te(undefined);\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tdispose() {\n\t\t\t\t\td1.dispose();\n\t\t\t\t\td2.dispose();\n\t\t\t\t}\n\t\t\t};\n\t\t}, () => this.editor.inComposition);\n\t\tthis.value = derivedWithSetter(this,\n\t\t\treader => { this.versionId.read(reader); return this.model.read(reader)?.getValue() ?? ''; },\n\t\t\t(value, tx) => {\n\t\t\t\tconst model = this.model.get();\n\t\t\t\tif (model !== null) {\n\t\t\t\t\tif (value !== model.getValue()) {\n\t\t\t\t\t\tmodel.setValue(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.valueIsEmpty = derived(this, reader => { this.versionId.read(reader); return this.editor.getModel()?.getValueLength() === 0; });\n\t\tthis.cursorSelection = derivedOpts({ owner: this, equalsFn: equalsIfDefined(Selection.selectionsEqual) }, reader => this.selections.read(reader)?.[0] ?? null);\n\t\tthis.cursorPosition = derivedOpts({ owner: this, equalsFn: Position.equals }, reader => this.selections.read(reader)?.[0]?.getPosition() ?? null);\n\t\tthis.cursorLineNumber = derived<number | null>(this, reader => this.cursorPosition.read(reader)?.lineNumber ?? null);\n\t\tthis.onDidType = observableSignal<string>(this);\n\t\tthis.onDidPaste = observableSignal<IPasteEvent>(this);\n\t\tthis.scrollTop = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollTop());\n\t\tthis.scrollLeft = observableFromEvent(this.editor.onDidScrollChange, () => this.editor.getScrollLeft());\n\t\tthis.layoutInfo = observableFromEvent(this.editor.onDidLayoutChange, () => this.editor.getLayoutInfo());\n\t\tthis.layoutInfoContentLeft = this.layoutInfo.map(l => l.contentLeft);\n\t\tthis.layoutInfoDecorationsLeft = this.layoutInfo.map(l => l.decorationsLeft);\n\t\tthis.layoutInfoWidth = this.layoutInfo.map(l => l.width);\n\t\tthis.layoutInfoHeight = this.layoutInfo.map(l => l.height);\n\t\tthis.layoutInfoMinimap = this.layoutInfo.map(l => l.minimap);\n\t\tthis.layoutInfoVerticalScrollbarWidth = this.layoutInfo.map(l => l.verticalScrollbarWidth);\n\t\tthis.contentWidth = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentWidth());\n\t\tthis.contentHeight = observableFromEvent(this.editor.onDidContentSizeChange, () => this.editor.getContentHeight());\n\t\tthis._onDidChangeViewZones = observableSignalFromEvent(this, this.editor.onDidChangeViewZones);\n\t\tthis._onDidHiddenAreasChanged = observableSignalFromEvent(this, this.editor.onDidChangeHiddenAreas);\n\t\tthis._onDidLineHeightChanged = observableSignalFromEvent(this, this.editor.onDidChangeLineHeight);\n\n\t\tthis._widgetCounter = 0;\n\t\tthis.openedPeekWidgets = observableValue(this, 0);\n\n\t\tthis._register(this.editor.onBeginUpdate(() => this._beginUpdate()));\n\t\tthis._register(this.editor.onEndUpdate(() => this._endUpdate()));\n\n\t\tthis._register(this.editor.onDidChangeModel(() => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidType((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidType.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidPaste((e) => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._forceUpdate();\n\t\t\t\tthis.onDidPaste.trigger(this._currentTransaction, e);\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeModelContent(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis._register(this.editor.onDidChangeCursorSelection(e => {\n\t\t\tthis._beginUpdate();\n\t\t\ttry {\n\t\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, e);\n\t\t\t\tthis._forceUpdate();\n\t\t\t} finally {\n\t\t\t\tthis._endUpdate();\n\t\t\t}\n\t\t}));\n\n\t\tthis.domNode = derived(reader => {\n\t\t\tthis.model.read(reader);\n\t\t\treturn this.editor.getDomNode();\n\t\t});\n\t}\n\n\tpublic forceUpdate(): void;\n\tpublic forceUpdate<T>(cb: (tx: ITransaction) => T): T;\n\tpublic forceUpdate<T>(cb?: (tx: ITransaction) => T): T {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._forceUpdate();\n\t\t\tif (!cb) { return undefined as T; }\n\t\t\treturn cb(this._currentTransaction!);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate _forceUpdate(): void {\n\t\tthis._beginUpdate();\n\t\ttry {\n\t\t\tthis._model.set(this.editor.getModel(), this._currentTransaction);\n\t\t\tthis._versionId.set(this.editor.getModel()?.getVersionId() ?? null, this._currentTransaction, undefined);\n\t\t\tthis._selections.set(this.editor.getSelections(), this._currentTransaction, undefined);\n\t\t} finally {\n\t\t\tthis._endUpdate();\n\t\t}\n\t}\n\n\tprivate readonly _model;\n\tpublic readonly model: IObservable<ITextModel | null>;\n\n\tpublic readonly isReadonly;\n\n\tprivate readonly _versionId;\n\tpublic readonly versionId: IObservableWithChange<number | null, IModelContentChangedEvent | undefined>;\n\n\tprivate readonly _selections;\n\tpublic readonly selections: IObservableWithChange<Selection[] | null, ICursorSelectionChangedEvent | undefined>;\n\n\n\tpublic readonly positions;\n\n\tpublic readonly isFocused;\n\n\tpublic readonly isTextFocused;\n\n\tpublic readonly inComposition;\n\n\tpublic readonly value;\n\tpublic readonly valueIsEmpty;\n\tpublic readonly cursorSelection;\n\tpublic readonly cursorPosition;\n\tpublic readonly cursorLineNumber;\n\n\tpublic readonly onDidType;\n\tpublic readonly onDidPaste;\n\n\tpublic readonly scrollTop;\n\tpublic readonly scrollLeft;\n\n\tpublic readonly layoutInfo;\n\tpublic readonly layoutInfoContentLeft;\n\tpublic readonly layoutInfoDecorationsLeft;\n\tpublic readonly layoutInfoWidth;\n\tpublic readonly layoutInfoHeight;\n\tpublic readonly layoutInfoMinimap;\n\tpublic readonly layoutInfoVerticalScrollbarWidth;\n\n\tpublic readonly contentWidth;\n\tpublic readonly contentHeight;\n\n\tpublic readonly domNode;\n\n\tpublic getOption<T extends EditorOption>(id: T, debugLocation = DebugLocation.ofCaller()): IObservable<FindComputedEditorOptionValueById<T>> {\n\t\treturn observableFromEvent(this, cb => this.editor.onDidChangeConfiguration(e => {\n\t\t\tif (e.hasChanged(id)) { cb(undefined); }\n\t\t}), () => this.editor.getOption(id), debugLocation);\n\t}\n\n\tpublic setDecorations(decorations: IObservable<IModelDeltaDecoration[]>): IDisposable {\n\t\tconst d = new DisposableStore();\n\t\tconst decorationsCollection = this.editor.createDecorationsCollection();\n\t\td.add(autorunOpts({ owner: this, debugName: () => `Apply decorations from ${decorations.debugName}` }, reader => {\n\t\t\tconst d = decorations.read(reader);\n\t\t\tdecorationsCollection.set(d);\n\t\t}));\n\t\td.add({\n\t\t\tdispose: () => {\n\t\t\t\tdecorationsCollection.clear();\n\t\t\t}\n\t\t});\n\t\treturn d;\n\t}\n\n\tprivate _widgetCounter;\n\n\tpublic createOverlayWidget(widget: IObservableOverlayWidget): IDisposable {\n\t\tconst overlayWidgetId = 'observableOverlayWidget' + (this._widgetCounter++);\n\t\tconst w: IOverlayWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => overlayWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t\tgetMinContentWidthInPx: () => widget.minContentWidthInPx.get(),\n\t\t};\n\t\tthis.editor.addOverlayWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\twidget.minContentWidthInPx.read(reader);\n\t\t\tthis.editor.layoutOverlayWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeOverlayWidget(w);\n\t\t});\n\t}\n\n\tpublic createContentWidget(widget: IObservableContentWidget): IDisposable {\n\t\tconst contentWidgetId = 'observableContentWidget' + (this._widgetCounter++);\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => widget.domNode,\n\t\t\tgetPosition: () => widget.position.get(),\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: widget.allowEditorOverflow,\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tconst d = autorun(reader => {\n\t\t\twidget.position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t});\n\t\treturn toDisposable(() => {\n\t\t\td.dispose();\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t});\n\t}\n\n\tpublic observeLineOffsetRange(lineRange: IObservable<LineRange>, store: DisposableStore): IObservable<OffsetRange> {\n\t\tconst start = this.observePosition(lineRange.map(r => new Position(r.startLineNumber, 1)), store);\n\t\tconst end = this.observePosition(lineRange.map(r => new Position(r.endLineNumberExclusive + 1, 1)), store);\n\n\t\treturn derived(reader => {\n\t\t\tstart.read(reader);\n\t\t\tend.read(reader);\n\t\t\tconst range = lineRange.read(reader);\n\t\t\tconst lineCount = this.model.read(reader)?.getLineCount();\n\t\t\tconst s = (\n\t\t\t\t(typeof lineCount !== 'undefined' && range.startLineNumber > lineCount\n\t\t\t\t\t? this.editor.getBottomForLineNumber(lineCount)\n\t\t\t\t\t: this.editor.getTopForLineNumber(range.startLineNumber)\n\t\t\t\t)\n\t\t\t\t- this.scrollTop.read(reader)\n\t\t\t);\n\t\t\tconst e = range.isEmpty ? s : (this.editor.getBottomForLineNumber(range.endLineNumberExclusive - 1) - this.scrollTop.read(reader));\n\t\t\treturn new OffsetRange(s, e);\n\t\t});\n\t}\n\n\t/**\n\t * Uses an approximation if the exact position cannot be determined.\n\t */\n\tgetLeftOfPosition(position: Position, reader: IReader | undefined): number {\n\t\tthis.layoutInfo.read(reader);\n\t\tthis.value.read(reader);\n\n\t\tlet offset = this.editor.getOffsetForColumn(position.lineNumber, position.column);\n\t\tif (offset === -1) {\n\t\t\t// approximation\n\t\t\tconst typicalHalfwidthCharacterWidth = this.editor.getOption(EditorOption.fontInfo).typicalHalfwidthCharacterWidth;\n\t\t\tconst approximation = position.column * typicalHalfwidthCharacterWidth;\n\t\t\toffset = approximation;\n\t\t}\n\t\treturn offset;\n\t}\n\n\tpublic observePosition(position: IObservable<Position | null>, store: DisposableStore): IObservable<Point | null> {\n\t\tlet pos = position.get();\n\t\tconst result = observableValueOpts<Point | null>({ owner: this, debugName: () => `topLeftOfPosition${pos?.toString()}`, equalsFn: equalsIfDefined(Point.equals) }, new Point(0, 0));\n\t\tconst contentWidgetId = `observablePositionWidget` + (this._widgetCounter++);\n\t\tconst domNode = document.createElement('div');\n\t\tconst w: IContentWidget = {\n\t\t\tgetDomNode: () => domNode,\n\t\t\tgetPosition: () => {\n\t\t\t\treturn pos ? { preference: [ContentWidgetPositionPreference.EXACT], position: position.get() } : null;\n\t\t\t},\n\t\t\tgetId: () => contentWidgetId,\n\t\t\tallowEditorOverflow: false,\n\t\t\tafterRender: (position, coordinate) => {\n\t\t\t\tconst model = this._model.get();\n\t\t\t\tif (model && pos && pos.lineNumber > model.getLineCount()) {\n\t\t\t\t\t// the position is after the last line\n\t\t\t\t\tresult.set(new Point(0, this.editor.getBottomForLineNumber(model.getLineCount()) - this.scrollTop.get()), undefined);\n\t\t\t\t} else {\n\t\t\t\t\tresult.set(coordinate ? new Point(coordinate.left, coordinate.top) : null, undefined);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t\tthis.editor.addContentWidget(w);\n\t\tstore.add(autorun(reader => {\n\t\t\tpos = position.read(reader);\n\t\t\tthis.editor.layoutContentWidget(w);\n\t\t}));\n\t\tstore.add(toDisposable(() => {\n\t\t\tthis.editor.removeContentWidget(w);\n\t\t}));\n\t\treturn result;\n\t}\n\n\tpublic readonly openedPeekWidgets;\n\n\tisTargetHovered(predicate: (target: IEditorMouseEvent) => boolean, store: DisposableStore): IObservable<boolean> {\n\t\tconst isHovered = observableValue('isInjectedTextHovered', false);\n\t\tstore.add(this.editor.onMouseMove(e => {\n\t\t\tconst val = predicate(e);\n\t\t\tisHovered.set(val, undefined);\n\t\t}));\n\n\t\tstore.add(this.editor.onMouseLeave(E => {\n\t\t\tisHovered.set(false, undefined);\n\t\t}));\n\t\treturn isHovered;\n\t}\n\n\tobserveLineHeightForPosition(position: IObservable<Position> | Position): IObservable<number>;\n\tobserveLineHeightForPosition(position: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForPosition(position: IObservable<Position | null> | Position): IObservable<number | null> {\n\t\treturn derived(reader => {\n\t\t\tconst pos = position instanceof Position ? position : position.read(reader);\n\t\t\tif (pos === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tthis.getOption(EditorOption.lineHeight).read(reader);\n\n\t\t\treturn this.editor.getLineHeightForPosition(pos);\n\t\t});\n\t}\n\n\tobserveLineHeightForLine(lineNumber: IObservable<number> | number): IObservable<number>;\n\tobserveLineHeightForLine(lineNumber: IObservable<null>): IObservable<null>;\n\tobserveLineHeightForLine(lineNumber: IObservable<number | null> | number): IObservable<number | null> {\n\t\tif (typeof lineNumber === 'number') {\n\t\t\treturn this.observeLineHeightForPosition(new Position(lineNumber, 1));\n\t\t}\n\n\t\treturn derived(reader => {\n\t\t\tconst line = lineNumber.read(reader);\n\t\t\tif (line === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn this.observeLineHeightForPosition(new Position(line, 1)).read(reader);\n\t\t});\n\t}\n\n\tobserveLineHeightsForLineRange(lineNumber: IObservable<LineRange> | LineRange): IObservable<number[]> {\n\t\treturn derived(reader => {\n\t\t\tconst range = lineNumber instanceof LineRange ? lineNumber : lineNumber.read(reader);\n\n\t\t\tconst heights: number[] = [];\n\t\t\tfor (let i = range.startLineNumber; i < range.endLineNumberExclusive; i++) {\n\t\t\t\theights.push(this.observeLineHeightForLine(i).read(reader));\n\t\t\t}\n\t\t\treturn heights;\n\t\t});\n\t}\n\n\tprivate readonly _onDidChangeViewZones;\n\tprivate readonly _onDidHiddenAreasChanged;\n\tprivate readonly _onDidLineHeightChanged;\n\n\t/**\n\t * Get the vertical position (top offset) for the line's bottom w.r.t. to the first line.\n\t */\n\tobserveTopForLineNumber(lineNumber: number): IObservable<number> {\n\t\treturn derived(reader => {\n\t\t\tthis.layoutInfo.read(reader);\n\t\t\tthis._onDidChangeViewZones.read(reader);\n\t\t\tthis._onDidHiddenAreasChanged.read(reader);\n\t\t\tthis._onDidLineHeightChanged.read(reader);\n\t\t\tthis._versionId.read(reader);\n\t\t\treturn this.editor.getTopForLineNumber(lineNumber);\n\t\t});\n\t}\n}\n\ninterface IObservableOverlayWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IOverlayWidgetPosition | null>;\n\treadonly minContentWidthInPx: IObservable<number>;\n\tget allowEditorOverflow(): boolean;\n}\n\ninterface IObservableContentWidget {\n\tget domNode(): HTMLElement;\n\treadonly position: IObservable<IContentWidgetPosition | null>;\n\tget allowEditorOverflow(): boolean;\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
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 { registerSingleton } from '../../../platform/instantiation/common/extensions.js';
|
|
6
|
+
import { IEditorWorkerService } from '../../common/services/editorWorker.js';
|
|
7
|
+
import { EditorWorkerService } from './editorWorkerService.js';
|
|
8
|
+
registerSingleton(IEditorWorkerService, EditorWorkerService, 0 /* InstantiationType.Eager */);
|
|
9
|
+
//# sourceMappingURL=contribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/services/contribution.ts","vs/editor/browser/services/contribution.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,iBAAiB,EAAqB,MAAM,sDAAsD,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,iBAAiB,CAAC,oBAAoB,EAAE,mBAAmB,kCAAqG,CAAC","file":"contribution.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 { registerSingleton, InstantiationType } from '../../../platform/instantiation/common/extensions.js';\nimport { IEditorWorkerService } from '../../common/services/editorWorker.js';\nimport { EditorWorkerService } from './editorWorkerService.js';\n\nregisterSingleton(IEditorWorkerService, EditorWorkerService, InstantiationType.Eager /* registers link detection and word based suggestions for any document */);\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 { registerSingleton, InstantiationType } from '../../../platform/instantiation/common/extensions.js';\nimport { IEditorWorkerService } from '../../common/services/editorWorker.js';\nimport { EditorWorkerService } from './editorWorkerService.js';\n\nregisterSingleton(IEditorWorkerService, EditorWorkerService, InstantiationType.Eager /* registers link detection and word based suggestions for any document */);\n"]}
|
|
@@ -14,7 +14,8 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
14
14
|
import { timeout } from '../../../base/common/async.js';
|
|
15
15
|
import { Disposable } from '../../../base/common/lifecycle.js';
|
|
16
16
|
import { logOnceWebWorkerWarning } from '../../../base/common/worker/webWorker.js';
|
|
17
|
-
import {
|
|
17
|
+
import { WebWorkerDescriptor } from '../../../platform/webWorker/browser/webWorkerDescriptor.js';
|
|
18
|
+
import { IWebWorkerService } from '../../../platform/webWorker/browser/webWorkerService.js';
|
|
18
19
|
import { Range } from '../../common/core/range.js';
|
|
19
20
|
import { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';
|
|
20
21
|
import { EditorWorker } from '../../common/services/editorWebWorker.js';
|
|
@@ -32,6 +33,7 @@ import { mainWindow } from '../../../base/browser/window.js';
|
|
|
32
33
|
import { WindowIntervalTimer } from '../../../base/browser/dom.js';
|
|
33
34
|
import { WorkerTextModelSyncClient } from '../../common/services/textModelSync/textModelSync.impl.js';
|
|
34
35
|
import { EditorWorkerHost } from '../../common/services/editorWorkerHost.js';
|
|
36
|
+
import { FileAccess } from '../../../base/common/network.js';
|
|
35
37
|
/**
|
|
36
38
|
* Stop the worker if it was not needed for 5 min.
|
|
37
39
|
*/
|
|
@@ -47,11 +49,17 @@ function canSyncModel(modelService, resource) {
|
|
|
47
49
|
return true;
|
|
48
50
|
}
|
|
49
51
|
let EditorWorkerService = class EditorWorkerService extends Disposable {
|
|
50
|
-
constructor(
|
|
52
|
+
constructor(modelService, configurationService, logService, _languageConfigurationService, languageFeaturesService, _webWorkerService) {
|
|
51
53
|
super();
|
|
52
54
|
this._languageConfigurationService = _languageConfigurationService;
|
|
55
|
+
this._webWorkerService = _webWorkerService;
|
|
53
56
|
this._modelService = modelService;
|
|
54
|
-
|
|
57
|
+
const workerDescriptor = new WebWorkerDescriptor({
|
|
58
|
+
esmModuleLocation: () => FileAccess.asBrowserUri('vs/editor/common/services/editorWebWorkerMain.js'),
|
|
59
|
+
esmModuleLocationBundler: () => new URL('../../common/services/editorWebWorkerMain.js?worker', import.meta.url),
|
|
60
|
+
label: 'editorWorkerService'
|
|
61
|
+
});
|
|
62
|
+
this._workerManager = this._register(new WorkerManager(workerDescriptor, this._modelService, this._webWorkerService));
|
|
55
63
|
this._logService = logService;
|
|
56
64
|
// register default link-provider and default completions-provider
|
|
57
65
|
this._register(languageFeaturesService.linkProvider.register({ language: '*', hasAccessToAllModels: true }, {
|
|
@@ -150,11 +158,12 @@ let EditorWorkerService = class EditorWorkerService extends Disposable {
|
|
|
150
158
|
}
|
|
151
159
|
};
|
|
152
160
|
EditorWorkerService = __decorate([
|
|
153
|
-
__param(
|
|
154
|
-
__param(
|
|
155
|
-
__param(
|
|
156
|
-
__param(
|
|
157
|
-
__param(
|
|
161
|
+
__param(0, IModelService),
|
|
162
|
+
__param(1, ITextResourceConfigurationService),
|
|
163
|
+
__param(2, ILogService),
|
|
164
|
+
__param(3, ILanguageConfigurationService),
|
|
165
|
+
__param(4, ILanguageFeaturesService),
|
|
166
|
+
__param(5, IWebWorkerService)
|
|
158
167
|
], EditorWorkerService);
|
|
159
168
|
export { EditorWorkerService };
|
|
160
169
|
class WordBasedCompletionItemProvider {
|
|
@@ -220,10 +229,11 @@ class WordBasedCompletionItemProvider {
|
|
|
220
229
|
}
|
|
221
230
|
}
|
|
222
231
|
let WorkerManager = class WorkerManager extends Disposable {
|
|
223
|
-
constructor(_workerDescriptor, modelService) {
|
|
232
|
+
constructor(_workerDescriptor, modelService, webWorkerService) {
|
|
224
233
|
super();
|
|
225
234
|
this._workerDescriptor = _workerDescriptor;
|
|
226
235
|
this._modelService = modelService;
|
|
236
|
+
this._webWorkerService = webWorkerService;
|
|
227
237
|
this._editorWorkerClient = null;
|
|
228
238
|
this._lastWorkerUsedTime = (new Date()).getTime();
|
|
229
239
|
const stopWorkerInterval = this._register(new WindowIntervalTimer());
|
|
@@ -267,13 +277,14 @@ let WorkerManager = class WorkerManager extends Disposable {
|
|
|
267
277
|
withWorker() {
|
|
268
278
|
this._lastWorkerUsedTime = (new Date()).getTime();
|
|
269
279
|
if (!this._editorWorkerClient) {
|
|
270
|
-
this._editorWorkerClient = new EditorWorkerClient(this._workerDescriptor, false, this._modelService);
|
|
280
|
+
this._editorWorkerClient = new EditorWorkerClient(this._workerDescriptor, false, this._modelService, this._webWorkerService);
|
|
271
281
|
}
|
|
272
282
|
return Promise.resolve(this._editorWorkerClient);
|
|
273
283
|
}
|
|
274
284
|
};
|
|
275
285
|
WorkerManager = __decorate([
|
|
276
|
-
__param(1, IModelService)
|
|
286
|
+
__param(1, IModelService),
|
|
287
|
+
__param(2, IWebWorkerService)
|
|
277
288
|
], WorkerManager);
|
|
278
289
|
class SynchronousWorkerClient {
|
|
279
290
|
constructor(instance) {
|
|
@@ -288,11 +299,12 @@ class SynchronousWorkerClient {
|
|
|
288
299
|
}
|
|
289
300
|
}
|
|
290
301
|
let EditorWorkerClient = class EditorWorkerClient extends Disposable {
|
|
291
|
-
constructor(_workerDescriptorOrWorker, keepIdleModels, modelService) {
|
|
302
|
+
constructor(_workerDescriptorOrWorker, keepIdleModels, modelService, webWorkerService) {
|
|
292
303
|
super();
|
|
293
304
|
this._workerDescriptorOrWorker = _workerDescriptorOrWorker;
|
|
294
305
|
this._disposed = false;
|
|
295
306
|
this._modelService = modelService;
|
|
307
|
+
this._webWorkerService = webWorkerService;
|
|
296
308
|
this._keepIdleModels = keepIdleModels;
|
|
297
309
|
this._worker = null;
|
|
298
310
|
this._modelManager = null;
|
|
@@ -304,7 +316,7 @@ let EditorWorkerClient = class EditorWorkerClient extends Disposable {
|
|
|
304
316
|
_getOrCreateWorker() {
|
|
305
317
|
if (!this._worker) {
|
|
306
318
|
try {
|
|
307
|
-
this._worker = this._register(
|
|
319
|
+
this._worker = this._register(this._webWorkerService.createWorkerClient(this._workerDescriptorOrWorker));
|
|
308
320
|
EditorWorkerHost.setChannel(this._worker, this._createEditorWorkerHost());
|
|
309
321
|
}
|
|
310
322
|
catch (err) {
|
|
@@ -360,7 +372,8 @@ let EditorWorkerClient = class EditorWorkerClient extends Disposable {
|
|
|
360
372
|
}
|
|
361
373
|
};
|
|
362
374
|
EditorWorkerClient = __decorate([
|
|
363
|
-
__param(2, IModelService)
|
|
375
|
+
__param(2, IModelService),
|
|
376
|
+
__param(3, IWebWorkerService)
|
|
364
377
|
], EditorWorkerClient);
|
|
365
378
|
export { EditorWorkerClient };
|
|
366
379
|
//# sourceMappingURL=editorWorkerService.js.map
|