monaco-editor-core 0.55.0 → 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/version.txt +1 -1
- 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/viewParts/whitespace/whitespace.ts","vs/editor/browser/viewParts/whitespace/whitespace.ts"],"names":[],"mappings":"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","file":"whitespace.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 './whitespace.css';\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { RenderingContext } from '../../view/renderingContext.js';\nimport { ViewContext } from '../../../common/viewModel/viewContext.js';\nimport * as viewEvents from '../../../common/viewEvents.js';\nimport { ViewLineRenderingData } from '../../../common/viewModel.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { IEditorConfiguration } from '../../../common/config/editorConfiguration.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { CharCode } from '../../../../base/common/charCode.js';\nimport { Position } from '../../../common/core/position.js';\nimport { editorWhitespaces } from '../../../common/core/editorColorRegistry.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\n\n/**\n * The whitespace overlay will visual certain whitespace depending on the\n * current editor configuration (boundary, selection, etc.).\n */\nexport class WhitespaceOverlay extends DynamicViewOverlay {\n\n\tprivate readonly _context: ViewContext;\n\tprivate _options: WhitespaceOptions;\n\tprivate _selection: Selection[];\n\tprivate _renderResult: string[] | null;\n\n\tconstructor(context: ViewContext) {\n\t\tsuper();\n\t\tthis._context = context;\n\t\tthis._options = new WhitespaceOptions(this._context.configuration);\n\t\tthis._selection = [];\n\t\tthis._renderResult = null;\n\t\tthis._context.addEventHandler(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._context.removeEventHandler(this);\n\t\tthis._renderResult = null;\n\t\tsuper.dispose();\n\t}\n\n\t// --- begin event handlers\n\n\tpublic override onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {\n\t\tconst newOptions = new WhitespaceOptions(this._context.configuration);\n\t\tif (this._options.equals(newOptions)) {\n\t\t\treturn e.hasChanged(EditorOption.layoutInfo);\n\t\t}\n\t\tthis._options = newOptions;\n\t\treturn true;\n\t}\n\tpublic override onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {\n\t\tthis._selection = e.selections;\n\t\tif (this._options.renderWhitespace === 'selection') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic override onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onFlushed(e: viewEvents.ViewFlushedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesChanged(e: viewEvents.ViewLinesChangedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesDeleted(e: viewEvents.ViewLinesDeletedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesInserted(e: viewEvents.ViewLinesInsertedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onScrollChanged(e: viewEvents.ViewScrollChangedEvent): boolean {\n\t\treturn e.scrollTopChanged;\n\t}\n\tpublic override onZonesChanged(e: viewEvents.ViewZonesChangedEvent): boolean {\n\t\treturn true;\n\t}\n\t// --- end event handlers\n\n\tpublic prepareRender(ctx: RenderingContext): void {\n\t\tif (this._options.renderWhitespace === 'none') {\n\t\t\tthis._renderResult = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst startLineNumber = ctx.visibleRange.startLineNumber;\n\t\tconst endLineNumber = ctx.visibleRange.endLineNumber;\n\t\tconst lineCount = endLineNumber - startLineNumber + 1;\n\t\tconst needed = new Array<boolean>(lineCount);\n\t\tfor (let i = 0; i < lineCount; i++) {\n\t\t\tneeded[i] = true;\n\t\t}\n\n\t\tthis._renderResult = [];\n\t\tfor (let lineNumber = ctx.viewportData.startLineNumber; lineNumber <= ctx.viewportData.endLineNumber; lineNumber++) {\n\t\t\tconst lineIndex = lineNumber - ctx.viewportData.startLineNumber;\n\t\t\tconst lineData = this._context.viewModel.getViewLineRenderingData(lineNumber);\n\n\t\t\tlet selectionsOnLine: OffsetRange[] | null = null;\n\t\t\tif (this._options.renderWhitespace === 'selection') {\n\t\t\t\tconst selections = this._selection;\n\t\t\t\tfor (const selection of selections) {\n\n\t\t\t\t\tif (selection.endLineNumber < lineNumber || selection.startLineNumber > lineNumber) {\n\t\t\t\t\t\t// Selection does not intersect line\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst startColumn = (selection.startLineNumber === lineNumber ? selection.startColumn : lineData.minColumn);\n\t\t\t\t\tconst endColumn = (selection.endLineNumber === lineNumber ? selection.endColumn : lineData.maxColumn);\n\n\t\t\t\t\tif (startColumn < endColumn) {\n\t\t\t\t\t\tif (!selectionsOnLine) {\n\t\t\t\t\t\t\tselectionsOnLine = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tselectionsOnLine.push(new OffsetRange(startColumn - 1, endColumn - 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._renderResult[lineIndex] = this._applyRenderWhitespace(ctx, lineNumber, selectionsOnLine, lineData);\n\t\t}\n\t}\n\n\tprivate _applyRenderWhitespace(ctx: RenderingContext, lineNumber: number, selections: OffsetRange[] | null, lineData: ViewLineRenderingData): string {\n\t\tif (lineData.hasVariableFonts) {\n\t\t\treturn '';\n\t\t}\n\t\tif (this._options.renderWhitespace === 'selection' && !selections) {\n\t\t\treturn '';\n\t\t}\n\t\tif (this._options.renderWhitespace === 'trailing' && lineData.continuesWithWrappedLine) {\n\t\t\treturn '';\n\t\t}\n\t\tconst color = this._context.theme.getColor(editorWhitespaces);\n\t\tconst USE_SVG = this._options.renderWithSVG;\n\n\t\tconst lineContent = lineData.content;\n\t\tconst len = (this._options.stopRenderingLineAfter === -1 ? lineContent.length : Math.min(this._options.stopRenderingLineAfter, lineContent.length));\n\t\tconst continuesWithWrappedLine = lineData.continuesWithWrappedLine;\n\t\tconst fauxIndentLength = lineData.minColumn - 1;\n\t\tconst onlyBoundary = (this._options.renderWhitespace === 'boundary');\n\t\tconst onlyTrailing = (this._options.renderWhitespace === 'trailing');\n\t\tconst lineHeight = ctx.getLineHeightForLineNumber(lineNumber);\n\t\tconst middotWidth = this._options.middotWidth;\n\t\tconst wsmiddotWidth = this._options.wsmiddotWidth;\n\t\tconst spaceWidth = this._options.spaceWidth;\n\t\tconst wsmiddotDiff = Math.abs(wsmiddotWidth - spaceWidth);\n\t\tconst middotDiff = Math.abs(middotWidth - spaceWidth);\n\n\t\t// U+2E31 - WORD SEPARATOR MIDDLE DOT\n\t\t// U+00B7 - MIDDLE DOT\n\t\tconst renderSpaceCharCode = (wsmiddotDiff < middotDiff ? 0x2E31 : 0xB7);\n\n\t\tconst canUseHalfwidthRightwardsArrow = this._options.canUseHalfwidthRightwardsArrow;\n\n\t\tlet result: string = '';\n\n\t\tlet lineIsEmptyOrWhitespace = false;\n\t\tlet firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\n\t\tlet lastNonWhitespaceIndex: number;\n\t\tif (firstNonWhitespaceIndex === -1) {\n\t\t\tlineIsEmptyOrWhitespace = true;\n\t\t\tfirstNonWhitespaceIndex = len;\n\t\t\tlastNonWhitespaceIndex = len;\n\t\t} else {\n\t\t\tlastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\n\t\t}\n\n\t\tlet currentSelectionIndex = 0;\n\t\tlet currentSelection = selections && selections[currentSelectionIndex];\n\t\tlet maxLeft = 0;\n\n\t\tfor (let charIndex = fauxIndentLength; charIndex < len; charIndex++) {\n\t\t\tconst chCode = lineContent.charCodeAt(charIndex);\n\n\t\t\tif (currentSelection && currentSelection.endExclusive <= charIndex) {\n\t\t\t\tcurrentSelectionIndex++;\n\t\t\t\tcurrentSelection = selections && selections[currentSelectionIndex];\n\t\t\t}\n\n\t\t\tif (chCode !== CharCode.Tab && chCode !== CharCode.Space) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (onlyTrailing && !lineIsEmptyOrWhitespace && charIndex <= lastNonWhitespaceIndex) {\n\t\t\t\t// If rendering only trailing whitespace, check that the charIndex points to trailing whitespace.\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (onlyBoundary && charIndex >= firstNonWhitespaceIndex && charIndex <= lastNonWhitespaceIndex && chCode === CharCode.Space) {\n\t\t\t\t// rendering only boundary whitespace\n\t\t\t\tconst prevChCode = (charIndex - 1 >= 0 ? lineContent.charCodeAt(charIndex - 1) : CharCode.Null);\n\t\t\t\tconst nextChCode = (charIndex + 1 < len ? lineContent.charCodeAt(charIndex + 1) : CharCode.Null);\n\t\t\t\tif (prevChCode !== CharCode.Space && nextChCode !== CharCode.Space) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (onlyBoundary && continuesWithWrappedLine && charIndex === len - 1) {\n\t\t\t\tconst prevCharCode = (charIndex - 1 >= 0 ? lineContent.charCodeAt(charIndex - 1) : CharCode.Null);\n\t\t\t\tconst isSingleTrailingSpace = (chCode === CharCode.Space && (prevCharCode !== CharCode.Space && prevCharCode !== CharCode.Tab));\n\t\t\t\tif (isSingleTrailingSpace) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (selections && !(currentSelection && currentSelection.start <= charIndex && charIndex < currentSelection.endExclusive)) {\n\t\t\t\t// If rendering whitespace on selection, check that the charIndex falls within a selection\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst visibleRange = ctx.visibleRangeForPosition(new Position(lineNumber, charIndex + 1));\n\t\t\tif (!visibleRange) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (USE_SVG) {\n\t\t\t\tmaxLeft = Math.max(maxLeft, visibleRange.left);\n\t\t\t\tif (chCode === CharCode.Tab) {\n\t\t\t\t\tresult += this._renderArrow(lineHeight, spaceWidth, visibleRange.left);\n\t\t\t\t} else {\n\t\t\t\t\tresult += `<circle cx=\"${(visibleRange.left + spaceWidth / 2).toFixed(2)}\" cy=\"${(lineHeight / 2).toFixed(2)}\" r=\"${(spaceWidth / 7).toFixed(2)}\" />`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (chCode === CharCode.Tab) {\n\t\t\t\t\tresult += `<div class=\"mwh\" style=\"left:${visibleRange.left}px;height:${lineHeight}px;\">${canUseHalfwidthRightwardsArrow ? String.fromCharCode(0xFFEB) : String.fromCharCode(0x2192)}</div>`;\n\t\t\t\t} else {\n\t\t\t\t\tresult += `<div class=\"mwh\" style=\"left:${visibleRange.left}px;height:${lineHeight}px;\">${String.fromCharCode(renderSpaceCharCode)}</div>`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (USE_SVG) {\n\t\t\tmaxLeft = Math.round(maxLeft + spaceWidth);\n\t\t\treturn (\n\t\t\t\t`<svg style=\"bottom:0;position:absolute;width:${maxLeft}px;height:${lineHeight}px\" viewBox=\"0 0 ${maxLeft} ${lineHeight}\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"${color}\">`\n\t\t\t\t+ result\n\t\t\t\t+ `</svg>`\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate _renderArrow(lineHeight: number, spaceWidth: number, left: number): string {\n\t\tconst strokeWidth = spaceWidth / 7;\n\t\tconst width = spaceWidth;\n\t\tconst dy = lineHeight / 2;\n\t\tconst dx = left;\n\n\t\tconst p1 = { x: 0, y: strokeWidth / 2 };\n\t\tconst p2 = { x: 100 / 125 * width, y: p1.y };\n\t\tconst p3 = { x: p2.x - 0.2 * p2.x, y: p2.y + 0.2 * p2.x };\n\t\tconst p4 = { x: p3.x + 0.1 * p2.x, y: p3.y + 0.1 * p2.x };\n\t\tconst p5 = { x: p4.x + 0.35 * p2.x, y: p4.y - 0.35 * p2.x };\n\t\tconst p6 = { x: p5.x, y: -p5.y };\n\t\tconst p7 = { x: p4.x, y: -p4.y };\n\t\tconst p8 = { x: p3.x, y: -p3.y };\n\t\tconst p9 = { x: p2.x, y: -p2.y };\n\t\tconst p10 = { x: p1.x, y: -p1.y };\n\n\t\tconst p = [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10];\n\t\tconst parts = p.map((p) => `${(dx + p.x).toFixed(2)} ${(dy + p.y).toFixed(2)}`).join(' L ');\n\t\treturn `<path d=\"M ${parts}\" />`;\n\t}\n\n\tpublic render(startLineNumber: number, lineNumber: number): string {\n\t\tif (!this._renderResult) {\n\t\t\treturn '';\n\t\t}\n\t\tconst lineIndex = lineNumber - startLineNumber;\n\t\tif (lineIndex < 0 || lineIndex >= this._renderResult.length) {\n\t\t\treturn '';\n\t\t}\n\t\treturn this._renderResult[lineIndex];\n\t}\n}\n\nclass WhitespaceOptions {\n\n\tpublic readonly renderWhitespace: 'none' | 'boundary' | 'selection' | 'trailing' | 'all';\n\tpublic readonly renderWithSVG: boolean;\n\tpublic readonly spaceWidth: number;\n\tpublic readonly middotWidth: number;\n\tpublic readonly wsmiddotWidth: number;\n\tpublic readonly canUseHalfwidthRightwardsArrow: boolean;\n\tpublic readonly lineHeight: number;\n\tpublic readonly stopRenderingLineAfter: number;\n\n\tconstructor(config: IEditorConfiguration) {\n\t\tconst options = config.options;\n\t\tconst fontInfo = options.get(EditorOption.fontInfo);\n\t\tconst experimentalWhitespaceRendering = options.get(EditorOption.experimentalWhitespaceRendering);\n\t\tif (experimentalWhitespaceRendering === 'off') {\n\t\t\t// whitespace is rendered in the view line\n\t\t\tthis.renderWhitespace = 'none';\n\t\t\tthis.renderWithSVG = false;\n\t\t} else if (experimentalWhitespaceRendering === 'svg') {\n\t\t\tthis.renderWhitespace = options.get(EditorOption.renderWhitespace);\n\t\t\tthis.renderWithSVG = true;\n\t\t} else {\n\t\t\tthis.renderWhitespace = options.get(EditorOption.renderWhitespace);\n\t\t\tthis.renderWithSVG = false;\n\t\t}\n\t\tthis.spaceWidth = fontInfo.spaceWidth;\n\t\tthis.middotWidth = fontInfo.middotWidth;\n\t\tthis.wsmiddotWidth = fontInfo.wsmiddotWidth;\n\t\tthis.canUseHalfwidthRightwardsArrow = fontInfo.canUseHalfwidthRightwardsArrow;\n\t\tthis.lineHeight = options.get(EditorOption.lineHeight);\n\t\tthis.stopRenderingLineAfter = options.get(EditorOption.stopRenderingLineAfter);\n\t}\n\n\tpublic equals(other: WhitespaceOptions): boolean {\n\t\treturn (\n\t\t\tthis.renderWhitespace === other.renderWhitespace\n\t\t\t&& this.renderWithSVG === other.renderWithSVG\n\t\t\t&& this.spaceWidth === other.spaceWidth\n\t\t\t&& this.middotWidth === other.middotWidth\n\t\t\t&& this.wsmiddotWidth === other.wsmiddotWidth\n\t\t\t&& this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\n\t\t\t&& this.lineHeight === other.lineHeight\n\t\t\t&& this.stopRenderingLineAfter === other.stopRenderingLineAfter\n\t\t);\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport './whitespace.css';\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { RenderingContext } from '../../view/renderingContext.js';\nimport { ViewContext } from '../../../common/viewModel/viewContext.js';\nimport * as viewEvents from '../../../common/viewEvents.js';\nimport { ViewLineRenderingData } from '../../../common/viewModel.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { IEditorConfiguration } from '../../../common/config/editorConfiguration.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { CharCode } from '../../../../base/common/charCode.js';\nimport { Position } from '../../../common/core/position.js';\nimport { editorWhitespaces } from '../../../common/core/editorColorRegistry.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\n\n/**\n * The whitespace overlay will visual certain whitespace depending on the\n * current editor configuration (boundary, selection, etc.).\n */\nexport class WhitespaceOverlay extends DynamicViewOverlay {\n\n\tprivate readonly _context: ViewContext;\n\tprivate _options: WhitespaceOptions;\n\tprivate _selection: Selection[];\n\tprivate _renderResult: string[] | null;\n\n\tconstructor(context: ViewContext) {\n\t\tsuper();\n\t\tthis._context = context;\n\t\tthis._options = new WhitespaceOptions(this._context.configuration);\n\t\tthis._selection = [];\n\t\tthis._renderResult = null;\n\t\tthis._context.addEventHandler(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._context.removeEventHandler(this);\n\t\tthis._renderResult = null;\n\t\tsuper.dispose();\n\t}\n\n\t// --- begin event handlers\n\n\tpublic override onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {\n\t\tconst newOptions = new WhitespaceOptions(this._context.configuration);\n\t\tif (this._options.equals(newOptions)) {\n\t\t\treturn e.hasChanged(EditorOption.layoutInfo);\n\t\t}\n\t\tthis._options = newOptions;\n\t\treturn true;\n\t}\n\tpublic override onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {\n\t\tthis._selection = e.selections;\n\t\tif (this._options.renderWhitespace === 'selection') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic override onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onFlushed(e: viewEvents.ViewFlushedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesChanged(e: viewEvents.ViewLinesChangedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesDeleted(e: viewEvents.ViewLinesDeletedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesInserted(e: viewEvents.ViewLinesInsertedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onScrollChanged(e: viewEvents.ViewScrollChangedEvent): boolean {\n\t\treturn e.scrollTopChanged;\n\t}\n\tpublic override onZonesChanged(e: viewEvents.ViewZonesChangedEvent): boolean {\n\t\treturn true;\n\t}\n\t// --- end event handlers\n\n\tpublic prepareRender(ctx: RenderingContext): void {\n\t\tif (this._options.renderWhitespace === 'none') {\n\t\t\tthis._renderResult = null;\n\t\t\treturn;\n\t\t}\n\n\t\tconst startLineNumber = ctx.visibleRange.startLineNumber;\n\t\tconst endLineNumber = ctx.visibleRange.endLineNumber;\n\t\tconst lineCount = endLineNumber - startLineNumber + 1;\n\t\tconst needed = new Array<boolean>(lineCount);\n\t\tfor (let i = 0; i < lineCount; i++) {\n\t\t\tneeded[i] = true;\n\t\t}\n\n\t\tthis._renderResult = [];\n\t\tfor (let lineNumber = ctx.viewportData.startLineNumber; lineNumber <= ctx.viewportData.endLineNumber; lineNumber++) {\n\t\t\tconst lineIndex = lineNumber - ctx.viewportData.startLineNumber;\n\t\t\tconst lineData = this._context.viewModel.getViewLineRenderingData(lineNumber);\n\n\t\t\tlet selectionsOnLine: OffsetRange[] | null = null;\n\t\t\tif (this._options.renderWhitespace === 'selection') {\n\t\t\t\tconst selections = this._selection;\n\t\t\t\tfor (const selection of selections) {\n\n\t\t\t\t\tif (selection.endLineNumber < lineNumber || selection.startLineNumber > lineNumber) {\n\t\t\t\t\t\t// Selection does not intersect line\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst startColumn = (selection.startLineNumber === lineNumber ? selection.startColumn : lineData.minColumn);\n\t\t\t\t\tconst endColumn = (selection.endLineNumber === lineNumber ? selection.endColumn : lineData.maxColumn);\n\n\t\t\t\t\tif (startColumn < endColumn) {\n\t\t\t\t\t\tif (!selectionsOnLine) {\n\t\t\t\t\t\t\tselectionsOnLine = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tselectionsOnLine.push(new OffsetRange(startColumn - 1, endColumn - 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._renderResult[lineIndex] = this._applyRenderWhitespace(ctx, lineNumber, selectionsOnLine, lineData);\n\t\t}\n\t}\n\n\tprivate _applyRenderWhitespace(ctx: RenderingContext, lineNumber: number, selections: OffsetRange[] | null, lineData: ViewLineRenderingData): string {\n\t\tif (lineData.hasVariableFonts) {\n\t\t\treturn '';\n\t\t}\n\t\tif (this._options.renderWhitespace === 'selection' && !selections) {\n\t\t\treturn '';\n\t\t}\n\t\tif (this._options.renderWhitespace === 'trailing' && lineData.continuesWithWrappedLine) {\n\t\t\treturn '';\n\t\t}\n\t\tconst color = this._context.theme.getColor(editorWhitespaces);\n\t\tconst USE_SVG = this._options.renderWithSVG;\n\n\t\tconst lineContent = lineData.content;\n\t\tconst len = (this._options.stopRenderingLineAfter === -1 ? lineContent.length : Math.min(this._options.stopRenderingLineAfter, lineContent.length));\n\t\tconst continuesWithWrappedLine = lineData.continuesWithWrappedLine;\n\t\tconst fauxIndentLength = lineData.minColumn - 1;\n\t\tconst onlyBoundary = (this._options.renderWhitespace === 'boundary');\n\t\tconst onlyTrailing = (this._options.renderWhitespace === 'trailing');\n\t\tconst lineHeight = ctx.getLineHeightForLineNumber(lineNumber);\n\t\tconst middotWidth = this._options.middotWidth;\n\t\tconst wsmiddotWidth = this._options.wsmiddotWidth;\n\t\tconst spaceWidth = this._options.spaceWidth;\n\t\tconst wsmiddotDiff = Math.abs(wsmiddotWidth - spaceWidth);\n\t\tconst middotDiff = Math.abs(middotWidth - spaceWidth);\n\n\t\t// U+2E31 - WORD SEPARATOR MIDDLE DOT\n\t\t// U+00B7 - MIDDLE DOT\n\t\tconst renderSpaceCharCode = (wsmiddotDiff < middotDiff ? 0x2E31 : 0xB7);\n\n\t\tconst canUseHalfwidthRightwardsArrow = this._options.canUseHalfwidthRightwardsArrow;\n\n\t\tlet result: string = '';\n\n\t\tlet lineIsEmptyOrWhitespace = false;\n\t\tlet firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\n\t\tlet lastNonWhitespaceIndex: number;\n\t\tif (firstNonWhitespaceIndex === -1) {\n\t\t\tlineIsEmptyOrWhitespace = true;\n\t\t\tfirstNonWhitespaceIndex = len;\n\t\t\tlastNonWhitespaceIndex = len;\n\t\t} else {\n\t\t\tlastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\n\t\t}\n\n\t\tlet currentSelectionIndex = 0;\n\t\tlet currentSelection = selections && selections[currentSelectionIndex];\n\t\tlet maxLeft = 0;\n\n\t\tfor (let charIndex = fauxIndentLength; charIndex < len; charIndex++) {\n\t\t\tconst chCode = lineContent.charCodeAt(charIndex);\n\n\t\t\tif (currentSelection && currentSelection.endExclusive <= charIndex) {\n\t\t\t\tcurrentSelectionIndex++;\n\t\t\t\tcurrentSelection = selections && selections[currentSelectionIndex];\n\t\t\t}\n\n\t\t\tif (chCode !== CharCode.Tab && chCode !== CharCode.Space) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (onlyTrailing && !lineIsEmptyOrWhitespace && charIndex <= lastNonWhitespaceIndex) {\n\t\t\t\t// If rendering only trailing whitespace, check that the charIndex points to trailing whitespace.\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (onlyBoundary && charIndex >= firstNonWhitespaceIndex && charIndex <= lastNonWhitespaceIndex && chCode === CharCode.Space) {\n\t\t\t\t// rendering only boundary whitespace\n\t\t\t\tconst prevChCode = (charIndex - 1 >= 0 ? lineContent.charCodeAt(charIndex - 1) : CharCode.Null);\n\t\t\t\tconst nextChCode = (charIndex + 1 < len ? lineContent.charCodeAt(charIndex + 1) : CharCode.Null);\n\t\t\t\tif (prevChCode !== CharCode.Space && nextChCode !== CharCode.Space) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (onlyBoundary && continuesWithWrappedLine && charIndex === len - 1) {\n\t\t\t\tconst prevCharCode = (charIndex - 1 >= 0 ? lineContent.charCodeAt(charIndex - 1) : CharCode.Null);\n\t\t\t\tconst isSingleTrailingSpace = (chCode === CharCode.Space && (prevCharCode !== CharCode.Space && prevCharCode !== CharCode.Tab));\n\t\t\t\tif (isSingleTrailingSpace) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (selections && !(currentSelection && currentSelection.start <= charIndex && charIndex < currentSelection.endExclusive)) {\n\t\t\t\t// If rendering whitespace on selection, check that the charIndex falls within a selection\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst visibleRange = ctx.visibleRangeForPosition(new Position(lineNumber, charIndex + 1));\n\t\t\tif (!visibleRange) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (USE_SVG) {\n\t\t\t\tmaxLeft = Math.max(maxLeft, visibleRange.left);\n\t\t\t\tif (chCode === CharCode.Tab) {\n\t\t\t\t\tresult += this._renderArrow(lineHeight, spaceWidth, visibleRange.left);\n\t\t\t\t} else {\n\t\t\t\t\tresult += `<circle cx=\"${(visibleRange.left + spaceWidth / 2).toFixed(2)}\" cy=\"${(lineHeight / 2).toFixed(2)}\" r=\"${(spaceWidth / 7).toFixed(2)}\" />`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (chCode === CharCode.Tab) {\n\t\t\t\t\tresult += `<div class=\"mwh\" style=\"left:${visibleRange.left}px;height:${lineHeight}px;\">${canUseHalfwidthRightwardsArrow ? String.fromCharCode(0xFFEB) : String.fromCharCode(0x2192)}</div>`;\n\t\t\t\t} else {\n\t\t\t\t\tresult += `<div class=\"mwh\" style=\"left:${visibleRange.left}px;height:${lineHeight}px;\">${String.fromCharCode(renderSpaceCharCode)}</div>`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (USE_SVG) {\n\t\t\tmaxLeft = Math.round(maxLeft + spaceWidth);\n\t\t\treturn (\n\t\t\t\t`<svg style=\"bottom:0;position:absolute;width:${maxLeft}px;height:${lineHeight}px\" viewBox=\"0 0 ${maxLeft} ${lineHeight}\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"${color}\">`\n\t\t\t\t+ result\n\t\t\t\t+ `</svg>`\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate _renderArrow(lineHeight: number, spaceWidth: number, left: number): string {\n\t\tconst strokeWidth = spaceWidth / 7;\n\t\tconst width = spaceWidth;\n\t\tconst dy = lineHeight / 2;\n\t\tconst dx = left;\n\n\t\tconst p1 = { x: 0, y: strokeWidth / 2 };\n\t\tconst p2 = { x: 100 / 125 * width, y: p1.y };\n\t\tconst p3 = { x: p2.x - 0.2 * p2.x, y: p2.y + 0.2 * p2.x };\n\t\tconst p4 = { x: p3.x + 0.1 * p2.x, y: p3.y + 0.1 * p2.x };\n\t\tconst p5 = { x: p4.x + 0.35 * p2.x, y: p4.y - 0.35 * p2.x };\n\t\tconst p6 = { x: p5.x, y: -p5.y };\n\t\tconst p7 = { x: p4.x, y: -p4.y };\n\t\tconst p8 = { x: p3.x, y: -p3.y };\n\t\tconst p9 = { x: p2.x, y: -p2.y };\n\t\tconst p10 = { x: p1.x, y: -p1.y };\n\n\t\tconst p = [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10];\n\t\tconst parts = p.map((p) => `${(dx + p.x).toFixed(2)} ${(dy + p.y).toFixed(2)}`).join(' L ');\n\t\treturn `<path d=\"M ${parts}\" />`;\n\t}\n\n\tpublic render(startLineNumber: number, lineNumber: number): string {\n\t\tif (!this._renderResult) {\n\t\t\treturn '';\n\t\t}\n\t\tconst lineIndex = lineNumber - startLineNumber;\n\t\tif (lineIndex < 0 || lineIndex >= this._renderResult.length) {\n\t\t\treturn '';\n\t\t}\n\t\treturn this._renderResult[lineIndex];\n\t}\n}\n\nclass WhitespaceOptions {\n\n\tpublic readonly renderWhitespace: 'none' | 'boundary' | 'selection' | 'trailing' | 'all';\n\tpublic readonly renderWithSVG: boolean;\n\tpublic readonly spaceWidth: number;\n\tpublic readonly middotWidth: number;\n\tpublic readonly wsmiddotWidth: number;\n\tpublic readonly canUseHalfwidthRightwardsArrow: boolean;\n\tpublic readonly lineHeight: number;\n\tpublic readonly stopRenderingLineAfter: number;\n\n\tconstructor(config: IEditorConfiguration) {\n\t\tconst options = config.options;\n\t\tconst fontInfo = options.get(EditorOption.fontInfo);\n\t\tconst experimentalWhitespaceRendering = options.get(EditorOption.experimentalWhitespaceRendering);\n\t\tif (experimentalWhitespaceRendering === 'off') {\n\t\t\t// whitespace is rendered in the view line\n\t\t\tthis.renderWhitespace = 'none';\n\t\t\tthis.renderWithSVG = false;\n\t\t} else if (experimentalWhitespaceRendering === 'svg') {\n\t\t\tthis.renderWhitespace = options.get(EditorOption.renderWhitespace);\n\t\t\tthis.renderWithSVG = true;\n\t\t} else {\n\t\t\tthis.renderWhitespace = options.get(EditorOption.renderWhitespace);\n\t\t\tthis.renderWithSVG = false;\n\t\t}\n\t\tthis.spaceWidth = fontInfo.spaceWidth;\n\t\tthis.middotWidth = fontInfo.middotWidth;\n\t\tthis.wsmiddotWidth = fontInfo.wsmiddotWidth;\n\t\tthis.canUseHalfwidthRightwardsArrow = fontInfo.canUseHalfwidthRightwardsArrow;\n\t\tthis.lineHeight = options.get(EditorOption.lineHeight);\n\t\tthis.stopRenderingLineAfter = options.get(EditorOption.stopRenderingLineAfter);\n\t}\n\n\tpublic equals(other: WhitespaceOptions): boolean {\n\t\treturn (\n\t\t\tthis.renderWhitespace === other.renderWhitespace\n\t\t\t&& this.renderWithSVG === other.renderWithSVG\n\t\t\t&& this.spaceWidth === other.spaceWidth\n\t\t\t&& this.middotWidth === other.middotWidth\n\t\t\t&& this.wsmiddotWidth === other.wsmiddotWidth\n\t\t\t&& this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\n\t\t\t&& this.lineHeight === other.lineHeight\n\t\t\t&& this.stopRenderingLineAfter === other.stopRenderingLineAfter\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/browser/viewParts/whitespace/whitespace.ts","vs/editor/browser/viewParts/whitespace/whitespace.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAQtE,OAAO,KAAK,OAAO,MAAM,oCAAoC,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEzE;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,kBAAkB;IAOxD,YAAY,OAAoB;QAC/B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAEe,OAAO;QACtB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,2BAA2B;IAEX,sBAAsB,CAAC,CAA2C;QACjF,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,CAAC,UAAU,mCAAyB,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IACe,oBAAoB,CAAC,CAAyC;QAC7E,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,WAAW,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACe,oBAAoB,CAAC,CAAyC;QAC7E,OAAO,IAAI,CAAC;IACb,CAAC;IACe,SAAS,CAAC,CAA8B;QACvD,OAAO,IAAI,CAAC;IACb,CAAC;IACe,cAAc,CAAC,CAAmC;QACjE,OAAO,IAAI,CAAC;IACb,CAAC;IACe,cAAc,CAAC,CAAmC;QACjE,OAAO,IAAI,CAAC;IACb,CAAC;IACe,eAAe,CAAC,CAAoC;QACnE,OAAO,IAAI,CAAC;IACb,CAAC;IACe,eAAe,CAAC,CAAoC;QACnE,OAAO,CAAC,CAAC,gBAAgB,CAAC;IAC3B,CAAC;IACe,cAAc,CAAC,CAAmC;QACjE,OAAO,IAAI,CAAC;IACb,CAAC;IACD,yBAAyB;IAElB,aAAa,CAAC,GAAqB;QACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,KAAK,IAAI,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,UAAU,IAAI,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC;YACpH,MAAM,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,eAAe,CAAC;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;YAE9E,IAAI,gBAAgB,GAAyB,IAAI,CAAC;YAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,WAAW,EAAE,CAAC;gBACpD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBACnC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBAEpC,IAAI,SAAS,CAAC,aAAa,GAAG,UAAU,IAAI,SAAS,CAAC,eAAe,GAAG,UAAU,EAAE,CAAC;wBACpF,oCAAoC;wBACpC,SAAS;oBACV,CAAC;oBAED,MAAM,WAAW,GAAG,CAAC,SAAS,CAAC,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC5G,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAEtG,IAAI,WAAW,GAAG,SAAS,EAAE,CAAC;wBAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BACvB,gBAAgB,GAAG,EAAE,CAAC;wBACvB,CAAC;wBACD,gBAAgB,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,WAAW,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxE,CAAC;gBACF,CAAC;YACF,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC1G,CAAC;IACF,CAAC;IAEO,sBAAsB,CAAC,GAAqB,EAAE,UAAkB,EAAE,UAAgC,EAAE,QAA+B;QAC1I,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACX,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;YACnE,OAAO,EAAE,CAAC;QACX,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,UAAU,IAAI,QAAQ,CAAC,wBAAwB,EAAE,CAAC;YACxF,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAE5C,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACpJ,MAAM,wBAAwB,GAAG,QAAQ,CAAC,wBAAwB,CAAC;QACnE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,UAAU,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,UAAU,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,GAAG,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;QAEtD,qCAAqC;QACrC,sBAAsB;QACtB,MAAM,mBAAmB,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAExE,MAAM,8BAA8B,GAAG,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAEpF,IAAI,MAAM,GAAW,EAAE,CAAC;QAExB,IAAI,uBAAuB,GAAG,KAAK,CAAC;QACpC,IAAI,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAC3E,IAAI,sBAA8B,CAAC;QACnC,IAAI,uBAAuB,KAAK,CAAC,CAAC,EAAE,CAAC;YACpC,uBAAuB,GAAG,IAAI,CAAC;YAC/B,uBAAuB,GAAG,GAAG,CAAC;YAC9B,sBAAsB,GAAG,GAAG,CAAC;QAC9B,CAAC;aAAM,CAAC;YACP,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,qBAAqB,GAAG,CAAC,CAAC;QAC9B,IAAI,gBAAgB,GAAG,UAAU,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;QACvE,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,IAAI,SAAS,GAAG,gBAAgB,EAAE,SAAS,GAAG,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAEjD,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,YAAY,IAAI,SAAS,EAAE,CAAC;gBACpE,qBAAqB,EAAE,CAAC;gBACxB,gBAAgB,GAAG,UAAU,IAAI,UAAU,CAAC,qBAAqB,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,MAAM,yBAAiB,IAAI,MAAM,4BAAmB,EAAE,CAAC;gBAC1D,SAAS;YACV,CAAC;YAED,IAAI,YAAY,IAAI,CAAC,uBAAuB,IAAI,SAAS,IAAI,sBAAsB,EAAE,CAAC;gBACrF,iGAAiG;gBACjG,SAAS;YACV,CAAC;YAED,IAAI,YAAY,IAAI,SAAS,IAAI,uBAAuB,IAAI,SAAS,IAAI,sBAAsB,IAAI,MAAM,4BAAmB,EAAE,CAAC;gBAC9H,qCAAqC;gBACrC,MAAM,UAAU,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAc,CAAC,CAAC;gBAChG,MAAM,UAAU,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAc,CAAC,CAAC;gBACjG,IAAI,UAAU,4BAAmB,IAAI,UAAU,4BAAmB,EAAE,CAAC;oBACpE,SAAS;gBACV,CAAC;YACF,CAAC;YAED,IAAI,YAAY,IAAI,wBAAwB,IAAI,SAAS,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;gBACvE,MAAM,YAAY,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAc,CAAC,CAAC;gBAClG,MAAM,qBAAqB,GAAG,CAAC,MAAM,4BAAmB,IAAI,CAAC,YAAY,4BAAmB,IAAI,YAAY,yBAAiB,CAAC,CAAC,CAAC;gBAChI,IAAI,qBAAqB,EAAE,CAAC;oBAC3B,SAAS;gBACV,CAAC;YACF,CAAC;YAED,IAAI,UAAU,IAAI,CAAC,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,KAAK,IAAI,SAAS,IAAI,SAAS,GAAG,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3H,0FAA0F;gBAC1F,SAAS;YACV,CAAC;YAED,MAAM,YAAY,GAAG,GAAG,CAAC,uBAAuB,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1F,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnB,SAAS;YACV,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,MAAM,yBAAiB,EAAE,CAAC;oBAC7B,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxE,CAAC;qBAAM,CAAC;oBACP,MAAM,IAAI,eAAe,CAAC,YAAY,CAAC,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;gBACvJ,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,MAAM,yBAAiB,EAAE,CAAC;oBAC7B,MAAM,IAAI,gCAAgC,YAAY,CAAC,IAAI,aAAa,UAAU,QAAQ,8BAA8B,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC9L,CAAC;qBAAM,CAAC;oBACP,MAAM,IAAI,gCAAgC,YAAY,CAAC,IAAI,aAAa,UAAU,QAAQ,MAAM,CAAC,YAAY,CAAC,mBAAmB,CAAC,QAAQ,CAAC;gBAC5I,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC;YAC3C,OAAO,CACN,gDAAgD,OAAO,aAAa,UAAU,oBAAoB,OAAO,IAAI,UAAU,8CAA8C,KAAK,IAAI;kBAC5K,MAAM;kBACN,QAAQ,CACV,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,YAAY,CAAC,UAAkB,EAAE,UAAkB,EAAE,IAAY;QACxE,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,UAAU,CAAC;QACzB,MAAM,EAAE,GAAG,UAAU,GAAG,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC;QAEhB,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAElC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5F,OAAO,cAAc,KAAK,MAAM,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,eAAuB,EAAE,UAAkB;QACxD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,SAAS,GAAG,UAAU,GAAG,eAAe,CAAC;QAC/C,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC7D,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;CACD;AAED,MAAM,iBAAiB;IAWtB,YAAY,MAA4B;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,gCAAuB,CAAC;QACpD,MAAM,+BAA+B,GAAG,OAAO,CAAC,GAAG,uDAA8C,CAAC;QAClG,IAAI,+BAA+B,KAAK,KAAK,EAAE,CAAC;YAC/C,0CAA0C;YAC1C,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;YAC/B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,CAAC;aAAM,IAAI,+BAA+B,KAAK,KAAK,EAAE,CAAC;YACtD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,GAAG,yCAA+B,CAAC;YACnE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,GAAG,yCAA+B,CAAC;YACnE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,8BAA8B,GAAG,QAAQ,CAAC,8BAA8B,CAAC;QAC9E,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,kCAAyB,CAAC;QACvD,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,GAAG,+CAAqC,CAAC;IAChF,CAAC;IAEM,MAAM,CAAC,KAAwB;QACrC,OAAO,CACN,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;eAC7C,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;eAC1C,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;eACpC,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;eACtC,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;eAC1C,IAAI,CAAC,8BAA8B,KAAK,KAAK,CAAC,8BAA8B;eAC5E,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;eACpC,IAAI,CAAC,sBAAsB,KAAK,KAAK,CAAC,sBAAsB,CAC/D,CAAC;IACH,CAAC;CACD","file":"whitespace.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 './whitespace.css';\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { RenderingContext } from '../../view/renderingContext.js';\nimport { ViewContext } from '../../../common/viewModel/viewContext.js';\nimport * as viewEvents from '../../../common/viewEvents.js';\nimport { ViewLineRenderingData } from '../../../common/viewModel.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { IEditorConfiguration } from '../../../common/config/editorConfiguration.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { CharCode } from '../../../../base/common/charCode.js';\nimport { Position } from '../../../common/core/position.js';\nimport { editorWhitespaces } from '../../../common/core/editorColorRegistry.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\n\n/**\n * The whitespace overlay will visual certain whitespace depending on the\n * current editor configuration (boundary, selection, etc.).\n */\nexport class WhitespaceOverlay extends DynamicViewOverlay {\n\n\tprivate readonly _context: ViewContext;\n\tprivate _options: WhitespaceOptions;\n\tprivate _selection: Selection[];\n\tprivate _renderResult: string[] | null;\n\n\tconstructor(context: ViewContext) {\n\t\tsuper();\n\t\tthis._context = context;\n\t\tthis._options = new WhitespaceOptions(this._context.configuration);\n\t\tthis._selection = [];\n\t\tthis._renderResult = null;\n\t\tthis._context.addEventHandler(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._context.removeEventHandler(this);\n\t\tthis._renderResult = null;\n\t\tsuper.dispose();\n\t}\n\n\t// --- begin event handlers\n\n\tpublic override onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {\n\t\tconst newOptions = new WhitespaceOptions(this._context.configuration);\n\t\tif (this._options.equals(newOptions)) {\n\t\t\treturn e.hasChanged(EditorOption.layoutInfo);\n\t\t}\n\t\tthis._options = newOptions;\n\t\treturn true;\n\t}\n\tpublic override onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {\n\t\tthis._selection = e.selections;\n\t\tif (this._options.renderWhitespace === 'selection') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic override onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onFlushed(e: viewEvents.ViewFlushedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesChanged(e: viewEvents.ViewLinesChangedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesDeleted(e: viewEvents.ViewLinesDeletedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesInserted(e: viewEvents.ViewLinesInsertedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onScrollChanged(e: viewEvents.ViewScrollChangedEvent): boolean {\n\t\treturn e.scrollTopChanged;\n\t}\n\tpublic override onZonesChanged(e: viewEvents.ViewZonesChangedEvent): boolean {\n\t\treturn true;\n\t}\n\t// --- end event handlers\n\n\tpublic prepareRender(ctx: RenderingContext): void {\n\t\tif (this._options.renderWhitespace === 'none') {\n\t\t\tthis._renderResult = null;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._renderResult = [];\n\t\tfor (let lineNumber = ctx.viewportData.startLineNumber; lineNumber <= ctx.viewportData.endLineNumber; lineNumber++) {\n\t\t\tconst lineIndex = lineNumber - ctx.viewportData.startLineNumber;\n\t\t\tconst lineData = this._context.viewModel.getViewLineRenderingData(lineNumber);\n\n\t\t\tlet selectionsOnLine: OffsetRange[] | null = null;\n\t\t\tif (this._options.renderWhitespace === 'selection') {\n\t\t\t\tconst selections = this._selection;\n\t\t\t\tfor (const selection of selections) {\n\n\t\t\t\t\tif (selection.endLineNumber < lineNumber || selection.startLineNumber > lineNumber) {\n\t\t\t\t\t\t// Selection does not intersect line\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst startColumn = (selection.startLineNumber === lineNumber ? selection.startColumn : lineData.minColumn);\n\t\t\t\t\tconst endColumn = (selection.endLineNumber === lineNumber ? selection.endColumn : lineData.maxColumn);\n\n\t\t\t\t\tif (startColumn < endColumn) {\n\t\t\t\t\t\tif (!selectionsOnLine) {\n\t\t\t\t\t\t\tselectionsOnLine = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tselectionsOnLine.push(new OffsetRange(startColumn - 1, endColumn - 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._renderResult[lineIndex] = this._applyRenderWhitespace(ctx, lineNumber, selectionsOnLine, lineData);\n\t\t}\n\t}\n\n\tprivate _applyRenderWhitespace(ctx: RenderingContext, lineNumber: number, selections: OffsetRange[] | null, lineData: ViewLineRenderingData): string {\n\t\tif (lineData.hasVariableFonts) {\n\t\t\treturn '';\n\t\t}\n\t\tif (this._options.renderWhitespace === 'selection' && !selections) {\n\t\t\treturn '';\n\t\t}\n\t\tif (this._options.renderWhitespace === 'trailing' && lineData.continuesWithWrappedLine) {\n\t\t\treturn '';\n\t\t}\n\t\tconst color = this._context.theme.getColor(editorWhitespaces);\n\t\tconst USE_SVG = this._options.renderWithSVG;\n\n\t\tconst lineContent = lineData.content;\n\t\tconst len = (this._options.stopRenderingLineAfter === -1 ? lineContent.length : Math.min(this._options.stopRenderingLineAfter, lineContent.length));\n\t\tconst continuesWithWrappedLine = lineData.continuesWithWrappedLine;\n\t\tconst fauxIndentLength = lineData.minColumn - 1;\n\t\tconst onlyBoundary = (this._options.renderWhitespace === 'boundary');\n\t\tconst onlyTrailing = (this._options.renderWhitespace === 'trailing');\n\t\tconst lineHeight = ctx.getLineHeightForLineNumber(lineNumber);\n\t\tconst middotWidth = this._options.middotWidth;\n\t\tconst wsmiddotWidth = this._options.wsmiddotWidth;\n\t\tconst spaceWidth = this._options.spaceWidth;\n\t\tconst wsmiddotDiff = Math.abs(wsmiddotWidth - spaceWidth);\n\t\tconst middotDiff = Math.abs(middotWidth - spaceWidth);\n\n\t\t// U+2E31 - WORD SEPARATOR MIDDLE DOT\n\t\t// U+00B7 - MIDDLE DOT\n\t\tconst renderSpaceCharCode = (wsmiddotDiff < middotDiff ? 0x2E31 : 0xB7);\n\n\t\tconst canUseHalfwidthRightwardsArrow = this._options.canUseHalfwidthRightwardsArrow;\n\n\t\tlet result: string = '';\n\n\t\tlet lineIsEmptyOrWhitespace = false;\n\t\tlet firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\n\t\tlet lastNonWhitespaceIndex: number;\n\t\tif (firstNonWhitespaceIndex === -1) {\n\t\t\tlineIsEmptyOrWhitespace = true;\n\t\t\tfirstNonWhitespaceIndex = len;\n\t\t\tlastNonWhitespaceIndex = len;\n\t\t} else {\n\t\t\tlastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\n\t\t}\n\n\t\tlet currentSelectionIndex = 0;\n\t\tlet currentSelection = selections && selections[currentSelectionIndex];\n\t\tlet maxLeft = 0;\n\n\t\tfor (let charIndex = fauxIndentLength; charIndex < len; charIndex++) {\n\t\t\tconst chCode = lineContent.charCodeAt(charIndex);\n\n\t\t\tif (currentSelection && currentSelection.endExclusive <= charIndex) {\n\t\t\t\tcurrentSelectionIndex++;\n\t\t\t\tcurrentSelection = selections && selections[currentSelectionIndex];\n\t\t\t}\n\n\t\t\tif (chCode !== CharCode.Tab && chCode !== CharCode.Space) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (onlyTrailing && !lineIsEmptyOrWhitespace && charIndex <= lastNonWhitespaceIndex) {\n\t\t\t\t// If rendering only trailing whitespace, check that the charIndex points to trailing whitespace.\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (onlyBoundary && charIndex >= firstNonWhitespaceIndex && charIndex <= lastNonWhitespaceIndex && chCode === CharCode.Space) {\n\t\t\t\t// rendering only boundary whitespace\n\t\t\t\tconst prevChCode = (charIndex - 1 >= 0 ? lineContent.charCodeAt(charIndex - 1) : CharCode.Null);\n\t\t\t\tconst nextChCode = (charIndex + 1 < len ? lineContent.charCodeAt(charIndex + 1) : CharCode.Null);\n\t\t\t\tif (prevChCode !== CharCode.Space && nextChCode !== CharCode.Space) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (onlyBoundary && continuesWithWrappedLine && charIndex === len - 1) {\n\t\t\t\tconst prevCharCode = (charIndex - 1 >= 0 ? lineContent.charCodeAt(charIndex - 1) : CharCode.Null);\n\t\t\t\tconst isSingleTrailingSpace = (chCode === CharCode.Space && (prevCharCode !== CharCode.Space && prevCharCode !== CharCode.Tab));\n\t\t\t\tif (isSingleTrailingSpace) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (selections && !(currentSelection && currentSelection.start <= charIndex && charIndex < currentSelection.endExclusive)) {\n\t\t\t\t// If rendering whitespace on selection, check that the charIndex falls within a selection\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst visibleRange = ctx.visibleRangeForPosition(new Position(lineNumber, charIndex + 1));\n\t\t\tif (!visibleRange) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (USE_SVG) {\n\t\t\t\tmaxLeft = Math.max(maxLeft, visibleRange.left);\n\t\t\t\tif (chCode === CharCode.Tab) {\n\t\t\t\t\tresult += this._renderArrow(lineHeight, spaceWidth, visibleRange.left);\n\t\t\t\t} else {\n\t\t\t\t\tresult += `<circle cx=\"${(visibleRange.left + spaceWidth / 2).toFixed(2)}\" cy=\"${(lineHeight / 2).toFixed(2)}\" r=\"${(spaceWidth / 7).toFixed(2)}\" />`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (chCode === CharCode.Tab) {\n\t\t\t\t\tresult += `<div class=\"mwh\" style=\"left:${visibleRange.left}px;height:${lineHeight}px;\">${canUseHalfwidthRightwardsArrow ? String.fromCharCode(0xFFEB) : String.fromCharCode(0x2192)}</div>`;\n\t\t\t\t} else {\n\t\t\t\t\tresult += `<div class=\"mwh\" style=\"left:${visibleRange.left}px;height:${lineHeight}px;\">${String.fromCharCode(renderSpaceCharCode)}</div>`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (USE_SVG) {\n\t\t\tmaxLeft = Math.round(maxLeft + spaceWidth);\n\t\t\treturn (\n\t\t\t\t`<svg style=\"bottom:0;position:absolute;width:${maxLeft}px;height:${lineHeight}px\" viewBox=\"0 0 ${maxLeft} ${lineHeight}\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"${color}\">`\n\t\t\t\t+ result\n\t\t\t\t+ `</svg>`\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate _renderArrow(lineHeight: number, spaceWidth: number, left: number): string {\n\t\tconst strokeWidth = spaceWidth / 7;\n\t\tconst width = spaceWidth;\n\t\tconst dy = lineHeight / 2;\n\t\tconst dx = left;\n\n\t\tconst p1 = { x: 0, y: strokeWidth / 2 };\n\t\tconst p2 = { x: 100 / 125 * width, y: p1.y };\n\t\tconst p3 = { x: p2.x - 0.2 * p2.x, y: p2.y + 0.2 * p2.x };\n\t\tconst p4 = { x: p3.x + 0.1 * p2.x, y: p3.y + 0.1 * p2.x };\n\t\tconst p5 = { x: p4.x + 0.35 * p2.x, y: p4.y - 0.35 * p2.x };\n\t\tconst p6 = { x: p5.x, y: -p5.y };\n\t\tconst p7 = { x: p4.x, y: -p4.y };\n\t\tconst p8 = { x: p3.x, y: -p3.y };\n\t\tconst p9 = { x: p2.x, y: -p2.y };\n\t\tconst p10 = { x: p1.x, y: -p1.y };\n\n\t\tconst p = [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10];\n\t\tconst parts = p.map((p) => `${(dx + p.x).toFixed(2)} ${(dy + p.y).toFixed(2)}`).join(' L ');\n\t\treturn `<path d=\"M ${parts}\" />`;\n\t}\n\n\tpublic render(startLineNumber: number, lineNumber: number): string {\n\t\tif (!this._renderResult) {\n\t\t\treturn '';\n\t\t}\n\t\tconst lineIndex = lineNumber - startLineNumber;\n\t\tif (lineIndex < 0 || lineIndex >= this._renderResult.length) {\n\t\t\treturn '';\n\t\t}\n\t\treturn this._renderResult[lineIndex];\n\t}\n}\n\nclass WhitespaceOptions {\n\n\tpublic readonly renderWhitespace: 'none' | 'boundary' | 'selection' | 'trailing' | 'all';\n\tpublic readonly renderWithSVG: boolean;\n\tpublic readonly spaceWidth: number;\n\tpublic readonly middotWidth: number;\n\tpublic readonly wsmiddotWidth: number;\n\tpublic readonly canUseHalfwidthRightwardsArrow: boolean;\n\tpublic readonly lineHeight: number;\n\tpublic readonly stopRenderingLineAfter: number;\n\n\tconstructor(config: IEditorConfiguration) {\n\t\tconst options = config.options;\n\t\tconst fontInfo = options.get(EditorOption.fontInfo);\n\t\tconst experimentalWhitespaceRendering = options.get(EditorOption.experimentalWhitespaceRendering);\n\t\tif (experimentalWhitespaceRendering === 'off') {\n\t\t\t// whitespace is rendered in the view line\n\t\t\tthis.renderWhitespace = 'none';\n\t\t\tthis.renderWithSVG = false;\n\t\t} else if (experimentalWhitespaceRendering === 'svg') {\n\t\t\tthis.renderWhitespace = options.get(EditorOption.renderWhitespace);\n\t\t\tthis.renderWithSVG = true;\n\t\t} else {\n\t\t\tthis.renderWhitespace = options.get(EditorOption.renderWhitespace);\n\t\t\tthis.renderWithSVG = false;\n\t\t}\n\t\tthis.spaceWidth = fontInfo.spaceWidth;\n\t\tthis.middotWidth = fontInfo.middotWidth;\n\t\tthis.wsmiddotWidth = fontInfo.wsmiddotWidth;\n\t\tthis.canUseHalfwidthRightwardsArrow = fontInfo.canUseHalfwidthRightwardsArrow;\n\t\tthis.lineHeight = options.get(EditorOption.lineHeight);\n\t\tthis.stopRenderingLineAfter = options.get(EditorOption.stopRenderingLineAfter);\n\t}\n\n\tpublic equals(other: WhitespaceOptions): boolean {\n\t\treturn (\n\t\t\tthis.renderWhitespace === other.renderWhitespace\n\t\t\t&& this.renderWithSVG === other.renderWithSVG\n\t\t\t&& this.spaceWidth === other.spaceWidth\n\t\t\t&& this.middotWidth === other.middotWidth\n\t\t\t&& this.wsmiddotWidth === other.wsmiddotWidth\n\t\t\t&& this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\n\t\t\t&& this.lineHeight === other.lineHeight\n\t\t\t&& this.stopRenderingLineAfter === other.stopRenderingLineAfter\n\t\t);\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport './whitespace.css';\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { RenderingContext } from '../../view/renderingContext.js';\nimport { ViewContext } from '../../../common/viewModel/viewContext.js';\nimport * as viewEvents from '../../../common/viewEvents.js';\nimport { ViewLineRenderingData } from '../../../common/viewModel.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { IEditorConfiguration } from '../../../common/config/editorConfiguration.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { CharCode } from '../../../../base/common/charCode.js';\nimport { Position } from '../../../common/core/position.js';\nimport { editorWhitespaces } from '../../../common/core/editorColorRegistry.js';\nimport { OffsetRange } from '../../../common/core/ranges/offsetRange.js';\n\n/**\n * The whitespace overlay will visual certain whitespace depending on the\n * current editor configuration (boundary, selection, etc.).\n */\nexport class WhitespaceOverlay extends DynamicViewOverlay {\n\n\tprivate readonly _context: ViewContext;\n\tprivate _options: WhitespaceOptions;\n\tprivate _selection: Selection[];\n\tprivate _renderResult: string[] | null;\n\n\tconstructor(context: ViewContext) {\n\t\tsuper();\n\t\tthis._context = context;\n\t\tthis._options = new WhitespaceOptions(this._context.configuration);\n\t\tthis._selection = [];\n\t\tthis._renderResult = null;\n\t\tthis._context.addEventHandler(this);\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis._context.removeEventHandler(this);\n\t\tthis._renderResult = null;\n\t\tsuper.dispose();\n\t}\n\n\t// --- begin event handlers\n\n\tpublic override onConfigurationChanged(e: viewEvents.ViewConfigurationChangedEvent): boolean {\n\t\tconst newOptions = new WhitespaceOptions(this._context.configuration);\n\t\tif (this._options.equals(newOptions)) {\n\t\t\treturn e.hasChanged(EditorOption.layoutInfo);\n\t\t}\n\t\tthis._options = newOptions;\n\t\treturn true;\n\t}\n\tpublic override onCursorStateChanged(e: viewEvents.ViewCursorStateChangedEvent): boolean {\n\t\tthis._selection = e.selections;\n\t\tif (this._options.renderWhitespace === 'selection') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic override onDecorationsChanged(e: viewEvents.ViewDecorationsChangedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onFlushed(e: viewEvents.ViewFlushedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesChanged(e: viewEvents.ViewLinesChangedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesDeleted(e: viewEvents.ViewLinesDeletedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onLinesInserted(e: viewEvents.ViewLinesInsertedEvent): boolean {\n\t\treturn true;\n\t}\n\tpublic override onScrollChanged(e: viewEvents.ViewScrollChangedEvent): boolean {\n\t\treturn e.scrollTopChanged;\n\t}\n\tpublic override onZonesChanged(e: viewEvents.ViewZonesChangedEvent): boolean {\n\t\treturn true;\n\t}\n\t// --- end event handlers\n\n\tpublic prepareRender(ctx: RenderingContext): void {\n\t\tif (this._options.renderWhitespace === 'none') {\n\t\t\tthis._renderResult = null;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._renderResult = [];\n\t\tfor (let lineNumber = ctx.viewportData.startLineNumber; lineNumber <= ctx.viewportData.endLineNumber; lineNumber++) {\n\t\t\tconst lineIndex = lineNumber - ctx.viewportData.startLineNumber;\n\t\t\tconst lineData = this._context.viewModel.getViewLineRenderingData(lineNumber);\n\n\t\t\tlet selectionsOnLine: OffsetRange[] | null = null;\n\t\t\tif (this._options.renderWhitespace === 'selection') {\n\t\t\t\tconst selections = this._selection;\n\t\t\t\tfor (const selection of selections) {\n\n\t\t\t\t\tif (selection.endLineNumber < lineNumber || selection.startLineNumber > lineNumber) {\n\t\t\t\t\t\t// Selection does not intersect line\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst startColumn = (selection.startLineNumber === lineNumber ? selection.startColumn : lineData.minColumn);\n\t\t\t\t\tconst endColumn = (selection.endLineNumber === lineNumber ? selection.endColumn : lineData.maxColumn);\n\n\t\t\t\t\tif (startColumn < endColumn) {\n\t\t\t\t\t\tif (!selectionsOnLine) {\n\t\t\t\t\t\t\tselectionsOnLine = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tselectionsOnLine.push(new OffsetRange(startColumn - 1, endColumn - 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._renderResult[lineIndex] = this._applyRenderWhitespace(ctx, lineNumber, selectionsOnLine, lineData);\n\t\t}\n\t}\n\n\tprivate _applyRenderWhitespace(ctx: RenderingContext, lineNumber: number, selections: OffsetRange[] | null, lineData: ViewLineRenderingData): string {\n\t\tif (lineData.hasVariableFonts) {\n\t\t\treturn '';\n\t\t}\n\t\tif (this._options.renderWhitespace === 'selection' && !selections) {\n\t\t\treturn '';\n\t\t}\n\t\tif (this._options.renderWhitespace === 'trailing' && lineData.continuesWithWrappedLine) {\n\t\t\treturn '';\n\t\t}\n\t\tconst color = this._context.theme.getColor(editorWhitespaces);\n\t\tconst USE_SVG = this._options.renderWithSVG;\n\n\t\tconst lineContent = lineData.content;\n\t\tconst len = (this._options.stopRenderingLineAfter === -1 ? lineContent.length : Math.min(this._options.stopRenderingLineAfter, lineContent.length));\n\t\tconst continuesWithWrappedLine = lineData.continuesWithWrappedLine;\n\t\tconst fauxIndentLength = lineData.minColumn - 1;\n\t\tconst onlyBoundary = (this._options.renderWhitespace === 'boundary');\n\t\tconst onlyTrailing = (this._options.renderWhitespace === 'trailing');\n\t\tconst lineHeight = ctx.getLineHeightForLineNumber(lineNumber);\n\t\tconst middotWidth = this._options.middotWidth;\n\t\tconst wsmiddotWidth = this._options.wsmiddotWidth;\n\t\tconst spaceWidth = this._options.spaceWidth;\n\t\tconst wsmiddotDiff = Math.abs(wsmiddotWidth - spaceWidth);\n\t\tconst middotDiff = Math.abs(middotWidth - spaceWidth);\n\n\t\t// U+2E31 - WORD SEPARATOR MIDDLE DOT\n\t\t// U+00B7 - MIDDLE DOT\n\t\tconst renderSpaceCharCode = (wsmiddotDiff < middotDiff ? 0x2E31 : 0xB7);\n\n\t\tconst canUseHalfwidthRightwardsArrow = this._options.canUseHalfwidthRightwardsArrow;\n\n\t\tlet result: string = '';\n\n\t\tlet lineIsEmptyOrWhitespace = false;\n\t\tlet firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\n\t\tlet lastNonWhitespaceIndex: number;\n\t\tif (firstNonWhitespaceIndex === -1) {\n\t\t\tlineIsEmptyOrWhitespace = true;\n\t\t\tfirstNonWhitespaceIndex = len;\n\t\t\tlastNonWhitespaceIndex = len;\n\t\t} else {\n\t\t\tlastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\n\t\t}\n\n\t\tlet currentSelectionIndex = 0;\n\t\tlet currentSelection = selections && selections[currentSelectionIndex];\n\t\tlet maxLeft = 0;\n\n\t\tfor (let charIndex = fauxIndentLength; charIndex < len; charIndex++) {\n\t\t\tconst chCode = lineContent.charCodeAt(charIndex);\n\n\t\t\tif (currentSelection && currentSelection.endExclusive <= charIndex) {\n\t\t\t\tcurrentSelectionIndex++;\n\t\t\t\tcurrentSelection = selections && selections[currentSelectionIndex];\n\t\t\t}\n\n\t\t\tif (chCode !== CharCode.Tab && chCode !== CharCode.Space) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (onlyTrailing && !lineIsEmptyOrWhitespace && charIndex <= lastNonWhitespaceIndex) {\n\t\t\t\t// If rendering only trailing whitespace, check that the charIndex points to trailing whitespace.\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (onlyBoundary && charIndex >= firstNonWhitespaceIndex && charIndex <= lastNonWhitespaceIndex && chCode === CharCode.Space) {\n\t\t\t\t// rendering only boundary whitespace\n\t\t\t\tconst prevChCode = (charIndex - 1 >= 0 ? lineContent.charCodeAt(charIndex - 1) : CharCode.Null);\n\t\t\t\tconst nextChCode = (charIndex + 1 < len ? lineContent.charCodeAt(charIndex + 1) : CharCode.Null);\n\t\t\t\tif (prevChCode !== CharCode.Space && nextChCode !== CharCode.Space) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (onlyBoundary && continuesWithWrappedLine && charIndex === len - 1) {\n\t\t\t\tconst prevCharCode = (charIndex - 1 >= 0 ? lineContent.charCodeAt(charIndex - 1) : CharCode.Null);\n\t\t\t\tconst isSingleTrailingSpace = (chCode === CharCode.Space && (prevCharCode !== CharCode.Space && prevCharCode !== CharCode.Tab));\n\t\t\t\tif (isSingleTrailingSpace) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (selections && !(currentSelection && currentSelection.start <= charIndex && charIndex < currentSelection.endExclusive)) {\n\t\t\t\t// If rendering whitespace on selection, check that the charIndex falls within a selection\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst visibleRange = ctx.visibleRangeForPosition(new Position(lineNumber, charIndex + 1));\n\t\t\tif (!visibleRange) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (USE_SVG) {\n\t\t\t\tmaxLeft = Math.max(maxLeft, visibleRange.left);\n\t\t\t\tif (chCode === CharCode.Tab) {\n\t\t\t\t\tresult += this._renderArrow(lineHeight, spaceWidth, visibleRange.left);\n\t\t\t\t} else {\n\t\t\t\t\tresult += `<circle cx=\"${(visibleRange.left + spaceWidth / 2).toFixed(2)}\" cy=\"${(lineHeight / 2).toFixed(2)}\" r=\"${(spaceWidth / 7).toFixed(2)}\" />`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (chCode === CharCode.Tab) {\n\t\t\t\t\tresult += `<div class=\"mwh\" style=\"left:${visibleRange.left}px;height:${lineHeight}px;\">${canUseHalfwidthRightwardsArrow ? String.fromCharCode(0xFFEB) : String.fromCharCode(0x2192)}</div>`;\n\t\t\t\t} else {\n\t\t\t\t\tresult += `<div class=\"mwh\" style=\"left:${visibleRange.left}px;height:${lineHeight}px;\">${String.fromCharCode(renderSpaceCharCode)}</div>`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (USE_SVG) {\n\t\t\tmaxLeft = Math.round(maxLeft + spaceWidth);\n\t\t\treturn (\n\t\t\t\t`<svg style=\"bottom:0;position:absolute;width:${maxLeft}px;height:${lineHeight}px\" viewBox=\"0 0 ${maxLeft} ${lineHeight}\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"${color}\">`\n\t\t\t\t+ result\n\t\t\t\t+ `</svg>`\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate _renderArrow(lineHeight: number, spaceWidth: number, left: number): string {\n\t\tconst strokeWidth = spaceWidth / 7;\n\t\tconst width = spaceWidth;\n\t\tconst dy = lineHeight / 2;\n\t\tconst dx = left;\n\n\t\tconst p1 = { x: 0, y: strokeWidth / 2 };\n\t\tconst p2 = { x: 100 / 125 * width, y: p1.y };\n\t\tconst p3 = { x: p2.x - 0.2 * p2.x, y: p2.y + 0.2 * p2.x };\n\t\tconst p4 = { x: p3.x + 0.1 * p2.x, y: p3.y + 0.1 * p2.x };\n\t\tconst p5 = { x: p4.x + 0.35 * p2.x, y: p4.y - 0.35 * p2.x };\n\t\tconst p6 = { x: p5.x, y: -p5.y };\n\t\tconst p7 = { x: p4.x, y: -p4.y };\n\t\tconst p8 = { x: p3.x, y: -p3.y };\n\t\tconst p9 = { x: p2.x, y: -p2.y };\n\t\tconst p10 = { x: p1.x, y: -p1.y };\n\n\t\tconst p = [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10];\n\t\tconst parts = p.map((p) => `${(dx + p.x).toFixed(2)} ${(dy + p.y).toFixed(2)}`).join(' L ');\n\t\treturn `<path d=\"M ${parts}\" />`;\n\t}\n\n\tpublic render(startLineNumber: number, lineNumber: number): string {\n\t\tif (!this._renderResult) {\n\t\t\treturn '';\n\t\t}\n\t\tconst lineIndex = lineNumber - startLineNumber;\n\t\tif (lineIndex < 0 || lineIndex >= this._renderResult.length) {\n\t\t\treturn '';\n\t\t}\n\t\treturn this._renderResult[lineIndex];\n\t}\n}\n\nclass WhitespaceOptions {\n\n\tpublic readonly renderWhitespace: 'none' | 'boundary' | 'selection' | 'trailing' | 'all';\n\tpublic readonly renderWithSVG: boolean;\n\tpublic readonly spaceWidth: number;\n\tpublic readonly middotWidth: number;\n\tpublic readonly wsmiddotWidth: number;\n\tpublic readonly canUseHalfwidthRightwardsArrow: boolean;\n\tpublic readonly lineHeight: number;\n\tpublic readonly stopRenderingLineAfter: number;\n\n\tconstructor(config: IEditorConfiguration) {\n\t\tconst options = config.options;\n\t\tconst fontInfo = options.get(EditorOption.fontInfo);\n\t\tconst experimentalWhitespaceRendering = options.get(EditorOption.experimentalWhitespaceRendering);\n\t\tif (experimentalWhitespaceRendering === 'off') {\n\t\t\t// whitespace is rendered in the view line\n\t\t\tthis.renderWhitespace = 'none';\n\t\t\tthis.renderWithSVG = false;\n\t\t} else if (experimentalWhitespaceRendering === 'svg') {\n\t\t\tthis.renderWhitespace = options.get(EditorOption.renderWhitespace);\n\t\t\tthis.renderWithSVG = true;\n\t\t} else {\n\t\t\tthis.renderWhitespace = options.get(EditorOption.renderWhitespace);\n\t\t\tthis.renderWithSVG = false;\n\t\t}\n\t\tthis.spaceWidth = fontInfo.spaceWidth;\n\t\tthis.middotWidth = fontInfo.middotWidth;\n\t\tthis.wsmiddotWidth = fontInfo.wsmiddotWidth;\n\t\tthis.canUseHalfwidthRightwardsArrow = fontInfo.canUseHalfwidthRightwardsArrow;\n\t\tthis.lineHeight = options.get(EditorOption.lineHeight);\n\t\tthis.stopRenderingLineAfter = options.get(EditorOption.stopRenderingLineAfter);\n\t}\n\n\tpublic equals(other: WhitespaceOptions): boolean {\n\t\treturn (\n\t\t\tthis.renderWhitespace === other.renderWhitespace\n\t\t\t&& this.renderWithSVG === other.renderWithSVG\n\t\t\t&& this.spaceWidth === other.spaceWidth\n\t\t\t&& this.middotWidth === other.middotWidth\n\t\t\t&& this.wsmiddotWidth === other.wsmiddotWidth\n\t\t\t&& this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\n\t\t\t&& this.lineHeight === other.lineHeight\n\t\t\t&& this.stopRenderingLineAfter === other.stopRenderingLineAfter\n\t\t);\n\t}\n}\n"]}
|
|
@@ -439,8 +439,7 @@ let CodeEditorWidget = class CodeEditorWidget extends Disposable {
|
|
|
439
439
|
if (!this._modelData) {
|
|
440
440
|
return -1;
|
|
441
441
|
}
|
|
442
|
-
|
|
443
|
-
return CodeEditorWidget_1._getVerticalOffsetAfterPosition(this._modelData, lineNumber, maxCol, includeViewZones);
|
|
442
|
+
return CodeEditorWidget_1._getVerticalOffsetAfterPosition(this._modelData, lineNumber, Number.MAX_SAFE_INTEGER, includeViewZones);
|
|
444
443
|
}
|
|
445
444
|
getLineHeightForPosition(position) {
|
|
446
445
|
if (!this._modelData) {
|
|
@@ -497,6 +496,12 @@ let CodeEditorWidget = class CodeEditorWidget extends Disposable {
|
|
|
497
496
|
const viewRange = this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(validatedModelRange);
|
|
498
497
|
this._modelData.viewModel.revealRange('api', revealHorizontal, viewRange, verticalType, scrollType);
|
|
499
498
|
}
|
|
499
|
+
revealAllCursors(revealHorizontal, minimalReveal) {
|
|
500
|
+
if (!this._modelData) {
|
|
501
|
+
return;
|
|
502
|
+
}
|
|
503
|
+
this._modelData.viewModel.revealAllCursors('api', revealHorizontal, minimalReveal);
|
|
504
|
+
}
|
|
500
505
|
revealLine(lineNumber, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {
|
|
501
506
|
this._revealLine(lineNumber, 0 /* VerticalRevealType.Simple */, scrollType);
|
|
502
507
|
}
|